diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-11-22 21:55:07 +0100 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-11-22 21:55:07 +0100 |
commit | c27b2c33b6215eeb3d5c290ac889ab6d543f6207 (patch) | |
tree | 5eba733de6ca18f682e2704069c8a014e93fa26b /drivers/acpi/pci_root.c | |
parent | 1ceaba05b4afb4bd7b4b4801f2718c13f59321eb (diff) | |
download | linux-c27b2c33b6215eeb3d5c290ac889ab6d543f6207.tar.gz linux-c27b2c33b6215eeb3d5c290ac889ab6d543f6207.tar.bz2 linux-c27b2c33b6215eeb3d5c290ac889ab6d543f6207.zip |
ACPI / hotplug: Introduce common hotplug function acpi_device_hotplug()
Modify the common ACPI device hotplug code to always queue up the
same function, acpi_device_hotplug(), using acpi_hotplug_execute()
and make the PCI host bridge hotplug code use that function too for
device hot removal.
This allows some code duplication to be reduced and a race condition
where the relevant ACPI handle may become invalid between the
notification handler and the function queued up by it via
acpi_hotplug_execute() to be avoided.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Diffstat (limited to 'drivers/acpi/pci_root.c')
-rw-r--r-- | drivers/acpi/pci_root.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 4076491c6ded..ca05064f3ff7 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c @@ -683,11 +683,13 @@ static void hotplug_event_root(void *data, u32 type) if (!root) break; + acpi_evaluate_hotplug_ost(handle, ACPI_NOTIFY_EJECT_REQUEST, + ACPI_OST_SC_EJECT_IN_PROGRESS, NULL); get_device(&root->device->dev); acpi_scan_lock_release(); - acpi_bus_device_eject(root->device, ACPI_NOTIFY_EJECT_REQUEST); + acpi_device_hotplug(root->device, ACPI_NOTIFY_EJECT_REQUEST); return; default: acpi_handle_warn(handle, |