[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] x86/mmcfg/drhd: Move acpi_mmcfg_init() call before calling acpi_parse_dmar()



commit dcf417903bd17a8e26f1be771e4d2228f63a061c
Author:     Zhenzhong Duan <zhenzhong.duan@xxxxxxxxxx>
AuthorDate: Tue Aug 28 17:13:42 2018 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Aug 28 17:13:42 2018 +0200

    x86/mmcfg/drhd: Move acpi_mmcfg_init() call before calling acpi_parse_dmar()
    
    pci_conf_read8() needs pci mmcfg mapping to work on multiple pci
    segments system such as HPE Superdome-Flex.
    
    Move acpi_mmcfg_init() call in acpi_boot_init() before calling
    acpi_parse_dmar() so that when pci_conf_read8() is called in
    acpi_parse_dev_scope(), we already have the mapping set up.
    
    mmio_ro_ranges initialization is also moved ahead as it's the only
    dependency of pci_mmcfg_arch_enable() need to be moved. Also
    checked codes between the old and new call sites to ensure we
    don't break anything.
    
    Furthermore MMCFG will continue to not work this early (or
    more precisely not at all until Dom0 boot has progressed far
    enough) if the range(s) isn't/aren't marked reserved in E820.
    
    Signed-off-by: Zhenzhong Duan <zhenzhong.duan@xxxxxxxxxx>
    Tested-by: Gopalasetty, Manoj <manoj.gopalasetty@xxxxxxx>
    Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
---
 xen/arch/x86/acpi/boot.c | 2 ++
 xen/arch/x86/setup.c     | 8 +++-----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/acpi/boot.c b/xen/arch/x86/acpi/boot.c
index 8e6c96dcf6..e89c2e9009 100644
--- a/xen/arch/x86/acpi/boot.c
+++ b/xen/arch/x86/acpi/boot.c
@@ -724,6 +724,8 @@ int __init acpi_boot_init(void)
 
        acpi_table_parse(ACPI_SIG_HPET, acpi_parse_hpet);
 
+       acpi_mmcfg_init();
+
        acpi_dmar_init();
 
        erst_init();
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 261861e1ed..dd11815e2d 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1506,6 +1506,9 @@ void __init noreturn __start_xen(unsigned long mbi_p)
 
     generic_apic_probe();
 
+    mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
+                                  RANGESETF_prettyprint_hex);
+
     acpi_boot_init();
 
     if ( smp_found_config )
@@ -1538,9 +1541,6 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     /* Low mappings were only needed for some BIOS table parsing. */
     zap_low_mappings();
 
-    mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
-                                  RANGESETF_prettyprint_hex);
-
     init_apic_mappings();
 
     normalise_cpu_order();
@@ -1611,8 +1611,6 @@ void __init noreturn __start_xen(unsigned long mbi_p)
 
     vesa_mtrr_init();
 
-    acpi_mmcfg_init();
-
     early_msi_init();
 
     iommu_setup();    /* setup iommu if available */
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.