It used to the case that we placed RSDP under 1MB and let Xen search
for it. We moved the placement to under 4GB in 4a5733771, so the
search wouldn't work.

Introduce rsdp_hint to ACPI code and set that variable in
convert_pvh_info.

Signed-off-by: Wei Liu <wei.l...@citrix.com>
---
Cc: Jan Beulich <jbeul...@suse.com>
Cc: Andrew Cooper <andrew.coop...@citrix.com>
Cc: Roger Pau Monné <roger....@citrix.com>
---
 xen/arch/x86/guest/pvh-boot.c | 2 ++
 xen/drivers/acpi/osl.c        | 5 +++++
 xen/include/xen/acpi.h        | 2 ++
 3 files changed, 9 insertions(+)

diff --git a/xen/arch/x86/guest/pvh-boot.c b/xen/arch/x86/guest/pvh-boot.c
index be3122b16c..2903b392bc 100644
--- a/xen/arch/x86/guest/pvh-boot.c
+++ b/xen/arch/x86/guest/pvh-boot.c
@@ -69,6 +69,8 @@ static void __init convert_pvh_info(void)
         mod[i].mod_end   = entry[i].paddr + entry[i].size;
         mod[i].string    = entry[i].cmdline_paddr;
     }
+
+    rsdp_hint = pvh_info->rsdp_paddr;
 }
 
 static void __init get_memory_map(void)
diff --git a/xen/drivers/acpi/osl.c b/xen/drivers/acpi/osl.c
index 52c9b4ba9a..5d8af6f290 100644
--- a/xen/drivers/acpi/osl.c
+++ b/xen/drivers/acpi/osl.c
@@ -62,8 +62,13 @@ void __init acpi_os_vprintf(const char *fmt, va_list args)
        printk("%s", buffer);
 }
 
+acpi_physical_address rsdp_hint;
+
 acpi_physical_address __init acpi_os_get_root_pointer(void)
 {
+       if (rsdp_hint)
+               return rsdp_hint;
+
        if (efi_enabled(EFI_BOOT)) {
                if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
                        return efi.acpi20;
diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h
index 9409350f05..e83182cb14 100644
--- a/xen/include/xen/acpi.h
+++ b/xen/include/xen/acpi.h
@@ -33,6 +33,8 @@
 #include <acpi/acpi.h>
 #include <asm/acpi.h>
 
+extern acpi_physical_address rsdp_hint;
+
 #define ACPI_MADT_GET_(fld, x) (((x) & ACPI_MADT_##fld##_MASK) / \
        (ACPI_MADT_##fld##_MASK & -ACPI_MADT_##fld##_MASK))
 
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to