diff options
author | Yinghai Lu <yinghai@kernel.org> | 2012-10-30 16:31:43 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2012-11-03 18:26:37 -0400 |
commit | 9738a1fd214b8f617b31503307c79b6af72ee464 (patch) | |
tree | f746f47beac83d0266cd5a963a1041efd14517aa /drivers/acpi | |
parent | cdfcc572be0a8b423cecfb4ab5fd735fafe9c54a (diff) |
PCI/ACPI: Make acpi_pci_root_remove() stop/remove pci root bus
It will call pci_stop_and_remove_bus() to stop/remove pci root bus.
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
CC: Len Brown <lenb@kernel.org>
CC: linux-acpi@vger.kernel.org
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/pci_root.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 27adbfdffb0c..aed09537861a 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c | |||
@@ -667,14 +667,20 @@ static int acpi_pci_root_remove(struct acpi_device *device, int type) | |||
667 | struct acpi_pci_root *root = acpi_driver_data(device); | 667 | struct acpi_pci_root *root = acpi_driver_data(device); |
668 | struct acpi_pci_driver *driver; | 668 | struct acpi_pci_driver *driver; |
669 | 669 | ||
670 | pci_stop_root_bus(root->bus); | ||
671 | |||
670 | mutex_lock(&acpi_pci_root_lock); | 672 | mutex_lock(&acpi_pci_root_lock); |
671 | list_for_each_entry(driver, &acpi_pci_drivers, node) | 673 | list_for_each_entry(driver, &acpi_pci_drivers, node) |
672 | if (driver->remove) | 674 | if (driver->remove) |
673 | driver->remove(root); | 675 | driver->remove(root); |
676 | mutex_unlock(&acpi_pci_root_lock); | ||
674 | 677 | ||
675 | device_set_run_wake(root->bus->bridge, false); | 678 | device_set_run_wake(root->bus->bridge, false); |
676 | pci_acpi_remove_bus_pm_notifier(device); | 679 | pci_acpi_remove_bus_pm_notifier(device); |
677 | 680 | ||
681 | pci_remove_root_bus(root->bus); | ||
682 | |||
683 | mutex_lock(&acpi_pci_root_lock); | ||
678 | list_del(&root->node); | 684 | list_del(&root->node); |
679 | mutex_unlock(&acpi_pci_root_lock); | 685 | mutex_unlock(&acpi_pci_root_lock); |
680 | kfree(root); | 686 | kfree(root); |