linux_dsm_epyc7002/drivers/acpi/acpica
Rafael J. Wysocki 9cd031441a ACPI / ACPICA: Fix global lock acquisition
There are two problems with the ACPICA's current implementation of
the global lock acquisition.  First, acpi_ev_global_lock_handler(),
which in fact is an interface to the outside of the kernel, doesn't
validate its input, so it only works correctly if the other side
(i.e. the ACPI firmware) is fully specification-compliant (as far
as the global lock is concerned).  Unfortunately, that's known not
to be the case on some systems (i.e. we get spurious global lock
signaling interrupts without the pending flag set on some systems).
Second, acpi_ev_global_lock_handler() attempts to acquire the global
lock on behalf of a thread waiting for it without checking if there
actually is such a thread.  Both of these shortcomings need to be
addressed to prevent all possible race conditions from happening.

Rework acpi_ev_global_lock_handler() so that it doesn't try to
acquire the global lock and make it signal the availability of the
global lock to the waiting thread instead.  Make sure that the
availability of the global lock can only be signaled when there
is a thread waiting for it and that it can't be signaled more than
once in a row (to keep acpi_gbl_global_lock_semaphore in balance).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
2011-01-07 01:15:55 -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 ACPI / ACPICA: Defer enabling of runtime GPEs (v3) 2010-09-24 16:55:47 -04:00
acglobal.h Merge branch 'gpe-defer' into release 2010-10-25 02:13:09 -04:00
achware.h ACPICA: Make acpi_thread_id no longer configurable, always u64 2010-10-01 01:47:55 -04: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 Merge branch 'gpe-defer' into release 2010-10-25 02:13:09 -04: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: Revert "Revert "Enable multi-byte EC transfers 2010-10-01 01:46:32 -04: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: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -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: Make acpi_thread_id no longer configurable, always u64 2010-10-01 01:47:55 -04: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 ACPI / ACPICA: Defer enabling of runtime GPEs (v3) 2010-09-24 16:55:47 -04:00
evgpe.c ACPI / ACPICA: Fix reference counting problems with GPE handlers 2010-08-07 10:30:12 -04:00
evgpeblk.c ACPI / ACPICA: Defer enabling of runtime GPEs (v3) 2010-09-24 16:55:47 -04:00
evgpeinit.c ACPI / ACPICA: Disable GPEs during initialization 2010-12-26 17:02:55 -05:00
evgpeutil.c ACPICA: Split large file, evgpeblk 2010-05-06 03:05:54 -04:00
evmisc.c ACPI / ACPICA: Fix global lock acquisition 2011-01-07 01:15:55 -05:00
evregion.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
evrgnini.c ACPICA: Obsolete the acpi_os_derive_pci_id OSL interface 2010-10-01 01:47:54 -04:00
evsci.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
evxface.c ACPI / ACPICA: Defer enabling of runtime GPEs (v3) 2010-09-24 16:55:47 -04:00
evxfevnt.c ACPI / ACPICA: Defer enabling of runtime GPEs (v3) 2010-09-24 16:55:47 -04: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: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
exdebug.c ACPICA: Enhance configuration for output of AML Debug Object 2010-04-20 10:42:49 -04:00
exdump.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04: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: Remove obsolete GPE function 2010-07-06 22:34:27 -04: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
Makefile ACPICA: iASL/Disassembler: Write ACPI errors to stderr instead of output file 2010-10-01 01:47:56 -04:00
nsaccess.c ACPICA: Performance enhancement for namespace search and access 2010-07-06 22:33:56 -04:00
nsalloc.c ACPICA: Optimization: Reduce the number of namespace walks 2010-07-06 22:33:57 -04:00
nsdump.c ACPICA: Core: Replace all %d format specifiers with %u (unsigned) 2010-07-06 22:33:55 -04:00
nsdumpdv.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nseval.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -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
nsrepair2.c ACPICA: Add repair for _HID and _CID strings 2010-10-01 01:47:56 -04:00
nsrepair.c ACPICA: Fix lint warning for 64-bit constant 2010-07-06 22:34:27 -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: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -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: Standardize integer output for ACPICA warnings/errors 2010-04-20 10:42:52 -04:00
psopcode.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psparse.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -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: Add subsystem option to force copy of DSDT to local memory 2010-04-20 10:43:16 -04: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 Merge branch 'gpe-defer' into release 2010-10-25 02:13:09 -04: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