Some BIOSs erroneously reverse the _PRT SourceName and the SourceIndex.
Detect and repair this problem. MS ACPI also allows and repairs this
problem, thus ACPICA must also.
This reverts a change introduced in version 20071019. The table is now loaded
at the namespace root even though this goes against the ACPI specification.
This provides compatibility with other ACPI implementations.
The tree was recently flattened. Adjusted all paths to be relative,
allowing generation anywhere. Split the workspace into two - one that
generates the released binaries, another that is used for testing only.
Only "SSDT" is acceptable to the ACPI spec, but tables are seen with
OEMx and null sigs. Therefore, signature validation is worthless.
Apparently MS ACPI accepts such signatures, ACPICA must be compatible.
BZ 10454.
Execution moved from AcpiEnterSleepStatePrep to AcpiEnterSleepState.
_GTS is now executed immediately before the SLP_EN bit is set, as per the
ACPI specification. Luming Yu, BZ 1653
Always disable the GPE, even if we think that that it is already
disabled. It is possible that the AML or some other code has enabled
the GPE unbeknownst to the ACPICA code.
This ensures that all operation regions and devices throughout the
namespace have been initialized before GPEs are enabled.
Alexey Starikovskiy, BZ 9916
Error if too few arguments, warning if too many. This applies only to external
programmatic control method execution, not method-to-method calls within the
AML.
Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword,
Qword), Field, BankField, and IndexField operators when invoked from inside an
executing control method. In this case, these operators created namespace nodes
that were incorrectly left marked as permanent nodes instead of temporary
nodes. This could cause a problem if there is race condition between an exiting
control method and a running namespace walk. (Reported by Linn Crosetto). Fixed
a problem where the CreateField and CreateXXXField operators would incorrectly
allow duplicate names (the name of the field) with no exception generated.
Fixed a problem where an extraneous debug message was produced for package
objects (when debugging enabled). The message "Package List length larger
than NumElements count" is now produced in the correct case, and is also an
error message rather than a debug message. Added a debug message for the
opposite case, where NumElements is larger than the Package List, and the
package has been padded out with NULL elements.
Implemented a change/cleanup for the handling of invalid ACPI names. Names are now validated and repaired only when 1) entering a new name into the namespace and 2) disassembling a named AML opcode. A warning is only displayed in debug mode or when the interpreter is in "strict" mode, since some working machines do in fact contain invalid ACPI names.
Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword, Qword), Field, BankField, and IndexField operators when invoked from inside an executing control method. In this case, these operators created namespace nodes that were incorrectly left marked as permanent nodes instead of temporary nodes. This could cause a problem if there is race condition between an exiting control method and a running namespace walk. (Reported by Linn Crosetto). Fixed a problem where the CreateField and CreateXXXField operators would incorrectly allow duplicate names (the name of the field) with no exception generated.
Implemented several changes for Notify handling: Added support for new Notify values (ACPI 2.0+) and improved the Notify debug output. Notify on PowerResource objects is no longer allowed, as per the ACPI specification. (Bob Moore, Zhang Rui)
Implemented another change to eliminate/suppress spurious or stray GPEs. The AcpiEvDisableGpe function will now disable GPEs that are neither enabled nor disabled -- meaning that the GPE is unknown to the system. This will prevent future interrupts from that GPE. (Zhang Rui) BZ 6217
All Reference Objects returned via the AcpiEvaluteObject interface are now marked as type "REFERENCE" instead of "ANY". The type ANY is now reservered for NULL objects - either NULL package elements or unresolved named references.
Fixed problem where NULL package elements were not returned to the AcpiEvaluateObject interface correctly. Instead of returning a NULL ACPI_OBJECT package element, the element was simply ignored, potentially causing a buffer overflow and/or confusing the caller who expected a fixed number of elements. BZ 10132 (Lin Ming, Bob Moore)
Fixed a problem where an extraneous debug message was produced for package objects (when debugging enabled). The message "Package List length larger than NumElements count" is now produced in the correct case, and is also an error message rather than a debug message. Added a debug message for the opposite case, where NumElements is larger than the Package List, and the package has been padded out with NULL elements.
Fixed a problem with the use of the Switch operator where execution by multiple concurrent threads could cause an AE_ALREADY_EXISTS. This is caused by the fact that there is no actual Switch opcode, it must be simulated with temp variables and if/else pairs. The solution chosen was to mark any method that uses Switch to be Serialized, thus preventing multiple thread entries. BZ 469.
Fixed a problem where buffer and package objects passed as arguments to a control method via the external AcpiEvaluateObject interface could cause an AE_AML_INTERNAL exception depending on the order and type of operators executed by the target control method.
Fixed a problem with the AcpiGetDevices interface where the mechanism to match device CIDs did not examine the entire list of available CIDs, but instead aborted on the first non-matching CID. Andrew Patterson.
Fixed a problem where a CopyObject to RegionField, BankField, and IndexField objects did not perform an implicit conversion as it should. These types must retain their initial type permanently as per the ACPI specification. However, a CopyObject to all other object types should not perform an implicit conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388