ACPI: fix hotplug race
authorZhang Rui <rui.zhang@intel.com>
Thu, 28 Aug 2008 02:05:06 +0000 (10:05 +0800)
committerLen Brown <len.brown@intel.com>
Wed, 24 Sep 2008 03:12:38 +0000 (23:12 -0400)
commit19cd847ab24fefe9e50101ec94479e0400a08650
tree9af663d1f43e59d6ce3f942d89b910dda5e1c542
parent6bd00a61ab63d4ceb635ae0316353c11c900b8d8
ACPI: fix hotplug race

The hotplug notification handler and drivers' notification handler all
run in one workqueue.  Before hotplug removes an acpi device, the
device driver's notification handler is already be recorded to run just
after global notification handler.  After hotplug notification handler
runs, acpica will notice a NULL notification handler and crash.

So now we run run hotplug in another workqueue and wait
for all acpi notication handlers finish.
This was found in battery hotplug, but actually all
hotplug can be affected.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/dock.c
drivers/acpi/osl.c
include/acpi/acpiosxf.h