]> Gentwo Git Trees - linux/.git/commitdiff
PCI: Change pci_dev variable from 'bridge' to 'dev'
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Thu, 13 Nov 2025 16:26:20 +0000 (18:26 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 14 Nov 2025 18:32:55 +0000 (12:32 -0600)
Upcoming fix to BAR resize will store also device BAR resource in the
saved list. Change the pci_dev variable in the loop from 'bridge' to
'dev' as the former would be misleading with non-bridges in the list.

This is in a separate change to reduce churn in the upcoming BAR resize
fix.

While it appears that the logic in the loop doing pci_setup_bridge() is
altered as 'bridge' variable is no longer updated, a bridge should never
appear more than once in the saved list so the check can only match to the
first entry. As such, the code with two distinct pci_dev variables better
represents the intention of the check compared with the old code where
bridge variable was reused for a different purpose.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Alex Bennée <alex.bennee@linaro.org> # AVA, AMD GPU
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Link: https://patch.msgid.link/20251113162628.5946-4-ilpo.jarvinen@linux.intel.com
drivers/pci/setup-bus.c

index e6984bb530ae03e2ddc44edcdf6e84965ba3c0a8..d58f025aeaffcf0a698d139bef2712d2fde090f2 100644 (file)
@@ -2479,12 +2479,13 @@ int pbus_reassign_bridge_resources(struct pci_bus *bus, struct resource *res)
        }
 
        list_for_each_entry(dev_res, &saved, list) {
+               struct pci_dev *dev = dev_res->dev;
+
                /* Skip the bridge we just assigned resources for */
-               if (bridge == dev_res->dev)
+               if (bridge == dev)
                        continue;
 
-               bridge = dev_res->dev;
-               pci_setup_bridge(bridge->subordinate);
+               pci_setup_bridge(dev->subordinate);
        }
 
        free_list(&saved);
@@ -2500,19 +2501,19 @@ int pbus_reassign_bridge_resources(struct pci_bus *bus, struct resource *res)
        /* Revert to the old configuration */
        list_for_each_entry(dev_res, &saved, list) {
                struct resource *res = dev_res->res;
+               struct pci_dev *dev = dev_res->dev;
 
-               bridge = dev_res->dev;
-               i = pci_resource_num(bridge, res);
+               i = pci_resource_num(dev, res);
 
                if (res->parent) {
                        release_child_resources(res);
-                       pci_release_resource(bridge, i);
+                       pci_release_resource(dev, i);
                }
 
                restore_dev_resource(dev_res);
 
-               pci_claim_resource(bridge, i);
-               pci_setup_bridge(bridge->subordinate);
+               pci_claim_resource(dev, i);
+               pci_setup_bridge(dev->subordinate);
        }
        free_list(&saved);
        up_read(&pci_bus_sem);