Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57fd9a4d authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

PCI: acpiphp: Stop disabling bridges on remove



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: default avatarYijing Wang <wangyijing@huawei.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
parent 0d7614f0
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -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);
	}