]> git.karo-electronics.de Git - linux-beck.git/commitdiff
PCI: acpiphp: Stop disabling bridges on remove
authorBjorn Helgaas <bhelgaas@google.com>
Fri, 17 Aug 2012 15:56:14 +0000 (09:56 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 17 Aug 2012 17:14:26 +0000 (11:14 -0600)
acpiphp_disable_slot() turns off power to the slot immediately after
calling disable_device(), so there's no point in disabling any bridges
below the slot: we're about to turn them off anyway.

Tested-by: Yijing Wang <wangyijing@huawei.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
drivers/pci/hotplug/acpiphp_glue.c

index ad6fd66954956e81a91195c5b265fea27c2fd6b5..c25291c74353f62074af9e813ca4a03ae0cf63b8 100644 (file)
@@ -869,17 +869,6 @@ static int __ref enable_device(struct acpiphp_slot *slot)
        return retval;
 }
 
-static void disable_bridges(struct pci_bus *bus)
-{
-       struct pci_dev *dev;
-       list_for_each_entry(dev, &bus->devices, bus_list) {
-               if (dev->subordinate) {
-                       disable_bridges(dev->subordinate);
-                       pci_disable_device(dev);
-               }
-       }
-}
-
 /* return first device in slot, acquiring a reference on it */
 static struct pci_dev *dev_in_slot(struct acpiphp_slot *slot)
 {
@@ -932,10 +921,6 @@ static int disable_device(struct acpiphp_slot *slot)
         */
        while ((pdev = dev_in_slot(slot))) {
                pci_stop_bus_device(pdev);
-               if (pdev->subordinate) {
-                       disable_bridges(pdev->subordinate);
-                       pci_disable_device(pdev);
-               }
                __pci_remove_bus_device(pdev);
                pci_dev_put(pdev);
        }