Index: sys/x86/xen/pv.c =================================================================== --- sys/x86/xen/pv.c +++ sys/x86/xen/pv.c @@ -125,6 +125,7 @@ uint64_t physfree; char *kenv; int rc; + char acpi_rsdp[19]; xen_domain_type = XEN_HVM_DOMAIN; vm_guest = VM_GUEST_XEN; @@ -196,6 +197,11 @@ bzero_early(kenv, PAGE_SIZE); init_static_kenv(kenv, PAGE_SIZE); + /* Set ACPI RSDP hint from the value provided in hvm_start_info. */ + snprintf(acpi_rsdp, sizeof(acpi_rsdp), "%#" PRIx64, + start_info->rsdp_paddr); + kern_setenv("acpi.rsdp", acpi_rsdp); + /* Set the hooks for early functions that diverge from bare metal */ init_ops = xen_pvh_init_ops; hvm_start_flags = start_info->flags; @@ -303,7 +309,6 @@ vm_ooffset_t off; vm_paddr_t metadata; char *envp; - char acpi_rsdp[19]; if (start_info->modlist_paddr != 0) { struct hvm_modlist_entry *mod; @@ -386,10 +391,6 @@ boothowto |= boot_env_to_howto(); - snprintf(acpi_rsdp, sizeof(acpi_rsdp), "%#" PRIx64, - start_info->rsdp_paddr); - kern_setenv("acpi.rsdp", acpi_rsdp); - #ifdef DDB xen_pvh_parse_symtab(); #endif