Merge tag 'pci-v5.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
[sfrench/cifs-2.6.git] / arch / arm64 / kernel / pci.c
index 575bd5517d21802ed7d3d6b367ab8b75e3747ed8..570988c7a7ffa9cf7529dc3b6f0d6ebae2cf8266 100644 (file)
@@ -164,6 +164,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
        struct acpi_pci_generic_root_info *ri;
        struct pci_bus *bus, *child;
        struct acpi_pci_root_ops *root_ops;
+       struct pci_host_bridge *host;
 
        ri = kzalloc(sizeof(*ri), GFP_KERNEL);
        if (!ri)
@@ -189,8 +190,16 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
        if (!bus)
                return NULL;
 
-       pci_bus_size_bridges(bus);
-       pci_bus_assign_resources(bus);
+       /* If we must preserve the resource configuration, claim now */
+       host = pci_find_host_bridge(bus);
+       if (host->preserve_config)
+               pci_bus_claim_resources(bus);
+
+       /*
+        * Assign whatever was left unassigned. If we didn't claim above,
+        * this will reassign everything.
+        */
+       pci_assign_unassigned_root_bus_resources(bus);
 
        list_for_each_entry(child, &bus->children, node)
                pcie_bus_configure_settings(child);