summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/pci_root.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-11-22 21:55:07 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-11-22 21:55:07 +0100
commitc27b2c33b6215eeb3d5c290ac889ab6d543f6207 (patch)
tree5eba733de6ca18f682e2704069c8a014e93fa26b /drivers/acpi/pci_root.c
parent1ceaba05b4afb4bd7b4b4801f2718c13f59321eb (diff)
downloadblackbird-op-linux-c27b2c33b6215eeb3d5c290ac889ab6d543f6207.tar.gz
blackbird-op-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.c4
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,
OpenPOWER on IntegriCloud