linux/drivers/acpi/acpica
Lin Ming 2629484288 ACPICA: Fix issues/fault with automatic "serialized" method support
History: This support changes a method to "serialized" on the fly if the
method generates an AE_ALREADY_EXISTS error, indicating the possibility
that it cannot handle reentrancy.

This fix repairs a couple of issues seen in the field, especially on
machines with many cores.

1) Delete method children only upon the exit of the last thread, so
as to not delete objects out from under running threads.

2) Set the "serialized" bit for the method only upon the exit of the
last thread, so as to not cause deadlock when running threads attempt
to exit.

3) Cleanup the use of the AML "MethodFlags" and internal method flags
so that there is no longer any confustion between the two.

Reported-by: Dana Myers <dana.myers@oracle.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2011-01-18 23:48:03 -05:00
..
Makefile ACPICA: Move GPE functions to new file evxfgpe.c 2011-01-12 04:20:41 -05:00
accommon.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acconfig.h ACPICA: Limit maximum time for Sleep() operator 2010-06-12 00:55:17 -04:00
acdebug.h ACPICA/ACPI: Add new host interfaces for _OSI support 2010-10-01 01:47:43 -04:00
acdispat.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acevents.h ACPICA: Implicit notify support 2011-01-12 04:27:00 -05:00
acglobal.h ACPICA: Global event handler 2011-01-12 04:27:00 -05:00
achware.h ACPICA: Misc comments to minimize code divergence 2011-01-12 04:27:00 -05:00
acinterp.h ACPICA: Rename acpi_ex_system_do_suspend->acpi_ex_system_do_sleep 2010-05-06 03:05:54 -04:00
aclocal.h ACPICA: Implicit notify support 2011-01-12 04:27:00 -05:00
acmacros.h ACPICA: iASL/Disassembler: Write ACPI errors to stderr instead of output file 2010-10-01 01:47:56 -04:00
acnamesp.h ACPICA: iASL/Disassembler: Write ACPI errors to stderr instead of output file 2010-10-01 01:47:56 -04:00
acobject.h ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
acopcode.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acparser.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acpredef.h ACPICA: iASL/Core: Add support for _WDG/_WED MS methods 2010-07-06 22:33:55 -04:00
acresrc.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acstruct.h ACPICA: Expand device initialization counters to 32 bits 2010-07-06 22:33:56 -04:00
actables.h ACPICA: Update DSDT copy/detection. 2010-04-20 10:43:16 -04:00
acutils.h ACPICA: iASL/Disassembler: Write ACPI errors to stderr instead of output file 2010-10-01 01:47:56 -04:00
amlcode.h ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
amlresrc.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dsfield.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
dsinit.c ACPICA: Expand initialization counters to 32 bits 2010-07-06 22:33:55 -04:00
dsmethod.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
dsmthdat.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04:00
dsobject.c ACPICA: Fix for Alias references within Package objects 2010-07-06 22:34:27 -04:00
dsopcode.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04:00
dsutils.c ACPICA: Core: Replace all %d format specifiers with %u (unsigned) 2010-07-06 22:33:55 -04:00
dswexec.c Subject: [PATCH] ACPICA: Fix Scope() op in module level code 2010-10-23 01:36:40 -04:00
dswload.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dswscope.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dswstate.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
evevent.c ACPICA: Global event handler 2011-01-12 04:27:00 -05:00
evgpe.c ACPICA: Fix memory leak in acpi_ev_asynch_execute_gpe_method(). 2011-01-18 23:47:30 -05:00
evgpeblk.c ACPICA: Misc comments to minimize code divergence 2011-01-12 04:27:00 -05:00
evgpeinit.c ACPICA: Misc comments to minimize code divergence 2011-01-12 04:27:00 -05:00
evgpeutil.c ACPICA: Move GPE functions to new file evxfgpe.c 2011-01-12 04:20:41 -05:00
evmisc.c ACPICA: Make acpi_thread_id no longer configurable, always u64 2010-10-01 01:47:55 -04:00
evregion.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
evrgnini.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
evsci.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
evxface.c ACPICA: Global event handler 2011-01-12 04:27:00 -05:00
evxfevnt.c ACPICA: Move GPE functions to new file evxfgpe.c 2011-01-12 04:20:41 -05:00
evxfgpe.c ACPICA: Misc comments to minimize code divergence 2011-01-12 04:27:00 -05:00
evxfregn.c ACPICA: Comment update; no functional change 2010-10-17 22:55:20 -04:00
exconfig.c ACPI / ACPICA: Do not execute _PRW methods during initialization 2010-07-12 14:17:39 -04:00
exconvrt.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
excreate.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
exdebug.c ACPICA: Enhance configuration for output of AML Debug Object 2010-04-20 10:42:49 -04:00
exdump.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
exfield.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exfldio.c ACPICA: Revert "Revert "Enable multi-byte EC transfers 2010-10-01 01:46:32 -04:00
exmisc.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exmutex.c ACPICA: Make acpi_thread_id no longer configurable, always u64 2010-10-01 01:47:55 -04:00
exnames.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exoparg1.c ACPICA: Rename acpi_ex_system_do_suspend->acpi_ex_system_do_sleep 2010-05-06 03:05:54 -04:00
exoparg2.c ACPICA: Minimize the differences between linux GPE code and ACPICA code base 2010-04-20 10:43:16 -04:00
exoparg3.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exoparg6.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exprep.c ACPICA: Revert "Revert "Enable multi-byte EC transfers 2010-10-01 01:46:32 -04:00
exregion.c ACPICA: Fix acpi_os_read_pci_configuration prototype 2010-10-01 01:46:31 -04:00
exresnte.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exresolv.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exresop.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exstore.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exstoren.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exstorob.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exsystem.c ACPICA: Limit maximum time for Sleep() operator 2010-06-12 00:55:17 -04:00
exutils.c ACPI: Fix typos 2010-09-28 21:38:19 -04:00
hwacpi.c ACPICA: simplify SCI_EN workaround 2010-05-12 00:37:59 -04:00
hwgpe.c ACPICA: Misc comments to minimize code divergence 2011-01-12 04:27:00 -05:00
hwpci.c ACPICA: Obsolete the acpi_os_derive_pci_id OSL interface 2010-10-01 01:47:54 -04:00
hwregs.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
hwsleep.c ACPICA: Core: Replace all %d format specifiers with %u (unsigned) 2010-07-06 22:33:55 -04:00
hwtimer.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
hwvalid.c ACPICA: Truncate I/O addresses to 16 bits for Windows compatibility 2010-06-12 00:55:50 -04:00
hwxface.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsaccess.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
nsalloc.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
nsdump.c ACPICA: Debugger: Lock namespace for duration of a namespace dump 2011-01-18 23:47:55 -05:00
nsdumpdv.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nseval.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
nsinit.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04:00
nsload.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsnames.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04:00
nsobject.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsparse.c ACPICA: Core: Replace all %d format specifiers with %u (unsigned) 2010-07-06 22:33:55 -04:00
nspredef.c ACPICA: Predefined name repair: fix NULL package elements 2010-01-22 12:30:06 -05:00
nsrepair.c ACPICA: Fix lint warning for 64-bit constant 2010-07-06 22:34:27 -04:00
nsrepair2.c ACPICA: Add repair for _HID and _CID strings 2010-10-01 01:47:56 -04:00
nssearch.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04:00
nsutils.c ACPICA: iASL/Disassembler: Write ACPI errors to stderr instead of output file 2010-10-01 01:47:56 -04:00
nswalk.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04:00
nsxfeval.c ACPICA: AcpiGetDevices: Eliminate unnecessary _STA calls 2010-01-22 12:30:05 -05:00
nsxfname.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
nsxfobj.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04:00
psargs.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
psloop.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
psopcode.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psparse.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
psscope.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
pstree.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psutils.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
pswalk.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psxface.c ACPICA: Fix issues/fault with automatic "serialized" method support 2011-01-18 23:48:03 -05:00
rsaddr.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rscalc.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rscreate.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
rsdump.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsinfo.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsio.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsirq.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rslist.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
rsmemory.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsmisc.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
rsutils.c ACPI: Fix typos 2010-09-28 21:38:19 -04:00
rsxface.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
tbfadt.c ACPICA: Add ACPI_INLINE configuration parameter 2010-10-01 01:47:55 -04:00
tbfind.c ACPICA: Clarify/rename some root table descriptor fields 2010-05-06 03:05:54 -04:00
tbinstal.c ACPICA: Clarify/rename some root table descriptor fields 2010-05-06 03:05:54 -04:00
tbutils.c ACPICA: Clarify/rename some root table descriptor fields 2010-05-06 03:05:54 -04:00
tbxface.c ACPICA: Clarify/rename some root table descriptor fields 2010-05-06 03:05:54 -04:00
tbxfroot.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
utalloc.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
utcopy.c ACPICA: Prevent possible allocation overrun during object copy 2010-05-06 03:05:54 -04:00
utdebug.c ACPICA: Make acpi_thread_id no longer configurable, always u64 2010-10-01 01:47:55 -04:00
utdelete.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
uteval.c ACPICA/ACPI: Add new host interfaces for _OSI support 2010-10-01 01:47:43 -04:00
utglobal.c ACPICA: Global event handler 2011-01-12 04:27:00 -05:00
utids.c ACPICA: Eliminate duplicate code in acpi_ut_execute_* functions 2010-10-17 22:55:39 -04:00
utinit.c ACPICA/ACPI: Add new host interfaces for _OSI support 2010-10-01 01:47:43 -04:00
utlock.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utmath.c ACPICA: Update math module; no functional change 2010-10-01 01:47:55 -04:00
utmisc.c ACPICA: iASL/Disassembler: Write ACPI errors to stderr instead of output file 2010-10-01 01:47:56 -04:00
utmutex.c ACPICA: Make acpi_thread_id no longer configurable, always u64 2010-10-01 01:47:55 -04:00
utobject.c ACPICA: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
utosi.c ACPICA: Add Vista SP2 to supported _OSI strings 2010-10-17 22:55:40 -04:00
utresrc.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utstate.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utxface.c Merge branch 'gpe-defer' into release 2010-10-25 02:13:09 -04:00
utxferror.c ACPICA: Increase configurability of error messages 2010-10-01 01:47:57 -04:00