linux/drivers/acpi/acpica
Rafael J. Wysocki 3f0be67188 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>
2010-02-22 16:20:56 -08:00
..
accommon.h
acconfig.h ACPICA: avoid "Info: mapping multiple BARs. Your kernel is fine." 2009-11-05 17:01:58 -05:00
acdebug.h ACPICA: Remove duplicate prototypes from header 2009-08-27 10:17:14 -04:00
acdispat.h
acevents.h ACPI: Use GPE reference counting to support shared GPEs 2010-02-22 16:20:45 -08:00
acglobal.h ACPICA: Add support for module-level executable AML code 2009-08-28 19:40:39 -04:00
achware.h ACPICA: Add 64-bit support to acpi_read and acpi_write 2009-08-27 10:17:14 -04:00
acinterp.h ACPICA: Major update for acpi_get_object_info external interface 2009-08-27 10:17:15 -04:00
aclocal.h ACPI: Use GPE reference counting to support shared GPEs 2010-02-22 16:20:45 -08:00
acmacros.h ACPICA: Reduce severity of predefined repair messages, Warning to Info 2009-11-24 21:27:57 -05:00
acnamesp.h ACPICA: Predefined name repair: automatically remove null package elements 2009-12-15 17:29:37 -05:00
acobject.h ACPI / ACPICA: Multiple system notify handlers per device 2010-02-22 16:20:56 -08:00
acopcode.h
acparser.h ACPICA: Add support for module-level executable AML code 2009-08-28 19:40:39 -04:00
acpredef.h ACPICA: Silence the warning about _BIF returning the buffer 2009-11-24 21:34:35 -05:00
acresrc.h
acstruct.h
actables.h ACPICA: Fix AcpiWalkNamespace race condition with table unload 2009-03-27 12:11:02 -04:00
acutils.h ACPICA: New internal utility function to create Integer objects 2009-11-24 21:31:10 -05:00
amlcode.h ACPICA: ACPI 4.0: iASL/Disassembler - IPMI keyword support. 2009-08-27 10:17:17 -04:00
amlresrc.h
dsfield.c ACPICA: Add support for module-level executable AML code 2009-08-28 19:40:39 -04:00
dsinit.c ACPICA: Add post-order callback to acpi_walk_namespace 2009-11-24 21:31:10 -05:00
dsmethod.c ACPICA: Module-level code: enable _REG execution in same scope 2009-12-15 17:29:37 -05:00
dsmthdat.c ACPICA: Deploy new create integer interface where appropriate 2009-11-24 21:31:11 -05:00
dsobject.c ACPICA: Change package length error message to an info message 2009-11-24 21:27:59 -05:00
dsopcode.c Revert "ACPICA: Remove obsolete acpi_os_validate_address interface" 2009-07-27 18:42:38 -04:00
dsutils.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
dswexec.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
dswload.c ACPICA: Fix mutex errors when running _REG methods 2009-12-15 17:29:36 -05:00
dswscope.c
dswstate.c ACPICA: Fix miscellaneous warnings under gcc 4+ 2009-05-27 00:30:49 -04:00
evevent.c ACPICA: Add manifest constants for bit register values 2009-03-27 12:11:01 -04:00
evgpe.c ACPI: Use GPE reference counting to support shared GPEs 2010-02-22 16:20:45 -08:00
evgpeblk.c ACPI: Use GPE reference counting to support shared GPEs 2010-02-22 16:20:45 -08:00
evmisc.c ACPI / ACPICA: Multiple system notify handlers per device 2010-02-22 16:20:56 -08:00
evregion.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
evrgnini.c ACPICA: Module-level code: enable _REG execution in same scope 2009-12-15 17:29:37 -05:00
evsci.c
evxface.c ACPI / ACPICA: Multiple system notify handlers per device 2010-02-22 16:20:56 -08:00
evxfevnt.c ACPI: Use GPE reference counting to support shared GPEs 2010-02-22 16:20:45 -08:00
evxfregn.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
exconfig.c ACPICA: Deploy new create integer interface where appropriate 2009-11-24 21:31:11 -05:00
exconvrt.c ACPICA: Deploy new create integer interface where appropriate 2009-11-24 21:31:11 -05:00
excreate.c ACPICA: New: AcpiInstallMethod - install a single control method 2009-05-27 00:35:51 -04:00
exdump.c ACPICA: Fix several pointer casts to avoid possible compile warnings 2009-08-27 10:17:13 -04:00
exfield.c ACPICA: Deploy new create integer interface where appropriate 2009-11-24 21:31:11 -05:00
exfldio.c ACPICA: ACPI 4.0: Interpreter support for IPMI. 2009-08-27 10:17:18 -04:00
exmisc.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
exmutex.c ACPICA: Move check for valid Thread ID structure 2009-12-15 17:29:37 -05:00
exnames.c
exoparg1.c ACPICA: Deploy new create integer interface where appropriate 2009-11-24 21:31:11 -05:00
exoparg2.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
exoparg3.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
exoparg6.c ACPICA: Deploy new create integer interface where appropriate 2009-11-24 21:31:11 -05:00
exprep.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
exregion.c ACPICA: avoid "Info: mapping multiple BARs. Your kernel is fine." 2009-11-05 17:01:58 -05:00
exresnte.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
exresolv.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
exresop.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
exstore.c ACPICA: Fix DebugObject output for DdbHandle objects 2009-05-27 00:32:24 -04:00
exstoren.c ACPICA: Remove ACPI_GET_OBJECT_TYPE macro 2009-03-26 16:38:27 -04:00
exstorob.c ACPICA: Windows compatibility fix: same buffer/string store 2009-08-28 15:17:07 -04:00
exsystem.c
exutils.c ACPICA: Major update for acpi_get_object_info external interface 2009-08-27 10:17:15 -04:00
hwacpi.c ACPICA: New: I/O port protection 2009-03-27 12:11:03 -04:00
hwgpe.c ACPICA: Add 64-bit support to acpi_read and acpi_write 2009-08-27 10:17:14 -04:00
hwregs.c ACPICA: Add 64-bit support to acpi_read and acpi_write 2009-08-27 10:17:14 -04:00
hwsleep.c x86, intel_txt: clean up the impact on generic code, unbreak non-x86 2009-09-01 18:25:07 -07:00
hwtimer.c ACPICA: Add 64-bit support to acpi_read and acpi_write 2009-08-27 10:17:14 -04:00
hwvalid.c Revert "ACPICA: delete check for AML access to port 0x81-83" 2009-04-24 00:32:52 -04:00
hwxface.c ACPICA: acpi_reset: Bypass port validation mechanism 2009-08-28 19:40:39 -04:00
Makefile ACPICA: Add repair for predefined methods that must return sorted lists 2009-11-24 21:31:10 -05:00
nsaccess.c ACPICA: Module-level code: enable _REG execution in same scope 2009-12-15 17:29:37 -05:00
nsalloc.c ACPICA: Fix several acpi_attach_data problems 2009-08-27 10:17:19 -04:00
nsdump.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
nsdumpdv.c ACPICA: Add post-order callback to acpi_walk_namespace 2009-11-24 21:31:10 -05:00
nseval.c ACPICA: Module-level code: enable _REG execution in same scope 2009-12-15 17:29:37 -05:00
nsinit.c ACPICA: Add post-order callback to acpi_walk_namespace 2009-11-24 21:31:10 -05:00
nsload.c ACPICA: Fix several acpi_attach_data problems 2009-08-27 10:17:19 -04:00
nsnames.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
nsobject.c ACPICA: New: AcpiInstallMethod - install a single control method 2009-05-27 00:35:51 -04:00
nsparse.c ACPICA: Formatting update - no functional changes 2009-03-27 12:11:02 -04:00
nspredef.c ACPICA: Predefined name repair: automatically remove null package elements 2009-12-15 17:29:37 -05:00
nsrepair2.c ACPICA: Predefined name repair: automatically remove null package elements 2009-12-15 17:29:37 -05:00
nsrepair.c ACPICA: Update function headers and comments, no functional change 2009-12-15 17:29:36 -05:00
nssearch.c ACPICA: Miscellaneous lint changes 2009-05-27 00:30:49 -04:00
nsutils.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
nswalk.c ACPICA: Add post-order callback to acpi_walk_namespace 2009-11-24 21:31:10 -05:00
nsxfeval.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
nsxfname.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
nsxfobj.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
psargs.c
psloop.c ACPICA: Add additional module-level code support 2009-11-24 21:31:11 -05:00
psopcode.c
psparse.c ACPICA: Deploy new create integer interface where appropriate 2009-11-24 21:31:11 -05:00
psscope.c
pstree.c
psutils.c
pswalk.c
psxface.c ACPICA: Module-level code: enable _REG execution in same scope 2009-12-15 17:29:37 -05:00
rsaddr.c
rscalc.c ACPICA: Additional validation of _PRT packages (resource mgr) 2009-05-27 00:35:50 -04:00
rscreate.c ACPI: Revert conflicting workaround for BIOS w/ mangled PRT entries 2009-04-11 00:57:21 -04:00
rsdump.c
rsinfo.c
rsio.c
rsirq.c
rslist.c
rsmemory.c
rsmisc.c
rsutils.c
rsxface.c ACPICA: Update internal namespace node/handle interfaces 2009-12-15 17:29:35 -05:00
tbfadt.c x86: Trivial whitespace cleanups 2009-09-20 20:18:57 +02:00
tbfind.c
tbinstal.c ACPICA: Miscellaneous lint changes 2009-05-27 00:30:49 -04:00
tbutils.c ACPICA: Dump table header - suppress output of non-printable characters 2009-08-27 10:17:19 -04:00
tbxface.c Merge branch 'linus' into release 2009-04-05 02:14:15 -04:00
tbxfroot.c ACPICA: Formatting update - no functional changes 2009-03-26 16:38:29 -04:00
utalloc.c
utcopy.c ACPICA: Update function headers, no functional change 2009-12-15 17:29:35 -05:00
utdebug.c ACPICA: Fix possible warnings for ACPI_THREAD_ID on 64-bit build 2009-05-27 00:30:48 -04:00
utdelete.c ACPICA: fix leak of acpi_os_validate_address 2009-08-27 13:10:35 -04:00
uteval.c ACPICA: Update _OSI with new Windows OS strings 2009-09-08 22:28:34 -04:00
utglobal.c ACPICA: Add support for module-level executable AML code 2009-08-28 19:40:39 -04:00
utids.c ACPICA: Major update for acpi_get_object_info external interface 2009-08-27 10:17:15 -04:00
utinit.c ACPICA: Fix fault if acpi_terminate is called twice 2009-08-28 19:40:38 -04:00
utlock.c ACPICA: Fix AcpiWalkNamespace race condition with table unload 2009-03-27 12:11:02 -04:00
utmath.c
utmisc.c ACPICA: Reduce severity of predefined repair messages, Warning to Info 2009-11-24 21:27:57 -05:00
utmutex.c ACPICA: Fix possible warnings for ACPI_THREAD_ID on 64-bit build 2009-05-27 00:30:48 -04:00
utobject.c ACPICA: New internal utility function to create Integer objects 2009-11-24 21:31:10 -05:00
utresrc.c
utstate.c
utxface.c ACPICA: Add support for module-level executable AML code 2009-08-28 19:40:39 -04:00