x86/pci: Reserve ECAM if BIOS didn't include it in PNP0C02 _CRS
[linux-2.6-microblaze.git] / arch / x86 / pci / mmconfig-shared.c
index 4b3efaa..e9497ee 100644 (file)
@@ -525,6 +525,8 @@ static bool __ref is_mmconf_reserved(check_reserved_t is_reserved,
 static bool __ref
 pci_mmcfg_check_reserved(struct device *dev, struct pci_mmcfg_region *cfg, int early)
 {
+       struct resource *conflict;
+
        if (!early && !acpi_disabled) {
                if (is_mmconf_reserved(is_acpi_reserved, cfg, dev,
                                       "ACPI motherboard resource"))
@@ -542,8 +544,17 @@ pci_mmcfg_check_reserved(struct device *dev, struct pci_mmcfg_region *cfg, int e
                               &cfg->res);
 
                if (is_mmconf_reserved(is_efi_mmio, cfg, dev,
-                                      "EfiMemoryMappedIO"))
+                                      "EfiMemoryMappedIO")) {
+                       conflict = insert_resource_conflict(&iomem_resource,
+                                                           &cfg->res);
+                       if (conflict)
+                               pr_warn("MMCONFIG %pR conflicts with %s %pR\n",
+                                       &cfg->res, conflict->name, conflict);
+                       else
+                               pr_info("MMCONFIG %pR reserved to work around lack of ACPI motherboard _CRS\n",
+                                       &cfg->res);
                        return true;
+               }
        }
 
        /*