arm64: PCI: Exclude ACPI "consumer" resources from host bridge windows
[platform/kernel/linux-rpi.git] / arch / arm64 / kernel / pci.c
index ac4509d..266a7b2 100644 (file)
@@ -114,6 +114,19 @@ int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
        return 0;
 }
 
+static int pci_acpi_root_prepare_resources(struct acpi_pci_root_info *ci)
+{
+       struct resource_entry *entry, *tmp;
+       int status;
+
+       status = acpi_pci_probe_root_resources(ci);
+       resource_list_for_each_entry_safe(entry, tmp, &ci->resources) {
+               if (!(entry->res->flags & IORESOURCE_WINDOW))
+                       resource_list_destroy_entry(entry);
+       }
+       return status;
+}
+
 /*
  * Lookup the bus range for the domain in MCFG, and set up config space
  * mapping.
@@ -196,6 +209,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
        }
 
        root_ops->release_info = pci_acpi_generic_release_info;
+       root_ops->prepare_resources = pci_acpi_root_prepare_resources;
        root_ops->pci_ops = &ri->cfg->ops->pci_ops;
        bus = acpi_pci_root_create(root, root_ops, &ri->common, ri->cfg);
        if (!bus)