]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: Hold the rescan mutex when scanning for the first time
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 12 Jun 2024 08:20:14 +0000 (10:20 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 12 Jun 2024 11:20:56 +0000 (13:20 +0200)
With the introduction of PCI device power control drivers that will be
able to trigger the port rescan when probing, we need to hold the rescan
mutex during the initial pci_host_probe() too or the two could get in
each other's way.

Tested-by: Amit Pundir <amit.pundir@linaro.org>
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD, SM8650-QRD & SM8650-HDK
Tested-by: Caleb Connolly <caleb.connolly@linaro.org> # OnePlus 8T
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/r/20240612082019.19161-2-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/pci/probe.c

index 5fbabb4e3425fb2514a2f2fcced2d469f020eac3..4c367f13acdc5701e3a80f072491a8f157aac4f5 100644 (file)
@@ -3069,7 +3069,9 @@ int pci_host_probe(struct pci_host_bridge *bridge)
        struct pci_bus *bus, *child;
        int ret;
 
+       pci_lock_rescan_remove();
        ret = pci_scan_root_bus_bridge(bridge);
+       pci_unlock_rescan_remove();
        if (ret < 0) {
                dev_err(bridge->dev.parent, "Scanning root bridge failed");
                return ret;