]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "PCI: Use preserve_config in place of pci_flags"
authorTerry Tritton <terry.tritton@linaro.org>
Fri, 17 Jan 2025 15:15:51 +0000 (15:15 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 1 Feb 2025 17:22:30 +0000 (18:22 +0100)
This reverts commit 0dde3ae52a0dcc5cdfe2185ec58ec52b43fda22e which is
commit 7246a4520b4bf1494d7d030166a11b5226f6d508 upstream.

This patch causes a regression in cuttlefish/crossvm boot on arm64.

The patch was part of a series that when applied will not cause a regression
but this patch was backported to the 5.10 branch by itself.

The other patches do not apply cleanly to the 5.10 branch.

Signed-off-by: Terry Tritton <terry.tritton@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/pci/controller/pci-host-common.c
drivers/pci/probe.c

index 2525bd0432616e4d987943bcec04a63b37b7908c..6ce34a1deecb2cd306f93fbd3b7ed113ef6f5cd7 100644 (file)
@@ -71,6 +71,10 @@ int pci_host_common_probe(struct platform_device *pdev)
        if (IS_ERR(cfg))
                return PTR_ERR(cfg);
 
+       /* Do not reassign resources if probe only */
+       if (!pci_has_flag(PCI_PROBE_ONLY))
+               pci_add_flags(PCI_REASSIGN_ALL_BUS);
+
        bridge->sysdata = cfg;
        bridge->ops = (struct pci_ops *)&ops->pci_ops;
 
index b0ac721e047dbaaa9b0018aae836ccce65747211..02a75f3b59208e1dc52af434858ce5417486f8a1 100644 (file)
@@ -3018,18 +3018,20 @@ int pci_host_probe(struct pci_host_bridge *bridge)
 
        bus = bridge->bus;
 
-       /* If we must preserve the resource configuration, claim now */
-       if (bridge->preserve_config)
-               pci_bus_claim_resources(bus);
-
        /*
-        * Assign whatever was left unassigned. If we didn't claim above,
-        * this will reassign everything.
+        * We insert PCI resources into the iomem_resource and
+        * ioport_resource trees in either pci_bus_claim_resources()
+        * or pci_bus_assign_resources().
         */
-       pci_assign_unassigned_root_bus_resources(bus);
+       if (pci_has_flag(PCI_PROBE_ONLY)) {
+               pci_bus_claim_resources(bus);
+       } else {
+               pci_bus_size_bridges(bus);
+               pci_bus_assign_resources(bus);
 
-       list_for_each_entry(child, &bus->children, node)
-               pcie_bus_configure_settings(child);
+               list_for_each_entry(child, &bus->children, node)
+                       pcie_bus_configure_settings(child);
+       }
 
        pci_bus_add_devices(bus);
        return 0;