]> 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:16:25 +0000 (15:16 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Jan 2025 16:16:02 +0000 (17:16 +0100)
This reverts commit c1a1393f7844c645389e5f1a3f1f0350e0fb9316 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.15 branch by itself.

The other patches do not apply cleanly to the 5.15 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 fd3020a399cf93ec961338cf8125aa15b8862593..d3924a44db02f893115214b4ab73623e1309bf83 100644 (file)
@@ -73,6 +73,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;
        bridge->msi_domain = true;
index cda6650aa3b1139aee447d7b3a6ba880e9f128f1..dd2134c7c4192ba79f49796e376f9a87f3b8f91e 100644 (file)
@@ -3048,18 +3048,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;