diff options
author | Lin Ming <ming.m.lin@intel.com> | 2011-01-12 09:19:43 +0800 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2011-01-18 23:48:03 -0500 |
commit | 262948428878fb340127faca1791acb17146122e (patch) | |
tree | 646ebdc7158fcdf889e59185dd58fd764725bc45 /drivers/acpi/acpica/amlcode.h | |
parent | 672af843abfc9a41c7ec792722e04b6c68a3cfea (diff) | |
download | op-kernel-dev-262948428878fb340127faca1791acb17146122e.zip op-kernel-dev-262948428878fb340127faca1791acb17146122e.tar.gz |
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>
Diffstat (limited to 'drivers/acpi/acpica/amlcode.h')
-rw-r--r-- | drivers/acpi/acpica/amlcode.h | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/drivers/acpi/acpica/amlcode.h b/drivers/acpi/acpica/amlcode.h index 1f484ba..ac1f561 100644 --- a/drivers/acpi/acpica/amlcode.h +++ b/drivers/acpi/acpica/amlcode.h @@ -480,16 +480,10 @@ typedef enum { AML_FIELD_ATTRIB_SMB_BLOCK_CALL = 0x0D } AML_ACCESS_ATTRIBUTE; -/* Bit fields in method_flags byte */ +/* Bit fields in the AML method_flags byte */ #define AML_METHOD_ARG_COUNT 0x07 #define AML_METHOD_SERIALIZED 0x08 #define AML_METHOD_SYNC_LEVEL 0xF0 -/* METHOD_FLAGS_ARG_COUNT is not used internally, define additional flags */ - -#define AML_METHOD_INTERNAL_ONLY 0x01 -#define AML_METHOD_RESERVED1 0x02 -#define AML_METHOD_RESERVED2 0x04 - #endif /* __AMLCODE_H__ */ |