ACPI / ACPICA: Multiple system notify handlers per device
authorRafael J. Wysocki <rjw@sisk.pl>
Wed, 17 Feb 2010 22:42:59 +0000 (23:42 +0100)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Tue, 23 Feb 2010 00:20:56 +0000 (16:20 -0800)
commit3f0be67188c60ebf1b5d00354b44b4b24f5af313
treee785e4cd32fc6ea96ecd1cb14c9cd235efbdf4c5
parentf517709d65beed95f52f021b43e3035b52ef791a
ACPI / ACPICA: Multiple system notify handlers per device

Currently it only is possible to install one system notify handler
per namespace node, but this is not enough for PCI run-time power
management, because we need to install power management notifiers for
devices that already have hotplug notifiers installed.  While in
principle this could be handled at the PCI level, that would be
suboptimal due to the way in which the ACPI-based PCI hotplug code is
designed.

For this reason, modify ACPICA so that it is possible to install more
than one system notify handler per namespace node.  Namely, make
acpi_install_notify_handler(), acpi_remove_notify_handler() and
acpi_ev_notify_dispatch() use a list of system notify handler objects
associated with a namespace node.

Make acpi_remove_notify_handler() call acpi_os_wait_events_complete()
upfront to avoid a situation in which concurrent instance of
acpi_remove_notify_handler() removes the handler from under us while
we're waiting for the event queues to flush.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/acpi/acpica/acobject.h
drivers/acpi/acpica/evmisc.c
drivers/acpi/acpica/evxface.c