diff options
Diffstat (limited to 'sys/contrib/dev/acpica/changes.txt')
-rw-r--r-- | sys/contrib/dev/acpica/changes.txt | 19127 |
1 files changed, 19127 insertions, 0 deletions
diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt new file mode 100644 index 000000000000..a483f7ec92df --- /dev/null +++ b/sys/contrib/dev/acpica/changes.txt @@ -0,0 +1,19127 @@ +---------------------------------------- + + +17 July 2020. Summary of changes for version 20200717: + +This release is available at https://acpica.org/downloads + + +1) ACPICA kernel-resident subsystem: + +Do not increment OperationRegion reference counts for field units. Recent +server firmware has revealed that this reference count can overflow on +large servers that declare many field units (thousands) under the same +OperationRegion. This occurs because each field unit declaration will add +a reference count to the source OperationRegion. This release solves the +reference count overflow for OperationRegion objects by preventing +fieldUnits from incrementing their parent OperationRegion's reference +count. + +Replaced one-element arrays with flexible-arrays, which were introduced +in C99. + +Restored the readme file containing the directions for generation of +ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is +located at: generate/msvc2017/readme.txt + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: Fixed a regression found in version 20200214. Prevent iASL from +emitting an extra byte of garbage data when control methods declared a +single parameter type without using braces. This extra byte is known to +cause a blue screen on the Windows AML interpreter. + +iASL: Made a change to allow external declarations to specify the type of +a named object even when some name segments are not defined. +This change allows the following ASL code to compile (When DEV0 is not +defined or not defined yet): + + External (\_SB.DEV0.OBJ1, IntObj) + External (\_SB.DEV0, DeviceObj) + +iASL: Fixed a problem where method names in "Alias ()" statement could be +misinterpreted. They are now interpreted correctly as method invocations. + +iASL: capture a method parameter count (Within the Method info segment, +as well as the argument node) when using parameter type lists. + +---------------------------------------- + + +28 May 2020. Summary of changes for version 20200528: + + +1) ACPICA kernel-resident subsystem: + +Removed old/obsolete Visual Studio files which were used to build the +Windows versions of the ACPICA tools. Since we have moved to Visual +Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 +project files. The new subdirectory and solution file are located at: + + acpica/generate/msvc2017/AcpiComponents.sln + + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: added support for a new OperationRegion Address Space (subtype): +PlatformRtMechanism. Support for this new keyword is being released for +early prototyping. It will appear in the next release of the ACPI +specification. + +iASL: do not optimize the NameString parameter of the CondRefOf operator. +In the previous iASL compiler release, the NameString parameter of the +CondRefOf was optimized. There is evidence that some implementations of +the AML interpreter do not perform the recursive search-to-parent search +during the execution of the CondRefOf operator. Therefore, the CondRefOf +operator behaves differently when the NameString parameter is a single +name segment (a NameSeg) as opposed to a full NamePath (starting at the +root scope) or a NameString containing parent prefixes. + +iASL: Prevent an inadvertent remark message. This change prevents a +remark if within a control method the following exist: +1) An Operation Region is defined, and +2) A Field operator is defined that refers to the region. +This happens because at the top level, the Field operator does not +actually create a new named object, it simply references the operation +region. + +Removed support for the acpinames utility. The acpinames was a simple +utility used to populate and display the ACPI namespace without executing +any AML code. However, ACPICA now supports executable opcodes outside of +control methods. This means that executable AML opcodes such as If and +Store opcodes need to be executed during table load. Therefore, acpinames +would need to be updated to match the same behavior as the acpiexec +utility and since acpiexec can already dump the entire namespace (via the +'namespace' command), we no longer have the need to maintain acpinames. + + In order to dump the contents of the ACPI namepsace using acpiexec, +execute the following command from the command line: + + acpiexec -b "n" [aml files] + +---------------------------------------- + + +30 April 2020. Summary of changes for version 20200430: + +1) ACPICA kernel-resident subsystem: + +Cleaned up the coding style of a couple of global variables +(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. +AcpiProtocolLengths was made static, and the definition of +AcpiGbl_NextCmdNum was moved to acglobal.h. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL DataTable Compiler: Fixed a segfault on errors that aren't directly +associated with a field. + +Disassembler: has been made more resilient so that it will continue to +parse AML even if the AML generates ACPI namespace errors. This enables +iASL to disassemble some AML that may have been compiled using older +versions of iASL that no longer compile with newer versions of iASL. + +iASL: Fixed the required parameters for _NIH and _NIG. Previously, there +was a mixup where _NIG required one parameter and _NIH required zero +parameters. This change swaps these parameter requirements. Now it is +required that _NIH must be called with one parameter and _NIG requires +zero parameters. + +iASL: Allow use of undefined externals as long as they are protected by +an if (CondRefOf (...)) block when compiling multiple definition blocks. + +iASL: Fixed the type override behavior of named objects that are declared +as External. External declarations will no longer override the type of +the actual definition if it already exists. + +AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable +command line wildcard support on Windows. Note: the AcpiNames utility is +essentially redundant with the AcpiExec utility (using the "namespace" +command) and is therefore deprecated. It will be removed in future +releases of ACPICA. + +Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* +operators. The disassembler is intended to emit existing ASL code as-is. +Therefore, error messages emitted during disassembly should be ignored or +handled in a way such that the disassembler can continue to parse the +AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op +parsing for create operators in order to complete parsing ASL termlists. + +iASL DataTable Compiler: IVRS table: fix potentially uninitialized +variable warning. Some compilers catch potential uninitialized variables. +This is done by examining branches of if/else statements. This change +replaces an "else if" with an "else" to fix the uninitialized variable +warning. + + +---------------------------------------- +26 March 2020. Summary of changes for version 20200326: + + +1) ACPICA kernel-resident subsystem: + +Performed a code clean-up to prevent build errors on early versions of +GCC-10. + +Added the NHLT table signature. iASL data table compiler/disassembler +support for this table is coming soon. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +AcpiExec: Fixed several problems with the namespace initialization file +(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS +errors, several seg faults, and enhancements to line parsing within the +init file. In addition, each object found in the init file and it's new +value is displayed, as well as any such entries that do not have a +corresponding name in the namespace. For reference, the syntax for the +various supported data types are presented below: + PCHG 0x777788889999BBBB // Integer + \DEV1.STR1 "XYZ" // String + BUF1 (88 99 AA) // Buffer + PKG1 [0x1111 0x2222] // Package + \BF1 0x7980 // BufferField + RCRV 0x0123456789ABCDEF // Field Unit + +iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro +can be used anywhere in a given ASL file to configure iASL to expect an +iASL compiler error code on the line where this macro was placed. If the +error code does not exist, an error is generated. This is intended to be +used for ACPICA's ASL test suite, but can be used by ASL developers as +well. + +iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD +IVRS table parsing supported only IVHD type 10h structures. Parsing an +IVHD type 11h caused the iasl to report unknown subtable type. Add +necessary structure definition for IVHD type 11h and apply correct +parsing method based on subtable type. Micha? ?ygowski. + +iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name +According to AMD IOMMU Specification Revision 3.05 the reserved field +should be IOMMU Feature Reporting. Change the name of the field to the +correct one. Micha? ?ygowski. + +acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch +based on suggestions by David Seifert and Benjamin Berg. + +iASL: table compiler: removed an unused variable (DtCompilerParserResult) +causing linking errors. Patch based on suggestions by David Seifert and +Benjamin Berg. + +iASL: table compiler: make LexBuffer static to avoid linking errors in +newer compilers. Patch based on suggestions by David Seifert and Benjamin +Berg. + +iASL: fixed type matching between External and Named objects. External +object types can only be expressed with ACPI object type values that are +defined in the ACPI spec. However, iASL uses ACPI object type values that +are local to ACPICA in addition to the values defined in the ACPI spec. +This change implements type matching to map some object type values +specific to ACPICA to ones that are defined in the ACPI spec. + +iASL: Dropped the type mismatch compiler error that can arise from +External declarations to a warning. This warning can occur when there is +a type difference between the external declaration and the actual object +declaration (when compiling multiple files/modules simultaneously). + +iASL: removed an incorrect error message regarding externals. This change +removes an incorrect error that is emitted when a duplicate external +declaration does not contain a type that opens a scope. This is incorrect +because the duplicate external with conflicting types are already caught +by iASL and it doesn't make any sense to enforce what this conflicting +type should be. + +AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be +surrounded by parens. Otherwise, a logical statement that applies a +logical not operator to this macro could result in a computation that +applies the operator to the left side of the logical and but not the +right. Reported-by: John Levon <john.levon@joyent.com> + +Fixed a problem with the local version of sprint(): On 32-bit, the +provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, +String + Size will wrap, meaning End < Start, and +AcpiUtBoundStringOutput() will never output anything as a result. The +symptom seen of this was acpixtract failing to output anything -- with a +custom build that included utprint.c. Signed-off-by: John Levon +<john.levon@joyent.com> + +iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the +ACPI specification. + + +---------------------------------------- +14 February 2020. Summary of changes for version 20200214: + + +1) ACPICA kernel-resident subsystem: + +Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered +in a guest when it receives a sleep trigger from the hypervisor. When the +guest resumes from this power state, it does not see the SleepEnabled +bit. In other words, the sleepHibernation (S4) is triggered in a guest +when it receives a sleep trigger from the hypervisor. When the guest +resumes from this power state, it does not see the SleepEnabled bit. In +other words, the sleep button is not enabled on waking from an S4 state. +This causes subsequent invocation of sleep state to fail since the +guest.button is not enabled on waking from an S4 state. This causes +subsequent invocation of sleep state to fail in the guest. Fix this +problem by enabling the sleep button in ACPI legacy wake. From Anchal +Agarwal <anchalag@amazon.com>. + +Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used +for checking the status bits of all enabled GPEs in one go. It is needed +to distinguish spurious SCIs from genuine ones when deciding whether or +not to wake up the system from suspend-to-idle. + +Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be +using HOST in their environment to represent the host name for their +machines. Avoid this problem by renaming this variable from HOST to +ACPI_HOST. + +MSVC 2017 project files: Enable multiprocessor generation to improve +build performance. + +Added a macro to get the byte width of a Generic Address structure. New +ACPI_ACCESS_BYTE_WIDTH is in addition to the existing +ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: Implemented full support for the (optional, rarely used) ReturnType +and ParameterTypesList for the Method, Function, and External operators. +For Method declarations, the number of individual ParameterTypes must +match the declaration of the number of arguments (NumArgs). This also +Fixes a problem with the External operator where extra/extraneous bytes +were emitted in the AML code if the optional ReturnType/ParameterTypes +were specified for a MethodObj declaration. +New error message: +1) Method NumArgs count does not match length of ParameterTypes list + +iASL: Implemented detection of type mismatches between External +declarations and named object declarations. Also, detect type mismatches +between multiple External declarations of the same Name. +New error messages: +1) Type mismatch between external declaration and actual object +declaration detected +2) Type mismatch between multiple external declarations detected + +iASL: Implemented new error messages for External operators that specify +a ReturnType and/or ParameterTypesList for any object type other than +control methods (MethodObj). +New error messages: +1) Return type is only allowed for Externals declared as MethodObj +2) Parameter type is only allowed for Externals declared as MethodObj + +iASL: Implemented two new remark/warning messages for ASL code that +creates named objects from within a control method. This is very +inefficient since the named object must be created and deleted each time +the method is executed. +New messages: +1) Creation of named objects within a method is highly inefficient, use +globals or method local variables instead (remark) +2) Static OperationRegion should be declared outside control method +(warning) + +iASL: Improved illegal forward reference detection by adding support to +detect forward-reference method invocations. + +iASL: Detect and issue an error message for NameStrings that contain too +many individual NameSegs (>255). This is an AML limitation that is +defined in the ACPI specification. +New message: +1) NameString contains too many NameSegs (>255) + +acpidump: windows: use GetSystemFirmwareTable API for all tables except +SSDT. By using this API, acpidump is able to get all tables in the XSDT + +iASL: Removed unused parser file and updated msvc2017 project files. +Removed the obsolete AslCompiler.y from the repository. + +iASL: msvc2017: Fixed macros in the file dependency list to prevent +unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). + +Disassembler: Prevent spilling error messages to the output file. All +errors are directed to the console instead. These error messages +prevented re-compilation of the resulting disassembled ASL output file +(.DSL). + + +---------------------------------------- +10 January 2020. Summary of changes for version 20200110: + + +1) ACPICA kernel-resident subsystem: + +Updated all copyrights to 2020. This affects all ACPICA source code +modules. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +ASL test suite (ASLTS): Updated all copyrights to 2020. + +Tools and utilities: Updated all signon copyrights to 2020. + +iASL: fix forward reference analysis for field declarations. Fixes +forward reference analysis for field declarations by searching the +parent scope for the named object when the object is not present in +the current scope. + +iASL: Improved the error output for ALREADY_EXISTS errors. Now, the +full pathname of the name that already exists is printed. + +iASL: Enhance duplicate Case() detection for buffers. Add check for +buffers with no initializer list (these buffers will be filled with +zeros at runtime.) + + +---------------------------------------- +13 December 2019. Summary of changes for version 20191213: + + +1) ACPICA kernel-resident subsystem: + +Return a Buffer object for all fields created via the CreateField +operator. Previously, an Integer would be returned if the size of +the field was less than or equal to the current size of an Integer. +Although this goes against the ACPI specification, it provides +compatibility with other ACPI implementations. Also updated the +ASLTS test suite to reflect this new behavior. + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: Implemented detection of (and throw an error for) duplicate +values for Case statements within a single Switch statement. Duplicate +Integers, Strings, and Buffers are supported. + +iASL: Fix error logging issue during multiple file compilation -- +Switch to the correct input file during error node creation. + +iASL: For duplicate named object creation, now emit an error instead +of a warning - since this will cause a runtime error. + +AcpiSrc: Add unix line-ending support for non-Windows builds. + +iASL: Add an error condition for an attempt to create a NameString +with > 255 NameSegs (the max allowable via the AML definition). + + +---------------------------------------- +18 October 2019. Summary of changes for version 20191018: + + +1) ACPICA kernel-resident subsystem: + +Debugger: added a new command: ?Fields [address space ID]?. This command +dumps the contents of all field units that are defined within the +namespace with a particular address space ID. + +Modified the external interface AcpiLoadTable() to return a table index. +This table index can be used for unloading a table for debugging. + ACPI_STATUS + AcpiLoadTable ( + ACPI_TABLE_HEADER *Table, + UINT32 *TableIndex)) + +Implemented a new external interface: AcpiUnloadTable() This new function +takes a table index as an argument and unloads the table. Useful for +debugging only. + ACPI_STATUS + AcpiUnloadTable ( + UINT32 TableIndex)) + +Ported the AcpiNames utility to use the new table initialization +sequence. The utility was broken before this change. Also, it was +required to include most of the AML interpreter into the utility in order +to process table initialization (module-level code execution.) + +Update for results from running Clang V8.0.1. This fixes all "dead +assignment" warnings. There are still several "Dereference of NULL +pointer" warnings, but these have been found to be false positive +warnings. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: numerous table compiler changes to ensure that the usage of +yacc/bison syntax is POSIX-compliant. + +iASL/disassembler: several simple bug fixes in the data table +disassembler. + +Acpiexec: expanded the initialization file (the -fi option) to initialize +strings, buffers, packages, and field units. + + +---------------------------------------- +16 August 2019. Summary of changes for version 20190816: + +This release is available at https://acpica.org/downloads + + +1) ACPICA kernel-resident subsystem: + +Modified the OwnerId mechanism to allow for more Owner Ids. The previous +limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT +exceptions on machines with a large number of initialization threads, +many CPU cores and nested initialization control methods. + +Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for +checking if the given GPE (as represented by a GPE device handle and a +GPE number) is currently active and dispatching it (if that's the case) +outside of interrupt context. + +Table load: exit the interpreter before initializing objects within the +new table This prevents re-acquiring the interpreter lock when loading +tables + +Added the "Windows 2019" string to the _OSI support (version 1903). Jung- +uk Kim + +Macros: removed pointer math on a null pointer. Causes warnings on some +compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR +instead of using arithmetic. + +Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used +across all "printf-like" internal functions. Also, cleanup all calls to +such functions (both in 32-bit mode and 64-bit mode) now that they are +analyzed by the gcc compiler via ACPI_PRINTF_LIKE. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: implemented a new data table compiler flex/bison front-end. This +change is internal and is not intended to result in changes to the +compiled code. This new compiler front-end can be invoked using the -tp +option for now, until the old mechanism is removed. + +ASLTS: Implemented a new data table compiler test suite. This test suite +generates all table templates and compile/disassemble/re-compile/binary- +compare each file. + +iASL: return -1 if AML files were not generated due to compiler errors + +iASL: added a warning on use of the now-legacy ASL Processor () keyword. + +iASL: added an error on _UID object declaration that returns a String +within a Processor () declaration. A _UID for a processor must be an +Integer. + +iASL: added a null terminator to name strings that consist only of +multiple parent prefixes (^) + +iASL: added support to compile both ASL and data table files in a single +command. + +Updated the tool generation project files that were recently migrated to +MSVC 2017 to eliminate all new warnings. The new project files appear in +the directory \acpica\generate\msvc2017. This change effectively +deprecates the older project files in \acpica\generate\msvc9. + + +---------------------------------------- +03 July 2019. Summary of changes for version 20190703: + + +1) ACPICA kernel-resident subsystem: + +Remove legacy module-level support code. There were still some remnants +of the legacy module-level code executions. Since we no longer support +this option, this is essentially dead code and has been removed from the +ACPICA source. + +iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root +scope. If these named objects are declared outside the root scope, they +will not be invoked by any host Operating System. + +Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC +one) can be enabled in two situations. First, the GPEs with existing _Lxx +and _Exx methods are enabled implicitly by ACPICA during system +initialization. Second, the GPEs without these methods (like GPEs listed +by _PRW objects for wakeup devices) need to be enabled directly by the +code that is going to use them (e.g. ACPI power management or device +drivers). + +In the former case, if the status of a given GPE is set to start with, +its handler method (either _Lxx or _Exx) needs to be invoked to take care +of the events (possibly) signaled before the GPE was enabled. In the +latter case, however, the first caller of AcpiEnableGpe() for a given GPE +should not be expected to care about any events that might be signaled +through it earlier. In that case, it is better to clear the status of +the GPE before enabling it, to prevent stale events from triggering +unwanted actions (like spurious system resume, for example). + +For this reason, modify AcpiEvAddGpeReference() to take an additional +boolean argument indicating whether or not the GPE status needs to be +cleared when its reference counter changes from zero to one and make +AcpiEnableGpe() pass TRUE to it through that new argument. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +The tool generation process has been migrated to MSVC 2017, and all +project files have been upgraded. The new project files appear in the +directory \acpica\generate\msvc2017. This change effectively deprecates +the older project files in \acpica\generate\msvc9. + +iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root +scope. If these named objects are declared outside the root scope, they +will not be invoked by any host Operating System + +---------------------------------------- +09 May 2019. Summary of changes for version 20190509: + + +1) ACPICA kernel-resident subsystem: + +Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling +them") that causes problems with Thunderbolt controllers to occur if a +dock device is connected at init time (the xhci_hcd and thunderbolt +modules crash which prevents peripherals connected through them from +working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: +Dispatch active GPEs at init time") to get undone, so the problem +addressed by commit ecc1165b8b74 appears again as a result of it. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +Reverted iASL: Additional forward reference detection. This change +reverts forward reference detection for field declarations. The feature +unintentionally emitted AML bytecode with incorrect package lengths for +some ASL code related to Fields and OperationRegions. This malformed AML +can cause systems to crash +during boot. The malformed AML bytecode is emitted in iASL version +20190329 and 20190405. + +iASL: improve forward reference detection. This change improves forward +reference detection for named objects inside of scopes. If a parse object +has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to +a named object that is declared later in the AML bytecode. This is +allowed if the reference is inside of a method and the declaration is +outside of a method like so: + +DefinitionBlock(...) +{ + Method (TEST) + { + Return (NUM0) + } + Name (NUM0,0) +} + +However, if the declaration and reference are both in the same method or +outside any methods, this is a forward reference and should be marked as +an error because it would result in runtime errors. + +DefinitionBlock(...) +{ + Name (BUFF, Buffer (NUM0) {}) // Forward reference + Name (NUM0, 0x0) + + Method (TEST) + { + Local0 = NUM1 + Name (NUM1, 0x1) // Forward reference + return (Local0) + } +} + +iASL: Implemented additional buffer overflow analysis for BufferField +declarations. Check if a buffer index argument to a create buffer field +operation is beyond the end of the target buffer. + +This affects these AML operators: + + AML_CREATE_FIELD_OP + AML_CREATE_BIT_FIELD_OP + AML_CREATE_BYTE_FIELD_OP + AML_CREATE_WORD_FIELD_OP + AML_CREATE_DWORD_FIELD_OP + AML_CREATE_QWORD_FIELD_OP + + There are three conditions that must be satisfied in order to allow this +validation at compile time: + + 1) The length of the target buffer must be an integer constant + 2) The index specified in the create* must be an integer constant + 3) For CreateField, the bit length argument must be non-zero. + +Example: + Name (BUF1, Buffer() {1,2}) + CreateField (BUF1, 7, 9, CF03) // 3: ERR + +dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR +Error 6165 - ^ Buffer index beyond end of +target buffer + + +---------------------------------------- +05 April 2019. Summary of changes for version 20190405: + + +1) ACPICA kernel-resident subsystem: + +Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop +unconditionally clearing ACPI IRQs during suspend/resume") was added +earlier to stop clearing of event status bits unconditionally on suspend +and resume paths. Though this change fixed an issue on suspend path, it +introduced regressions on several resume paths. In the case of S0ix, +events are enabled as part of device suspend path. If status bits for the +events are set when they are enabled, it could result in premature wake +from S0ix. If status is cleared for any event that is being enabled so +that any stale events are cleared out. In case of S0ix, events are +enabled as part of device suspend path. If status bits for the events are +set when they are enabled, it could result in premature wake from S0ix. + +This change ensures that status is cleared for any event that is being +enabled so that any stale events are cleared out. + + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: Implemented an enhanced multiple file compilation that combines +named objects from all input files to a single namespace. With this +feature, any unresolved external declarations as well as duplicate named +object declarations can be detected during compilation rather than +generating errors much later at runtime. The following commands are +examples that utilize this feature: + iasl dsdt.asl ssdt.asl + iasl dsdt.asl ssdt1.asl ssdt2.asl + iasl dsdt.asl ssdt*.asl + +---------------------------------------- +29 March 2019. Summary of changes for version 20190329: + + +1) ACPICA kernel-resident subsystem: + +Namespace support: Remove the address nodes from global list after method +termination. The global address list contains pointers to namespace nodes +that represent Operation Regions. This change properly removes Operation +Region namespace nodes that are declared dynamically during method +execution. + +Linux: Use a different debug default than ACPICA. There was a divergence +between Linux and the ACPICA codebases. In order to resolve this +divergence, Linux now declares its own debug default in aclinux.h + +Renamed some internal macros to improve code understanding and +maintenance. The macros below all operate on single 4-character ACPI +NameSegs, not generic strings (old -> new): + ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE + ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG + ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG + +Fix for missing comma in array declaration for the AcpiGbl_GenericNotify +table. + +Test suite: Update makefiles, add PCC operation region support + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented additional illegal forward reference detection. Now +detect and emit an error upon detection of a forward reference from a +Field to an Operation Region. This will fail at runtime if allowed to +pass the compiler. + +AcpiExec: Add an address list check for dynamic Operation Regions. This +feature performs a sanity test for each node the global address list. +This is done in order to ensure that all dynamic operation regions are +properly removed from the global address list and no dangling pointers +are left behind. + +Disassembler: Improved generation of resource pathnames. This change +improves the code that generates resource descriptor and resource tag +pathnames. The original code used a bunch of str* C library functions +that caused warnings on some compilers. + +iASL: Removed some uses of strncpy and replaced with memmove. The strncpy +function can overwrite buffers if the calling code is not very careful. +In the case of generating a module/table header, use of memmove is a +better implementation. + + +3) Status of new features that have not been completed at this time: + +iASL: Implementing an enhanced multiple file compilation into a single +namespace feature (Status): This feature will be released soon, and +allows multiple ASL files to be compiled into the same single namespace. +By doing so, any unresolved external declarations as well as duplicate +named object declarations can be detected during compilation (rather than +later during runtime). The following commands are examples that utilize +this feature: + iasl dsdt.asl ssdt.asl + iasl dsdt.asl ssdt1.asl ssdt2.asl + iasl dsdt.asl ssdt*.asl + +ASL tutorial status: Feedback is being gathered internally and the +current plan is to publish this tutorial on the ACPICA website after a +final review by a tech writer. + +---------------------------------------- +15 February 2019. Summary of changes for version 20190215: + + +0) Support for ACPI specification version 6.3: + +Add PCC operation region support for the AML interpreter. This adds PCC +operation region support in the AML interpreter and a default handler for +acpiexec. The change also renames the PCC region address space keyword to +PlatformCommChannel. + +Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. +These methods provide OSPM with health information and device boot +status. + +PDTT: Add TriggerOrder to the PCC Identifier structure. The field value +defines if the trigger needs to be invoked by OSPM before or at the end +of kernel crash dump processing/handling operation. + +SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT +is used for describing devices such as heterogeneous processors, +accelerators, GPUs, and IO devices with integrated compute or DMA +engines. + +MADT: Add support for statistical profiling in GICC. Statistical +profiling extension (SPE) is an architecture-specific feature for ARM. + +MADT: Add online capable flag. If this bit is set, system hardware +supports enabling this processor during OS runtime. + +New Error Disconnect Recover Notification value. There are a number of +scenarios where system Firmware in collaboration with hardware may +disconnect one or more devices from the rest of the system for purposes +of error containment. Firmware can use this new notification value to +alert OSPM of such a removal. + +PPTT: New additional fields in Processor Structure Flags. These flags +provide more information about processor topology. + +NFIT/Disassembler: Change a field name from "Address Range" to "Region +Type". + +HMAT updates: make several existing fields to be reserved as well as +rename subtable 0 to "memory proximity domain attributes". + +GTDT: Add support for new GTDT Revision 3. This revision adds information +for the EL2 timer. + +iASL: Update the HMAT example template for new fields. + +iASL: Add support for the new revision of the GTDT (Rev 3). + + +1) ACPICA kernel-resident subsystem: + +AML Parser: fix the main AML parse loop to correctly skip erroneous +extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- +byte extended opcodes. If an error occurs during an AML table load, the +AML parser will continue loading the table by skipping the offending +opcode. This implements a "load table at any cost" philosophy. + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Add checks for illegal object references, such as a reference +outside of method to an object within a method. Such an object is only +temporary. + +iASL: Emit error for creation of a zero-length operation region. Such a +region is rather pointless. If encountered, a runtime error is also +implemented in the interpreter. + +Debugger: Fix a possible fault with the "test objects" command. + +iASL: Makefile: support parent directory filenames containing embedded +spaces. + +iASL: Update the TPM2 template to revision 4. + +iASL: Add the ability to report specific warnings or remarks as errors. + +Disassembler: Disassemble OEMx tables as actual AML byte code. +Previously, these tables were treated as "unknown table". + +iASL: Add definition and disassembly for TPM2 revision 3. + +iASL: Add support for TPM2 rev 3 compilation. + + +---------------------------------------- +08 January 2019. Summary of changes for version 20190108: + + +1) ACPICA kernel-resident subsystem: + +Updated all copyrights to 2019. This affects all source code modules. + + +2) iASL Compiler/Disassembler and Tools: + +ASL test suite (ASLTS): Updated all copyrights to 2019. + +Tools: Updated all signon copyrights to 2019. + +AcpiExec: Added a new option to dump extra information concerning any +memory leaks detected by the internal object/cache tracking mechanism. - +va + +iASL: Updated the table template for the TPM2 table to the newest version +of the table (Revision 4) + + +---------------------------------------- +13 December 2018. Summary of changes for version 20181213: + + +1) ACPICA Kernel-resident Subsystem: + +Fixed some buffer length issues with the GenericSerialBus, related to two +of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, +which are rarely seen in the field. For these, the LEN field of the ASL +buffer is now ignored. Hans de Goede + +Implemented a new object evaluation trace mechanism for control methods +and data objects. This includes nested control methods. It is +particularly useful for examining the ACPI execution during system +initialization since the output is relatively terse. The flag below +enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: + #define ACPI_LV_EVALUATION 0x00080000 + +Examples: + Enter evaluation : _SB.PCI0._INI (Method) + Exit evaluation : _SB.PCI0._INI + Enter evaluation : _OSI (Method) + Exit evaluation : _OSI + Enter evaluation : _SB.PCI0.TEST (Method) + Nested method call : _SB.PCI0.NST1 + Exit nested method : _SB.PCI0.NST1 + Exit evaluation : _SB.PCI0.TEST + +Added two recently-defined _OSI strings. See +https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- +osi. + "Windows 2018" + "Windows 2018.2" + +Update for buffer-to-string conversions via the ToHexString ASL operator. +A "0x" is now prepended to each of the hex values in the output string. +This provides compatibility with other ACPI implementations. The ACPI +specification is somewhat vague on this issue. + Example output string after conversion: +"0x01,0x02,0x03,0x04,0x05,0x06" + +Return a run-time error for TermArg expressions within individual package +elements. Although this is technically supported by the ASL grammar, +other ACPI implementations do not support this either. Also, this fixes a +fault if this type of construct is ever encountered (it never has been). + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented a new compile option (-ww) that will promote individual +warnings and remarks to errors. This is intended to enhance the firmware +build process. + +AcpiExec: Implemented a new command-line option (-eo) to support the new +object evaluation trace mechanism described above. + +Disassembler: Added support to disassemble OEMx tables as AML/ASL tables +instead of a "unknown table" message. + +AcpiHelp: Improved support for the "special" predefined names such as +_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be +used for "xx" and "x". + +---------------------------------------- +31 October 2018. Summary of changes for version 20181031: + + +An Operation Region regression was fixed by properly adding address +ranges to a global list during initialization. This allows OS to +accurately check for overlapping regions between native devices (such as +PCI) and Operation regions as well as checking for region conflicts +between two Operation Regions. + +Added support for the 2-byte extended opcodes in the code/feature that +attempts to continue parsing during the table load phase. Skip parsing +Device declarations (and other extended opcodes) when an error occurs +during parsing. Previously, only single-byte opcodes were supported. + +Cleanup: Simplified the module-level code support by eliminating a +useless global variable (AcpiGbl_GroupModuleLeveCode). + + +2) iASL Compiler/Disassembler and Tools: + +iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE +could cause a fault in the preprocessor. This was an inadvertent side- +effect from moving more allocations/frees to the local cache/memory +mechanism. + +iASL: Enhanced error detection by validating that all NameSeg elements +within a NamePatch actually exist. The previous behavior was spotty at +best, and such errors could be improperly ignored at compiler time (never +at runtime, however. There are two new error messages, as shown in the +examples below: + +dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) +Error 6161 - ^ One or more objects within +the Pathname do not exist (TTTT.BXXX) + +dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) +Error 6160 - One or more prefix Scopes do not exist ^ +(BBBB.CBF1) + +iASL: Disassembler/table-compiler: Added support for the static data +table TPM2 revision 3 (an older version of TPM2). The support has been +added for the compiler and the disassembler. + +Fixed compilation of DOS format data table file on Unix/Linux systems. +iASL now properly detects line continuations (\) for DOS format data +table definition language files on when executing on Unix/Linux. + +---------------------------------------- +03 October 2018. Summary of changes for version 20181003: + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a regression introduced in version 20180927 that could cause the +compiler to fault, especially with NamePaths containing one or more +carats (^). Such as: ^^_SB_PCI0 + +Added a new remark for the Sleep() operator when the sleep time operand +is larger than one second. This is a very long time for the ASL/BIOS code +and may not be what was intended by the ASL writer. + +---------------------------------------- +27 September 2018. Summary of changes for version 20180927: + + +1) ACPICA kernel-resident subsystem: + +Updated the GPE support to clear the status of all ACPI events when +entering any/all sleep states in order to avoid premature wakeups. In +theory, this may cause some wakeup events to be missed, but the +likelihood of this is small. This change restores the original behavior +of the ACPICA code in order to fix a regression seen from the previous +"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. +This regression could cause some systems to incorrectly wake immediately. + +Updated the execution of the _REG methods during initialization and +namespace loading to bring the behavior into closer conformance to the +ACPI specification and other ACPI implementations: + +From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): + "Control methods must assume all operation regions are inaccessible +until the _REG(RegionSpace, 1) method is executed" + + "The exceptions to this rule are: +1. OSPM must guarantee that the following operation regions are always +accessible: + SystemIO operation regions. + SystemMemory operation regions when accessing memory returned by the +System Address Map reporting interfaces." + +Since the state of both the SystemIO and SystemMemory address spaces are +defined by the specification to never change, this ACPICA change ensures +that now _REG is never called on them. This solves some problems seen in +the field and provides compatibility with other ACPI implementations. An +update to the upcoming new version of the ACPI specification will help +clarify this behavior. + +Updated the implementation of support for the Generic Serial Bus. For the +"bidirectional" protocols, the internal implementation now automatically +creates a return data buffer of the maximum size (255). This handles the +worst-case for data that is returned from the serial bus handler, and +fixes some problems seen in the field. This new buffer is directly +returned to the ASL. As such, there is no true "bidirectional" buffer, +which matches the ACPI specification. This is the reason for the "double +store" seen in the example ASL code in the specification, shown below: + +Word Process Call (AttribProcessCall): + OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) + Field(TOP1, BufferAcc, NoLock, Preserve) + { + FLD1, 8, // Virtual register at command value 1. + } + + Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer + // as BUFF + CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) + + Store(0x5416, DATA) // Save 0x5416 into the data buffer + Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call +transaction + // This is the "double store". The write to + // FLD1 returns a new buffer, which is stored + // back into BUFF with the second Store. + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented detection of extraneous/redundant uses of the Offset() +operator within a Field Unit list. A remark is now issued for these. For +example, the first two of the Offset() operators below are extraneous. +Because both the compiler and the interpreter track the offsets +automatically, these Offsets simply refer to the current offset and are +unnecessary. Note, when optimization is enabled, the iASL compiler will +in fact remove the redundant Offset operators and will not emit any AML +code for them. + + OperationRegion (OPR1, SystemMemory, 0x100, 0x100) + Field (OPR1) + { + Offset (0), // Never needed + FLD1, 32, + Offset (4), // Redundant, offset is already 4 (bytes) + FLD2, 8, + Offset (64), // OK use of Offset. + FLD3, 16, + } +dsdt.asl 14: Offset (0), +Remark 2158 - ^ Unnecessary/redundant use of Offset +operator + +dsdt.asl 16: Offset (4), +Remark 2158 - ^ Unnecessary/redundant use of Offset +operator + +---------------------------------------- +10 August 2018. Summary of changes for version 20180810: + + +1) ACPICA kernel-resident subsystem: + +Initial ACPI table loading: Attempt to continue loading ACPI tables +regardless of malformed AML. Since migrating table initialization to the +new module-level code support, the AML interpreter rejected tables upon +any ACPI error encountered during table load. This is a problem because +non-serious ACPI errors during table load do not necessarily mean that +the entire definition block (DSDT or SSDT) is invalid. This change +improves the table loading by ignoring some types of errors that can be +generated by incorrect AML. This can range from object type errors, scope +errors, and index errors. + +Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs +during suspend/resume. The status of ACPI events is no longer cleared +when entering the ACPI S5 system state (power off) which caused some +systems to power up immediately after turning off power in certain +situations. This was a functional regression. It was fixed by clearing +the status of all ACPI events again when entering S5 (for system-wide +suspend or hibernation the clearing of the status of all events is not +desirable, as it might cause the kernel to miss wakeup events sometimes). +Rafael Wysocki. + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Enhanced the -fi option (Namespace initialization file). Field +elements listed in the initialization file were previously initialized +after the table load and before executing module-level code blocks. +Recent changes in the module-level code support means that the table load +becomes a large control method execution. If fields are used within +module-level code and we are executing with the -fi option, the +initialization values were used to initialize the namespace object(s) +only after the table was finished loading. This change Provides an early +initialization of objects specified in the initialization file so that +field unit values are populated during the table load (not after the +load). + +AcpiExec: Fixed a small memory leak regression that could result in +warnings during exit of the utility. These warnings were similar to +these: + 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] + 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 + +---------------------------------------- +29 June 2018. Summary of changes for version 20180629: + + +1) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a regression related to the use of the ASL External +statement. Error checking for the use of the External() statement has +been relaxed. Previously, a restriction on the use of External meant that +the referenced named object was required to be defined in a different +table (an SSDT). Thus it would be an error to declare an object as an +external and then define the same named object in the same table. For +example: + DefinitionBlock (...) + { + External (DEV1) + Device (DEV1){...} // This was an error + } +However, this behavior has caused regressions in some existing ASL code, +because there is code that depends on named objects and externals (with +the same name) being declared in the same table. This change will allow +the ASL code above to compile without errors or warnings. + +iASL: Implemented ASL language extensions for four operators to make some +of their arguments optional instead of required: + 1) Field (RegionName, AccessType, LockRule, UpdateRule) + 2) BankField (RegionName, BankName, BankValue, + AccessType, LockRule, UpdateRule) + 3) IndexField (IndexName, DataName, + AccessType, LockRule, UpdateRule) +For the Field operators above, the AccessType, LockRule, and UpdateRule +are now optional arguments. The default values are: + AccessType: AnyAcc + LockRule: NoLock + UpdateRule: Preserve + 4) Mutex (MutexName, SyncLevel) +For this operator, the SyncLevel argument is now optional. This argument +is rarely used in any meaningful way by ASL code, and thus it makes sense +to make it optional. The default value is: + SyncLevel: 0 + +iASL: Attempted use of the ASL Unload() operator now results in the +following warning: + "Unload is not supported by all operating systems" +This is in fact very true, and the Unload operator may be completely +deprecated in the near future. + +AcpiExec: Fixed a regression for the -fi option (Namespace initialization +file. Recent changes in the ACPICA module-level code support altered the +table load/initialization sequence . This means that the table load has +become a large method execution of the table itself. If Operation Region +Fields are used within any module-level code and the -fi option was +specified, the initialization values were populated only after the table +had completely finished loading (and thus the module-level code had +already been executed). This change moves the initialization of objects +listed in the initialization file to before the table is executed as a +method. Field unit values are now initialized before the table execution +is performed. + +---------------------------------------- +31 May 2018. Summary of changes for version 20180531: + + +1) ACPICA kernel-resident Subsystem: + +Implemented additional support to help ensure that a DSDT or SSDT is +fully loaded even if errors are incurred during the load. The majority of +the problems that are seen is the failure of individual AML operators +that occur during execution of any module-level code (MLC) existing in +the table. This support adds a mechanism to abort the current ASL +statement (AML opcode), emit an error message, and to simply move on to +the next opcode -- instead of aborting the entire table load. This is +different than the execution of a control method where the entire method +is aborted upon any error. The goal is to perform a very "best effort" to +load the ACPI tables. The most common MLC errors that have been seen in +the field are direct references to unresolved ASL/AML symbols (referenced +directly without the use of the CondRefOf operator to validate the +symbol). This new ACPICA behavior is now compatible with other ACPI +implementations. + +Interpreter: The Unload AML operator is no longer supported for the +reasons below. An AE_NOT_IMPLEMENTED exception is returned. +1) A correct implementation on at least some hosts may not be possible. +2) Other ACPI implementations do not correctly/fully support it. +3) It requires host device driver support which is not known to exist. + (To properly support namespace unload out from underneath.) +4) This AML operator has never been seen in the field. + +Parser: Added a debug option to dump AML parse sub-trees as they are +being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is +ACPI_DB_PARSE_TREES. + +Debugger: Reduced the verbosity for errors incurred during table load and +module-level code execution. + +Completed an investigation into adding a namespace node "owner list" +instead of the current "owner ID" associated with namespace nodes. This +list would link together all nodes that are owned by an individual +control method. The purpose would be to enhance control method execution +by speeding up cleanup during method exit (all namespace nodes created by +a method are deleted upon method termination.) Currently, the entire +namespace must be searched for matching owner IDs if (and only if) the +method creates named objects outside of the local scope. However, by far +the most common case is that methods create objects locally, not outside +the method scope. There is already an ACPICA optimization in place that +only searches the entire namespace in the rare case of a method creating +objects elsewhere in the namespace. Therefore, it is felt that the +overhead of adding an additional pointer to each namespace node to +implement the owner list makes this feature unnecessary. + + +2) iASL Compiler/Disassembler and Tools: + +iASL, Disassembler, and Template generator: Implemented support for +Revision D of the IORT table. Adds a new subtable that is used to specify +SMMUv3 PMCGs. rmurphy-arm. + +Disassembler: Restored correct table header validation for the "special" +ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI +table header and must be special-cased. This was a regression that has +been present for apparently a long time. + +AcpiExec: Reduced verbosity of the local exception handler implemented +within acpiexec. This handler is invoked by ACPICA upon any exceptions +generated during control method execution. A new option was added: -vh +restores the original verbosity level if desired. + +AcpiExec: Changed the default base from decimal to hex for the -x option +(set debug level). This simplifies the use of this option and matches the +behavior of the corresponding iASL -x option. + +AcpiExec: Restored a force-exit on multiple control-c (sigint) +interrupts. This allows program termination even if other issues cause +the control-c to fail. + +ASL test suite (ASLTS): Added tests for the recently implemented package +element resolution mechanism that allows forward references to named +objects from individual package elements (this mechanism provides +compatibility with other ACPI implementations.) + + +---------------------------------------- +8 May 2018. Summary of changes for version 20180508: + + +1) ACPICA kernel-resident subsystem: + +Completed the new (recently deployed) package resolution mechanism for +the Load and LoadTable ASL/AML operators. This fixes a regression that +was introduced in version 20180209 that could result in an +AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table +(SSDT) that contains package objects. + + +2) iASL Compiler/Disassembler and Tools: + +AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than +1 MB. This change allows for table offsets within the acpidump file to be +up to 8 characters. These changes are backwards compatible with existing +acpidump files. + + +---------------------------------------- +27 April 2018. Summary of changes for version 20180427: + + +1) ACPICA kernel-resident subsystem: + +Debugger: Added support for Package objects in the "Test Objects" +command. This command walks the entire namespace and evaluates all named +data objects (Integers, Strings, Buffers, and now Packages). + +Improved error messages for the namespace root node. Originally, the root +was referred to by the confusing string "\___". This has been replaced by +"Namespace Root" for clarification. + +Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin +Ian King <colin.king@canonical.com>. + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented support to detect and flag illegal forward references. +For compatibility with other ACPI implementations, these references are +now illegal at the root level of the DSDT or SSDTs. Forward references +have always been illegal within control methods. This change should not +affect existing ASL/AML code because of the fact that these references +have always been illegal in the other ACPI implementation. + +iASL: Added error messages for the case where a table OEM ID and OEM +TABLE ID strings are longer than the ACPI-defined length. Previously, +these strings were simply silently truncated. + +iASL: Enhanced the -tc option (which creates an AML hex file in C, +suitable for import into a firmware project): + 1) Create a unique name for the table, to simplify use of multiple +SSDTs. + 2) Add a protection #ifdef in the file, similar to a .h header file. +With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, +evan.lloyd@arm.com + +AcpiExec: Added a new option, -df, to disable the local fault handler. +This is useful during debugging, where it may be desired to drop into a +debugger on a fault. + +---------------------------------------- +13 March 2018. Summary of changes for version 20180313: + + +1) ACPICA kernel-resident subsystem: + +Implemented various improvements to the GPE support: + +1) Dispatch all active GPEs at initialization time so that no GPEs are +lost. +2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled +before devices are enumerated. +3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that +IRQs are not lost. +4) Add parallel GPE handling to eliminate the possibility of dispatching +the same GPE twice. +5) Dispatch any pending GPEs after enabling for the first time. + +AcpiGetObjectInfo - removed support for the _STA method. This was causing +problems on some platforms. + +Added a new _OSI string, "Windows 2017.2". + +Cleaned up and simplified the module-level code support. These changes +are in preparation for the eventual removal of the legacy MLC support +(deferred execution), replaced by the new MLC architecture which executes +the MLC as a table is loaded (DSDT/SSDTs). + +Changed a compile-time option to a runtime option. Changes the option to +ignore ACPI table load-time package resolution errors into a runtime +option. Used only for platforms that generate many AE_NOT_FOUND errors +during boot. AcpiGbl_IgnorePackageResolutionErrors. + +Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some +ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid +compilation errors from unused variables (seen with some compilers). + + +2) iASL Compiler/Disassembler and Tools: + +ASLTS: parallelized execution in order to achieve an (approximately) 2X +performance increase. + +ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves +error reporting. + +---------------------------------------- +09 February 2018. Summary of changes for version 20180209: + + +1) ACPICA kernel-resident subsystem: + +Completed the final integration of the recent changes to Package Object +handling and the module-level AML code support. This allows forward +references from individual package elements when the package object is +declared from within module-level code blocks. Provides compatibility +with other ACPI implementations. + +The new architecture for the AML module-level code has been completed and +is now the default for the ACPICA code. This new architecture executes +the module-level code in-line as the ACPI table is loaded/parsed instead +of the previous architecture which deferred this code until after the +table was fully loaded. This solves some ASL code ordering issues and +provides compatibility with other ACPI implementations. At this time, +there is an option to fallback to the earlier architecture, but this +support is deprecated and is planned to be completely removed later this +year. + +Added a compile-time option to ignore AE_NOT_FOUND exceptions during +resolution of named reference elements within Package objects. Although +this is potentially a serious problem, it can generate a lot of +noise/errors on platforms whose firmware carries around a bunch of unused +Package objects. To disable these errors, define +ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All +errors are always reported for ACPICA applications such as AcpiExec. + +Fixed a regression related to the explicit type-conversion AML operators +(ToXXXX). The regression was introduced early in 2017 but was not seen +until recently because these operators are not fully supported by other +ACPI implementations and are thus rarely used by firmware developers. The +operators are defined by the ACPI specification to not implement the +"implicit result object conversion". The regression incorrectly +introduced this object conversion for the following explicit conversion +operators: + ToInteger + ToString + ToBuffer + ToDecimalString + ToHexString + ToBCD + FromBCD + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a problem with the compiler constant folding feature as +related to the ToXXXX explicit conversion operators. These operators do +not support the "implicit result object conversion" by definition. Thus, +ASL expressions that use these operators cannot be folded to a simple +Store operator because Store implements the implicit conversion. This +change uses the CopyObject operator for the ToXXXX operator folding +instead. CopyObject is defined to not implement implicit result +conversions and is thus appropriate for folding the ToXXXX operators. + +iASL: Changed the severity of an error condition to a simple warning for +the case where a symbol is declared both locally and as an external +symbol. This accommodates existing ASL code. + +AcpiExec: The -ep option to enable the new architecture for module-level +code has been removed. It is replaced by the -dp option which instead has +the opposite effect: it disables the new architecture (the default) and +enables the legacy architecture. When the legacy code is removed in the +future, the -dp option will be removed also. + +---------------------------------------- +05 January 2018. Summary of changes for version 20180105: + + +1) ACPICA kernel-resident subsystem: + +Updated all copyrights to 2018. This affects all source code modules. + +Fixed a possible build error caused by an unresolved reference to the +AcpiUtSafeStrncpy function. + +Removed NULL pointer arithmetic in the various pointer manipulation +macros. All "(void *) NULL" constructs are converted to "(void *) 0". +This eliminates warnings/errors in newer C compilers. Jung-uk Kim. + +Added support for A32 ABI compilation, which uses the ILP32 model. Anuj +Mittal. + + +2) iASL Compiler/Disassembler and Tools: + +ASLTS: Updated all copyrights to 2018. + +Tools: Updated all signon copyrights to 2018. + +AcpiXtract: Fixed a regression related to ACPI table signatures where the +signature was truncated to 3 characters (instead of 4). + +AcpiExec: Restore the original terminal mode after the use of the -v and +-vd options. + +ASLTS: Deployed the iASL __METHOD__ macro across the test suite. + +---------------------------------------- +14 December 2017. Summary of changes for version 20171214: + + +1) ACPICA kernel-resident subsystem: + +Fixed a regression in the external (public) AcpiEvaluateObjectTyped +interface where the optional "pathname" argument had inadvertently become +a required argument returning an error if omitted (NULL pointer +argument). + +Fixed two possible memory leaks related to the recently developed "late +resolution" of reference objects within ASL Package Object definitions. + +Added two recently defined _OSI strings: "Windows 2016" and "Windows +2017". Mario Limonciello. + +Implemented and deployed a safer version of the C library function +strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the +creation of unterminated strings as a possible result of a standard +strncpy. + +Cleaned up and restructured the global variable file (acglobal.h). There +are many changes, but no functional changes. + + +2) iASL Compiler/Disassembler and Tools: + +iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the +optional OemData field at the end of the table was incorrectly required +for proper compilation. It is now correctly an optional field. + +ASLTS: The entire suite was converted from standard ASL to the ASL+ +language, using the ASL-to-ASL+ converter which is integrated into the +iASL compiler. A binary compare of all output files has verified the +correctness of the conversion. + +iASL: Fixed the source code build for platforms where "char" is unsigned. +This affected the iASL lexer only. Jung-uk Kim. + +---------------------------------------- +10 November 2017. Summary of changes for version 20171110: + + +1) ACPICA kernel-resident subsystem: + +This release implements full support for ACPI 6.2A: + NFIT - Added a new subtable, "Platform Capabilities Structure" +No other changes to ACPICA were required, since ACPI 6.2A is primarily an +errata release of the specification. + +Other ACPI table changes: + IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo + PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy +Linton + +Utilities: Modified the string/integer conversion functions to use +internal 64-bit divide support instead of a native divide. On 32-bit +platforms, a 64-bit divide typically requires a library function which +may not be present in the build (kernel or otherwise). + +Implemented a targeted error message for timeouts returned from the +Embedded Controller device driver. This is seen frequently enough to +special-case an AE_TIME returned from an EC operation region access: + "Timeout from EC hardware or EC device driver" + +Changed the "ACPI Exception" message prefix to "ACPI Error" so that all +runtime error messages have the identical prefix. + + +2) iASL Compiler/Disassembler and Tools: + +AcpiXtract: Fixed a problem with table header detection within the +acpidump file. Processing a table could be ended early if a 0x40 (@) +appears in the original binary table, resulting in the @ symbol appearing +in the decoded ASCII field at the end of the acpidump text line. The +symbol caused acpixtract to incorrectly think it had reached the end of +the current table and the beginning of a new table. + +AcpiXtract: Added an option (-f) to ignore some errors during table +extraction. This initial implementation ignores non-ASCII and non- +printable characters found in the acpidump text file. + +TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics +for ASLTS. This feature is used to track memory allocations from +different memory caches within the ACPICA code. At the end of an ASLTS +run, these memory statistics are recorded and stored in a log file. + +Debugger (user-space version): Implemented a simple "Background" command. +Creates a new thread to execute a control method in the background, while +control returns to the debugger prompt to allow additional commands. + Syntax: Background <Namepath> [Arguments] + +---------------------------------------- +29 September 2017. Summary of changes for version 20170929: + + +1) ACPICA kernel-resident subsystem: + +Redesigned and implemented an improved ASL While() loop timeout +mechanism. This mechanism is used to prevent infinite loops in the kernel +AML interpreter caused by either non-responsive hardware or incorrect AML +code. The new implementation uses AcpiOsGetTimer instead of a simple +maximum loop count, and is thus more accurate and constant across +different machines. The default timeout is currently 30 seconds, but this +may be adjusted later. + +Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to +better reflect the new implementation of the loop timeout mechanism. + +Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support +and to fix an off-by-one error. Jung-uk Kim. + +Fixed an EFI build problem by updating the makefiles to for a new file +that was added, utstrsuppt.c + + +2) iASL Compiler/Disassembler and Tools: + +Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This +includes support in the table disassembler, compiler, and template +generator. + +iASL: Added an exception for an illegal type of recursive method +invocation. If a method creates named objects, the first recursive call +will fail at runtime. This change adds an error detection at compile time +to catch the problem up front. Note: Marking such a method as +"serialized" will not help with this problem, because the same thread can +acquire the method mutex more than once. Example compiler and runtime +output: + + Method (MTH1) + { + Name (INT1, 1) + MTH1 () + } + + dsdt.asl 22: MTH1 () + Error 6152 - ^ Illegal recursive call to method + that creates named objects (MTH1) + +Previous runtime exception: + ACPI Error: [INT1] Namespace lookup failure, + AE_ALREADY_EXISTS (20170831/dswload2-465) + +iASL: Updated support for External() opcodes to improve namespace +management and error detection. These changes are related to issues seen +with multiple-segment namespace pathnames within External declarations, +such as below: + + External(\_SB.PCI0.GFX0, DeviceObj) + External(\_SB.PCI0.GFX0.ALSI) + +iASL: Implemented support for multi-line error/warning messages. This +enables more detailed and helpful error messages as below, from the +initial deployment for the duplicate names error: + + DSDT.iiii 1692: Device(PEG2) { + Error 6074 - ^ Name already exists in scope +(PEG2) + + Original name creation/declaration below: + DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) + +AcpiXtract: Added additional flexibility to support differing input hex +dump formats. Specifically, hex dumps that contain partial disassembly +and/or comments within the ACPI table data definition. There exist some +dump utilities seen in the field that create this type of hex dump (such +as Simics). For example: + + DSDT @ 0xdfffd0c0 (10999 bytes) + Signature DSDT + Length 10999 + Revision 1 + Checksum 0xf3 (Ok) + OEM_ID BXPC + OEM_table_id BXDSDT + OEM_revision 1 + Creator_id 1280593481 + Creator_revision 537399345 + 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 + ... + 2af0: 5f 4c 30 46 00 a4 01 + +Test suite: Miscellaneous changes/fixes: + More cleanup and simplification of makefiles + Continue compilation of test cases after a compile failure + Do not perform binary compare unless both files actually exist + +iASL: Performed some code/module restructuring. Moved all memory +allocation functions to new modules. Two new files, aslallocate.c and +aslcache.c + +---------------------------------------- +31 August 2017. Summary of changes for version 20170831: + + +1) ACPICA kernel-resident subsystem: + +Implemented internal support for full 64-bit addresses that appear in all +Generic Address Structure (GAS) structures. Previously, only the lower 32 +bits were used. Affects the use of GAS structures in the FADT and other +tables, as well as the GAS structures passed to the AcpiRead and +AcpiWrite public external interfaces that are used by drivers. Lv Zheng. + +Added header support for the PDTT ACPI table (Processor Debug Trigger +Table). Full support in the iASL Data Table Compiler and disassembler is +forthcoming. + + +2) iASL Compiler/Disassembler and Tools: + +iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor +Properties Topology Table) where a flag bit was specified in the wrong +bit position ("Line Size Valid", bit 6). + +iASL: Implemented support for Octal integer constants as defined by the +ASL language grammar, per the ACPI specification. Any integer constant +that starts with a zero is an octal constant. For example, + Store (037777, Local0) /* Octal constant */ + Store (0x3FFF, Local0) /* Hex equivalent */ + Store (16383, Local0) /* Decimal equivalent */ + +iASL: Improved overflow detection for 64-bit string conversions during +compilation of integer constants. "Overflow" in this case means a string +that represents an integer that is too large to fit into a 64-bit value. +Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to +the low-order 32 bits with a warning, as previously implemented. Several +new exceptions are defined that indicate a 64-bit overflow, as well as +the base (radix) that was used during the attempted conversion. Examples: + Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW + Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW + Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW + +iASL: Added a warning for the case where a ResourceTemplate is declared +with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In +this case, the resulting template is created with a single END_TAG +descriptor, which is essentially useless. + +iASL: Expanded the -vw option (ignore specific warnings/remarks) to +include compilation error codes as well. + +---------------------------------------- +28 July 2017. Summary of changes for version 20170728: + + +1) ACPICA kernel-resident subsystem: + +Fixed a regression seen with small resource descriptors that could cause +an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. + +AML interpreter: Implemented a new feature that allows forward references +from individual named references within package objects that are +contained within blocks of "module-level code". This provides +compatibility with other ACPI implementations and supports existing +firmware that depends on this feature. Example: + + Name (ABCD, 1) + If (ABCD) /* An If() at module-level */ + { + Name (PKG1, Package() + { + INT1 /* Forward reference to object INT1 +*/ + }) + Name (INT1, 0x1234) + } + +AML Interpreter: Fixed a problem with the Alias() operator where aliases +to some ASL objects were not handled properly. Objects affected are: +Mutex, Event, and OperationRegion. + +AML Debugger: Enhanced to properly handle AML Alias objects. These +objects have one level of indirection which was not fully supported by +the debugger. + +Table Manager: Added support to detect and ignore duplicate SSDTs within +the XSDT/RSDT. This error in the XSDT has been seen in the field. + +EFI and EDK2 support: + Enabled /WX flag for MSVC builds + Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer + Added local support for 64-bit multiply and shift operations + Added support to compile acpidump.efi on Windows + Added OSL function stubs for interfaces not used under EFI + +Added additional support for the _DMA predefined name. _DMA returns a +buffer containing a resource template. This change add support within the +resource manager (AcpiWalkResourceBuffer) to walk and parse this list of +resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a problem where the internal input line buffer(s) could +overflow if there are very long lines in the input ASL source code file. +Implemented buffer management that automatically increases the size of +the buffers as necessary. + +iASL: Added an option (-vx) to "expect" particular remarks, warnings and +errors. If the specified exception is not raised during compilation, the +compiler emits an error. This is intended to support the ASL test suite, +but may be useful in other contexts. + +iASL: Implemented a new predefined macro, __METHOD__, which returns a +string containing the name of the current control method that is being +compiled. + +iASL: Implemented debugger and table compiler support for the SDEI ACPI +table (Software Delegated Exception Interface). James Morse +<james.morse@arm.com> + +Unix/Linux makefiles: Added an option to disable compile optimizations. +The disable occurs when the NOOPT flag is set to TRUE. +theracermaster@gmail.com + +Acpidump: Added support for multiple DSDT and FACS tables. This can occur +when there are different tables for 32-bit versus 64-bit. + +Enhanced error reporting for the ASL test suite (ASLTS) by removing +unnecessary/verbose text, and emit the actual line number where an error +has occurred. These changes are intended to improve the usefulness of the +test suite. + +---------------------------------------- +29 June 2017. Summary of changes for version 20170629: + + +1) ACPICA kernel-resident subsystem: + +Tables: Implemented a deferred ACPI table verification. This is useful +for operating systems where the tables cannot be verified in the early +initialization stage due to early memory mapping limitations on some +architectures. Lv Zheng. + +Tables: Removed the signature validation for dynamically loaded tables. +Provides compatibility with other ACPI implementations. Previously, only +SSDT tables were allowed, as per the ACPI specification. Now, any table +signature can be used via the Load() operator. Lv Zheng. + +Tables: Fixed several mutex issues that could cause errors during table +acquisition. Lv Zheng. + +Tables: Fixed a problem where an ACPI warning could be generated if a +null pointer was passed to the AcpiPutTable interface. Lv Zheng. + +Tables: Added a mechanism to handle imbalances for the AcpiGetTable and +AcpiPutTable interfaces. This applies to the "late stage" table loading +when the use of AcpiPutTable is no longer required (since the system +memory manager is fully running and available). Lv Zheng. + +Fixed/Reverted a regression during processing of resource descriptors +that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG +exception in this case. + +Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the +I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> + +Interpreter: Fixed a possible fault if an Alias operator with an invalid +or duplicate target is encountered during Alias creation in +AcpiExCreateAlias. Alex James <theracermaster@gmail.com> + +Added an option to use designated initializers for function pointers. +Kees Cook <keescook@google.com> + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Allow compilation of External declarations with target pathnames +that refer to existing named objects within the table. Erik Schmauss. + +iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a +FieldUnit name also is declared via External in the same table. Erik +Schmauss. + +iASL: Allow existing scope names within pathnames used in External +statements. For example: + External (ABCD.EFGH) // ABCD exists, but EFGH is truly external + Device (ABCD) + +iASL: IORT ACPI table: Implemented changes required to decode the new +Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table +compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> + +Disassembler: Don't abort disassembly on errors from External() +statements. Erik Schmauss. + +Disassembler: fixed a possible fault when one of the Create*Field +operators references a Resource Template. ACPICA Bugzilla 1396. + +iASL: In the source code, resolved some naming inconsistences across the +parsing support. Fixes confusion between "Parse Op" and "Parse Node". +Adds a new file, aslparseop.c + +---------------------------------------- +31 May 2017. Summary of changes for version 20170531: + + +0) ACPI 6.2 support: + +The ACPI specification version 6.2 has been released and is available at +http://uefi.org/specifications + +This version of ACPICA fully supports the ACPI 6.2 specification. Changes +are summarized below. + +New ACPI tables (Table Compiler/Disassembler/Templates): + HMAT (Heterogeneous Memory Attributes Table) + WSMT (Windows SMM Security Mitigation Table) + PPTT (Processor Properties Topology Table) + +New subtables for existing ACPI tables: + HEST (New subtable, Arch-deferred machine check) + SRAT (New subtable, Arch-specific affinity structure) + PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) + +Simple updates for existing ACPI tables: + BGRT (two new flag bits) + HEST (New bit defined for several subtables, GHES_ASSIST) + +New Resource Descriptors and Resource macros (Compiler/Disassembler): + PinConfig() + PinFunction() + PinGroup() + PinGroupConfig() + PinGroupFunction() + New type for hardware error notification (section 18.3.2.9) + +New predefined names/methods (Compiler/Interpreter): + _HMA (Heterogeneous Memory Attributes) + _LSI (Label Storage Information) + _LSR (Label Storage Read) + _LSW (Label Storage Write) + +ASL grammar/macro changes (Compiler): + For() ASL macro, implemented with the AML while operator + Extensions to Concatenate operator + Support for multiple definition blocks in same ASL file + Clarification for Buffer operator + Allow executable AML code underneath all scopes (Devices, etc.) + Clarification/change for the _OSI return value + ASL grammar update for reference operators + Allow a zero-length string for AML filename in DefinitionBlock + +Miscellaneous: + New device object notification value + Remove a notify value (0x0C) for graceful shutdown + New UUIDs for processor/cache properties and + physical package property + New _HID, ACPI0014 (Wireless Power Calibration Device) + + +1) ACPICA kernel-resident subsystem: + +Added support to disable ACPI events on hardware-reduced platforms. +Eliminates error messages of the form "Could not enable fixed event". Lv +Zheng + +Fixed a problem using Device/Thermal objects with the ObjectType and +DerefOf ASL operators. This support had not been fully/properly +implemented. + +Fixed a problem where if a Buffer object containing a resource template +was longer than the actual resource template, an error was generated -- +even though the AML is legal. This case has been seen in the field. + +Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. +The values for DUAL_PIC and MULTIPLE_APIC were reversed. + +Added header file changes for the TPM2 ACPI table. Update to new version +of the TCG specification. Adds a new TPM2 subtable for ARM SMC. + +Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. +These interfaces are intended to be used only in conjunction with the +predefined _DLM method (Device Lock Method). "This object appears in a +device scope when AML access to the device must be synchronized with the +OS environment". + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total + Debug Version: 204.0K Code, 84.3K Data, 288.3K Total + Previous Release: + Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total + Debug Version: 207.5K Code, 82.7K Data, 290.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a problem where an External() declaration could not refer to +a Field Unit. Erik Schmauss. + +Disassembler: Improved support for the Switch/Case operators. This +feature will disassemble AML code back to the original Switch operators +when possible, instead of an If..Else sequence. David Box + +iASL and disassembler: Improved the handling of multiple extraneous +parentheses for both ASL input and disassembled ASL output. + +Improved the behavior of the iASL compiler and disassembler to detect +improper use of external declarations + +Disassembler: Now aborts immediately upon detection of an unknown AML +opcode. The AML parser has no real way to recover from this, and can +result in the creation of an ill-formed parse tree that causes errors +later during the disassembly. + +All tools: Fixed a problem where the Unix application OSL did not handle +control-c correctly. For example, a control-c could incorrectly wake the +debugger. + +AcpiExec: Improved the Control-C handling and added a handler for +segmentation faults (SIGSEGV). Supports both Windows and Unix-like +environments. + +Reduced the verbosity of the generic unix makefiles. Previously, each +compilation displayed the full set of compiler options. This has been +eliminated as the options are easily inspected within the makefiles. Each +compilation now results in a single line of output. + +---------------------------------------- +03 March 2017. Summary of changes for version 20170303: + + +0) ACPICA licensing: + +The licensing information at the start of each source code module has +been updated. In addition to the Intel license, the dual GPLv2/BSD +license has been added for completeness. Now, a single version of the +source code should be suitable for all ACPICA customers. This is the +major change for this release since it affects all source code modules. + + +1) ACPICA kernel-resident subsystem: + +Fixed two issues with the common asltypes.h header that could cause +problems in some environments: (Kim Jung-uk) + Removed typedef for YY_BUFFER_STATE ? + Fixes an error with earlier versions of Flex. + Removed use of FILE typedef (which is only defined in stdio.h) + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: fixed a regression introduced in 20170224. A fix for a +memory leak related to resource descriptor tags (names) could fault when +the disassembler was generated with 64-bit compilers. + +The ASLTS test suite has been updated to implement a new testing +architecture. During generation of the suite from ASL source, both the +ASL and ASL+ compilers are now validated, as well as the disassembler +itself (Erik Schmauss). The architecture executes as follows: + + For every ASL source module: + Compile (legacy ASL compilation) + Disassemble the resulting AML to ASL+ source code + Compile the new ASL+ module + Perform a binary compare on the legacy AML and the new ASL+ AML + The ASLTS suite then executes normally using the AML binaries. + +---------------------------------------- +24 February 2017. Summary of changes for version 20170224: + + +1) ACPICA kernel-resident subsystem: + +Interpreter: Fixed two issues with the control method return value auto- +repair feature, where an attempt to double-delete an internal object +could result in an ACPICA warning (for _CID repair and others). No fault +occurs, however, because the attempted deletion (actually a release to an +internal cache) is detected and ignored via object poisoning. + +Debugger: Fixed an AML interpreter mutex issue during the single stepping +of control methods. If certain debugger commands are executed during +stepping, a mutex acquire/release error could occur. Lv Zheng. + +Fixed some issues generating ACPICA with the Intel C compiler by +restoring the original behavior and compiler-specific include file in +acenv.h. Lv Zheng. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total + Debug Version: 207.5K Code, 82.7K Data, 290.2K Total + Previous Release: + Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total + Debug Version: 201.5K Code, 82.2K Data, 283.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion +tool has been designed, implemented, and included in this release. The +key feature of this utility is that the original comments within the +input ASL file are preserved during the conversion process, and included +within the converted ASL+ file -- thus creating a transparent conversion +of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. + + Usage: iasl -ca <ASL-filename> // Output is a .dsl file with +converted code + +iASL/Disassembler: Improved the detection and correct disassembly of +Switch/Case operators. This feature detects sequences of if/elseif/else +operators that originated from ASL Switch/Case/Default operators and +emits the original operators. David Box. + +iASL: Improved the IORT ACPI table support in the following areas. Lv +Zheng: + Clear MappingOffset if the MappingCount is zero. + Fix the disassembly of the SMMU GSU interrupt offset. + Update the template file for the IORT table. + +Disassembler: Enhanced the detection and disassembly of resource +template/descriptor within a Buffer object. An EndTag descriptor is now +required to have a zero second byte, since all known ASL compilers emit +this. This helps eliminate incorrect decisions when a buffer is +disassembled (false positives on resource templates). + +---------------------------------------- +19 January 2017. Summary of changes for version 20170119: + + +1) General ACPICA software: + +Entire source code base: Added the 2017 copyright to all source code +legal/licensing module headers and utility/tool signons. This includes +the standard Linux dual-license header. This affects virtually every file +in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and +the ACPICA test suite. + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Removed/fixed an inadvertent remark when a method argument +containing a reference is used as a target operand within the method (and +never used as a simple argument), as in the example below. Jeffrey Hugo. + + dsdt.asl 1507: Store(0x1, Arg0) + Remark 2146 - ^ Method Argument is never used (Arg0) + +All tools: Removed the bit width of the compiler that generated the tool +from the common signon for all user space tools. This proved to be +confusing and unnecessary. This includes similar removal of HARDWARE_NAME +from the generic makefiles (Thomas Petazzoni). Example below. + + Old: + ASL+ Optimizing Compiler version 20170119-32 + ASL+ Optimizing Compiler version 20170119-64 + + New: + ASL+ Optimizing Compiler version 20170119 + +---------------------------------------- +22 December 2016. Summary of changes for version 20161222: + + +1) ACPICA kernel-resident subsystem: + +AML Debugger: Implemented a new mechanism to simplify and enhance +debugger integration into all environments, including kernel debuggers +and user-space utilities, as well as remote debug services. This +mechanism essentially consists of new OSL interfaces to support debugger +initialization/termination, as well as wait/notify interfaces to perform +the debugger handshake with the host. Lv Zheng. + + New OSL interfaces: + AcpiOsInitializeDebugger (void) + AcpiOsTerminateDebugger (void) + AcpiOsWaitCommandReady (void) + AcpiOsNotifyCommandComplete (void) + + New OS services layer: + osgendbg.c -- Example implementation, and used for AcpiExec + +Update for Generic Address Space (GAS) support: Although the AccessWidth +and/or BitOffset fields of the GAS are not often used, this change now +fully supports these fields. This affects the internal support for FADT +registers, registers in other ACPI data tables, and the AcpiRead and +AcpiWrite public interfaces. Lv Zheng. + +Sleep support: In order to simplify integration of ACPI sleep for the +various host operating systems, a new OSL interface has been introduced. +AcpiOsEnterSleep allows the host to perform any required operations +before the final write to the sleep control register(s) is performed by +ACPICA. Lv Zheng. + + New OSL interface: + AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) + + Called from these internal interfaces: + AcpiHwLegacySleep + AcpiHwExtendedSleep + +EFI support: Added a very small EFI/ACPICA example application. Provides +a simple demo for EFI integration, as well as assisting with resolution +of issues related to customer ACPICA/EFI integration. Lv Zheng. See: + + source/tools/efihello/efihello.c + +Local C library: Implemented several new functions to enhance ACPICA +portability, for environments where these clib functions are not +available (such as EFI). Lv Zheng: + putchar + getchar + strpbrk + strtok + memmove + +Fixed a regression where occasionally a valid resource descriptor was +incorrectly detected as invalid at runtime, and a +AE_AML_NO_RESOURCE_END_TAG was returned. + +Fixed a problem with the recently implemented support that enables +control method invocations as Target operands to many ASL operators. +Warnings of this form: "Needed type [Reference], found [Processor]" were +seen at runtime for some method invocations. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total + Debug Version: 201.7K Code, 82.7K Data, 284.4K Total + Previous Release: + Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total + Debug Version: 201.3K Code, 82.7K Data, 284.0K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Enhanced output by adding the capability to detect and +disassemble ASL Switch/Case statements back to the original ASL source +code instead of if/else blocks. David Box. + +AcpiHelp: Split a large file into separate files based upon +functionality/purpose. New files are: + ahaml.c + ahasl.c + +---------------------------------------- +17 November 2016. Summary of changes for version 20161117: + + +1) ACPICA kernel-resident subsystem: + +Table Manager: Fixed a regression introduced in 20160729, "FADT support +cleanup". This was an attempt to remove all references in the source to +the FADT version 2, which never was a legal version number. It was +skipped because it was an early version of 64-bit support that was +eventually abandoned for the current 64-bit support. + +Interpreter: Fixed a problem where runtime implicit conversion was +incorrectly disabled for the ASL operators below. This brings the +behavior into compliance with the ACPI specification: + FromBCD + ToBCD + ToDecimalString + ToHexString + ToInteger + ToBuffer + +Table Manager: Added a new public interface, AcpiPutTable, used to +release and free an ACPI table returned by AcpiGetTable and related +interfaces. Lv Zheng. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total + Debug Version: 201.3K Code, 82.7K Data, 284.0K Total + Previous Release: + Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total + Debug Version: 200.7K Code, 82.1K Data, 282.8K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed a regression for disassembly of Resource Template. +Detection of templates in the AML stream missed some types of templates. + +iASL: Fixed a problem where an Access Size error was returned for the PCC +address space when the AccessSize of the GAS register is greater than a +DWORD. Hoan Tran. + +iASL: Implemented several grammar changes for the operators below. These +changes are slated for the next version of the ACPI specification: + RefOf - Disallow method invocation as an operand + CondRefOf - Disallow method invocation as an operand + DerefOf - Disallow operands that use the result from operators +that + do not return a reference (Changed TermArg to +SuperName). + +iASL: Control method invocations are now allowed for Target operands, as +per the ACPI specification. Removed error for using a control method +invocation as a Target operand. + +Disassembler: Improved detection of Resource Templates, Unicode, and +Strings within Buffer objects. These subtypes do not contain a specific +opcode to indicate the originating ASL code, and they must be detected by +other means within the disassembler. + +iASL: Implemented an optimization improvement for 32-bit ACPI tables +(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode +only after 64-bit to 32-bit truncation. A truncation warning message is +still emitted, however. + +AcpiXtract: Implemented handling for both types of line terminators (LF +or CR/LF) so that it can accept AcpiDump output files from any system. +Peter Wu. + +AcpiBin: Added two new options for comparing AML files: + -a: compare and display ALL mismatches + -o: start compare at this offset into the second file + +---------------------------------------- +30 September 2016. Summary of changes for version 20160930: + + +1) ACPICA kernel-resident subsystem: + +Fixed a regression in the internal AcpiTbFindTable function where a non +AE_OK exception could inadvertently be returned even if the function did +not fail. This problem affects the following operators: + DataTableRegion + LoadTable + +Fixed a regression in the LoadTable operator where a load to any +namespace location other than the root no longer worked properly. + +Increased the maximum loop count value that will result in the +AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to +prevent infinite loops within the AML interpreter and thus the host OS +kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to +1,048,575). + +Moved the AcpiGbl_MaxLoopIterations configuration variable to the public +acpixf.h file. This allows hosts to easily configure the maximum loop +count at runtime. + +Removed an illegal character in the strtoul64.c file. This character +caused errors with some C compilers. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total + Debug Version: 200.7K Code, 82.1K Data, 282.8K Total + Previous Release: + Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total + Debug Version: 200.3K Code, 82.1K Data, 282.4K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed a problem with the conversion of Else{If{ blocks into +the simpler ASL ElseIf keyword. During the conversion, a trailing If +block could be lost and missing from the disassembled output. + +iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, +the missing rule caused a parse error when using the Index operator as an +operand to ObjectType. This construct now compiles properly. Example: + ObjectType(PKG1[4]). + +iASL: Correctly handle unresolved symbols in the hardware map file (-lm +option). Previously, unresolved symbols could cause a protection fault. +Such symbols are now marked as unresolved in the map file. + +iASL: Implemented support to allow control method invocations as an +operand to the ASL DeRefOf operator. Example: + DeRefOf(MTH1(Local0)) + +Disassembler: Improved support for the ToPLD ASL macro. Detection of a +possible _PLD buffer now includes examination of both the normal buffer +length (16 or 20) as well as the surrounding AML package length. + +Disassembler: Fixed a problem with the decoding of complex expressions +within the Divide operator for ASL+. For the case where both the quotient +and remainder targets are specified, the entire statement cannot be +disassembled. Previously, the output incorrectly contained a mix of ASL- +and ASL+ operators. This mixed statement causes a syntax error when +compiled. Example: + Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly +disassembled to: + Divide (INT1 + 6, 128, RSLT, QUOT) + +iASL/Tools: Added support to process AML and non-AML ACPI tables +consistently. For the disassembler and AcpiExec, allow all types of ACPI +tables (AML and data tables). For the iASL -e option, allow only AML +tables (DSDT/SSDT). + +---------------------------------------- +31 August 2016. Summary of changes for version 20160831: + + +1) ACPICA kernel-resident subsystem: + +Improve support for the so-called "module-level code", which is defined +to be math, logical and control AML opcodes that appear outside of any +control method. This change improves the support by adding more opcodes +that can be executed in the manner. Some other issues have been solved, +and the ASL grammar changes to support such code under all scope +operators (Device, etc.) are complete. Lv Zheng. + +UEFI support: these OSL functions have been implemented. This is an +additional step toward supporting the AcpiExec utility natively (with +full hardware access) under UEFI. Marcelo Ferreira. + AcpiOsReadPciConfiguration + AcpiOsWritePciConfiguration + +Fixed a possible mutex error during control method auto-serialization. Lv +Zheng. + +Updated support for the Generic Address Structure by fully implementing +all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv +Zheng. + +Updated the return value for the internal _OSI method. Instead of +0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF +for 64-bit ACPI tables. This fixes an incompatibility with other ACPI +implementations, and will be reflected and clarified in the next version +of the ACPI specification. + +Implemented two new table events that can be passed to an ACPICA table +handler. These events are used to indicate a table installation or +uninstallation. These events are used in addition to existed table load +and unload events. Lv Zheng. + +Implemented a cleanup for all internal string-to-integer conversions. +Consolidate multiple versions of this functionality and limit possible +bases to either 10 or 16 to simplify the code. Adds a new file, +utstrtoul64. + +Cleanup the inclusion order of the various compiler-specific headers. +This simplifies build configuration management. The compiler-specific +headers are now split out from the host-specific headers. Lv Zheng. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total + Debug Version: 200.3K Code, 82.1K Data, 282.4K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL/AcpiExec: Added a command line option to display the build date/time +of the tool (-vd). This can be useful to verify that the correct version +of the tools are being used. + +AML Debugger: Implemented a new subcommand ("execute predef") to execute +all predefined control methods and names within the current namespace. +This can be useful for debugging problems with ACPI tables and the ACPI +namespace. + +---------------------------------------- +29 July 2016. Summary of changes for version 20160729: + + +1) ACPICA kernel-resident subsystem: + +Implemented basic UEFI support for the various ACPICA tools. This +includes: +1) An OSL to implement the various AcpiOs* interfaces on UEFI. +2) Support to obtain the ACPI tables on UEFI. +3) Local implementation of required C library functions not available on +UEFI. +4) A front-end (main) function for the tools for UEFI-related +initialization. + +The initial deployment of this support is the AcpiDump utility executing +as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). +Current environments supported are Linux/Unix. MSVC generation is not +supported at this time. See the generate/efi/README file for build +instructions. Lv Zheng. + +Future plans include porting the AcpiExec utility to execute natively on +the platform with I/O and memory access. This will allow viewing/dump of +the platform namespace and native execution of ACPI control methods that +access the actual hardware. To fully implement this support, the OSL +functions below must be implemented with UEFI interfaces. Any community +help in the implementation of these functions would be appreciated: + AcpiOsReadPort + AcpiOsWritePort + AcpiOsReadMemory + AcpiOsWriteMemory + AcpiOsReadPciConfiguration + AcpiOsWritePciConfiguration + +Restructured and standardized the C library configuration for ACPICA, +resulting in the various configuration options below. This includes a +global restructuring of the compiler-dependent and platform-dependent +include files. These changes may affect the existing platform-dependent +configuration files on some hosts. Lv Zheng. + +The current C library configuration options appear below. For any issues, +it may be helpful to examine the existing compiler-dependent and +platform-dependent files as examples. Lv Zheng. + +1) Linux kernel: + ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C +library. + ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. +2) Unix/Windows/BSD applications: + ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C +library. + ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. +3) UEFI applications: + ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C +library. + ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. +4) UEFI applications (EDK2/StdLib): + ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. + ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. + + +AML interpreter: "module-level code" support. Allows for execution of so- +called "executable" AML code (math/logical operations, etc.) outside of +control methods not just at the module level (top level) but also within +any scope declared outside of a control method - Scope{}, Device{}, +Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. + +Simplified the configuration of the "maximum AML loops" global option by +adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be +modified at runtime. + + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total + Debug Version: 199.0K Code, 81.8K Data, 280.8K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Add full support for the RASF ACPI table (RAS Features Table). +Includes disassembler, data table compiler, and header support. + +iASL Expand "module-level code" support. Allows for +compilation/disassembly of so-called "executable" AML code (math/logical +operations, etc.) outside of control methods not just at the module level +(top level) but also within any scope declared outside of a control +method - Scope{}, Device{}, Processor{}, PowerResource{}, and +ThermalZone{}. + +AcpiDump: Added support for dumping all SSDTs on newer versions of +Windows. These tables are now easily available -- SSDTs are not available +through the registry on older versions. + +---------------------------------------- +27 May 2016. Summary of changes for version 20160527: + + +1) ACPICA kernel-resident subsystem: + +Temporarily reverted the new arbitrary bit length/alignment support in +AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been +a number of regressions with the new code that need to be fully resolved +and tested before this support can be finally integrated into ACPICA. +Apologies for any inconveniences these issues may have caused. + +The ACPI message macros are not configurable (ACPI_MSG_ERROR, +ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, +and ACPI_MSG_BIOS_WARNING). Lv Zheng. + +Fixed a couple of GCC warnings associated with the use of the -Wcast-qual +option. Adds a new return macro, return_STR. Junk-uk Kim. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total + Debug Version: 201.5K Code, 82.2K Data, 283.7K Total + Previous Release: + Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total + Debug Version: 200.9K Code, 82.2K Data, 283.1K Total + +---------------------------------------- +22 April 2016. Summary of changes for version 20160422: + +1) ACPICA kernel-resident subsystem: + +Fixed a regression in the GAS (generic address structure) arbitrary bit +support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior +and incorrect return values. Lv Zheng. ACPICA BZ 1270. + +ACPI 6.0: Added support for new/renamed resource macros. One new argument +was added to each of these macros, and the original name has been +deprecated. The AML disassembler will always disassemble to the new +names. Support for the new macros was added to iASL, disassembler, +resource manager, and the acpihelp utility. ACPICA BZ 1274. + + I2cSerialBus -> I2cSerialBusV2 + SpiSerialBus -> SpiSerialBusV2 + UartSerialBus -> UartSerialBusV2 + +ACPI 6.0: Added support for a new integer field that was appended to the +package object returned by the _BIX method. This adds iASL compile-time +and AML runtime error checking. ACPICA BZ 1273. + +ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm +Subspace Type2" (Headers, Disassembler, and data table compiler). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total + Debug Version: 201.5K Code, 82.2K Data, 283.7K Total + Previous Release: + Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total + Debug Version: 201.0K Code, 82.0K Data, 283.0K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented an ASL grammar extension to allow/enable executable +"module-level code" to be created and executed under the various +operators that create new scopes. This type of AML code is already +supported in all known AML interpreters, and the grammar change will +appear in the next version of the ACPI specification. Simplifies the +conditional runtime creation of named objects under these object types: + + Device + PowerResource + Processor + Scope + ThermalZone + +iASL: Implemented a new ASL extension, a "For" loop macro to add greater +ease-of-use to the ASL language. The syntax is similar to the +corresponding C operator, and is implemented with the existing AML While +opcode -- thus requiring no changes to existing AML interpreters. + + For (Initialize, Predicate, Update) {TermList} + +Grammar: + ForTerm := + For ( + Initializer // Nothing | TermArg => ComputationalData + Predicate // Nothing | TermArg => ComputationalData + Update // Nothing | TermArg => ComputationalData + ) {TermList} + + +iASL: The _HID/_ADR detection and validation has been enhanced to search +under conditionals in order to allow these objects to be conditionally +created at runtime. + +iASL: Fixed several issues with the constant folding feature. The +improvement allows better detection and resolution of statements that can +be folded at compile time. ACPICA BZ 1266. + +iASL/Disassembler: Fixed a couple issues with the Else{If{}...} +conversion to the ASL ElseIf operator where incorrect ASL code could be +generated. + +iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where +sometimes an extra (and extraneous) set of parentheses were emitted for +some combinations of operators. Although this did not cause any problems +with recompilation of the disassembled code, it made the code more +difficult to read. David Box. ACPICA BZ 1231. + +iASL: Changed to ignore the unreferenced detection for predefined names +of resource descriptor elements, when the resource descriptor is +created/defined within a control method. + +iASL: Disassembler: Fix a possible fault with externally declared Buffer +objects. + +---------------------------------------- +18 March 2016. Summary of changes for version 20160318: + +1) ACPICA kernel-resident subsystem: + +Added support for arbitrary bit lengths and bit offsets for registers +defined by the Generic Address Structure. Previously, only aligned bit +lengths of 8/16/32/64 were supported. This was sufficient for many years, +but recently some machines have been seen that require arbitrary bit- +level support. ACPICA BZ 1240. Lv Zheng. + +Fixed an issue where the \_SB._INI method sometimes must be evaluated +before any _REG methods are evaluated. Lv Zheng. + +Implemented several changes related to ACPI table support +(Headers/Disassembler/TableCompiler): +NFIT: For ACPI 6.1, updated to add some additional new fields and +constants. +FADT: Updated a warning message and set compliance to ACPI 6.1 (Version +6). +DMAR: Added new constants per the 10/2014 DMAR spec. +IORT: Added new subtable per the 10/2015 IORT spec. +HEST: For ACPI 6.1, added new constants and new subtable. +DBG2: Added new constants per the 12/2015 DBG2 spec. +FPDT: Fixed several incorrect fields, add the FPDT boot record structure. +ACPICA BZ 1249. +ERST/EINJ: Updated disassembler with new "Execute Timings" actions. + +Updated header support for the DMAR table to match the current version of +the related spec. + +Added extensions to the ASL Concatenate operator to allow any ACPI object +to be passed as an operand. Any object other than Integer/String/Buffer +simply returns a string containing the object type. This extends the +usefulness of the Printf macros. Previously, Concatenate would abort the +control method if a non-data object was encountered. + +ACPICA source code: Deployed the C "const" keyword across the source code +where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total + Debug Version: 201.0K Code, 82.0K Data, 283.0K Total + Previous Release: + Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total + Debug Version: 200.4K Code, 82.0K Data, 282.4K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL/Disassembler: Improved the heuristic used to determine the number of +arguments for an externally defined control method (a method in another +table). Although this is an improvement, there is no deterministic way to +"guess" the number of method arguments. Only the ACPI 6.0 External opcode +will completely solve this problem as it is deployed (automatically) in +newer BIOS code. + +iASL/Disassembler: Fixed an ordering issue for emitted External() ASL +statements that could cause errors when the disassembled file is +compiled. ACPICA BZ 1243. David Box. + +iASL: Fixed a regression caused by the merger of the two versions of the +local strtoul64. Because of a dependency on a global variable, strtoul64 +could return an error for integers greater than a 32-bit value. ACPICA BZ +1260. + +iASL: Fixed a regression where a fault could occur for an ASL Return +statement if it invokes a control method that is not resolved. ACPICA BZ +1264. + +AcpiXtract: Improved input file validation: detection of binary files and +non-acpidump text files. + +---------------------------------------- +12 February 2016. Summary of changes for version 20160212: + +1) ACPICA kernel-resident subsystem: + +Implemented full support for the ACPI 6.1 specification (released in +January). This version of the specification is available at: +http://www.uefi.org/specifications + +Only a relatively small number of changes were required in ACPICA to +support ACPI 6.1, in these areas: +- New predefined names +- New _HID values +- A new subtable for HEST +- A few other header changes for new values + +Ensure \_SB_._INI is executed before any _REG methods are executed. There +appears to be existing BIOS code that relies on this behavior. Lv Zheng. + +Reverted a change made in version 20151218 which enabled method +invocations to be targets of various ASL operators (SuperName and Target +grammar elements). While the new behavior is supported by the ACPI +specification, other AML interpreters do not support this behavior and +never will. The ACPI specification will be updated for ACPI 6.2 to remove +this support. Therefore, the change was reverted to the original ACPICA +behavior. + +ACPICA now supports the GCC 6 compiler. + +Current Release: (Note: build changes increased sizes) + Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total + Debug Version: 200.4K Code, 82.0K Data, 282.4K Total +Previous Release: + Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total + Debug Version: 200.4K Code, 81.9K Data, 282.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Completed full support for the ACPI 6.0 External() AML opcode. The +compiler emits an external AML opcode for each ASL External statement. +This opcode is used by the disassembler to assist with the disassembly of +external control methods by specifying the required number of arguments +for the method. AML interpreters do not use this opcode. To ensure that +interpreters do not even see the opcode, a block of one or more external +opcodes is surrounded by an "If(0)" construct. As this feature becomes +commonly deployed in BIOS code, the ability of disassemblers to correctly +disassemble AML code will be greatly improved. David Box. + +iASL: Implemented support for an optional cross-reference output file. +The -lx option will create a the cross-reference file with the suffix +"xrf". Three different types of cross-reference are created in this file: +- List of object references made from within each control method +- Invocation (caller) list for each user-defined control method +- List of references to each non-method object in the namespace + +iASL: Method invocations as ASL Target operands are now disallowed and +flagged as errors in preparation for ACPI 6.2 (see the description of the +problem above). + +---------------------------------------- +8 January 2016. Summary of changes for version 20160108: + +1) ACPICA kernel-resident subsystem: + +Updated all ACPICA copyrights and signons to 2016: Added the 2016 +copyright to all source code module headers and utility/tool signons. +This includes the standard Linux dual-license header. This affects +virtually every file in the ACPICA core subsystem, iASL compiler, all +ACPICA utilities, and the ACPICA test suite. + +Fixed a regression introduced in version 20151218 concerning the +execution of so-called module-level ASL/AML code. Namespace objects +created under a module-level If() construct were not properly/fully +entered into the namespace and could cause an interpreter fault when +accessed. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + +Current Release: + Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total + Debug Version: 200.4K Code, 81.9K Data, 282.4K Total + Previous Release: + Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total + Debug Version: 200.3K Code, 81.9K Data, 282.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem with the compilation of the GpioIo and GpioInt resource +descriptors. The _PIN field name was incorrectly defined to be an array +of 32-bit values, but the _PIN values are in fact 16 bits each. This +would cause incorrect bit width warnings when using Word (16-bit) fields +to access the descriptors. + + +---------------------------------------- +18 December 2015. Summary of changes for version 20151218: + +1) ACPICA kernel-resident subsystem: + +Implemented per-AML-table execution of "module-level code" as individual +ACPI tables are loaded into the namespace during ACPICA initialization. +In other words, any module-level code within an AML table is executed +immediately after the table is loaded, instead of batched and executed +after all of the tables have been loaded. This provides compatibility +with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, +David Box. + +To fully support the feature above, the default operation region handlers +for the SystemMemory, SystemIO, and PCI_Config address spaces are now +installed before any ACPI tables are loaded. This enables module-level +code to access these address spaces during the table load and module- +level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David +Box. + +Implemented several changes to the internal _REG support in conjunction +with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples +utilities for the changes above. Although these tools were changed, host +operating systems that simply use the default handlers for SystemMemory, +SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. + +For example, in the code below, DEV1 is conditionally added to the +namespace by the DSDT via module-level code that accesses an operation +region. The SSDT references DEV1 via the Scope operator. DEV1 must be +created immediately after the DSDT is loaded in order for the SSDT to +successfully reference DEV1. Previously, this code would cause an +AE_NOT_EXIST exception during the load of the SSDT. Now, this code is +fully supported by ACPICA. + + DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) + { + OperationRegion (OPR1, SystemMemory, 0x400, 32) + Field (OPR1, AnyAcc, NoLock, Preserve) + { + FLD1, 1 + } + If (FLD1) + { + Device (\DEV1) + { + } + } + } + DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) + { + External (\DEV1, DeviceObj) + Scope (\DEV1) + { + } + } + +Fixed an AML interpreter problem where control method invocations were +not handled correctly when the invocation was itself a SuperName argument +to another ASL operator. In these cases, the method was not invoked. +ACPICA BZ 1002. Affects the following ASL operators that have a SuperName +argument: + Store + Acquire, Wait + CondRefOf, RefOf + Decrement, Increment + Load, Unload + Notify + Signal, Release, Reset + SizeOf + +Implemented automatic String-to-ObjectReference conversion support for +packages returned by predefined names (such as _DEP). A common BIOS error +is to add double quotes around an ObjectReference namepath, which turns +the reference into an unexpected string object. This support detects the +problem and corrects it before the package is returned to the caller that +invoked the method. Lv Zheng. + +Implemented extensions to the Concatenate operator. Concatenate now +accepts any type of object, it is not restricted to simply +Integer/String/Buffer. For objects other than these 3 basic data types, +the argument is treated as a string containing the name of the object +type. This expands the utility of Concatenate and the Printf/Fprintf +macros. ACPICA BZ 1222. + +Cleaned up the output of the ASL Debug object. The timer() value is now +optional and no longer emitted by default. Also, the basic data types of +Integer/String/Buffer are simply emitted as their values, without a data +type string -- since the data type is obvious from the output. ACPICA BZ +1221. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total + Debug Version: 200.3K Code, 81.9K Data, 282.3K Total + Previous Release: + Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total + Debug Version: 199.6K Code, 81.8K Data, 281.4K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed some issues with the ASL Include() operator. This operator +was incorrectly defined in the iASL parser rules, causing a new scope to +be opened for the code within the include file. This could lead to +several issues, including allowing ASL code that is technically illegal +and not supported by AML interpreters. Note, this does not affect the +related #include preprocessor operator. ACPICA BZ 1212. + +iASL/Disassembler: Implemented support for the ASL ElseIf operator. This +operator is essentially an ASL macro since there is no AML opcode +associated with it. The code emitted by the iASL compiler for ElseIf is +an Else opcode followed immediately by an If opcode. The disassembler +will now emit an ElseIf if it finds an Else immediately followed by an +If. This simplifies the decoded ASL, especially for deeply nested +If..Else and large Switch constructs. Thus, the disassembled code more +closely follows the original source ASL. ACPICA BZ 1211. Example: + + Old disassembly: + Else + { + If (Arg0 == 0x02) + { + Local0 = 0x05 + } + } + + New disassembly: + ElseIf (Arg0 == 0x02) + { + Local0 = 0x05 + } + +AcpiExec: Added support for the new module level code behavior and the +early region installation. This required a small change to the +initialization, since AcpiExec must install its own operation region +handlers. + +AcpiExec: Added support to make the debug object timer optional. Default +is timer disabled. This cleans up the debug object output -- the timer +data is rarely used. + +AcpiExec: Multiple ACPI tables are now loaded in the order that they +appear on the command line. This can be important when there are +interdependencies/references between the tables. + +iASL/Templates. Add support to generate template files with multiple +SSDTs within a single output file. Also added ommand line support to +specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ +1223, 1225. + + +---------------------------------------- +24 November 2015. Summary of changes for version 20151124: + +1) ACPICA kernel-resident subsystem: + +Fixed a possible regression for a previous update to FADT handling. The +FADT no longer has a fixed table ID, causing some issues with code that +was hardwired to a specific ID. Lv Zheng. + +Fixed a problem where the method auto-serialization could interfere with +the current SyncLevel. This change makes the auto-serialization support +transparent to the SyncLevel support and management. + +Removed support for the _SUB predefined name in AcpiGetObjectInfo. This +interface is intended for early access to the namespace during the +initial namespace device discovery walk. The _SUB method has been seen to +access operation regions in some cases, causing errors because the +operation regions are not fully initialized. + +AML Debugger: Fixed some issues with the terminate/quit/exit commands +that can cause faults. Lv Zheng. + +AML Debugger: Add thread ID support so that single-step mode only applies +to the AML Debugger thread. This prevents runtime errors within some +kernels. Lv Zheng. + +Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx +methods that are invoked by this interface are optional, removed warnings +emitted for the case where one or more of these methods do not exist. +ACPICA BZ 1208, original change by Prarit Bhargava. + +Made a major pass through the entire ACPICA source code base to +standardize formatting that has diverged a bit over time. There are no +functional changes, but this will of course cause quite a few code +differences from the previous ACPICA release. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total + Debug Version: 199.6K Code, 81.8K Data, 281.4K Total + Previous Release: + Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total + Debug Version: 199.3K Code, 81.4K Data, 280.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple +definition blocks within a single ASL file and the resulting AML file. +Support for this type of file was also added to the various tools that +use binary AML files: acpiexec, acpixtract, and the AML disassembler. The +example code below shows two definition blocks within the same file: + + DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", +0x12345678) + { + } + DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) + { + } + +iASL: Enhanced typechecking for the Name() operator. All expressions for +the value of the named object must be reduced/folded to a single constant +at compile time, as per the ACPI specification (the AML definition of +Name()). + +iASL: Fixed some code indentation issues for the -ic and -ia options (C +and assembly headers). Now all emitted code correctly begins in column 1. + +iASL: Added an error message for an attempt to open a Scope() on an +object defined in an SSDT. The DSDT is always loaded into the namespace +first, so any attempt to open a Scope on an SSDT object will fail at +runtime. + + +---------------------------------------- +30 September 2015. Summary of changes for version 20150930: + +1) ACPICA kernel-resident subsystem: + +Debugger: Implemented several changes and bug fixes to assist support for +the in-kernel version of the AML debugger. Lv Zheng. +- Fix the "predefined" command for in-kernel debugger. +- Do not enter debug command loop for the help and version commands. +- Disallow "execute" command during execution/single-step of a method. + +Interpreter: Updated runtime typechecking for all operators that have +target operands. The operand is resolved and validated that it is legal. +For example, the target cannot be a non-data object such as a Device, +Mutex, ThermalZone, etc., as per the ACPI specification. + +Debugger: Fixed the double-mutex user I/O handshake to work when local +deadlock detection is enabled. + +Debugger: limited display of method locals and arguments (LocalX and +ArgX) to only those that have actually been initialized. This prevents +lines of extraneous output. + +Updated the definition of the NFIT table to correct the bit polarity of +one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total + Debug Version: 199.3K Code, 81.4K Data, 280.7K Total + Previous Release: + Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total + Debug Version: 198.6K Code, 80.9K Data, 279.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Improved the compile-time typechecking for operands of many of the +ASL operators: + +-- Added an option to disable compiler operand/operator typechecking (- +ot). + +-- For the following operators, the TermArg operands are now validated +when possible to be Integer data objects: BankField, OperationRegion, +DataTableRegion, Buffer, and Package. + +-- Store (Source, Target): Both the source and target operands are +resolved and checked that the operands are both legal. For example, +neither operand can be a non-data object such as a Device, Mutex, +ThermalZone, etc. Note, as per the ACPI specification, the CopyObject +operator can be used to store an object to any type of target object. + +-- Store (Source, Target): If the source is a Package object, the target +must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target +is a Package, the source must also be a Package. + +-- Store (Source, Target): A warning is issued if the source and target +resolve to the identical named object. + +-- Store (Source, <method invocation>): An error is generated for the +target method invocation, as this construct is not supported by the AML +interpreter. + +-- For all ASL math and logic operators, the target operand must be a +data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This +includes the function return value also. + +-- External declarations are also included in the typechecking where +possible. External objects defined using the UnknownObj keyword cannot be +typechecked, however. + +iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index +operator: +- Legacy code: Index(PKG1, 3) +- New ASL+ code: PKG1[3] +This completes the ACPI 6.0 ASL+ support as it was the only operator not +supported. + +iASL: Fixed the file suffix for the preprocessor output file (.i). Two +spaces were inadvertently appended to the filename, causing file access +and deletion problems on some systems. + +ASL Test Suite (ASLTS): Updated the master makefile to generate all +possible compiler output files when building the test suite -- thus +exercising these features of the compiler. These files are automatically +deleted when the test suite exits. + + +---------------------------------------- +18 August 2015. Summary of changes for version 20150818: + +1) ACPICA kernel-resident subsystem: + +Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv +Zheng. ACPICA BZ 1186. + +Completed development to ensure that the ACPICA Disassembler and Debugger +are fully standalone components of ACPICA. Removed cross-component +dependences. Lv Zheng. + +The max-number-of-AML-loops is now runtime configurable (previously was +compile-time only). This is essentially a loop timeout to force-abort +infinite AML loops. ACPCIA BZ 1192. + +Debugger: Cleanup output to dump ACPI names and namepaths without any +trailing underscores. Lv Zheng. ACPICA BZ 1135. + +Removed unnecessary conditional compilations across the Debugger and +Disassembler components where entire modules could be left uncompiled. + +The aapits test is deprecated and has been removed from the ACPICA git +tree. The test has never been completed and has not been maintained, thus +becoming rather useless. ACPICA BZ 1015, 794. + +A batch of small changes to close bugzilla and other reports: +- Remove duplicate code for _PLD processing. ACPICA BZ 1176. +- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. +- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. +- ACPI table support: general cleanup and simplification. Lv Zheng, Bob +Moore. +- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. +ACPICA BZ 1184. +- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML +operators. +- Debugger: Split debugger initialization/termination interfaces. Lv +Zheng. +- AcpiExec: Emit OemTableId for SSDTs during the load phase for table +identification. +- AcpiExec: Add debug message during _REG method phase during table +load/init. +- AcpiNames: Fix a regression where some output was missing and no longer +emitted. +- Debugger: General cleanup and simplification. Lv Zheng. +- Disassembler: Cleanup use of several global option variables. Lv Zheng. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total + Debug Version: 198.6K Code, 80.9K Data, 279.5K Total + Previous Release: + Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total + Debug Version: 197.8K Code, 81.5K Data, 279.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT +were not handled properly and caused load errors. Now, properly invoke +and use the ACPICA auto-reallocate mechanism for ACPI table data +structures. ACPICA BZ 1188 + +AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA +BZ 1190. + +AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For +AcpiExec, this means that no control methods (like _REG/_INI/_STA) are +executed during initialization. ACPICA BZ 1187, 1189. + +iASL/Disassembler: Implemented a prototype "listing" mode that emits AML +that corresponds to each disassembled ASL statement, to simplify +debugging. ACPICA BZ 1191. + +Debugger: Add option to the "objects" command to display a summary of the +current namespace objects (Object type and count). This is displayed if +the command is entered with no arguments. + +AcpiNames: Add -x option to specify debug level, similar to AcpiExec. + + +---------------------------------------- +17 July 2015. Summary of changes for version 20150717: + +1) ACPICA kernel-resident subsystem: + +Improved the partitioning between the Debugger and Disassembler +components. This allows the Debugger to be used standalone within kernel +code without the Disassembler (which is used for single stepping also). +This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. + +Debugger: Implemented a new command to trace the execution of control +methods (Trace). This is especially useful for the in-kernel version of +the debugger when file I/O may not be available for method trace output. +See the ACPICA reference for more information. Lv Zheng. + +Moved all C library prototypes (used for the local versions of these +functions when requested) to a new header, acclib.h +Cleaned up the use of non-ANSI C library functions. These functions are +implemented locally in ACPICA. Moved all such functions to a common +source file, utnonansi.c + +Debugger: Fixed a problem with the "!!" command (get last command +executed) where the debugger could enter an infinite loop and eventually +crash. + +Removed the use of local macros that were used for some of the standard C +library functions to automatically cast input parameters. This mostly +affected the is* functions where the input parameter is defined to be an +int. This required a few modifications to the main ACPICA source code to +provide casting for these functions and eliminate possible compiler +warnings for these parameters. + +Across the source code, added additional status/error checking to resolve +issues discovered by static source code analysis tools such as Coverity. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total + Debug Version: 197.8K Code, 81.5K Data, 279.3K Total + Previous Release: + Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total + Debug Version: 196.2K Code, 81.0K Data, 277.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a regression where the device map file feature no longer +worked properly when used in conjunction with the disassembler. It only +worked properly with the compiler itself. + +iASL: Implemented a new warning for method LocalX variables that are set +but never used (similar to a C compiler such as gcc). This also applies +to ArgX variables that are not defined by the parent method, and are +instead (legally) used as local variables. + +iASL/Preprocessor: Finished the pass-through of line numbers from the +preprocessor to the compiler. This ensures that compiler errors/warnings +have the correct original line numbers and filenames, regardless of any +#include files. + +iASL/Preprocessor: Fixed a couple of issues with comment handling and the +pass-through of comments to the preprocessor output file (which becomes +the compiler input file). Also fixed a problem with // comments that +appear after a math expression. + +iASL: Added support for the TCPA server table to the table compiler and +template generator. (The client table was already previously supported) + +iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to +identify the iASL compiler. + +Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined +multiple times. The new names are ACPI_SIGN_NEGATIVE and +ACPI_SIGN_POSITIVE. + +AcpiHelp: Update to expand help messages for the iASL preprocessor +directives. + + +---------------------------------------- +19 June 2015. Summary of changes for version 20150619: + +Two regressions in version 20150616 have been addressed: + +Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, +etc.) This update changes ACPICA to only use the standard headers for +functions, or the prototypes for the local versions of the C library +functions. Across the source code, this required some additional casts +for some Clib invocations for portability. Moved all local prototypes to +a new file, acclib.h + +Fixes several problems with recent changes to the handling of the FACS +table that could cause some systems not to boot. + + +---------------------------------------- +16 June 2015. Summary of changes for version 20150616: + + +1) ACPICA kernel-resident subsystem: + +Across the entire ACPICA source code base, the various macros for the C +library functions (such as ACPI_STRLEN, etc.) have been removed and +replaced by the standard C library names (strlen, etc.) The original +purpose for these macros is no longer applicable. This simplification +reduces the number of macros used in the ACPICA source code +significantly, improving readability and maintainability. + +Implemented support for a new ACPI table, the OSDT. This table, the +"override" SDT, can be loaded directly by the host OS at boot time. It +enables the replacement of existing namespace objects that were installed +via the DSDT and/or SSDTs. The primary purpose for this is to replace +buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated +for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob +Moore. + +Added support for systems with (improperly) two FACS tables -- a "32-bit" +table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit +X field). This change will support both automatically. There continues to +be systems found with this issue. This support requires a change to the +AcpiSetFirmwareWakingVector interface. Also, a public global variable has +been added to allow the host to select which FACS is desired +(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more +details Lv Zheng. + +Added a new feature to allow for systems that do not contain an FACS. +Although this is already supported on hardware-reduced platforms, the +feature has been extended for all platforms. The reasoning is that we do +not want to abort the entire ACPICA initialization just because the +system is seriously buggy and has no FACS. + +Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were +not correctly transcribed from the ACPI specification in ACPICA version +20150515. + +Implemented support for the _CLS object in the AcpiGetObjectInfo external +interface. + +Updated the definitions of the TCPA and TPM2 ACPI tables to the more +recent TCG ACPI Specification, December 14, 2014. Table disassembler and +compiler also updated. Note: The TCPA "server" table is not supported by +the disassembler/table-compiler at this time. + +ACPI 6.0: Added definitions for the new GIC version field in the MADT. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total + Debug Version: 196.2K Code, 81.0K Data, 277.2K Total + Previous Release: + Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total + Debug Version: 195.2K Code, 80.8K Data, 276.0K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed a problem with the new symbolic operator disassembler +where incorrect ASL code could be emitted in some cases for the "non- +commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and +ShiftRight. The actual problem cases seem to be rather unusual in common +ASL code, however. David Box. + +Modified the linux version of acpidump to obtain ACPI tables from not +just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv +Zheng. + +iASL: Fixed a problem where the user preprocessor output file (.i) +contained extra data that was not expected. The compiler was using this +file as a temporary file and passed through #line directives in order to +keep compiler error messages in sync with the input file and line number +across multiple include files. The (.i) is no longer a temporary file as +the compiler uses a new, different file for the original purpose. + +iASL: Fixed a problem where comments within the original ASL source code +file were not passed through to the preprocessor output file, nor any +listing files. + +iASL: Fixed some issues for the handling of the "#include" preprocessor +directive and the similar (but not the same) "Include" ASL operator. + +iASL: Add support for the new OSDT in both the disassembler and compiler. + +iASL: Fixed a problem with the constant folding support where a Buffer +object could be incorrectly generated (incorrectly formed) during a +conversion to a Store() operator. + +AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new +description text for the _REV predefined name. _REV now permanently +returns 2, as per the ACPI 6.0 specification. + +Debugger: Enhanced the output of the Debug ASL object for references +produced by the Index operator. For Buffers and strings, only output the +actual byte pointed to by the index. For packages, only print the single +package element decoded by the index. Previously, the entire +buffer/string/package was emitted. + +iASL/Table-compiler: Fixed a regression where the "generic" data types +were no longer recognized, causing errors. + + +---------------------------------------- +15 May 2015. Summary of changes for version 20150515: + +This release implements most of ACPI 6.0 as described below. + +1) ACPICA kernel-resident subsystem: + +Implemented runtime argument checking and return value checking for all +new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, +_MTL, _PRR, _RDI, _RST, _TFP, _TSN. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total + Debug Version: 195.2K Code, 80.8K Data, 276.0K Total + Previous Release: + Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total + Debug Version: 192.8K Code, 79.9K Data, 272.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL compiler: Added compile-time support for all new ACPI 6.0 predefined +names (argument count validation and return value typechecking.) + +iASL disassembler and table compiler: implemented support for all new +ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. + +iASL disassembler and table compiler: Added ACPI 6.0 changes to existing +tables: FADT, MADT. + +iASL preprocessor: Added a new directive to enable inclusion of binary +blobs into ASL code. The new directive is #includebuffer. It takes a +binary file as input and emits a named ascii buffer object into the ASL +code. + +AcpiHelp: Added support for all new ACPI 6.0 predefined names. + +AcpiHelp: Added a new option, -d, to display all iASL preprocessor +directives. + +AcpiHelp: Added a new option, -t, to display all known/supported ACPI +tables. + + +---------------------------------------- +10 April 2015. Summary of changes for version 20150410: + +Reverted a change introduced in version 20150408 that caused +a regression in the disassembler where incorrect operator +symbols could be emitted. + + +---------------------------------------- +08 April 2015. Summary of changes for version 20150408: + + +1) ACPICA kernel-resident subsystem: + +Permanently set the return value for the _REV predefined name. It now +returns 2 (was 5). This matches other ACPI implementations. _REV will be +deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 +for ACPI 2.0 and later. It should never be used to differentiate or +identify operating systems. + +Added the "Windows 2015" string to the _OSI support. ACPICA will now +return TRUE to a query with this string. + +Fixed several issues with the local version of the printf function. + +Added the C99 compiler option (-std=c99) to the Unix makefiles. + + Current Release: + Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total + Debug Version: 195.2K Code, 80.7K Data, 275.9K Total + Previous Release: + Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total + Debug Version: 192.1K Code, 79.8K Data, 271.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented an enhancement to the constant folding feature to +transform the parse tree to a simple Store operation whenever possible: + Add (2, 3, X) ==> is converted to: Store (5, X) + X = 2 + 3 ==> is converted to: Store (5, X) + +Updated support for the SLIC table (Software Licensing Description Table) +in both the Data Table compiler and the disassembler. The SLIC table +support now conforms to "Microsoft Software Licensing Tables (SLIC and +MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data +following the ACPI header is now defined to be "Proprietary Data", and as +such, can only be entered or displayed as a hex data block. + +Implemented full support for the MSDM table as described in the document +above. Note: The format of MSDM is similar to SLIC. Any MSDM data +following the ACPI header is defined to be "Proprietary Data", and can +only be entered or displayed as a hex data block. + +Implemented the -Pn option for the iASL Table Compiler (was only +implemented for the ASL compiler). This option disables the iASL +preprocessor. + +Disassembler: For disassembly of Data Tables, added a comment field +around the Ascii equivalent data that is emitted as part of the "Raw +Table Data" block. This prevents the iASL Preprocessor from possible +confusion if/when the table is compiled. + +Disassembler: Added an option (-df) to force the disassembler to assume +that the table being disassembled contains valid AML. This feature is +useful for disassembling AML files that contain ACPI signatures other +than DSDT or SSDT (such as OEMx or other signatures). + +Changes for the EFI version of the tools: +1) Fixed a build error/issue +2) Fixed a cast warning + +iASL: Fixed a path issue with the __FILE__ operator by making the +directory prefix optional within the internal SplitInputFilename +function. + +Debugger: Removed some unused global variables. + +Tests: Updated the makefile for proper generation of the AAPITS suite. + + +---------------------------------------- +04 February 2015. Summary of changes for version 20150204: + +ACPICA kernel-resident subsystem: + +Updated all ACPICA copyrights and signons to 2014. Added the 2014 +copyright to all module headers and signons, including the standard Linux +header. This affects virtually every file in the ACPICA core subsystem, +iASL compiler, all ACPICA utilities, and the test suites. + +Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. +A raw gpe handling mechanism was created to allow better handling of GPE +storms that aren't easily managed by the normal handler. The raw handler +allows disabling/renabling of the the GPE so that interrupt storms can be +avoided in cases where events cannot be timely serviced. In this +scenario, handlers should use the AcpiSetGpe() API to disable/enable the +GPE. This API will leave the reference counts undisturbed, thereby +preventing unintentional clearing of the GPE when the intent in only to +temporarily disable it. Raw handlers allow enabling and disabling of a +GPE by removing GPE register locking. As such, raw handlers much provide +their own locks while using GPE API's to protect access to GPE data +structures. +Lv Zheng + +Events: Always modify GPE registers under the GPE lock. +Applies GPE lock around AcpiFinishGpe() to protect access to GPE register +values. Reported as bug by joe.liu@apple.com. + +Unix makefiles: Separate option to disable optimizations and +_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the +NOOPT disable option and creates a separate flag (NOFORTIFY) for this +purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined +errors when building ACPICA. This allows disabling the option without +also having to disable optimazations. +David Box + + Current Release: + Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total + Debug Version: 199.2K Code, 82.4K Data, 281.6K Total + +-- +-------------------------------------- +07 November 2014. Summary of changes for version 20141107: + +This release is available at https://acpica.org/downloads + +This release introduces and implements language extensions to ASL that +provide support for symbolic ("C-style") operators and expressions. These +language extensions are known collectively as ASL+. + + +1) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed a problem with disassembly of the UartSerialBus +macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. +Box. + +Disassembler: Fixed the Unicode macro support to add escape sequences. +All non-printable ASCII values are emitted as escape sequences, as well +as the standard escapes for quote and backslash. Ensures that the +disassembled macro can be correctly recompiled. + +iASL: Added Printf/Fprintf macros for formatted output. These macros are +translated to existing AML Concatenate and Store operations. Printf +writes to the ASL Debug object. Fprintf allows the specification of an +ASL name as the target. Only a single format specifier is required, %o, +since the AML interpreter dynamically converts objects to the required +type. David E. Box. + + (old) Store (Concatenate (Concatenate (Concatenate (Concatenate + (Concatenate (Concatenate (Concatenate ("", Arg0), + ": Unexpected value for "), Arg1), ", "), Arg2), + " at line "), Arg3), Debug) + + (new) Printf ("%o: Unexpected value for %o, %o at line %o", + Arg0, Arg1, Arg2, Arg3) + + (old) Store (Concatenate (Concatenate (Concatenate (Concatenate + ("", Arg1), ": "), Arg0), " Successful"), STR1) + + (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) + +iASL: Added debug options (-bp, -bt) to dynamically prune levels of the +ASL parse tree before the AML code is generated. This allows blocks of +ASL code to be removed in order to help locate and identify problem +devices and/or code. David E. Box. + +AcpiExec: Added support (-fi) for an optional namespace object +initialization file. This file specifies initial values for namespace +objects as necessary for debugging and testing different ASL code paths +that may be taken as a result of BIOS options. + + +2) Overview of symbolic operator support for ASL (ASL+) +------------------------------------------------------- + +As an extension to the ASL language, iASL implements support for symbolic +(C-style) operators for math and logical expressions. This can greatly +simplify ASL code as well as improve both readability and +maintainability. These language extensions can exist concurrently with +all legacy ASL code and expressions. + +The symbolic extensions are 100% compatible with existing AML +interpreters, since no new AML opcodes are created. To implement the +extensions, the iASL compiler transforms the symbolic expressions into +the legacy ASL/AML equivalents at compile time. + +Full symbolic expressions are supported, along with the standard C +precedence and associativity rules. + +Full disassembler support for the symbolic expressions is provided, and +creates an automatic migration path for existing ASL code to ASL+ code +via the disassembly process. By default, the disassembler now emits ASL+ +code with symbolic expressions. An option (-dl) is provided to force the +disassembler to emit legacy ASL code if desired. + +Below is the complete list of the currently supported symbolic operators +with examples. See the iASL User Guide for additional information. + + +ASL+ Syntax Legacy ASL Equivalent +----------- --------------------- + + // Math operators + +Z = X + Y Add (X, Y, Z) +Z = X - Y Subtract (X, Y, Z) +Z = X * Y Multiply (X, Y, Z) +Z = X / Y Divide (X, Y, , Z) +Z = X % Y Mod (X, Y, Z) +Z = X << Y ShiftLeft (X, Y, Z) +Z = X >> Y ShiftRight (X, Y, Z) +Z = X & Y And (X, Y, Z) +Z = X | Y Or (X, Y, Z) +Z = X ^ Y Xor (X, Y, Z) +Z = ~X Not (X, Z) +X++ Increment (X) +X-- Decrement (X) + + // Logical operators + +(X == Y) LEqual (X, Y) +(X != Y) LNotEqual (X, Y) +(X < Y) LLess (X, Y) +(X > Y) LGreater (X, Y) +(X <= Y) LLessEqual (X, Y) +(X >= Y) LGreaterEqual (X, Y) +(X && Y) LAnd (X, Y) +(X || Y) LOr (X, Y) +(!X) LNot (X) + + // Assignment and compound assignment operations + +X = Y Store (Y, X) +X += Y Add (X, Y, X) +X -= Y Subtract (X, Y, X) +X *= Y Multiply (X, Y, X) +X /= Y Divide (X, Y, , X) +X %= Y Mod (X, Y, X) +X <<= Y ShiftLeft (X, Y, X) +X >>= Y ShiftRight (X, Y, X) +X &= Y And (X, Y, X) +X |= Y Or (X, Y, X) +X ^= Y Xor (X, Y, X) + + +3) ASL+ Examples: +----------------- + +Legacy ASL: + If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( + And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, +0x03FB), + 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) + { + And (MEMB, 0xFFFFFFF0, SRMB) + Store (MEMB, Local2) + Store (PDBM, Local1) + And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) + Store (SRMB, MEMB) + Or (PDBM, 0x02, PDBM) + } + +ASL+ version: + If (((R510 & 0x03FB) == 0x02E0) || + ((R520 & 0x03FB) == 0x02E0) || + ((R530 & 0x03FB) == 0x02E0) || + ((R540 & 0x03FB) == 0x02E0)) + { + SRMB = (MEMB & 0xFFFFFFF0) + Local2 = MEMB + Local1 = PDBM + PDBM &= 0xFFFFFFFFFFFFFFF9 + MEMB = SRMB + PDBM |= 0x02 + } + +Legacy ASL: + Store (0x1234, Local1) + Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) + Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) + Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) + Store (Index (PKG1, 0x03), Local6) + Store (Add (Local3, Local2), Debug) + Add (Local1, 0x0F, Local2) + Add (Local1, Multiply (Local2, Local3), Local2) + Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) + +ASL+ version: + Local1 = 0x1234 + Local3 = (((Local1 + TEST) + 0x20) * Local2) + Local3 = (Local2 * ((Local1 + TEST) + 0x20)) + Local3 = (Local1 + (TEST + (0x20 * Local2))) + Local6 = Index (PKG1, 0x03) + Debug = (Local3 + Local2) + Local2 = (Local1 + 0x0F) + Local2 = (Local1 + (Local2 * Local3)) + Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) + + +---------------------------------------- +26 September 2014. Summary of changes for version 20140926: + +1) ACPICA kernel-resident subsystem: + +Updated the GPIO operation region handler interface (GeneralPurposeIo). +In order to support GPIO Connection objects with multiple pins, along +with the related Field objects, the following changes to the interface +have been made: The Address is now defined to be the offset in bits of +the field unit from the previous invocation of a Connection. It can be +viewed as a "Pin Number Index" into the connection resource descriptor. +The BitWidth is the exact bit width of the field. It is usually one bit, +but not always. See the ACPICA reference guide (section 8.8.6.2.1) for +additional information and examples. + +GPE support: During ACPICA/GPE initialization, ensure that all GPEs with +corresponding _Lxx/_Exx methods are disabled (they may have been enabled +by the firmware), so that they cannot fire until they are enabled via +AcpiUpdateAllGpes. Rafael J. Wysocki. + +Added a new return flag for the Event/GPE status interfaces -- +AcpiGetEventStatus and AcpiGetGpeStatus. The new +ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or +GPE currently has a handler associated with it, and can thus actually +affect the system. Lv Zheng. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total + Debug Version: 192.8K Code, 79.9K Data, 272.7K Total + Previous Release: + Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total + Debug Version: 192.1K Code, 79.8K Data, 271.9K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a memory allocation/free regression introduced in 20140828 +that could cause the compiler to crash. This was introduced inadvertently +during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, +1113. + +iASL: Removed two error messages that have been found to create false +positives, until they can be fixed and fully validated (ACPICA BZ 1112): +1) Illegal forward reference within a method +2) Illegal reference across two methods + +iASL: Implemented a new option (-lm) to create a hardware mapping file +that summarizes all GPIO, I2C, SPI, and UART connections. This option +works for both the compiler and disassembler. See the iASL compiler user +guide for additional information and examples (section 6.4.6). + +AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to +version 2. This corrects the AE_BAD_HEADER exception seen on systems with +a version 1 RSDP. Lv Zheng ACPICA BZ 1097. + +AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode +unless STDIN is actually a terminal. Assists with batch-mode processing. +ACPICA BZ 1114. + +Disassembler/AcpiHelp: Added another large group of recognized _HID +values. + + +---------------------------------------- +28 August 2014. Summary of changes for version 20140828: + +1) ACPICA kernel-resident subsystem: + +Fixed a problem related to the internal use of the Timer() operator where +a 64-bit divide could cause an attempted link to a double-precision math +library. This divide is not actually necessary, so the code was +restructured to eliminate it. Lv Zheng. + +ACPI 5.1: Added support for the runtime validation of the _DSD package +(similar to the iASL support). + +ACPI 5.1/Headers: Added support for the GICC affinity subtable to the +SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total + Debug Version: 192.1K Code, 79.8K Data, 271.9K Total + Previous Release: + Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 + Debug Version: 192.0K Code, 79.7K Data, 271.7K Total + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Fixed a problem on unix systems where the original terminal +state was not always properly restored upon exit. Seen when using the -v +option. ACPICA BZ 1104. + +iASL: Fixed a problem with the validation of the ranges/length within the +Memory24 resource descriptor. There was a boundary condition when the +range was equal to the (length -1) caused by the fact that these values +are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 + +Disassembler: Fixed a problem with the GpioInt descriptor interrupt +polarity +flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword +is +now supported properly. + +ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported +in the disassembler, data table compiler, and table template generator. + +iASL: Added a requirement for Device() objects that one of either a _HID +or _ADR must exist within the scope of a Device, as per the ACPI +specification. Remove a similar requirement that was incorrectly in place +for the _DSD object. + +iASL: Added error detection for illegal named references within control +methods that would cause runtime failures. Now trapped as errors are: 1) +References to objects within a non-parent control method. 2) Forward +references (within a method) -- for control methods, AML interpreters use +a one-pass parse of control methods. ACPICA BZ 1008. + +iASL: Added error checking for dependencies related to the _PSx power +methods. ACPICA BZ 1029. +1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, +_PS3. +2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same +scope. + +iASL and table compiler: Cleanup miscellaneous memory leaks by fully +deploying the existing object and string caches and adding new caches for +the table compiler. + +iASL: Split the huge parser source file into multiple subfiles to improve +manageability. Generation now requires the M4 macro preprocessor, which +is part of the Bison distribution on both unix and windows platforms. + +AcpiSrc: Fixed and removed all extraneous warnings generated during +entire ACPICA source code scan and/or conversion. + + +---------------------------------------- + +24 July 2014. Summary of changes for version 20140724: + +The ACPI 5.1 specification has been released and is available at: +http://uefi.org/specs/access + + +0) ACPI 5.1 support in ACPICA: + +ACPI 5.1 is fully supported in ACPICA as of this release. + +New predefined names. Support includes iASL and runtime ACPICA +validation. + _CCA (Cache Coherency Attribute). + _DSD (Device-Specific Data). David Box. + +Modifications to existing ACPI tables. Support includes headers, iASL +Data Table compiler, disassembler, and the template generator. + FADT - New fields and flags. Graeme Gregory. + GTDT - One new subtable and new fields. Tomasz Nowicki. + MADT - Two new subtables. Tomasz Nowicki. + PCCT - One new subtable. + +Miscellaneous. + New notification type for System Resource Affinity change events. + + +1) ACPICA kernel-resident subsystem: + +Fixed a regression introduced in 20140627 where a fault can happen during +the deletion of Alias AML namespace objects. The problem affected both +the core ACPICA and the ACPICA tools including iASL and AcpiExec. + +Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a +simple mechanism to enable wake GPEs that have no associated handler or +control method. Rafael Wysocki. + +Updated the AcpiEnableGpe interface to disallow the enable if there is no +handler or control method associated with the particular GPE. This will +help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. + +Updated GPE handling and dispatch by disabling the GPE before clearing +the status bit for edge-triggered GPEs. Lv Zheng. + +Added Timer() support to the AML Debug object. The current timer value is +now displayed with each invocation of (Store to) the debug object to +enable simple generation of execution times for AML code (method +execution for example.) ACPICA BZ 1093. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total + Debug Version: 192.0K Code, 79.7K Data, 271.7K Total + Previous Release: + Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total + Debug Version: 191.7K Code, 79.6K Data, 271.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed an issue with the recently added local printf implementation, +concerning width/precision specifiers that could cause incorrect output. +Lv Zheng. ACPICA BZ 1094. + +Disassembler: Added support to detect buffers that contain UUIDs and +disassemble them to an invocation of the ToUUID operator. Also emit +commented descriptions of known ACPI-related UUIDs. + +AcpiHelp: Added support to display known ACPI-related UUIDs. New option, +-u. Adds three new files. + +iASL: Update table compiler and disassembler for DMAR table changes that +were introduced in September 2013. With assistance by David Woodhouse. + +---------------------------------------- +27 June 2014. Summary of changes for version 20140627: + +1) ACPICA kernel-resident subsystem: + +Formatted Output: Implemented local versions of standard formatted output +utilities such as printf, etc. Over time, it has been discovered that +there are in fact many portability issues with printf, and the addition +of this feature will fix/prevent these issues once and for all. Some +known issues are summarized below: + +1) Output of 64-bit values is not portable. For example, UINT64 is %ull +for the Linux kernel and is %uI64 for some MSVC versions. +2) Invoking printf consistently in a manner that is portable across both +32-bit and 64-bit platforms is difficult at best in many situations. +3) The output format for pointers varies from system to system (leading +zeros especially), and leads to inconsistent output from ACPICA across +platforms. +4) Certain platform-specific printf formats may conflict with ACPICA use. +5) If there is no local C library available, ACPICA now has local support +for printf. + +-- To address these printf issues in a complete manner, ACPICA now +directly implements a small subset of printf format specifiers, only +those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. + +Implemented support for ACPICA generation within the EFI environment. +Initially, the AcpiDump utility is supported in the UEFI shell +environment. Lv Zheng. + +Added a new external interface, AcpiLogError, to improve ACPICA +portability. This allows the host to redirect error messages from the +ACPICA utilities. Lv Zheng. + +Added and deployed new OSL file I/O interfaces to improve ACPICA +portability: + AcpiOsOpenFile + AcpiOsCloseFile + AcpiOsReadFile + AcpiOsWriteFile + AcpiOsGetFileOffset + AcpiOsSetFileOffset +There are C library implementations of these functions in the new file +service_layers/oslibcfs.c -- however, the functions can be implemented by +the local host in any way necessary. Lv Zheng. + +Implemented a mechanism to disable/enable ACPI table checksum validation +at runtime. This can be useful when loading tables very early during OS +initialization when it may not be possible to map the entire table in +order to compute the checksum. Lv Zheng. + +Fixed a buffer allocation issue for the Generic Serial Bus support. +Originally, a fixed buffer length was used. This change allows for +variable-length buffers based upon the protocol indicated by the field +access attributes. Reported by Lan Tianyu. Lv Zheng. + +Fixed a problem where an object detached from a namespace node was not +properly terminated/cleared and could cause a circular list problem if +reattached. ACPICA BZ 1063. David Box. + +Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. + +Fixed a possible memory leak in an error return path within the function +AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total + Debug Version: 191.7K Code, 79.6K Data, 271.3K Total + Previous Release: + Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total + Debug Version: 189.5K Code, 79.7K Data, 269.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Add dump of ASCII equivalent text within a comment at the +end of each line of the output for the Buffer() ASL operator. + +AcpiDump: Miscellaneous changes: + Fixed repetitive table dump in -n mode. + For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if +the ACPI 2.0 GUID fails. + +iASL: Fixed a problem where the compiler could fault if incorrectly given +an acpidump output file as input. ACPICA BZ 1088. David Box. + +AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if +they are invoked without any arguments. + +Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ +1086. Colin Ian King. + +Disassembler: Cleaned up a block of code that extracts a parent Op +object. Added a comment that explains that the parent is guaranteed to be +valid in this case. ACPICA BZ 1069. + + +---------------------------------------- +24 April 2014. Summary of changes for version 20140424: + +1) ACPICA kernel-resident subsystem: + +Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. +Some of these tables are known to contain a trailing NULL entry. Lv +Zheng. + +Removed an extraneous error message for the case where there are a large +number of system GPEs (> 124). This was the "32-bit FADT register is too +long to convert to GAS struct" message, which is irrelevant for GPEs +since the GPEx_BLK_LEN fields of the FADT are always used instead of the +(limited capacity) GAS bit length. Also, several changes to ensure proper +support for GPE numbers > 255, where some "GPE number" fields were 8-bits +internally. + +Implemented and deployed additional configuration support for the public +ACPICA external interfaces. Entire classes of interfaces can now be +easily modified or configured out, replaced by stubbed inline functions +by default. Lv Zheng. + +Moved all public ACPICA runtime configuration globals to the public +ACPICA external interface file for convenience. Also, removed some +obsolete/unused globals. See the file acpixf.h. Lv Zheng. + +Documentation: Added a new section to the ACPICA reference describing the +maximum number of GPEs that can be supported by the FADT-defined GPEs in +block zero and one. About 1200 total. See section 4.4.1 of the ACPICA +reference. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total + Debug Version: 189.5K Code, 79.7K Data, 269.2K Total + Previous Release: + Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total + Debug Version: 189.7K Code, 79.5K Data, 269.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL and disassembler: Add full support for the LPIT table (Low Power +Idle Table). Includes support in the disassembler, data table compiler, +and template generator. + +AcpiDump utility: +1) Add option to force the use of the RSDT (over the XSDT). +2) Improve validation of the RSDP signature (use 8 chars instead of 4). + +iASL: Add check for predefined packages that are too large. For +predefined names that contain subpackages, check if each subpackage is +too large. (Check for too small already exists.) + +Debugger: Updated the GPE command (which simulates a GPE by executing the +GPE code paths in ACPICA). The GPE device is now optional, and defaults +to the GPE 0/1 FADT-defined blocks. + +Unix application OSL: Update line-editing support. Add additional error +checking and take care not to reset terminal attributes on exit if they +were never set. This should help guarantee that the terminal is always +left in the previous state on program exit. + + +---------------------------------------- +25 March 2014. Summary of changes for version 20140325: + +1) ACPICA kernel-resident subsystem: + +Updated the auto-serialize feature for control methods. This feature +automatically serializes all methods that create named objects in order +to prevent runtime errors. The update adds support to ignore the +currently executing AML SyncLevel when invoking such a method, in order +to prevent disruption of any existing SyncLevel priorities that may exist +in the AML code. Although the use of SyncLevels is relatively rare, this +change fixes a regression where an AE_AML_MUTEX_ORDER exception can +appear on some machines starting with the 20140214 release. + +Added a new external interface to allow the host to install ACPI tables +very early, before the namespace is even created. AcpiInstallTable gives +the host additional flexibility for ACPI table management. Tables can be +installed directly by the host as if they had originally appeared in the +XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables +(anything except the DSDT and FACS). Adds a new file, tbdata.c, along +with additional internal restructuring and cleanup. See the ACPICA +Reference for interface details. Lv Zheng. + +Added validation of the checksum for all incoming dynamically loaded +tables (via external interfaces or via AML Load/LoadTable operators). Lv +Zheng. + +Updated the use of the AcpiOsWaitEventsComplete interface during Notify +and GPE handler removal. Restructured calls to eliminate possible race +conditions. Lv Zheng. + +Added a warning for the use/execution of the ASL/AML Unload (table) +operator. This will help detect and identify machines that use this +operator if and when it is ever used. This operator has never been seen +in the field and the usage model and possible side-effects of the drastic +runtime action of a full table removal are unknown. + +Reverted the use of #pragma push/pop which was introduced in the 20140214 +release. It appears that push and pop are not implemented by enough +compilers to make the use of this feature feasible for ACPICA at this +time. However, these operators may be deployed in a future ACPICA +release. + +Added the missing EXPORT_SYMBOL macros for the install and remove SCI +handler interfaces. + +Source code generation: +1) Disabled the use of the "strchr" macro for the gcc-specific +generation. For some versions of gcc, this macro can periodically expose +a compiler bug which in turn causes compile-time error(s). +2) Added support for PPC64 compilation. Colin Ian King. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total + Debug Version: 189.7K Code, 79.5K Data, 269.2K Total + Previous Release: + Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total + Debug Version: 188.6K Code, 79.0K Data, 267.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Added several new features to improve the readability of +the resulting ASL code. Extra information is emitted within comment +fields in the ASL code: +1) Known _HID/_CID values are decoded to descriptive text. +2) Standard values for the Notify() operator are decoded to descriptive +text. +3) Target operands are expanded to full pathnames (in a comment) when +possible. + +Disassembler: Miscellaneous updates for extern() handling: +1) Abort compiler if file specified by -fe option does not exist. +2) Silence unnecessary warnings about argument count mismatches. +3) Update warning messages concerning unresolved method externals. +4) Emit "UnknownObj" keyword for externals whose type cannot be +determined. + +AcpiHelp utility: +1) Added the -a option to display both the ASL syntax and the AML +encoding for an input ASL operator. This effectively displays all known +information about an ASL operator with one AcpiHelp invocation. +2) Added substring match support (similar to a wildcard) for the -i +(_HID/PNP IDs) option. + +iASL/Disassembler: Since this tool does not yet support execution on big- +endian machines, added detection of endianness and an error message if +execution is attempted on big-endian. Support for big-endian within iASL +is a feature that is on the ACPICA to-be-done list. + +AcpiBin utility: +1) Remove option to extract binary files from an acpidump; this function +is made obsolete by the AcpiXtract utility. +2) General cleanup of open files and allocated buffers. + + +---------------------------------------- +14 February 2014. Summary of changes for version 20140214: + +1) ACPICA kernel-resident subsystem: + +Implemented a new mechanism to proactively prevent problems with ill- +behaved reentrant control methods that create named ACPI objects. This +behavior is illegal as per the ACPI specification, but is nonetheless +frequently seen in the field. Previously, this could lead to an +AE_ALREADY_EXISTS exception if the method was actually entered by more +than one thread. This new mechanism detects such methods at table load +time and marks them "serialized" to prevent reentrancy. A new global +option, AcpiGbl_AutoSerializeMethods, has been added to disable this +feature if desired. This mechanism and global option obsoletes and +supersedes the previous AcpiGbl_SerializeAllMethods option. + +Added the "Windows 2013" string to the _OSI support. ACPICA will now +respond TRUE to _OSI queries with this string. It is the stated policy of +ACPICA to add new strings to the _OSI support as soon as possible after +they are defined. See the full ACPICA _OSI policy which has been added to +the utilities/utosi.c file. + +Hardened/updated the _PRT return value auto-repair code: +1) Do not abort the repair on a single subpackage failure, continue to +check all subpackages. +2) Add check for the minimum subpackage length (4). +3) Properly handle extraneous NULL package elements. + +Added support to avoid the possibility of infinite loops when traversing +object linked lists. Never allow an infinite loop, even in the face of +corrupted object lists. + +ACPICA headers: Deployed the use of #pragma pack(push) and #pragma +pack(pop) directives to ensure that the ACPICA headers are independent of +compiler settings or other host headers. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total + Debug Version: 188.6K Code, 79.0K Data, 267.6K Total + Previous Release: + Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total + Debug Version: 187.5K Code, 78.3K Data, 265.8K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL/Table-compiler: Fixed a problem with support for the SPMI table. The +first reserved field was incorrectly forced to have a value of zero. This +change correctly forces the field to have a value of one. ACPICA BZ 1081. + +Debugger: Added missing support for the "Extra" and "Data" subobjects +when displaying object data. + +Debugger: Added support to display entire object linked lists when +displaying object data. + +iASL: Removed the obsolete -g option to obtain ACPI tables from the +Windows registry. This feature has been superseded by the acpidump +utility. + + +---------------------------------------- +14 January 2014. Summary of changes for version 20140114: + +1) ACPICA kernel-resident subsystem: + +Updated all ACPICA copyrights and signons to 2014. Added the 2014 +copyright to all module headers and signons, including the standard Linux +header. This affects virtually every file in the ACPICA core subsystem, +iASL compiler, all ACPICA utilities, and the test suites. + +Improved parameter validation for AcpiInstallGpeBlock. Added the +following checks: +1) The incoming device handle refers to type ACPI_TYPE_DEVICE. +2) There is not already a GPE block attached to the device. +Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a +device. + +Correctly support "references" in the ACPI_OBJECT. This change fixes the +support to allow references (namespace nodes) to be passed as arguments +to control methods via the evaluate object interface. This is probably +most useful for testing purposes, however. + +Improved support for 32/64 bit physical addresses in printf()-like +output. This change improves the support for physical addresses in printf +debug statements and other output on both 32-bit and 64-bit hosts. It +consistently outputs the appropriate number of bytes for each host. The +%p specifier is unsatisfactory since it does not emit uniform output on +all hosts/clib implementations (on some, leading zeros are not supported, +leading to difficult-to-read output). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total + Debug Version: 187.5K Code, 78.3K Data, 265.8K Total + Previous Release: + Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total + Debug Version: 185.6K Code, 77.3K Data, 262.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fix a possible fault when using the Connection() operator. Fixes a +problem if the parent Field definition for the Connection operator refers +to an operation region that does not exist. ACPICA BZ 1064. + +AcpiExec: Load of local test tables is now optional. The utility has the +capability to load some various tables to test features of ACPICA. +However, there are enough of them that the output of the utility became +confusing. With this change, only the required local tables are displayed +(RSDP, XSDT, etc.) along with the actual tables loaded via the command +line specification. This makes the default output simler and easier to +understand. The -el command line option restores the original behavior +for testing purposes. + +AcpiExec: Added support for overlapping operation regions. This change +expands the simulation of operation regions by supporting regions that +overlap within the given address space. Supports SystemMemory and +SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. + +AcpiExec: Added region handler support for PCI_Config and EC spaces. This +allows AcpiExec to simulate these address spaces, similar to the current +support for SystemMemory and SystemIO. + +Debugger: Added new command to read/write/compare all namespace objects. +The command "test objects" will exercise the entire namespace by writing +new values to each data object, and ensuring that the write was +successful. The original value is then restored and verified. + +Debugger: Added the "test predefined" command. This change makes this +test public and puts it under the new "test" command. The test executes +each and every predefined name within the current namespace. + + +---------------------------------------- +18 December 2013. Summary of changes for version 20131218: + +Global note: The ACPI 5.0A specification was released this month. There +are no changes needed for ACPICA since this release of ACPI is an +errata/clarification release. The specification is available at +acpi.info. + + +1) ACPICA kernel-resident subsystem: + +Added validation of the XSDT root table if it is present. Some older +platforms contain an XSDT that is ill-formed or otherwise invalid (such +as containing some or all entries that are NULL pointers). This change +adds a new function to validate the XSDT before actually using it. If the +XSDT is found to be invalid, ACPICA will now automatically fall back to +using the RSDT instead. Original implementation by Zhao Yakui. Ported to +ACPICA and enhanced by Lv Zheng and Bob Moore. + +Added a runtime option to ignore the XSDT and force the use of the RSDT. +This change adds a runtime option that will force ACPICA to use the RSDT +instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec +requires that an XSDT be used instead of the RSDT, the XSDT has been +found to be corrupt or ill-formed on some machines. Lv Zheng. + +Added a runtime option to favor 32-bit FADT register addresses over the +64-bit addresses. This change adds an option to favor 32-bit FADT +addresses when there is a conflict between the 32-bit and 64-bit versions +of the same register. The default behavior is to use the 64-bit version +in accordance with the ACPI specification. This can now be overridden via +the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. + +During the change above, the internal "Convert FADT" and "Verify FADT" +functions have been merged to simplify the code, making it easier to +understand and maintain. ACPICA BZ 933. + +Improve exception reporting and handling for GPE block installation. +Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the +status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. + +Added helper macros to extract bus/segment numbers from the HEST table. +This change adds two macros to extract the encoded bus and segment +numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. +Betty Dall <betty.dall@hp.com> + +Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used +by ACPICA. It is not a public macro, so it should have no effect on +existing OSV code. Lv Zheng. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total + Debug Version: 185.6K Code, 77.3K Data, 262.9K Total + Previous Release: + Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total + Debug Version: 185.1K Code, 77.2K Data, 262.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Improved pathname support for emitted External() +statements. This change adds full pathname support for external names +that have been resolved internally by the inclusion of additional ACPI +tables (via the iASL -e option). Without this change, the disassembler +can emit multiple externals for the same object, or it become confused +when the Scope() operator is used on an external object. Overall, greatly +improves the ability to actually recompile the emitted ASL code when +objects a referenced across multiple ACPI tables. Reported by Michael +Tsirkin (mst@redhat.com). + +Tests/ASLTS: Updated functional control suite to execute with no errors. +David Box. Fixed several errors related to the testing of the interpreter +slack mode. Lv Zheng. + +iASL: Added support to detect names that are declared within a control +method, but are unused (these are temporary names that are only valid +during the time the method is executing). A remark is issued for these +cases. ACPICA BZ 1022. + +iASL: Added full support for the DBG2 table. Adds full disassembler, +table compiler, and template generator support for the DBG2 table (Debug +Port 2 table). + +iASL: Added full support for the PCCT table, update the table definition. +Updates the PCCT table definition in the actbl3.h header and adds table +compiler and template generator support. + +iASL: Added an option to emit only error messages (no warnings/remarks). +The -ve option will enable only error messages, warnings and remarks are +suppressed. This can simplify debugging when only the errors are +important, such as when an ACPI table is disassembled and there are many +warnings and remarks -- but only the actual errors are of real interest. + +Example ACPICA code (source/tools/examples): Updated the example code so +that it builds to an actual working program, not just example code. Added +ACPI tables and execution of an example control method in the DSDT. Added +makefile support for Unix generation. + + +---------------------------------------- +15 November 2013. Summary of changes for version 20131115: + +This release is available at https://acpica.org/downloads + + +1) ACPICA kernel-resident subsystem: + +Resource Manager: Fixed loop termination for the "get AML length" +function. The loop previously had an error termination on a NULL resource +pointer, which can never happen since the loop simply increments a valid +resource pointer. This fix changes the loop to terminate with an error on +an invalid end-of-buffer condition. The problem can be seen as an +infinite loop by callers to AcpiSetCurrentResources with an invalid or +corrupted resource descriptor, or a resource descriptor that is missing +an END_TAG descriptor. Reported by Dan Carpenter +<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. + +Table unload and ACPICA termination: Delete all attached data objects +during namespace node deletion. This fix updates namespace node deletion +to delete the entire list of attached objects (attached via +AcpiAttachObject) instead of just one of the attached items. ACPICA BZ +1024. Tomasz Nowicki (tomasz.nowicki@linaro.org). + +ACPICA termination: Added support to delete all objects attached to the +root namespace node. This fix deletes any and all objects that have been +attached to the root node via AcpiAttachData. Previously, none of these +objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. + +Debug output: Do not emit the function nesting level for the in-kernel +build. The nesting level is really only useful during a single-thread +execution. Therefore, only enable this output for the AcpiExec utility. +Also, only emit the thread ID when executing under AcpiExec (Context +switches are still always detected and a message is emitted). ACPICA BZ +972. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total + Debug Version: 185.1K Code, 77.2K Data, 262.3K Total + Previous Release: + Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total + Debug Version: 185.2K Code, 77.2K Data, 262.4K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the +correct portable POSIX header for terminal control functions. + +Disassembler: Fixed control method invocation issues related to the use +of the CondRefOf() operator. The problem is seen in the disassembly where +control method invocations may not be disassembled properly if the +control method name has been used previously as an argument to CondRefOf. +The solution is to not attempt to emit an external declaration for the +CondRefOf target (it is not necessary in the first place). This prevents +disassembler object type confusion. ACPICA BZ 988. + +Unix Makefiles: Added an option to disable compiler optimizations and the +_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA +with optimizations (reportedly, gcc 4.4 for example). This change adds a +command line option for make (NOOPT) that disables all compiler +optimizations and the _FORTIFY_SOURCE compiler flag. The default +optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ +1034. Lv Zheng, Bob Moore. + +Tests/ASLTS: Added options to specify individual test cases and modes. +This allows testers running aslts.sh to optionally specify individual +test modes and test cases. Also added an option to disable the forced +generation of the ACPICA tools from source if desired. Lv Zheng. + +---------------------------------------- +27 September 2013. Summary of changes for version 20130927: + +This release is available at https://acpica.org/downloads + + +1) ACPICA kernel-resident subsystem: + +Fixed a problem with store operations to reference objects. This change +fixes a problem where a Store operation to an ArgX object that contained +a +reference to a field object did not complete the automatic dereference +and +then write to the actual field object. Instead, the object type of the +field object was inadvertently changed to match the type of the source +operand. The new behavior will actually write to the field object (buffer +field or field unit), thus matching the correct ACPI-defined behavior. + +Implemented support to allow the host to redefine individual OSL +prototypes. This change enables the host to redefine OSL prototypes found +in the acpiosxf.h file. This allows the host to implement OSL interfaces +with a macro or inlined function. Further, it allows the host to add any +additional required modifiers such as __iomem, __init, __exit, etc., as +necessary on a per-interface basis. Enables maximum flexibility for the +OSL interfaces. Lv Zheng. + +Hardcoded the access width for the FADT-defined reset register. The ACPI +specification requires the reset register width to be 8 bits. ACPICA now +hardcodes the width to 8 and ignores the FADT width value. This provides +compatibility with other ACPI implementations that have allowed BIOS code +with bad register width values to go unnoticed. Matthew Garett, Bob +Moore, +Lv Zheng. + +Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is +used +in the OSL header (acpiosxf). The change modifies the position of this +macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid +build issues if the OSL defines the implementation of the interface to be +an inline stub function. Lv Zheng. + +Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA +initialization interfaces. This change adds a new macro for the main init +and terminate external interfaces in order to support hosts that require +additional or different processing for these functions. Changed from +ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv +Zheng, Bob Moore. + +Cleaned up the memory allocation macros for configurability. In the +common +case, the ACPI_ALLOCATE and related macros now resolve directly to their +respective AcpiOs* OSL interfaces. Two options: +1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by +default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. +2) For AcpiExec (and for debugging), the macros can optionally be +resolved +to the local ACPICA interfaces that track each allocation (local tracking +is used to immediately detect memory leaks). +Lv Zheng. + +Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel +to predefine this macro to either TRUE or FALSE during the system build. + +Replaced __FUNCTION_ with __func__ in the gcc-specific header. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total + Debug Version: 185.2K Code, 77.2K Data, 262.4K Total + Previous Release: + Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total + Debug Version: 184.4K Code, 76.8K Data, 261.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented wildcard support for the -e option. This simplifies use +when there are many SSDTs that must be included to resolve external +method +declarations. ACPICA BZ 1041. Example: + iasl -e ssdt*.dat -d dsdt.dat + +AcpiExec: Add history/line-editing for Unix/Linux systems. This change +adds a portable module that implements full history and limited line +editing for Unix and Linux systems. It does not use readline() due to +portability issues. Instead it uses the POSIX termio interface to put the +terminal in raw input mode so that the various special keys can be +trapped +(such as up/down-arrow for history support and left/right-arrow for line +editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. + +AcpiXtract: Add support to handle (ignore) "empty" lines containing only +one or more spaces. This provides compatible with early or different +versions of the AcpiDump utility. ACPICA BZ 1044. + +AcpiDump: Do not ignore tables that contain only an ACPI table header. +Apparently, some BIOSs create SSDTs that contain an ACPI table header but +no other data. This change adds support to dump these tables. Any tables +shorter than the length of an ACPI table header remain in error (an error +message is emitted). Reported by Yi Li. + +Debugger: Echo actual command along with the "unknown command" message. + +---------------------------------------- +23 August 2013. Summary of changes for version 20130823: + +1) ACPICA kernel-resident subsystem: + +Implemented support for host-installed System Control Interrupt (SCI) +handlers. Certain ACPI functionality requires the host to handle raw +SCIs. For example, the "SCI Doorbell" that is defined for memory power +state support requires the host device driver to handle SCIs to examine +if the doorbell has been activated. Multiple SCI handlers can be +installed to allow for future expansion. New external interfaces are +AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for +details. Lv Zheng, Bob Moore. ACPICA BZ 1032. + +Operation region support: Never locally free the handler "context" +pointer. This change removes some dangerous code that attempts to free +the handler context pointer in some (rare) circumstances. The owner of +the handler owns this pointer and the ACPICA code should never touch it. +Although not seen to be an issue in any kernel, it did show up as a +problem (fault) under AcpiExec. Also, set the internal storage field for +the context pointer to zero when the region is deactivated, simply for +sanity. David Box. ACPICA BZ 1039. + +AcpiRead: On error, do not modify the return value target location. If an +error happens in the middle of a split 32/32 64-bit I/O operation, do not +modify the target of the return value pointer. Makes the code consistent +with the rest of ACPICA. Bjorn Helgaas. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total + Debug Version: 184.4K Code, 76.8K Data, 261.2K Total + Previous Release: + Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total + Debug Version: 185.4K Code, 77.1K Data, 262.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiDump: Implemented several new features and fixed some problems: +1) Added support to dump the RSDP, RSDT, and XSDT tables. +2) Added support for multiple table instances (SSDT, UEFI). +3) Added option to dump "customized" (overridden) tables (-c). +4) Fixed a problem where some table filenames were improperly +constructed. +5) Improved some error messages, removed some unnecessary messages. + +iASL: Implemented additional support for disassembly of ACPI tables that +contain invocations of external control methods. The -fe<file> option +allows the import of a file that specifies the external methods along +with the required number of arguments for each -- allowing for the +correct disassembly of the table. This is a workaround for a limitation +of AML code where the disassembler often cannot determine the number of +arguments required for an external control method and generates incorrect +ASL code. See the iASL reference for details. ACPICA BZ 1030. + +Debugger: Implemented a new command (paths) that displays the full +pathnames (namepaths) and object types of all objects in the namespace. +This is an alternative to the namespace command. + +Debugger: Implemented a new command (sci) that invokes the SCI dispatch +mechanism and any installed handlers. + +iASL: Fixed a possible segfault for "too many parent prefixes" condition. +This can occur if there are too many parent prefixes in a namepath (for +example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. + +Application OSLs: Set the return value for the PCI read functions. These +functions simply return AE_OK, but should set the return value to zero +also. This change implements this. ACPICA BZ 1038. + +Debugger: Prevent possible command line buffer overflow. Increase the +size of a couple of the debugger line buffers, and ensure that overflow +cannot happen. ACPICA BZ 1037. + +iASL: Changed to abort immediately on serious errors during the parsing +phase. Due to the nature of ASL, there is no point in attempting to +compile these types of errors, and they typically end up causing a +cascade of hundreds of errors which obscure the original problem. + +---------------------------------------- +25 July 2013. Summary of changes for version 20130725: + +1) ACPICA kernel-resident subsystem: + +Fixed a problem with the DerefOf operator where references to FieldUnits +and BufferFields incorrectly returned the parent object, not the actual +value of the object. After this change, a dereference of a FieldUnit +reference results in a read operation on the field to get the value, and +likewise, the appropriate BufferField value is extracted from the target +buffer. + +Fixed a problem where the _WAK method could cause a fault under these +circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK +method returned no value. The problem is rarely seen because most kernels +run ACPICA in slack mode. + +For the DerefOf operator, a fatal error now results if an attempt is made +to dereference a reference (created by the Index operator) to a NULL +package element. Provides compatibility with other ACPI implementations, +and this behavior will be added to a future version of the ACPI +specification. + +The ACPI Power Management Timer (defined in the FADT) is now optional. +This provides compatibility with other ACPI implementations and will +appear in the next version of the ACPI specification. If there is no PM +Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of +zero in the FADT indicates no PM timer. + +Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This +allows the host to globally enable/disable all vendor strings, all +feature strings, or both. Intended to be primarily used for debugging +purposes only. Lv Zheng. + +Expose the collected _OSI data to the host via a global variable. This +data tracks the highest level vendor ID that has been invoked by the BIOS +so that the host (and potentially ACPICA itself) can change behaviors +based upon the age of the BIOS. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total + Debug Version: 184.4K Code, 76.8K Data, 261.2K Total + Previous Release: + Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total + Debug Version: 184.1K Code, 76.7K Data, 260.8K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Created the following enhancements for the -so option (create +offset table): +1)Add offsets for the last nameseg in each namepath for every supported +object type +2)Add support for Processor, Device, Thermal Zone, and Scope objects +3)Add the actual AML opcode for the parent object of every supported +object type +4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects + +Disassembler: Emit all unresolved external symbols in a single block. +These are external references to control methods that could not be +resolved, and thus, the disassembler had to make a guess at the number of +arguments to parse. + +iASL: The argument to the -T option (create table template) is now +optional. If not specified, the default table is a DSDT, typically the +most common case. + +---------------------------------------- +26 June 2013. Summary of changes for version 20130626: + +1) ACPICA kernel-resident subsystem: + +Fixed an issue with runtime repair of the _CST object. Null or invalid +elements were not always removed properly. Lv Zheng. + +Removed an arbitrary restriction of 256 GPEs per GPE block (such as the +FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, +the maximum number of GPEs is 1016. Use of multiple GPE block devices +makes the system-wide number of GPEs essentially unlimited. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total + Debug Version: 184.1K Code, 76.7K Data, 260.8K Total + Previous Release: + Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total + Debug Version: 184.1K Code, 76.8K Data, 260.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +Portable AcpiDump: Implemented full support for the Linux and FreeBSD +hosts. Now supports Linux, FreeBSD, and Windows. + +Disassembler: Added some missing types for the HEST and EINJ tables: "Set +Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". + +iASL/Preprocessor: Implemented full support for nested +#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. + +Disassembler: Expanded maximum output string length to 64K. Was 256 bytes +max. The original purpose of this constraint was to limit the amount of +debug output. However, the string function in question (UtPrintString) is +now used for the disassembler also, where 256 bytes is insufficient. +Reported by RehabMan@GitHub. + +iASL/DataTables: Fixed some problems and issues with compilation of DMAR +tables. ACPICA BZ 999. Lv Zheng. + +iASL: Fixed a couple of error exit issues that could result in a "Could +not delete <file>" message during ASL compilation. + +AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though +the actual signatures for these tables are "FACP" and "APIC", +respectively. + +AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI +tables are allowed to have multiple instances. + +---------------------------------------- +17 May 2013. Summary of changes for version 20130517: + +1) ACPICA kernel-resident subsystem: + +Fixed a regression introduced in version 20130328 for _INI methods. This +change fixes a problem introduced in 20130328 where _INI methods are no +longer executed properly because of a memory block that was not +initialized correctly. ACPICA BZ 1016. Tomasz Nowicki +<tomasz.nowicki@linaro.org>. + +Fixed a possible problem with the new extended sleep registers in the +ACPI +5.0 FADT. Do not use these registers (even if populated) unless the HW- +reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ +1020. Lv Zheng. + +Implemented return value repair code for _CST predefined objects: Sort +the +list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. + +Implemented a debug-only option to disable loading of SSDTs from the +RSDT/XSDT during ACPICA initialization. This can be useful for debugging +ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in +acglobal.h - ACPICA BZ 1005. Lv Zheng. + +Fixed some issues in the ACPICA initialization and termination code: +Tomasz Nowicki <tomasz.nowicki@linaro.org> +1) Clear events initialized flag upon event component termination. ACPICA +BZ 1013. +2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. +3) Delete global lock pending lock during termination. ACPICA BZ 1012. +4) Clear debug buffer global on termination to prevent possible multiple +delete. ACPICA BZ 1010. + +Standardized all switch() blocks across the entire source base. After +many +years, different formatting for switch() had crept in. This change makes +the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. + +Split some files to enhance ACPICA modularity and configurability: +1) Split buffer dump routines into utilities/utbuffer.c +2) Split internal error message routines into utilities/uterror.c +3) Split table print utilities into tables/tbprint.c +4) Split iASL command-line option processing into asloptions.c + +Makefile enhancements: +1) Support for all new files above. +2) Abort make on errors from any subcomponent. Chao Guan. +3) Add build support for Apple Mac OS X. Liang Qi. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total + Debug Version: 184.1K Code, 76.8K Data, 260.9K Total + Previous Release: + Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total + Debug Version: 183.5K Code, 76.6K Data, 260.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +New utility: Implemented an easily portable version of the acpidump +utility to extract ACPI tables from the system (or a file) in an ASCII +hex +dump format. The top-level code implements the various command line +options, file I/O, and table dump routines. To port to a new host, only +three functions need to be implemented to get tables -- since this +functionality is OS-dependent. See the tools/acpidump/apmain.c module and +the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: +1) The Windows version obtains the ACPI tables from the Registry. +2) The Linux version is under development. +3) Other hosts - If an OS-dependent module is submitted, it will be +distributed with ACPICA. + +iASL: Fixed a regression for -D preprocessor option (define symbol). A +restructuring/change to the initialization sequence caused this option to +no longer work properly. + +iASL: Implemented a mechanism to disable specific warnings and remarks. +Adds a new command line option, "-vw <messageid> as well as "#pragma +disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. + +iASL: Fix for too-strict package object validation. The package object +validation for return values from the predefined names is a bit too +strict, it does not allow names references within the package (which will +be resolved at runtime.) These types of references cannot be validated at +compile time. This change ignores named references within package objects +for names that return or define static packages. + +Debugger: Fixed the 80-character command line limitation for the History +command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. + +iASL: Added control method and package support for the -so option +(generates AML offset table for BIOS support.) + +iASL: issue a remark if a non-serialized method creates named objects. If +a thread blocks within the method for any reason, and another thread +enters the method, the method will fail because an attempt will be made +to +create the same (named) object twice. In this case, issue a remark that +the method should be marked serialized. NOTE: may become a warning later. +ACPICA BZ 909. + +---------------------------------------- +18 April 2013. Summary of changes for version 20130418: + +1) ACPICA kernel-resident subsystem: + +Fixed a possible buffer overrun during some rare but specific field unit +read operations. This overrun can only happen if the DSDT version is 1 -- +meaning that all AML integers are 32 bits -- and the field length is +between 33 and 55 bits long. During the read, an internal buffer object +is +created for the field unit because the field is larger than an integer +(32 +bits). However, in this case, the buffer will be incorrectly written +beyond the end because the buffer length is less than the internal +minimum +of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes +long, but a full 8 bytes will be written. + +Updated the Embedded Controller "orphan" _REG method support. This refers +to _REG methods under the EC device that have no corresponding operation +region. This is allowed by the ACPI specification. This update removes a +dependency on the existence an ECDT table. It will execute an orphan _REG +method as long as the operation region handler for the EC is installed at +the EC device node and not the namespace root. Rui Zhang (original +update), Bob Moore (update/integrate). + +Implemented run-time argument typechecking for all predefined ACPI names +(_STA, _BIF, etc.) This change performs object typechecking on all +incoming arguments for all predefined names executed via +AcpiEvaluateObject. This ensures that ACPI-related device drivers are +passing correct object types as well as the correct number of arguments +(therefore identifying any issues immediately). Also, the ASL/namespace +definition of the predefined name is checked against the ACPI +specification for the proper argument count. Adds one new file, +nsarguments.c + +Changed an exception code for the ASL UnLoad() operator. Changed the +exception code for the case where the input DdbHandle is invalid, from +AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. + +Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the +global makefile. The use of this flag causes compiler errors on earlier +versions of GCC, so it has been removed for compatibility. + +Miscellaneous cleanup: +1) Removed some unused/obsolete macros +2) Fixed a possible memory leak in the _OSI support +3) Removed an unused variable in the predefined name support +4) Windows OSL: remove obsolete reference to a memory list field + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total + Debug Version: 183.0K Code, 76.0K Data, 259.0K Total + Previous Release: + Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total + Debug Version: 183.5K Code, 76.6K Data, 260.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Added installation of a handler for the SystemCMOS address +space. This prevents control method abort if a method accesses this +space. + +AcpiExec: Added support for multiple EC devices, and now install EC +operation region handler(s) at the actual EC device instead of the +namespace root. This reflects the typical behavior of host operating +systems. + +AcpiExec: Updated to ensure that all operation region handlers are +installed before the _REG methods are executed. This prevents a _REG +method from aborting if it accesses an address space has no handler. +AcpiExec installs a handler for every possible address space. + +Debugger: Enhanced the "handlers" command to display non-root handlers. +This change enhances the handlers command to display handlers associated +with individual devices throughout the namespace, in addition to the +currently supported display of handlers associated with the root +namespace +node. + +ASL Test Suite: Several test suite errors have been identified and +resolved, reducing the total error count during execution. Chao Guan. + +---------------------------------------- +28 March 2013. Summary of changes for version 20130328: + +1) ACPICA kernel-resident subsystem: + +Fixed several possible race conditions with the internal object reference +counting mechanism. Some of the external ACPICA interfaces update object +reference counts without holding the interpreter or namespace lock. This +change adds a spinlock to protect reference count updates on the internal +ACPICA objects. Reported by and with assistance from Andriy Gapon +(avg@FreeBSD.org). + +FADT support: Removed an extraneous warning for very large GPE register +sets. This change removes a size mismatch warning if the legacy length +field for a GPE register set is larger than the 64-bit GAS structure can +accommodate. GPE register sets can be larger than the 255-bit width +limitation of the GAS structure. Linn Crosetto (linn@hp.com). + +_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error +return from this interface. Handles a possible timeout case if +ACPI_WAIT_FOREVER is modified by the host to be a value less than +"forever". Jung-uk Kim. + +Predefined name support: Add allowed/required argument type information +to +the master predefined info table. This change adds the infrastructure to +enable typechecking on incoming arguments for all predefined +methods/objects. It does not actually contain the code that will fully +utilize this information, this is still under development. Also condenses +some duplicate code for the predefined names into a new module, +utilities/utpredef.c + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Previous Release: + Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total + Debug Version: 182.9K Code, 75.6K Data, 258.5K Total + Current Release: + Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total + Debug Version: 183.0K Code, 76.0K Data, 259.0K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented a new option to simplify the development of ACPI- +related +BIOS code. Adds support for a new "offset table" output file. The -so +option will create a C table containing the AML table offsets of various +named objects in the namespace so that BIOS code can modify them easily +at +boot time. This can simplify BIOS runtime code by eliminating expensive +searches for "magic values", enhancing boot times and adding greater +reliability. With assistance from Lee Hamel. + +iASL: Allow additional predefined names to return zero-length packages. +Now, all predefined names that are defined by the ACPI specification to +return a "variable-length package of packages" are allowed to return a +zero length top-level package. This allows the BIOS to tell the host that +the requested feature is not supported, and supports existing BIOS/ASL +code and practices. + +iASL: Changed the "result not used" warning to an error. This is the case +where an ASL operator is effectively a NOOP because the result of the +operation is not stored anywhere. For example: + Add (4, Local0) +There is no target (missing 3rd argument), nor is the function return +value used. This is potentially a very serious problem -- since the code +was probably intended to do something, but for whatever reason, the value +was not stored. Therefore, this issue has been upgraded from a warning to +an error. + +AcpiHelp: Added allowable/required argument types to the predefined names +info display. This feature utilizes the recent update to the predefined +names table (above). + +---------------------------------------- +14 February 2013. Summary of changes for version 20130214: + +1) ACPICA Kernel-resident Subsystem: + +Fixed a possible regression on some hosts: Reinstated the safe return +macros (return_ACPI_STATUS, etc.) that ensure that the argument is +evaluated only once. Although these macros are not needed for the ACPICA +code itself, they are often used by ACPI-related host device drivers +where +the safe feature may be necessary. + +Fixed several issues related to the ACPI 5.0 reduced hardware support +(SOC): Now ensure that if the platform declares itself as hardware- +reduced +via the FADT, the following functions become NOOPs (and always return +AE_OK) because ACPI is always enabled by definition on these machines: + AcpiEnable + AcpiDisable + AcpiHwGetMode + AcpiHwSetMode + +Dynamic Object Repair: Implemented additional runtime repairs for +predefined name return values. Both of these repairs can simplify code in +the related device drivers that invoke these methods: +1) For the _STR and _MLS names, automatically repair/convert an ASCII +string to a Unicode buffer. +2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with +a +lone end tag descriptor in the following cases: A Return(0) was executed, +a null buffer was returned, or no object at all was returned (non-slack +mode only). Adds a new file, nsconvert.c +ACPICA BZ 998. Bob Moore, Lv Zheng. + +Resource Manager: Added additional code to prevent possible infinite +loops +while traversing corrupted or ill-formed resource template buffers. Check +for zero-length resource descriptors in all code that loops through +resource templates (the length field is used to index through the +template). This change also hardens the external AcpiWalkResources and +AcpiWalkResourceBuffer interfaces. + +Local Cache Manager: Enhanced the main data structure to eliminate an +unnecessary mechanism to access the next object in the list. Actually +provides a small performance enhancement for hosts that use the local +ACPICA cache manager. Jung-uk Kim. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Previous Release: + Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total + Debug Version: 182.3K Code, 75.0K Data, 257.3K Total + Current Release: + Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total + Debug Version: 182.9K Code, 75.6K Data, 258.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL/Disassembler: Fixed several issues with the definition of the ACPI +5.0 RASF table (RAS Feature Table). This change incorporates late changes +that were made to the ACPI 5.0 specification. + +iASL/Disassembler: Added full support for the following new ACPI tables: + 1) The MTMR table (MID Timer Table) + 2) The VRTC table (Virtual Real Time Clock Table). +Includes header file, disassembler, table compiler, and template support +for both tables. + +iASL: Implemented compile-time validation of package objects returned by +predefined names. This new feature validates static package objects +returned by the various predefined names defined to return packages. Both +object types and package lengths are validated, for both parent packages +and sub-packages, if any. The code is similar in structure and behavior +to +the runtime repair mechanism within the AML interpreter and uses the +existing predefined name information table. Adds a new file, aslprepkg.c. +ACPICA BZ 938. + +iASL: Implemented auto-detection of binary ACPI tables for disassembly. +This feature detects a binary file with a valid ACPI table header and +invokes the disassembler automatically. Eliminates the need to +specifically invoke the disassembler with the -d option. ACPICA BZ 862. + +iASL/Disassembler: Added several warnings for the case where there are +unresolved control methods during the disassembly. This can potentially +cause errors when the output file is compiled, because the disassembler +assumes zero method arguments in these cases (it cannot determine the +actual number of arguments without resolution/definition of the method). + +Debugger: Added support to display all resources with a single command. +Invocation of the resources command with no arguments will now display +all +resources within the current namespace. + +AcpiHelp: Added descriptive text for each ACPICA exception code displayed +via the -e option. + +---------------------------------------- +17 January 2013. Summary of changes for version 20130117: + +1) ACPICA Kernel-resident Subsystem: + +Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to +return either 1 or 2 integers. Although the ACPI spec defines the \_Sx +objects to return a package containing one integer, most BIOS code +returns +two integers and the previous code reflects that. However, we also need +to +support BIOS code that actually implements to the ACPI spec, and this +change reflects this. + +Fixed two issues with the ACPI_DEBUG_PRINT macros: +1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for +C compilers that require this support. +2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since +ACPI_DEBUG is already used by many of the various hosts. + +Updated all ACPICA copyrights and signons to 2013. Added the 2013 +copyright to all module headers and signons, including the standard Linux +header. This affects virtually every file in the ACPICA core subsystem, +iASL compiler, all ACPICA utilities, and the test suites. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Previous Release: + Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total + Debug Version: 182.2K Code, 74.9K Data, 257.1K Total + Current Release: + Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total + Debug Version: 182.3K Code, 75.0K Data, 257.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and +prevent a possible fault on some hosts. Some C libraries modify the arg +pointer parameter to vfprintf making it difficult to call it twice in the +AcpiOsVprintf function. Use a local buffer to workaround this issue. This +does not affect the Windows OSL since the Win C library does not modify +the arg pointer. Chao Guan, Bob Moore. + +iASL: Fixed a possible infinite loop when the maximum error count is +reached. If an output file other than the .AML file is specified (such as +a listing file), and the maximum number of errors is reached, do not +attempt to flush data to the output file(s) as the compiler is aborting. +This can cause an infinite loop as the max error count code essentially +keeps calling itself. + +iASL/Disassembler: Added an option (-in) to ignore NOOP +opcodes/operators. +Implemented for both the compiler and the disassembler. Often, the NOOP +opcode is used as padding for packages that are changed dynamically by +the +BIOS. When disassembled and recompiled, these NOOPs will cause syntax +errors. This option causes the disassembler to ignore all NOOP opcodes +(0xA3), and it also causes the compiler to ignore all ASL source code +NOOP +statements as well. + +Debugger: Enhanced the Sleep command to execute all sleep states. This +change allows Sleep to be invoked with no arguments and causes the +debugger to execute all of the sleep states, 0-5, automatically. + +---------------------------------------- +20 December 2012. Summary of changes for version 20121220: + +1) ACPICA Kernel-resident Subsystem: + +Implemented a new interface, AcpiWalkResourceBuffer. This interface is an +alternate entry point for AcpiWalkResources and improves the usability of +the resource manager by accepting as input a buffer containing the output +of either a _CRS, _PRS, or _AEI method. The key functionality is that the +input buffer is not deleted by this interface so that it can be used by +the host later. See the ACPICA reference for details. + +Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table +(DSDT version < 2). The constant will be truncated and this warning +reflects that behavior. + +Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, +ExtendedInterrupt, and GpioInt descriptors. This change adds support to +both get and set the new wake bit in these descriptors, separately from +the existing share bit. Reported by Aaron Lu. + +Interpreter: Fix Store() when an implicit conversion is not possible. For +example, in the cases such as a store of a string to an existing package +object, implement the store as a CopyObject(). This is a small departure +from the ACPI specification which states that the control method should +be +aborted in this case. However, the ASLTS suite depends on this behavior. + +Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT +macros: check if debug output is currently enabled as soon as possible to +minimize performance impact if debug is in fact not enabled. + +Source code restructuring: Cleanup to improve modularity. The following +new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, +psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. +Associated makefiles and project files have been updated. + +Changed an exception code for LoadTable operator. For the case where one +of the input strings is too long, change the returned exception code from +AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. + +Fixed a possible memory leak in dispatcher error path. On error, delete +the mutex object created during method mutex creation. Reported by +tim.gardner@canonical.com. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Previous Release: + Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total + Debug Version: 175.5K Code, 74.5K Data, 250.0K Total + Current Release: + Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total + Debug Version: 182.2K Code, 74.9K Data, 257.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Disallow a method call as argument to the ObjectType ASL operator. +This change tracks an errata to the ACPI 5.0 document. The AML grammar +will not allow the interpreter to differentiate between a method and a +method invocation when these are used as an argument to the ObjectType +operator. The ACPI specification change is to disallow a method +invocation +(UserTerm) for the ObjectType operator. + +Finish support for the TPM2 and CSRT tables in the headers, table +compiler, and disassembler. + +Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout +always expires immediately if the semaphore is not available. The +original +code was using a relative-time timeout, but sem_timedwait requires the +use +of an absolute time. + +iASL: Added a remark if the Timer() operator is used within a 32-bit +table. This operator returns a 64-bit time value that will be truncated +within a 32-bit table. + +iASL Source code restructuring: Cleanup to improve modularity. The +following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, +aslmethod.c, and aslfileio.c. Associated makefiles and project files have +been updated. + + +---------------------------------------- +14 November 2012. Summary of changes for version 20121114: + +1) ACPICA Kernel-resident Subsystem: + +Implemented a performance enhancement for ACPI/AML Package objects. This +change greatly increases the performance of Package objects within the +interpreter. It changes the processing of reference counts for packages +by +optimizing for the most common case where the package sub-objects are +either Integers, Strings, or Buffers. Increases the overall performance +of +the ASLTS test suite by 1.5X (Increases the Slack Mode performance by +2X.) +Chao Guan. ACPICA BZ 943. + +Implemented and deployed common macros to extract flag bits from resource +descriptors. Improves readability and maintainability of the code. Fixes +a +problem with the UART serial bus descriptor for the number of data bits +flags (was incorrectly 2 bits, should be 3). + +Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation +of the macros and changed the SETx macros to the style of (destination, +source). Also added ACPI_CASTx companion macros. Lv Zheng. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Previous Release: + Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total + Debug Version: 175.5K Code, 74.5K Data, 250.0K Total + Current Release: + Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total + Debug Version: 175.5K Code, 74.5K Data, 250.0K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change +adds the ShareAndWake and ExclusiveAndWake flags which were added to the +Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. + +Disassembler: Fixed a problem with external declaration generation. Fixes +a problem where an incorrect pathname could be generated for an external +declaration if the original reference to the object includes leading +carats (^). ACPICA BZ 984. + +Debugger: Completed a major update for the Disassemble<method> command. +This command was out-of-date and did not properly disassemble control +methods that had any reasonable complexity. This fix brings the command +up +to the same level as the rest of the disassembler. Adds one new file, +dmdeferred.c, which is existing code that is now common with the main +disassembler and the debugger disassemble command. ACPICA MZ 978. + +iASL: Moved the parser entry prototype to avoid a duplicate declaration. +Newer versions of Bison emit this prototype, so moved the prototype out +of +the iASL header to where it is actually used in order to avoid a +duplicate +declaration. + +iASL/Tools: Standardized use of the stream I/O functions: + 1) Ensure check for I/O error after every fopen/fread/fwrite + 2) Ensure proper order of size/count arguments for fread/fwrite + 3) Use test of (Actual != Requested) after all fwrite, and most fread + 4) Standardize I/O error messages +Improves reliability and maintainability of the code. Bob Moore, Lv +Zheng. +ACPICA BZ 981. + +Disassembler: Prevent duplicate External() statements. During generation +of external statements, detect similar pathnames that are actually +duplicates such as these: + External (\ABCD) + External (ABCD) +Remove all leading '\' characters from pathnames during the external +statement generation so that duplicates will be detected and tossed. +ACPICA BZ 985. + +Tools: Replace low-level I/O with stream I/O functions. Replace +open/read/write/close with the stream I/O equivalents +fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob +Moore. + +AcpiBin: Fix for the dump-to-hex function. Now correctly output the table +name header so that AcpiXtract recognizes the output file/table. + +iASL: Remove obsolete -2 option flag. Originally intended to force the +compiler/disassembler into an ACPI 2.0 mode, this was never implemented +and the entire concept is now obsolete. + +---------------------------------------- +18 October 2012. Summary of changes for version 20121018: + + +1) ACPICA Kernel-resident Subsystem: + +Updated support for the ACPI 5.0 MPST table. Fixes some problems +introduced by late changes to the table as it was added to the ACPI 5.0 +specification. Includes header, disassembler, and data table compiler +support as well as a new version of the MPST template. + +AcpiGetObjectInfo: Enhanced the device object support to include the ACPI +5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID +methods: _HID, _CID, and _UID. + +Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed +ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent +name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) +names for their various drivers. Affects the AcpiGetObjectInfo external +interface, and other internal interfaces as well. + +Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. +This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME +on machines that support non-aligned transfers. Optimizes for this case +rather than using a strncpy. With assistance from Zheng Lv. + +Resource Manager: Small fix for buffer size calculation. Fixed a one byte +error in the output buffer calculation. Feng Tang. ACPICA BZ 849. + +Added a new debug print message for AML mutex objects that are force- +released. At control method termination, any currently acquired mutex +objects are force-released. Adds a new debug-only message for each one +that is released. + +Audited/updated all ACPICA return macros and the function debug depth +counter: 1) Ensure that all functions that use the various TRACE macros +also use the appropriate ACPICA return macros. 2) Ensure that all normal +return statements surround the return expression (value) with parens to +ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, +Zheng Lv, Bob Moore. ACPICA Bugzilla 972. + +Global source code changes/maintenance: All extra lines at the start and +end of each source file have been removed for consistency. Also, within +comments, all new sentences start with a single space instead of a double +space, again for consistency across the code base. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Previous Release: + Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total + Debug Version: 175.0K Code, 74.4K Data, 249.4K Total + Current Release: + Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total + Debug Version: 175.5K Code, 74.5K Data, 250.0K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Improved the algorithm used for memory leak/corruption +detection. Added some intelligence to the code that maintains the global +list of allocated memory. The list is now ordered by allocated memory +address, significantly improving performance. When running AcpiExec on +the ASLTS test suite, speed improvements of 3X to 5X are seen, depending +on the platform and/or the environment. Note, this performance +enhancement affects the AcpiExec utility only, not the kernel-resident +ACPICA code. + +Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For +the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix +incorrect table offset reported for invalid opcodes. Report the original +32-bit value for bad ACPI_NAMEs (as well as the repaired name.) + +Disassembler: Enhanced the -vt option to emit the binary table data in +hex format to assist with debugging. + +Fixed a potential filename buffer overflow in osunixdir.c. Increased the +size of file structure. Colin Ian King. + +---------------------------------------- +13 September 2012. Summary of changes for version 20120913: + + +1) ACPICA Kernel-resident Subsystem: + +ACPI 5.0: Added two new notify types for the Hardware Error Notification +Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) +and +MCE(6). + +Table Manager: Merged/removed duplicate code in the root table resize +functions. One function is external, the other is internal. Lv Zheng, +ACPICA +BZ 846. + +Makefiles: Completely removed the obsolete "Linux" makefiles under +acpica/generate/linux. These makefiles are obsolete and have been +replaced +by +the generic unix makefiles under acpica/generate/unix. + +Makefiles: Ensure that binary files always copied properly. Minor rule +change +to ensure that the final binary output files are always copied up to the +appropriate binary directory (bin32 or bin64.) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release: + Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total + Debug Version: 175.7K Code, 74.8K Data, 250.5K Total + Current Release: + Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total + Debug Version: 175.0K Code, 74.4K Data, 249.4K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed a possible fault during the disassembly of resource +descriptors when a second parse is required because of the invocation of +external control methods within the table. With assistance from +adq@lidskialf.net. ACPICA BZ 976. + +iASL: Fixed a namepath optimization problem. An error can occur if the +parse +node that contains the namepath to be optimized does not have a parent +node +that is a named object. This change fixes the problem. + +iASL: Fixed a regression where the AML file is not deleted on errors. The +AML +output file should be deleted if there are any errors during the +compiler. +The +only exception is if the -f (force output) option is used. ACPICA BZ 974. + +iASL: Added a feature to automatically increase internal line buffer +sizes. +Via realloc(), automatically increase the internal line buffer sizes as +necessary to support very long source code lines. The current version of +the +preprocessor requires a buffer long enough to contain full source code +lines. +This change increases the line buffer(s) if the input lines go beyond the +current buffer size. This eliminates errors that occurred when a source +code +line was longer than the buffer. + +iASL: Fixed a problem with constant folding in method declarations. The +SyncLevel term is a ByteConstExpr, and incorrect code would be generated +if a +Type3 opcode was used. + +Debugger: Improved command help support. For incorrect argument count, +display +full help for the command. For help command itself, allow an argument to +specify a command. + +Test Suites: Several bug fixes for the ASLTS suite reduces the number of +errors during execution of the suite. Guan Chao. + +---------------------------------------- +16 August 2012. Summary of changes for version 20120816: + + +1) ACPICA Kernel-resident Subsystem: + +Removed all use of the deprecated _GTS and _BFS predefined methods. The +_GTS +(Going To Sleep) and _BFS (Back From Sleep) methods are essentially +deprecated and will probably be removed from the ACPI specification. +Windows +does not invoke them, and reportedly never will. The final nail in the +coffin +is that the ACPI specification states that these methods must be run with +interrupts off, which is not going to happen in a kernel interpreter. +Note: +Linux has removed all use of the methods also. It was discovered that +invoking these functions caused failures on some machines, probably +because +they were never tested since Windows does not call them. Affects two +external +interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. +ACPICA BZ 969. + +Implemented support for complex bit-packed buffers returned from the _PLD +(Physical Location of Device) predefined method. Adds a new external +interface, AcpiDecodePldBuffer that parses the buffer into a more usable +C +structure. Note: C Bitfields cannot be used for this type of predefined +structure since the memory layout of individual bitfields is not defined +by +the C language. In addition, there are endian concerns where a compiler +will +change the bitfield ordering based on the machine type. The new ACPICA +interface eliminates these issues, and should be called after _PLD is +executed. ACPICA BZ 954. + +Implemented a change to allow a scope change to root (via "Scope (\)") +during +execution of module-level ASL code (code that is executed at table load +time.) Lin Ming. + +Added the Windows8/Server2012 string for the _OSI method. This change +adds +a +new _OSI string, "Windows 2012" for both Windows 8 and Windows Server +2012. + +Added header support for the new ACPI tables DBG2 (Debug Port Table Type +2) +and CSRT (Core System Resource Table). + +Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined +names. This simplifies access to the buffers returned by these predefined +names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. + +GPE support: Removed an extraneous parameter from the various low-level +internal GPE functions. Tang Feng. + +Removed the linux makefiles from the unix packages. The generate/linux +makefiles are obsolete and have been removed from the unix tarball +release +packages. The replacement makefiles are under generate/unix, and there is +a +top-level makefile under the main acpica directory. ACPICA BZ 967, 912. + +Updates for Unix makefiles: +1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. +2) Update linker flags (move to end of command line) for AcpiExec +utility. +Guan Chao. + +Split ACPICA initialization functions to new file, utxfinit.c. Split from +utxface.c to improve modularity and reduce file size. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total + Debug Version: 173.7K Code, 74.0K Data, 247.7K Total + Current Release: + Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total + Debug Version: 175.7K Code, 74.8K Data, 250.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a problem with constant folding for fixed-length constant +expressions. The constant-folding code was not being invoked for constant +expressions that allow the use of type 3/4/5 opcodes to generate +constants +for expressions such as ByteConstExpr, WordConstExpr, etc. This could +result +in the generation of invalid AML bytecode. ACPICA BZ 970. + +iASL: Fixed a generation issue on newer versions of Bison. Newer versions +apparently automatically emit some of the necessary externals. This +change +handles these versions in order to eliminate generation warnings. + +Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. + +Disassembler: Add support to decode _PLD buffers. The decoded buffer +appears +within comments in the output file. + +Debugger: Fixed a regression with the "Threads" command where +AE_BAD_PARAMETER was always returned. + +---------------------------------------- +11 July 2012. Summary of changes for version 20120711: + +1) ACPICA Kernel-resident Subsystem: + +Fixed a possible fault in the return package object repair code. Fixes a +problem that can occur when a lone package object is wrapped with an +outer +package object in order to force conformance to the ACPI specification. +Can +affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, +_DLM, +_CSD, _PSD, _TSD. + +Removed code to disable/enable bus master arbitration (ARB_DIS bit in the +PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the +ARB_DIS bit must be implemented in the host-dependent C3 processor power +state +support. Note, ARB_DIS is obsolete and only applies to older chipsets, +both +Intel and other vendors. (for Intel: ICH4-M and earlier) + +This change removes the code to disable/enable bus master arbitration +during +suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register +causes +resume problems on some machines. The change has been in use for over +seven +years within Linux. + +Implemented two new external interfaces to support host-directed dynamic +ACPI +table load and unload. They are intended to simplify the host +implementation +of hot-plug support: + AcpiLoadTable: Load an SSDT from a buffer into the namespace. + AcpiUnloadParentTable: Unload an SSDT via a named object owned by the +table. +See the ACPICA reference for additional details. Adds one new file, +components/tables/tbxfload.c + +Implemented and deployed two new interfaces for errors and warnings that +are +known to be caused by BIOS/firmware issues: + AcpiBiosError: Prints "ACPI Firmware Error" message. + AcpiBiosWarning: Prints "ACPI Firmware Warning" message. +Deployed these new interfaces in the ACPICA Table Manager code for ACPI +table +and FADT errors. Additional deployment to be completed as appropriate in +the +future. The associated conditional macros are ACPI_BIOS_ERROR and +ACPI_BIOS_WARNING. See the ACPICA reference for additional details. +ACPICA +BZ +843. + +Implicit notify support: ensure that no memory allocation occurs within a +critical region. This fix moves a memory allocation outside of the time +that a +spinlock is held. Fixes issues on systems that do not allow this +behavior. +Jung-uk Kim. + +Split exception code utilities and tables into a new file, +utilities/utexcep.c + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release: + Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total + Debug Version: 172.9K Code, 73.6K Data, 246.5K Total + Current Release: + Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total + Debug Version: 173.7K Code, 74.0K Data, 247.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead +of +0. Jung-uk Kim. + +Debugger: Enhanced the "tables" command to emit additional information +about +the current set of ACPI tables, including the owner ID and flags decode. + +Debugger: Reimplemented the "unload" command to use the new +AcpiUnloadParentTable external interface. This command was disable +previously +due to need for an unload interface. + +AcpiHelp: Added a new option to decode ACPICA exception codes. The -e +option +will decode 16-bit hex status codes (ACPI_STATUS) to name strings. + +---------------------------------------- +20 June 2012. Summary of changes for version 20120620: + + +1) ACPICA Kernel-resident Subsystem: + +Implemented support to expand the "implicit notify" feature to allow +multiple +devices to be notified by a single GPE. This feature automatically +generates a +runtime device notification in the absence of a BIOS-provided GPE control +method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit +notify is +provided by ACPICA for Windows compatibility, and is a workaround for +BIOS +AML +code errors. See the description of the AcpiSetupGpeForWake interface in +the +APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. + +Changed some comments and internal function names to simplify and ensure +correctness of the Linux code translation. No functional changes. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release: + Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total + Debug Version: 172.7K Code, 73.6K Data, 246.3K Total + Current Release: + Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total + Debug Version: 172.9K Code, 73.6K Data, 246.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Added support to emit short, commented descriptions for the +ACPI +predefined names in order to improve the readability of the disassembled +output. ACPICA BZ 959. Changes include: + 1) Emit descriptions for all standard predefined names (_INI, _STA, +_PRW, +etc.) + 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) + 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, +etc.) + +AcpiSrc: Fixed several long-standing Linux code translation issues. +Argument +descriptions in function headers are now translated properly to lower +case +and +underscores. ACPICA BZ 961. Also fixes translation problems such as +these: +(old -> new) + i_aSL -> iASL + 00-7_f -> 00-7F + 16_k -> 16K + local_fADT -> local_FADT + execute_oSI -> execute_OSI + +iASL: Fixed a problem where null bytes were inadvertently emitted into +some +listing files. + +iASL: Added the existing debug options to the standard help screen. There +are +no longer two different help screens. ACPICA BZ 957. + +AcpiHelp: Fixed some typos in the various predefined name descriptions. +Also +expand some of the descriptions where appropriate. + +iASL: Fixed the -ot option (display compile times/statistics). Was not +working +properly for standard output; only worked for the debug file case. + +---------------------------------------- +18 May 2012. Summary of changes for version 20120518: + + +1) ACPICA Core Subsystem: + +Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is +defined +to block until asynchronous events such as notifies and GPEs have +completed. +Within ACPICA, it is only called before a notify or GPE handler is +removed/uninstalled. It also may be useful for the host OS within related +drivers such as the Embedded Controller driver. See the ACPICA reference +for +additional information. ACPICA BZ 868. + +ACPI Tables: Added a new error message for a possible overflow failure +during +the conversion of FADT 32-bit legacy register addresses to internal +common +64- +bit GAS structure representation. The GAS has a one-byte "bit length" +field, +thus limiting the register length to 255 bits. ACPICA BZ 953. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release: + Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total + Debug Version: 172.6K Code, 73.4K Data, 246.0K Total + Current Release: + Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total + Debug Version: 172.7K Code, 73.6K Data, 246.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL +macro. +This keyword was added late in the ACPI 5.0 release cycle and was not +implemented until now. + +Disassembler: Added support for Operation Region externals. Adds missing +support for operation regions that are defined in another table, and +referenced locally via a Field or BankField ASL operator. Now generates +the +correct External statement. + +Disassembler: Several additional fixes for the External() statement +generation +related to some ASL operators. Also, order the External() statements +alphabetically in the disassembler output. Fixes the External() +generation +for +the Create* field, Alias, and Scope operators: + 1) Create* buffer field operators - fix type mismatch warning on +disassembly + 2) Alias - implement missing External support + 3) Scope - fix to make sure all necessary externals are emitted. + +iASL: Improved pathname support. For include files, merge the prefix +pathname +with the file pathname and eliminate unnecessary components. Convert +backslashes in all pathnames to forward slashes, for readability. Include +file +pathname changes affect both #include and Include() type operators. + +iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the +end +of a valid line by inserting a newline and then returning the EOF during +the +next call to GetNextLine. Prevents the line from being ignored due to EOF +condition. + +iASL: Implemented some changes to enhance the IDE support (-vi option.) +Error +and Warning messages are now correctly recognized for both the source +code +browser and the global error and warning counts. + +---------------------------------------- +20 April 2012. Summary of changes for version 20120420: + + +1) ACPICA Core Subsystem: + +Implemented support for multiple notify handlers. This change adds +support +to +allow multiple system and device notify handlers on Device, Thermal Zone, +and +Processor objects. This can simplify the host OS notification +implementation. +Also re-worked and restructured the entire notify support code to +simplify +handler installation, handler removal, notify event queuing, and notify +dispatch to handler(s). Note: there can still only be two global notify +handlers - one for system notifies and one for device notifies. There are +no +changes to the existing handler install/remove interfaces. Lin Ming, Bob +Moore, Rafael Wysocki. + +Fixed a regression in the package repair code where the object reference +count was calculated incorrectly. Regression was introduced in the commit +"Support to add Package wrappers". + +Fixed a couple possible memory leaks in the AML parser, in the error +recovery +path. Jesper Juhl, Lin Ming. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total + Debug Version: 172.5K Code, 73.2K Data, 245.7K Total + Current Release: + Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total + Debug Version: 172.6K Code, 73.4K Data, 246.0K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a problem with the resource descriptor support where the +length +of the StartDependentFn and StartDependentFnNoPrio descriptors were not +included in cumulative descriptor offset, resulting in incorrect values +for +resource tags within resource descriptors appearing after a +StartDependent* +descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. + +iASL and Preprocessor: Implemented full support for the #line directive +to +correctly track original source file line numbers through the .i +preprocessor +output file - for error and warning messages. + +iASL: Expand the allowable byte constants for address space IDs. +Previously, +the allowable range was 0x80-0xFF (user-defined spaces), now the range is +0x0A-0xFF to allow for custom and new IDs without changing the compiler. + +iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. + +iASL: Add option to completely disable the preprocessor (-Pn). + +iASL: Now emit all error/warning messages to standard error (stderr) by +default (instead of the previous stdout). + +ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). +Update +for resource descriptor offset fix above. Update/cleanup error output +routines. Enable and send iASL errors/warnings to an error logfile +(error.txt). Send all other iASL output to a logfile (compiler.txt). +Fixed +several extraneous "unrecognized operator" messages. + +---------------------------------------- +20 March 2012. Summary of changes for version 20120320: + + +1) ACPICA Core Subsystem: + +Enhanced the sleep/wake interfaces to optionally execute the _GTS method +(Going To Sleep) and the _BFS method (Back From Sleep). Windows +apparently +does not execute these methods, and therefore these methods are often +untested. It has been seen on some systems where the execution of these +methods causes errors and also prevents the machine from entering S5. It +is +therefore suggested that host operating systems do not execute these +methods +by default. In the future, perhaps these methods can be optionally +executed +based on the age of the system and/or what is the newest version of +Windows +that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState +and +AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin +Ming. + +Fixed a problem where the length of the local/common FADT was set too +early. +The local FADT table length cannot be set to the common length until the +original length has been examined. There is code that checks the table +length +and sets various fields appropriately. This can affect older machines +with +early FADT versions. For example, this can cause inadvertent writes to +the +CST_CNT register. Julian Anastasov. + +Fixed a mapping issue related to a physical table override. Use the +deferred +mapping mechanism for tables loaded via the physical override OSL +interface. +This allows for early mapping before the virtual memory manager is +available. +Thomas Renninger, Bob Moore. + +Enhanced the automatic return-object repair code: Repair a common problem +with +predefined methods that are defined to return a variable-length Package +of +sub-objects. If there is only one sub-object, some BIOS ASL code +mistakenly +simply returns the single object instead of a Package with one sub- +object. +This new support will repair this error by wrapping a Package object +around +the original object, creating the correct and expected Package with one +sub- +object. Names that can be repaired in this manner include: _ALR, _CSD, +_HPX, +_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ +939. + +Changed the exception code returned for invalid ACPI paths passed as +parameters to external interfaces such as AcpiEvaluateObject. Was +AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release: + Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total + Debug Version: 172.5K Code, 73.2K Data, 245.7K Total + Current Release: + Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total + Debug Version: 172.5K Code, 73.2K Data, 245.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added the infrastructure and initial implementation of a integrated +C- +like preprocessor. This will simplify BIOS development process by +eliminating +the need for a separate preprocessing step during builds. On Windows, it +also +eliminates the need to install a separate C compiler. ACPICA BZ 761. Some +features including full #define() macro support are still under +development. +These preprocessor directives are supported: + #define + #elif + #else + #endif + #error + #if + #ifdef + #ifndef + #include + #pragma message + #undef + #warning +In addition, these new command line options are supported: + -D <symbol> Define symbol for preprocessor use + -li Create preprocessed output file (*.i) + -P Preprocess only and create preprocessor output file (*.i) + +Table Compiler: Fixed a problem where the equals operator within an +expression +did not work properly. + +Updated iASL to use the current versions of Bison/Flex. Updated the +Windows +project file to invoke these tools from the standard location. ACPICA BZ +904. +Versions supported: + Flex for Windows: V2.5.4 + Bison for Windows: V2.4.1 + +---------------------------------------- +15 February 2012. Summary of changes for version 20120215: + + +1) ACPICA Core Subsystem: + +There have been some major changes to the sleep/wake support code, as +described below (a - e). + +a) The AcpiLeaveSleepState has been split into two interfaces, similar to +AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is +AcpiLeaveSleepStatePrep. This allows the host to perform actions between +the +time the _BFS method is called and the _WAK method is called. NOTE: all +hosts +must update their wake/resume code or else sleep/wake will not work +properly. +Rafael Wysocki. + +b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the +_WAK +method. Some machines require that the GPEs are enabled before the _WAK +method +is executed. Thomas Renninger. + +c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) +bit. +Some BIOS code assumes that WAK_STS will be cleared on resume and use it +to +determine whether the system is rebooting or resuming. Matthew Garrett. + +d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From +Sleep) to +match the ACPI specification requirement. Rafael Wysocki. + +e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl +registers within the V5 FADT. This support adds two new files: +hardware/hwesleep.c implements the support for the new registers. Moved +all +sleep/wake external interfaces to hardware/hwxfsleep.c. + + +Added a new OSL interface for ACPI table overrides, +AcpiOsPhysicalTableOverride. This interface allows the host to override a +table via a physical address, instead of the logical address required by +AcpiOsTableOverride. This simplifies the host implementation. Initial +implementation by Thomas Renninger. The ACPICA implementation creates a +single +shared function for table overrides that attempts both a logical and a +physical override. + +Expanded the OSL memory read/write interfaces to 64-bit data +(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory +transfer support for GAS register structures passed to AcpiRead and +AcpiWrite. + +Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a +custom +build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) +model. +See the ACPICA reference for details. ACPICA BZ 942. This option removes +about +10% of the code and 5% of the static data, and the following hardware +ACPI +features become unavailable: + PM Event and Control registers + SCI interrupt (and handler) + Fixed Events + General Purpose Events (GPEs) + Global Lock + ACPI PM timer + FACS table (Waking vectors and Global Lock) + +Updated the unix tarball directory structure to match the ACPICA git +source +tree. This ensures that the generic unix makefiles work properly (in +generate/unix). Also updated the Linux makefiles to match. ACPICA BZ +867. + +Updated the return value of the _REV predefined method to integer value 5 +to +reflect ACPI 5.0 support. + +Moved the external ACPI PM timer interface prototypes to the public +acpixf.h +file where they belong. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release: + Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total + Debug Version: 171.7K Code, 72.9K Data, 244.5K Total + Current Release: + Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total + Debug Version: 172.5K Code, 73.2K Data, 245.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed a problem with the new ACPI 5.0 serial resource +descriptors (I2C, SPI, UART) where the resource produce/consumer bit was +incorrectly displayed. + +AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI +specification. + +---------------------------------------- +11 January 2012. Summary of changes for version 20120111: + + +1) ACPICA Core Subsystem: + +Implemented a new mechanism to allow host device drivers to check for +address +range conflicts with ACPI Operation Regions. Both SystemMemory and +SystemIO +address spaces are supported. A new external interface, +AcpiCheckAddressRange, +allows drivers to check an address range against the ACPI namespace. See +the +ACPICA reference for additional details. Adds one new file, +utilities/utaddress.c. Lin Ming, Bob Moore. + +Fixed several issues with the ACPI 5.0 FADT support: Add the sleep +Control +and +Status registers, update the ACPI 5.0 flags, and update internal data +structures to handle an FADT larger than 256 bytes. The size of the ACPI +5.0 +FADT is 268 bytes. + +Updated all ACPICA copyrights and signons to 2012. Added the 2012 +copyright to +all module headers and signons, including the standard Linux header. This +affects virtually every file in the ACPICA core subsystem, iASL compiler, +and +all ACPICA utilities. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release: + Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total + Debug Version: 170.8K Code, 72.6K Data, 243.4K Total + Current Release: + Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total + Debug Version: 171.7K Code, 72.9K Data, 244.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: fixed a problem with the automatic resource tag generation +support. Fixes a problem where the resource tags are inadvertently not +constructed if the table being disassembled contains external references +to +control methods. Moved the actual construction of the tags to after the +final +namespace is constructed (after 2nd parse is invoked due to external +control +method references.) ACPICA BZ 941. + +Table Compiler: Make all "generic" operators caseless. These are the +operators +like UINT8, String, etc. Making these caseless improves ease-of-use. +ACPICA BZ +934. + +---------------------------------------- +23 November 2011. Summary of changes for version 20111123: + +0) ACPI 5.0 Support: + +This release contains full support for the ACPI 5.0 specification, as +summarized below. + +Reduced Hardware Support: +------------------------- + +This support allows for ACPI systems without the usual ACPI hardware. +This +support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA +will +not attempt to initialize or use any of the usual ACPI hardware. Note, +when +this flag is set, all of the following ACPI hardware is assumed to be not +present and is not initialized or accessed: + + General Purpose Events (GPEs) + Fixed Events (PM1a/PM1b and PM Control) + Power Management Timer and Console Buttons (power/sleep) + Real-time Clock Alarm + Global Lock + System Control Interrupt (SCI) + The FACS is assumed to be non-existent + +ACPI Tables: +------------ + +All new tables and updates to existing tables are fully supported in the +ACPICA headers (for use by device drivers), the disassembler, and the +iASL +Data Table Compiler. ACPI 5.0 defines these new tables: + + BGRT /* Boot Graphics Resource Table */ + DRTM /* Dynamic Root of Trust for Measurement table */ + FPDT /* Firmware Performance Data Table */ + GTDT /* Generic Timer Description Table */ + MPST /* Memory Power State Table */ + PCCT /* Platform Communications Channel Table */ + PMTT /* Platform Memory Topology Table */ + RASF /* RAS Feature table */ + +Operation Regions/SpaceIDs: +--------------------------- + +All new operation regions are fully supported by the iASL compiler, the +disassembler, and the ACPICA runtime code (for dispatch to region +handlers.) +The new operation region Space IDs are: + + GeneralPurposeIo + GenericSerialBus + +Resource Descriptors: +--------------------- + +All new ASL resource descriptors are fully supported by the iASL +compiler, +the +ASL/AML disassembler, and the ACPICA runtime Resource Manager code +(including +all new predefined resource tags). New descriptors are: + + FixedDma + GpioIo + GpioInt + I2cSerialBus + SpiSerialBus + UartSerialBus + +ASL/AML Operators, New and Modified: +------------------------------------ + +One new operator is added, the Connection operator, which is used to +associate +a GeneralPurposeIo or GenericSerialBus resource descriptor with +individual +field objects within an operation region. Several new protocols are +associated +with the AccessAs operator. All are fully supported by the iASL compiler, +disassembler, and runtime ACPICA AML interpreter: + + Connection // Declare Field Connection +attributes + AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol + AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes +Protocol + AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol + RawDataBuffer // Data type for Vendor Data +fields + +Predefined ASL/AML Objects: +--------------------------- + +All new predefined objects/control-methods are supported by the iASL +compiler +and the ACPICA runtime validation/repair (arguments and return values.) +New +predefined names include the following: + +Standard Predefined Names (Objects or Control Methods): + _AEI, _CLS, _CPC, _CWS, _DEP, + _DLM, _EVT, _GCP, _CRT, _GWS, + _HRV, _PRE, _PSE, _SRT, _SUB. + +Resource Tags (Names used to access individual fields within resource +descriptors): + _DBT, _DPL, _DRS, _END, _FLC, + _IOR, _LIN, _MOD, _PAR, _PHA, + _PIN, _PPI, _POL, _RXL, _SLV, + _SPE, _STB, _TXL, _VEN. + +ACPICA External Interfaces: +--------------------------- + +Several new interfaces have been defined for use by ACPI-related device +drivers and other host OS services: + +AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS +to +acquire and release AML mutexes that are defined in the DSDT/SSDT tables +provided by the BIOS. They are intended to be used in conjunction with +the +ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level +mutual exclusion with the AML code/interpreter. + +AcpiGetEventResources: Returns the (formatted) resource descriptors as +defined +by the ACPI 5.0 _AEI object (ACPI Event Information). This object +provides +resource descriptors associated with hardware-reduced platform events, +similar +to the AcpiGetCurrentResources interface. + +Operation Region Handlers: For General Purpose IO and Generic Serial Bus +operation regions, information about the Connection() object and any +optional +length information is passed to the region handler within the Context +parameter. + +AcpiBufferToResource: This interface converts a raw AML buffer containing +a +resource template or resource descriptor to the ACPI_RESOURCE internal +format +suitable for use by device drivers. Can be used by an operation region +handler +to convert the Connection() buffer object into a ACPI_RESOURCE. + +Miscellaneous/Tools/TestSuites: +------------------------------- + +Support for extended _HID names (Four alpha characters instead of three). +Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. +Support for ACPI 5.0 features in the ASLTS test suite. +Fully updated documentation (ACPICA and iASL reference documents.) + +ACPI Table Definition Language: +------------------------------- + +Support for this language was implemented and released as a subsystem of +the +iASL compiler in 2010. (See the iASL compiler User Guide.) + + +Non-ACPI 5.0 changes for this release: +-------------------------------------- + +1) ACPICA Core Subsystem: + +Fix a problem with operation region declarations where a failure can +occur +if +the region name and an argument that evaluates to an object (such as the +region address) are in different namespace scopes. Lin Ming, ACPICA BZ +937. + +Do not abort an ACPI table load if an invalid space ID is found within. +This +will be caught later if the offending method is executed. ACPICA BZ 925. + +Fixed an issue with the FFixedHW space ID where the ID was not always +recognized properly (Both ACPICA and iASL). ACPICA BZ 926. + +Fixed a problem with the 32-bit generation of the unix-specific OSL +(osunixxf.c). Lin Ming, ACPICA BZ 936. + +Several changes made to enable generation with the GCC 4.6 compiler. +ACPICA BZ +935. + +New error messages: Unsupported I/O requests (not 8/16/32 bit), and +Index/Bank +field registers out-of-range. + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented the __PATH__ operator, which returns the full pathname +of +the current source file. + +AcpiHelp: Automatically display expanded keyword information for all ASL +operators. + +Debugger: Add "Template" command to disassemble/dump resource template +buffers. + +Added a new master script to generate and execute the ASLTS test suite. +Automatically handles 32- and 64-bit generation. See tests/aslts.sh + +iASL: Fix problem with listing generation during processing of the +Switch() +operator where AML listing was disabled until the entire Switch block was +completed. + +iASL: Improve support for semicolon statement terminators. Fix "invalid +character" message for some cases when the semicolon is used. Semicolons +are +now allowed after every <Term> grammar element. ACPICA BZ 927. + +iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ +923. + +Disassembler: Fix problem with disassembly of the DataTableRegion +operator +where an inadvertent "Unhandled deferred opcode" message could be +generated. + +3) Example Code and Data Size + +These are the sizes for the OS-independent acpica.lib produced by the +Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code +includes the debug output trace mechanism and has a much larger code and +data +size. + + Previous Release: + Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total + Debug Version: 165.6K Code, 68.4K Data, 234.0K Total + Current Release: + Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total + Debug Version: 170.8K Code, 72.6K Data, 243.4K Total + +---------------------------------------- +22 September 2011. Summary of changes for version 20110922: + +0) ACPI 5.0 News: + +Support for ACPI 5.0 in ACPICA has been underway for several months and +will +be released at the same time that ACPI 5.0 is officially released. + +The ACPI 5.0 specification is on track for release in the next few +months. + +1) ACPICA Core Subsystem: + +Fixed a problem where the maximum sleep time for the Sleep() operator was +intended to be limited to two seconds, but was inadvertently limited to +20 +seconds instead. + +Linux and Unix makefiles: Added header file dependencies to ensure +correct +generation of ACPICA core code and utilities. Also simplified the +makefiles +considerably through the use of the vpath variable to specify search +paths. +ACPICA BZ 924. + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented support to check the access length for all fields +created to +access named Resource Descriptor fields. For example, if a resource field +is +defined to be two bits, a warning is issued if a CreateXxxxField() is +used +with an incorrect bit length. This is implemented for all current +resource +descriptor names. ACPICA BZ 930. + +Disassembler: Fixed a byte ordering problem with the output of 24-bit and +56- +bit integers. + +iASL: Fixed a couple of issues associated with variable-length package +objects. 1) properly handle constants like One, Ones, Zero -- do not make +a +VAR_PACKAGE when these are used as a package length. 2) Allow the +VAR_PACKAGE +opcode (in addition to PACKAGE) when validating object types for +predefined +names. + +iASL: Emit statistics for all output files (instead of just the ASL input +and +AML output). Includes listings, hex files, etc. + +iASL: Added -G option to the table compiler to allow the compilation of +custom +ACPI tables. The only part of a table that is required is the standard +36- +byte +ACPI header. + +AcpiXtract: Ported to the standard ACPICA environment (with ACPICA +headers), +which also adds correct 64-bit support. Also, now all output filenames +are +completely lower case. + +AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when +loading table files. A warning is issued for any such tables. The only +exception is an FADT. This also fixes a possible fault when attempting to +load +non-AML tables. ACPICA BZ 932. + +AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where +a +missing table terminator could cause a fault when using the -p option. + +AcpiSrc: Fixed a possible divide-by-zero fault when generating file +statistics. + +3) Example Code and Data Size + +These are the sizes for the OS-independent acpica.lib produced by the +Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code +includes the debug output trace mechanism and has a much larger code and +data +size. + + Previous Release (VC 9.0): + Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total + Debug Version: 165.6K Code, 68.4K Data, 234.0K Total + Current Release (VC 9.0): + Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total + Debug Version: 165.6K Code, 68.4K Data, 234.0K Total + + +---------------------------------------- +23 June 2011. Summary of changes for version 20110623: + +1) ACPI CA Core Subsystem: + +Updated the predefined name repair mechanism to not attempt repair of a +_TSS +return object if a _PSS object is present. We can only sort the _TSS +return +package if there is no _PSS within the same scope. This is because if +_PSS +is +present, the ACPI specification dictates that the _TSS Power Dissipation +field +is to be ignored, and therefore some BIOSs leave garbage values in the +_TSS +Power field(s). In this case, it is best to just return the _TSS package +as- +is. Reported by, and fixed with assistance from Fenghua Yu. + +Added an option to globally disable the control method return value +validation +and repair. This runtime option can be used to disable return value +repair +if +this is causing a problem on a particular machine. Also added an option +to +AcpiExec (-dr) to set this disable flag. + +All makefiles and project files: Major changes to improve generation of +ACPICA +tools. ACPICA BZ 912: + Reduce default optimization levels to improve compatibility + For Linux, add strict-aliasing=0 for gcc 4 + Cleanup and simplify use of command line defines + Cleanup multithread library support + Improve usage messages + +Linux-specific header: update handling of THREAD_ID and pthread. For the +32- +bit case, improve casting to eliminate possible warnings, especially with +the +acpica tools. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release (VC 9.0): + Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total + Debug Version: 165.6K Code, 68.4K Data, 234.0K Total + Current Release (VC 9.0): + Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total + Debug Version: 165.6K Code, 68.4K Data, 234.0K Total + +2) iASL Compiler/Disassembler and Tools: + +With this release, a new utility named "acpihelp" has been added to the +ACPICA +package. This utility summarizes the ACPI specification chapters for the +ASL +and AML languages. It generates under Linux/Unix as well as Windows, and +provides the following functionality: + Find/display ASL operator(s) -- with description and syntax. + Find/display ASL keyword(s) -- with exact spelling and descriptions. + Find/display ACPI predefined name(s) -- with description, number + of arguments, and the return value data type. + Find/display AML opcode name(s) -- with opcode, arguments, and +grammar. + Decode/display AML opcode -- with opcode name, arguments, and +grammar. + +Service Layers: Make multi-thread support configurable. Conditionally +compile +the multi-thread support so that threading libraries will not be linked +if +not +necessary. The only tool that requires multi-thread support is AcpiExec. + +iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions +of +Bison appear to want the interface to yyerror to be a const char * (or at +least this is a problem when generating iASL on some systems.) ACPICA BZ +923 +Pierre Lejeune. + +Tools: Fix for systems where O_BINARY is not defined. Only used for +Windows +versions of the tools. + +---------------------------------------- +27 May 2011. Summary of changes for version 20110527: + +1) ACPI CA Core Subsystem: + +ASL Load() operator: Reinstate most restrictions on the incoming ACPI +table +signature. Now, only allow SSDT, OEMx, and a null signature. History: + 1) Originally, we checked the table signature for "SSDT" or "PSDT". + (PSDT is now obsolete.) + 2) We added support for OEMx tables, signature "OEM" plus a fourth + "don't care" character. + 3) Valid tables were encountered with a null signature, so we just + gave up on validating the signature, (05/2008). + 4) We encountered non-AML tables such as the MADT, which caused + interpreter errors and kernel faults. So now, we once again allow + only SSDT, OEMx, and now, also a null signature. (05/2011). + +Added the missing _TDL predefined name to the global name list in order +to +enable validation. Affects both the core ACPICA code and the iASL +compiler. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug +version of the code includes the debug output trace mechanism and has a +much +larger code and data size. + + Previous Release (VC 9.0): + Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total + Debug Version: 164.5K Code, 68.0K Data, 232.5K Total + Current Release (VC 9.0): + Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total + Debug Version: 165.6K Code, 68.4K Data, 234.0K Total + +2) iASL Compiler/Disassembler and Tools: + +Debugger/AcpiExec: Implemented support for "complex" method arguments on +the +debugger command line. This adds support beyond simple integers -- +including +Strings, Buffers, and Packages. Includes support for nested packages. +Increased the default command line buffer size to accommodate these +arguments. +See the ACPICA reference for details and syntax. ACPICA BZ 917. + +Debugger/AcpiExec: Implemented support for "default" method arguments for +the +Execute/Debug command. Now, the debugger will always invoke a control +method +with the required number of arguments -- even if the command line +specifies +none or insufficient arguments. It uses default integer values for any +missing +arguments. Also fixes a bug where only six method arguments maximum were +supported instead of the required seven. + +Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine +and +also return status in order to prevent buffer overruns. See the ACPICA +reference for details and syntax. ACPICA BZ 921 + +iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and +makefiles to simplify support for the two different but similar parser +generators, bison and yacc. + +Updated the generic unix makefile for gcc 4. The default gcc version is +now +expected to be 4 or greater, since options specific to gcc 4 are used. + +---------------------------------------- +13 April 2011. Summary of changes for version 20110413: + +1) ACPI CA Core Subsystem: + +Implemented support to execute a so-called "orphan" _REG method under the +EC +device. This change will force the execution of a _REG method underneath +the +EC +device even if there is no corresponding operation region of type +EmbeddedControl. Fixes a problem seen on some machines and apparently is +compatible with Windows behavior. ACPICA BZ 875. + +Added more predefined methods that are eligible for automatic NULL +package +element removal. This change adds another group of predefined names to +the +list +of names that can be repaired by having NULL package elements dynamically +removed. This group are those methods that return a single variable- +length +package containing simple data types such as integers, buffers, strings. +This +includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, +_PSL, +_Sx, +and _TZD. ACPICA BZ 914. + +Split and segregated all internal global lock functions to a new file, +evglock.c. + +Updated internal address SpaceID for DataTable regions. Moved this +internal +space +id in preparation for ACPI 5.0 changes that will include some new space +IDs. +This +change should not affect user/host code. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib +produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug +version of +the code includes the debug output trace mechanism and has a much larger +code +and +data size. + + Previous Release (VC 9.0): + Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total + Debug Version: 164.2K Code, 67.9K Data, 232.1K Total + Current Release (VC 9.0): + Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total + Debug Version: 164.5K Code, 68.0K Data, 232.5K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL/DTC: Major update for new grammar features. Allow generic data types +in +custom ACPI tables. Field names are now optional. Any line can be split +to +multiple lines using the continuation char (\). Large buffers now use +line- +continuation character(s) and no colon on the continuation lines. See the +grammar +update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob +Moore. + +iASL: Mark ASL "Return()" and the simple "Return" as "Null" return +statements. +Since the parser stuffs a "zero" as the return value for these statements +(due +to +the underlying AML grammar), they were seen as "return with value" by the +iASL +semantic checking. They are now seen correctly as "null" return +statements. + +iASL: Check if a_REG declaration has a corresponding Operation Region. +Adds a +check for each _REG to ensure that there is in fact a corresponding +operation +region declaration in the same scope. If not, the _REG method is not very +useful +since it probably won't be executed. ACPICA BZ 915. + +iASL/DTC: Finish support for expression evaluation. Added a new +expression +parser +that implements c-style operator precedence and parenthesization. ACPICA +bugzilla +908. + +Disassembler/DTC: Remove support for () and <> style comments in data +tables. +Now +that DTC has full expression support, we don't want to have comment +strings +that +start with a parentheses or a less-than symbol. Now, only the standard /* +and +// +comments are supported, as well as the bracket [] comments. + +AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have +"unusual" +headers in the acpidump file. Update the header validation to support +these +tables. Problem introduced in previous AcpiXtract version in the change +to +support "wrong checksum" error messages emitted by acpidump utility. + +iASL: Add a * option to generate all template files (as a synonym for +ALL) +as +in +"iasl -T *" or "iasl -T ALL". + +iASL/DTC: Do not abort compiler on fatal errors. We do not want to +completely +abort the compiler on "fatal" errors, simply should abort the current +compile. +This allows multiple compiles with a single (possibly wildcard) compiler +invocation. + +---------------------------------------- +16 March 2011. Summary of changes for version 20110316: + +1) ACPI CA Core Subsystem: + +Fixed a problem caused by a _PRW method appearing at the namespace root +scope +during the setup of wake GPEs. A fault could occur if a _PRW directly +under +the +root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. + +Implemented support for "spurious" Global Lock interrupts. On some +systems, a +global lock interrupt can occur without the pending flag being set. Upon +a +GL +interrupt, we now ensure that a thread is actually waiting for the lock +before +signaling GL availability. Rafael Wysocki, Bob Moore. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib +produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug +version of +the code includes the debug output trace mechanism and has a much larger +code +and +data size. + + Previous Release (VC 9.0): + Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total + Debug Version: 163.9K Code, 67.5K Data, 231.4K Total + Current Release (VC 9.0): + Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total + Debug Version: 164.2K Code, 67.9K Data, 232.1K Total + +2) iASL Compiler/Disassembler and Tools: + +Implemented full support for the "SLIC" ACPI table. Includes support in +the +header files, disassembler, table compiler, and template generator. Bob +Moore, +Lin Ming. + +AcpiXtract: Correctly handle embedded comments and messages from +AcpiDump. +Apparently some or all versions of acpidump will occasionally emit a +comment +like +"Wrong checksum", etc., into the dump file. This was causing problems for +AcpiXtract. ACPICA BZ 905. + +iASL: Fix the Linux makefile by removing an inadvertent double file +inclusion. +ACPICA BZ 913. + +AcpiExec: Update installation of operation region handlers. Install one +handler +for a user-defined address space. This is used by the ASL test suite +(ASLTS). + +---------------------------------------- +11 February 2011. Summary of changes for version 20110211: + +1) ACPI CA Core Subsystem: + +Added a mechanism to defer _REG methods for some early-installed +handlers. +Most user handlers should be installed before call to +AcpiEnableSubsystem. +However, Event handlers and region handlers should be installed after +AcpiInitializeObjects. Override handlers for the "default" regions should +be +installed early, however. This change executes all _REG methods for the +default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any +chicken/egg issues between them. ACPICA BZ 848. + +Implemented an optimization for GPE detection. This optimization will +simply +ignore GPE registers that contain no enabled GPEs -- there is no need to +read the register since this information is available internally. This +becomes more important on machines with a large GPE space. ACPICA +bugzilla +884. Lin Ming. Suggestion from Joe Liu. + +Removed all use of the highly unreliable FADT revision field. The +revision +number in the FADT has been found to be completely unreliable and cannot +be +trusted. Only the actual table length can be used to infer the version. +This +change updates the ACPICA core and the disassembler so that both no +longer +even look at the FADT version and instead depend solely upon the FADT +length. + +Fix an unresolved name issue for the no-debug and no-error-message source +generation cases. The _AcpiModuleName was left undefined in these cases, +but +it is actually needed as a parameter to some interfaces. Define +_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. + +Split several large files (makefiles and project files updated) + utglobal.c -> utdecode.c + dbcomds.c -> dbmethod.c dbnames.c + dsopcode.c -> dsargs.c dscontrol.c + dsload.c -> dsload2.c + aslanalyze.c -> aslbtypes.c aslwalks.c + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release (VC 9.0): + Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total + Debug Version: 163.9K Code, 67.5K Data, 231.4K Total + Current Release (VC 9.0): + Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total + Debug Version: 163.9K Code, 67.5K Data, 231.4K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. +These are useful C-style macros with the standard definitions. ACPICA +bugzilla 898. + +iASL/DTC: Added support for integer expressions and labels. Support for +full +expressions for all integer fields in all ACPI tables. Support for labels +in +"generic" portions of tables such as UEFI. See the iASL reference manual. + +Debugger: Added a command to display the status of global handlers. The +"handlers" command will display op region, fixed event, and miscellaneous +global handlers. installation status -- and for op regions, whether +default +or user-installed handler will be used. + +iASL: Warn if reserved method incorrectly returns a value. Many +predefined +names are defined such that they do not return a value. If implemented as +a +method, issue a warning if such a name explicitly returns a value. ACPICA +Bugzilla 855. + +iASL: Added detection of GPE method name conflicts. Detects a conflict +where +there are two GPE methods of the form _Lxy and _Exy in the same scope. +(For +example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. + +iASL/DTC: Fixed a couple input scanner issues with comments and line +numbers. Comment remover could get confused and miss a comment ending. +Fixed +a problem with line counter maintenance. + +iASL/DTC: Reduced the severity of some errors from fatal to error. There +is +no need to abort on simple errors within a field definition. + +Debugger: Simplified the output of the help command. All help output now +in +a single screen, instead of help subcommands. ACPICA Bugzilla 897. + +---------------------------------------- +12 January 2011. Summary of changes for version 20110112: + +1) ACPI CA Core Subsystem: + +Fixed a race condition between method execution and namespace walks that +can +possibly cause a fault. The problem was apparently introduced in version +20100528 as a result of a performance optimization that reduces the +number +of +namespace walks upon method exit by using the delete_namespace_subtree +function instead of the delete_namespace_by_owner function used +previously. +Bug is a missing namespace lock in the delete_namespace_subtree function. +dana.myers@oracle.com + +Fixed several issues and a possible fault with the 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 other running threads + (and possibly causing a fault.) + 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 confusion between the two. + + Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. + +Debugger: Now lock the namespace for duration of a namespace dump. +Prevents +issues if the namespace is changing dynamically underneath the debugger. +Especially affects temporary namespace nodes, since the debugger displays +these also. + +Updated the ordering of include files. The ACPICA headers should appear +before any compiler-specific headers (stdio.h, etc.) so that acenv.h can +set +any necessary compiler-specific defines, etc. Affects the ACPI-related +tools +and utilities. + +Updated all ACPICA copyrights and signons to 2011. Added the 2011 +copyright +to all module headers and signons, including the Linux header. This +affects +virtually every file in the ACPICA core subsystem, iASL compiler, and all +utilities. + +Added project files for MS Visual Studio 2008 (VC++ 9.0). The original +project files for VC++ 6.0 are now obsolete. New project files can be +found +under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for +details. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release (VC 6.0): + Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total + Debug Version: 166.6K Code, 52.1K Data, 218.7K Total + Current Release (VC 9.0): + Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total + Debug Version: 163.9K Code, 67.5K Data, 231.4K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added generic data types to the Data Table compiler. Add "generic" +data +types such as UINT32, String, Unicode, etc., to simplify the generation +of +platform-defined tables such as UEFI. Lin Ming. + +iASL: Added listing support for the Data Table Compiler. Adds listing +support +(-l) to display actual binary output for each line of input code. + +---------------------------------------- +09 December 2010. Summary of changes for version 20101209: + +1) ACPI CA Core Subsystem: + +Completed the major overhaul of the GPE support code that was begun in +July +2010. Major features include: removal of _PRW execution in ACPICA (host +executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, +changes to existing interfaces, simplification of GPE handler operation, +and +a handful of new interfaces: + + AcpiUpdateAllGpes + AcpiFinishGpe + AcpiSetupGpeForWake + AcpiSetGpeWakeMask + One new file, evxfgpe.c to consolidate all external GPE interfaces. + +See the ACPICA Programmer Reference for full details and programming +information. See the new section 4.4 "General Purpose Event (GPE) +Support" +for a full overview, and section 8.7 "ACPI General Purpose Event +Management" +for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin +Ming, +Bob Moore, Rafael Wysocki. + +Implemented a new GPE feature for Windows compatibility, the "Implicit +Wake +GPE Notify". This feature will automatically issue a Notify(2) on a +device +when a Wake GPE is received if there is no corresponding GPE method or +handler. ACPICA BZ 870. + +Fixed a problem with the Scope() operator during table parse and load +phase. +During load phase (table load or method execution), the scope operator +should +not enter the target into the namespace. Instead, it should open a new +scope +at the target location. Linux BZ 19462, ACPICA BZ 882. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total + Debug Version: 166.6K Code, 52.1K Data, 218.7K Total + Current Release: + Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total + Debug Version: 166.3K Code, 52.1K Data, 218.4K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Relax the alphanumeric restriction on _CID strings. These strings +are +"bus-specific" per the ACPI specification, and therefore any characters +are +acceptable. The only checks that can be performed are for a null string +and +perhaps for a leading asterisk. ACPICA BZ 886. + +iASL: Fixed a problem where a syntax error that caused a premature EOF +condition on the source file emitted a very confusing error message. The +premature EOF is now detected correctly. ACPICA BZ 891. + +Disassembler: Decode the AccessSize within a Generic Address Structure +(byte +access, word access, etc.) Note, this field does not allow arbitrary bit +access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. + +New: AcpiNames utility - Example namespace dump utility. Shows an example +of +ACPICA configuration for a minimal namespace dump utility. Uses table and +namespace managers, but no AML interpreter. Does not add any +functionality +over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to +partition and configure ACPICA. ACPICA BZ 883. + +AML Debugger: Increased the debugger buffer size for method return +objects. +Was 4K, increased to 16K. Also enhanced error messages for debugger +method +execution, including the buffer overflow case. + +---------------------------------------- +13 October 2010. Summary of changes for version 20101013: + +1) ACPI CA Core Subsystem: + +Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, +now +clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via +HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. + +Changed the type of the predefined namespace object _TZ from ThermalZone +to +Device. This was found to be confusing to the host software that +processes +the various thermal zones, since _TZ is not really a ThermalZone. +However, +a +Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui +Zhang. + +Added Windows Vista SP2 to the list of supported _OSI strings. The actual +string is "Windows 2006 SP2". + +Eliminated duplicate code in AcpiUtExecute* functions. Now that the +nsrepair +code automatically repairs _HID-related strings, this type of code is no +longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ +878. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total + Debug Version: 166.3K Code, 52.1K Data, 218.4K Total + Current Release: + Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total + Debug Version: 166.3K Code, 52.1K Data, 218.4K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented additional compile-time validation for _HID strings. +The +non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the +length +of +the string must be exactly seven or eight characters. For both _HID and +_CID +strings, all characters must be alphanumeric. ACPICA BZ 874. + +iASL: Allow certain "null" resource descriptors. Some BIOS code creates +descriptors that are mostly or all zeros, with the expectation that they +will +be filled in at runtime. iASL now allows this as long as there is a +"resource +tag" (name) associated with the descriptor, which gives the ASL a handle +needed to modify the descriptor. ACPICA BZ 873. + +Added single-thread support to the generic Unix application OSL. +Primarily +for iASL support, this change removes the use of semaphores in the +single- +threaded ACPICA tools/applications - increasing performance. The +_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED +option. ACPICA BZ 879. + +AcpiExec: several fixes for the 64-bit version. Adds XSDT support and +support +for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. + +iASL: Moved all compiler messages to a new file, aslmessages.h. + +---------------------------------------- +15 September 2010. Summary of changes for version 20100915: + +1) ACPI CA Core Subsystem: + +Removed the AcpiOsDerivePciId OSL interface. The various host +implementations +of this function were not OS-dependent and are now obsolete and can be +removed from all host OSLs. This function has been replaced by +AcpiHwDerivePciId, which is now part of the ACPICA core code. +AcpiHwDerivePciId has been implemented without recursion. Adds one new +module, hwpci.c. ACPICA BZ 857. + +Implemented a dynamic repair for _HID and _CID strings. The following +problems are now repaired at runtime: 1) Remove a leading asterisk in the +string, and 2) the entire string is uppercased. Both repairs are in +accordance with the ACPI specification and will simplify host driver +code. +ACPICA BZ 871. + +The ACPI_THREAD_ID type is no longer configurable, internally it is now +always UINT64. This simplifies the ACPICA code, especially any printf +output. +UINT64 is the only common data type for all thread_id types across all +operating systems. It is now up to the host OSL to cast the native +thread_id +type to UINT64 before returning the value to ACPICA (via +AcpiOsGetThreadId). +Lin Ming, Bob Moore. + +Added the ACPI_INLINE type to enhance the ACPICA configuration. The +"inline" +keyword is not standard across compilers, and this type allows inline to +be +configured on a per-compiler basis. Lin Ming. + +Made the system global AcpiGbl_SystemAwakeAndRunning publicly +available. +Added an extern for this boolean in acpixf.h. Some hosts utilize this +value +during suspend/restore operations. ACPICA BZ 869. + +All code that implements error/warning messages with the "ACPI:" prefix +has +been moved to a new module, utxferror.c. + +The UINT64_OVERLAY was moved to utmath.c, which is the only module where +it +is used. ACPICA BZ 829. Lin Ming, Bob Moore. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total + Debug Version: 165.1K Code, 51.9K Data, 217.0K Total + Current Release: + Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total + Debug Version: 166.3K Code, 52.1K Data, 218.4K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL/Disassembler: Write ACPI errors to stderr instead of the output +file. +This keeps the output files free of random error messages that may +originate +from within the namespace/interpreter code. Used this opportunity to +merge +all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ +866. Lin Ming, Bob Moore. + +Tools: update some printfs for ansi warnings on size_t. Handle width +change +of size_t on 32-bit versus 64-bit generations. Lin Ming. + +---------------------------------------- +06 August 2010. Summary of changes for version 20100806: + +1) ACPI CA Core Subsystem: + +Designed and implemented a new host interface to the _OSI support code. +This +will allow the host to dynamically add or remove multiple _OSI strings, +as +well as install an optional handler that is called for each _OSI +invocation. +Also added a new AML debugger command, 'osi' to display and modify the +global +_OSI string table, and test support in the AcpiExec utility. See the +ACPICA +reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. +New Functions: + AcpiInstallInterface - Add an _OSI string. + AcpiRemoveInterface - Delete an _OSI string. + AcpiInstallInterfaceHandler - Install optional _OSI handler. +Obsolete Functions: + AcpiOsValidateInterface - no longer used. +New Files: + source/components/utilities/utosi.c + +Re-introduced the support to enable multi-byte transfers for Embedded +Controller (EC) operation regions. A reported problem was found to be a +bug +in the host OS, not in the multi-byte support. Previously, the maximum +data +size passed to the EC operation region handler was a single byte. There +are +often EC Fields larger than one byte that need to be transferred, and it +is +useful for the EC driver to lock these as a single transaction. This +change +enables single transfers larger than 8 bits. This effectively changes the +access to the EC space from ByteAcc to AnyAcc, and will probably require +changes to the host OS Embedded Controller driver to enable 16/32/64/256- +bit +transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. + +Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The +prototype in acpiosxf.h had the output value pointer as a (void *). +It should be a (UINT64 *). This may affect some host OSL code. + +Fixed a couple problems with the recently modified Linux makefiles for +iASL +and AcpiExec. These new makefiles place the generated object files in the +local directory so that there can be no collisions between the files that +are +shared between them that are compiled with different options. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total + Debug Version: 164.0K Code, 51.5K Data, 215.5K Total + Current Release: + Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total + Debug Version: 165.1K Code, 51.9K Data, 217.0K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL/Disassembler: Added a new option (-da, "disassemble all") to load +the +namespace from and disassemble an entire group of AML files. Useful for +loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) +and +disassembling with one simple command. ACPICA BZ 865. Lin Ming. + +iASL: Allow multiple invocations of -e option. This change allows +multiple +uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ +834. +Lin Ming. + +---------------------------------------- +02 July 2010. Summary of changes for version 20100702: + +1) ACPI CA Core Subsystem: + +Implemented several updates to the recently added GPE reference count +support. The model for "wake" GPEs is changing to give the host OS +complete +control of these GPEs. Eventually, the ACPICA core will not execute any +_PRW +methods, since the host already must execute them. Also, additional +changes +were made to help ensure that the reference counts are kept in proper +synchronization with reality. Rafael J. Wysocki. + +1) Ensure that GPEs are not enabled twice during initialization. +2) Ensure that GPE enable masks stay in sync with the reference count. +3) Do not inadvertently enable GPEs when writing GPE registers. +4) Remove the internal wake reference counter and add new AcpiGpeWakeup +interface. This interface will set or clear individual GPEs for wakeup. +5) Remove GpeType argument from AcpiEnable and AcpiDisable. These +interfaces +are now used for "runtime" GPEs only. + +Changed the behavior of the GPE install/remove handler interfaces. The +GPE +is +no longer disabled during this process, as it was found to cause problems +on +some machines. Rafael J. Wysocki. + +Reverted a change introduced in version 20100528 to enable Embedded +Controller multi-byte transfers. This change was found to cause problems +with +Index Fields and possibly Bank Fields. It will be reintroduced when these +problems have been resolved. + +Fixed a problem with references to Alias objects within Package Objects. +A +reference to an Alias within the definition of a Package was not always +resolved properly. Aliases to objects like Processors, Thermal zones, +etc. +were resolved to the actual object instead of a reference to the object +as +it +should be. Package objects are only allowed to contain integer, string, +buffer, package, and reference objects. Redhat bugzilla 608648. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total + Debug Version: 164.1K Code, 51.5K Data, 215.6K Total + Current Release: + Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total + Debug Version: 164.0K Code, 51.5K Data, 215.5K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented a new compiler subsystem to allow definition and +compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. +These +are called "ACPI Data Tables", and the new compiler is the "Data Table +Compiler". This compiler is intended to simplify the existing error-prone +process of creating these tables for the BIOS, as well as allowing the +disassembly, modification, recompilation, and override of existing ACPI +data +tables. See the iASL User Guide for detailed information. + +iASL: Implemented a new Template Generator option in support of the new +Data +Table Compiler. This option will create examples of all known ACPI tables +that can be used as the basis for table development. See the iASL +documentation and the -T option. + +Disassembler and headers: Added support for the WDDT ACPI table (Watchdog +Descriptor Table). + +Updated the Linux makefiles for iASL and AcpiExec to place the generated +object files in the local directory so that there can be no collisions +between the shared files between them that are generated with different +options. + +Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. +Use +the #define __APPLE__ to enable this support. + +---------------------------------------- +28 May 2010. Summary of changes for version 20100528: + +Note: The ACPI 4.0a specification was released on April 5, 2010 and is +available at www.acpi.info. This is primarily an errata release. + +1) ACPI CA Core Subsystem: + +Undefined ACPI tables: We are looking for the definitions for the +following +ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. + +Implemented support to enable multi-byte transfers for Embedded +Controller +(EC) operation regions. Previously, the maximum data size passed to the +EC +operation region handler was a single byte. There are often EC Fields +larger +than one byte that need to be transferred, and it is useful for the EC +driver +to lock these as a single transaction. This change enables single +transfers +larger than 8 bits. This effectively changes the access to the EC space +from +ByteAcc to AnyAcc, and will probably require changes to the host OS +Embedded +Controller driver to enable 16/32/64/256-bit transfers in addition to 8- +bit +transfers. Alexey Starikovskiy, Lin Ming + +Implemented a performance enhancement for namespace search and access. +This +change enhances the performance of namespace searches and walks by adding +a +backpointer to the parent in each namespace node. On large namespaces, +this +change can improve overall ACPI performance by up to 9X. Adding a pointer +to +each namespace node increases the overall size of the internal namespace +by +about 5%, since each namespace entry usually consists of both a namespace +node and an ACPI operand object. However, this is the first growth of the +namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. + +Implemented a performance optimization that reduces the number of +namespace +walks. On control method exit, only walk the namespace if the method is +known +to have created namespace objects outside of its local scope. Previously, +the +entire namespace was traversed on each control method exit. This change +can +improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob +Moore. + +Added support to truncate I/O addresses to 16 bits for Windows +compatibility. +Some ASL code has been seen in the field that inadvertently has bits set +above bit 15. This feature is optional and is enabled if the BIOS +requests +any Windows OSI strings. It can also be enabled by the host OS. Matthew +Garrett, Bob Moore. + +Added support to limit the maximum time for the ASL Sleep() operator. To +prevent accidental deep sleeps, limit the maximum time that Sleep() will +actually sleep. Configurable, the default maximum is two seconds. ACPICA +bugzilla 854. + +Added run-time validation support for the _WDG and_WED Microsoft +predefined +methods. These objects are defined by "Windows Instrumentation", and are +not +part of the ACPI spec. ACPICA BZ 860. + +Expanded all statistic counters used during namespace and device +initialization from 16 to 32 bits in order to support very large +namespaces. + +Replaced all instances of %d in printf format specifiers with %u since +nearly +all integers in ACPICA are unsigned. + +Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly +returned +as AE_NO_HANDLER. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total + Debug Version: 164.2K Code, 51.5K Data, 215.7K Total + Current Release: + Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total + Debug Version: 164.1K Code, 51.5K Data, 215.6K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added compiler support for the _WDG and_WED Microsoft predefined +methods. These objects are defined by "Windows Instrumentation", and are +not +part of the ACPI spec. ACPICA BZ 860. + +AcpiExec: added option to disable the memory tracking mechanism. The -dt +option will disable the tracking mechanism, which improves performance +considerably. + +AcpiExec: Restructured the command line options into -d (disable) and -e +(enable) options. + +---------------------------------------- +28 April 2010. Summary of changes for version 20100428: + +1) ACPI CA Core Subsystem: + +Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, +including FADT-based and GPE Block Devices, execute any _PRW methods in +the +new table, and process any _Lxx/_Exx GPE methods in the new table. Any +runtime GPE that is referenced by an _Lxx/_Exx method in the new table is +immediately enabled. Handles the FADT-defined GPEs as well as GPE Block +Devices. Provides compatibility with other ACPI implementations. Two new +files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob +Moore. + +Fixed a regression introduced in version 20100331 within the table +manager +where initial table loading could fail. This was introduced in the fix +for +AcpiReallocateRootTable. Also, renamed some of fields in the table +manager +data structures to clarify their meaning and use. + +Fixed a possible allocation overrun during internal object copy in +AcpiUtCopySimpleObject. The original code did not correctly handle the +case +where the object to be copied was a namespace node. Lin Ming. ACPICA BZ +847. + +Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a +possible access beyond end-of-allocation. Also, now fully validate +descriptor +(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total + Debug Version: 163.5K Code, 51.3K Data, 214.8K Total + Current Release: + Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total + Debug Version: 164.2K Code, 51.5K Data, 215.7K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented Min/Max/Len/Gran validation for address resource +descriptors. This change implements validation for the address fields +that +are common to all address-type resource descriptors. These checks are +implemented: Checks for valid Min/Max, length within the Min/Max window, +valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as +per +table 6-40 in the ACPI 4.0a specification. Also split the large +aslrestype1.c +and aslrestype2.c files into five new files. ACPICA BZ 840. + +iASL: Added support for the _Wxx predefined names. This support was +missing +and these names were not recognized by the compiler as valid predefined +names. ACPICA BZ 851. + +iASL: Added an error for all predefined names that are defined to return +no +value and thus must be implemented as Control Methods. These include all +of +the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous +names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. + +iASL: Implemented the -ts option to emit hex AML data in ASL format, as +an +ASL Buffer. Allows ACPI tables to be easily included within ASL files, to +be +dynamically loaded via the Load() operator. Also cleaned up output for +the +- +ta and -tc options. ACPICA BZ 853. + +Tests: Added a new file with examples of extended iASL error checking. +Demonstrates the advanced error checking ability of the iASL compiler. +Available at tests/misc/badcode.asl. + +---------------------------------------- +31 March 2010. Summary of changes for version 20100331: + +1) ACPI CA Core Subsystem: + +Completed a major update for the GPE support in order to improve support +for +shared GPEs and to simplify both host OS and ACPICA code. Added a +reference +count mechanism to support shared GPEs that require multiple device +drivers. +Several external interfaces have changed. One external interface has been +removed. One new external interface was added. Most of the GPE external +interfaces now use the GPE spinlock instead of the events mutex (and the +Flags parameter for many GPE interfaces has been removed.) See the +updated +ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, +Rafael +Wysocki. ACPICA BZ 831. + +Changed: + AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus +Removed: + AcpiSetGpeType +New: + AcpiSetGpe + +Implemented write support for DataTable operation regions. These regions +are +defined via the DataTableRegion() operator. Previously, only read support +was +implemented. The ACPI specification allows DataTableRegions to be +read/write, +however. + +Implemented a new subsystem option to force a copy of the DSDT to local +memory. Optionally copy the entire DSDT to local memory (instead of +simply +mapping it.) There are some (albeit very rare) BIOSs that corrupt or +replace +the original DSDT, creating the need for this option. Default is FALSE, +do +not copy the DSDT. + +Implemented detection of a corrupted or replaced DSDT. This change adds +support to detect a DSDT that has been corrupted and/or replaced from +outside +the OS (by firmware). This is typically catastrophic for the system, but +has +been seen on some machines. Once this problem has been detected, the DSDT +copy option can be enabled via system configuration. Lin Ming, Bob Moore. + +Fixed two problems with AcpiReallocateRootTable during the root table +copy. +When copying the root table to the new allocation, the length used was +incorrect. The new size was used instead of the current table size, +meaning +too much data was copied. Also, the count of available slots for ACPI +tables +was not set correctly. Alexey Starikovskiy, Bob Moore. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total + Debug Version: 163.4K Code, 51.1K Data, 214.5K Total + Current Release: + Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total + Debug Version: 163.5K Code, 51.3K Data, 214.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implement limited typechecking for values returned from predefined +control methods. The type of any returned static (unnamed) object is now +validated. For example, Return(1). ACPICA BZ 786. + +iASL: Fixed a predefined name object verification regression. Fixes a +problem +introduced in version 20100304. An error is incorrectly generated if a +predefined name is declared as a static named object with a value defined +using the keywords "Zero", "One", or "Ones". Lin Ming. + +iASL: Added Windows 7 support for the -g option (get local ACPI tables) +by +reducing the requested registry access rights. ACPICA BZ 842. + +Disassembler: fixed a possible fault when generating External() +statements. +Introduced in commit ae7d6fd: Properly handle externals with parent- +prefix +(carat). Fixes a string length allocation calculation. Lin Ming. + +---------------------------------------- +04 March 2010. Summary of changes for version 20100304: + +1) ACPI CA Core Subsystem: + +Fixed a possible problem with the AML Mutex handling function +AcpiExReleaseMutex where the function could fault under the very rare +condition when the interpreter has blocked, the interpreter lock is +released, +the interpreter is then reentered via the same thread, and attempts to +acquire an AML mutex that was previously acquired. FreeBSD report 140979. +Lin +Ming. + +Implemented additional configuration support for the AML "Debug Object". +Output from the debug object can now be enabled via a global variable, +AcpiGbl_EnableAmlDebugObject. This will assist with remote machine +debugging. +This debug output is now available in the release version of ACPICA +instead +of just the debug version. Also, the entire debug output module can now +be +configured out of the ACPICA build if desired. One new file added, +executer/exdebug.c. Lin Ming, Bob Moore. + +Added header support for the ACPI MCHI table (Management Controller Host +Interface Table). This table was added in ACPI 4.0, but the defining +document +has only recently become available. + +Standardized output of integer values for ACPICA warnings/errors. Always +use +0x prefix for hex output, always use %u for unsigned integer decimal +output. +Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about +400 +invocations.) These invocations were converted from the original +ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total + Debug Version: 163.5K Code, 50.9K Data, 214.4K Total + Current Release: + Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total + Debug Version: 163.4K Code, 51.1K Data, 214.5K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented typechecking support for static (non-control method) +predefined named objects that are declared with the Name() operator. For +example, the type of this object is now validated to be of type Integer: +Name(_BBN, 1). This change migrates the compiler to using the core +predefined +name table instead of maintaining a local version. Added a new file, +aslpredef.c. ACPICA BZ 832. + +Disassembler: Added support for the ACPI 4.0 MCHI table. + +---------------------------------------- +21 January 2010. Summary of changes for version 20100121: + +1) ACPI CA Core Subsystem: + +Added the 2010 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, the +tools/utilities, and the test suites. + +Implemented a change to the AcpiGetDevices interface to eliminate +unnecessary +invocations of the _STA method. In the case where a specific _HID is +requested, do not run _STA until a _HID match is found. This eliminates +potentially dozens of _STA calls during a search for a particular +device/HID, +which in turn can improve boot times. ACPICA BZ 828. Lin Ming. + +Implemented an additional repair for predefined method return values. +Attempt +to repair unexpected NULL elements within returned Package objects. +Create +an +Integer of value zero, a NULL String, or a zero-length Buffer as +appropriate. +ACPICA BZ 818. Lin Ming, Bob Moore. + +Removed the obsolete ACPI_INTEGER data type. This type was introduced as +the +code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 +(with +64-bit AML integers). It is now obsolete and this change removes it from +the +ACPICA code base, replaced by UINT64. The original typedef has been +retained +for now for compatibility with existing device driver code. ACPICA BZ +824. + +Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field +in +the parse tree object. + +Added additional warning options for the gcc-4 generation. Updated the +source +accordingly. This includes some code restructuring to eliminate +unreachable +code, elimination of some gotos, elimination of unused return values, +some +additional casting, and removal of redundant declarations. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total + Debug Version: 163.4K Code, 50.8K Data, 214.2K Total + Current Release: + Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total + Debug Version: 163.5K Code, 50.9K Data, 214.4K Total + +2) iASL Compiler/Disassembler and Tools: + +No functional changes for this release. + +---------------------------------------- +14 December 2009. Summary of changes for version 20091214: + +1) ACPI CA Core Subsystem: + +Enhanced automatic data type conversions for predefined name repairs. +This +change expands the automatic repairs/conversions for predefined name +return +values to make Integers, Strings, and Buffers fully interchangeable. +Also, +a +Buffer can be converted to a Package of Integers if necessary. The +nsrepair.c +module was completely restructured. Lin Ming, Bob Moore. + +Implemented automatic removal of null package elements during predefined +name +repairs. This change will automatically remove embedded and trailing NULL +package elements from returned package objects that are defined to +contain +a +variable number of sub-packages. The driver is then presented with a +package +with no null elements to deal with. ACPICA BZ 819. + +Implemented a repair for the predefined _FDE and _GTM names. The expected +return value for both names is a Buffer of 5 DWORDs. This repair fixes +two +possible problems (both seen in the field), where a package of integers +is +returned, or a buffer of BYTEs is returned. With assistance from Jung-uk +Kim. + +Implemented additional module-level code support. This change will +properly +execute module-level code that is not at the root of the namespace (under +a +Device object, etc.). Now executes the code within the current scope +instead +of the root. ACPICA BZ 762. Lin Ming. + +Fixed possible mutex acquisition errors when running _REG methods. Fixes +a +problem where mutex errors can occur when running a _REG method that is +in +the same scope as a method-defined operation region or an operation +region +under a module-level IF block. This type of code is rare, so the problem +has +not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. + +Fixed a possible memory leak during module-level code execution. An +object +could be leaked for each block of executed module-level code if the +interpreter slack mode is enabled This change deletes any implicitly +returned +object from the module-level code block. Lin Ming. + +Removed messages for successful predefined repair(s). The repair +mechanism +was considered too wordy. Now, messages are only unconditionally emitted +if +the return object cannot be repaired. Existing messages for successful +repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ +827. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total + Debug Version: 162.7K Code, 50.8K Data, 213.5K Total + Current Release: + Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total + Debug Version: 163.4K Code, 50.8K Data, 214.2K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a regression introduced in 20091112 where intermediate .SRC +files +were no longer automatically removed at the termination of the compile. + +acpiexec: Implemented the -f option to specify default region fill value. +This option specifies the value used to initialize buffers that simulate +operation regions. Default value is zero. Useful for debugging problems +that +depend on a specific initial value for a region or field. + +---------------------------------------- +12 November 2009. Summary of changes for version 20091112: + +1) ACPI CA Core Subsystem: + +Implemented a post-order callback to AcpiWalkNamespace. The existing +interface only has a pre-order callback. This change adds an additional +parameter for a post-order callback which will be more useful for bus +scans. +ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. + +Modified the behavior of the operation region memory mapping cache for +SystemMemory. Ensure that the memory mappings created for operation +regions +do not cross 4K page boundaries. Crossing a page boundary while mapping +regions can cause kernel warnings on some hosts if the pages have +different +attributes. Such regions are probably BIOS bugs, and this is the +workaround. +Linux BZ 14445. Lin Ming. + +Implemented an automatic repair for predefined methods that must return +sorted lists. This change will repair (by sorting) packages returned by +_ALR, +_PSS, and _TSS. Drivers can now assume that the packages are correctly +sorted +and do not contain NULL package elements. Adds one new file, +namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. + +Fixed a possible fault during predefined name validation if a return +Package +object contains NULL elements. Also adds a warning if a NULL element is +followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement +may +include repair or removal of all such NULL elements where possible. + +Implemented additional module-level executable AML code support. This +change +will execute module-level code that is not at the root of the namespace +(under a Device object, etc.) at table load time. Module-level executable +AML +code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. + +Implemented a new internal function to create Integer objects. This +function +simplifies miscellaneous object creation code. ACPICA BZ 823. + +Reduced the severity of predefined repair messages, Warning to Info. +Since +the object was successfully repaired, a warning is too severe. Reduced to +an +info message for now. These messages may eventually be changed to debug- +only. +ACPICA BZ 812. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total + Debug Version: 161.8K Code, 50.6K Data, 212.4K Total + Current Release: + Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total + Debug Version: 162.7K Code, 50.8K Data, 213.5K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented Switch() with While(1) so that Break works correctly. +This +change correctly implements the Switch operator with a surrounding +While(1) +so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. + +iASL: Added a message if a package initializer list is shorter than +package +length. Adds a new remark for a Package() declaration if an initializer +list +exists, but is shorter than the declared length of the package. Although +technically legal, this is probably a coding error and it is seen in the +field. ACPICA BZ 815. Lin Ming, Bob Moore. + +iASL: Fixed a problem where the compiler could fault after the maximum +number +of errors was reached (200). + +acpixtract: Fixed a possible warning for pointer cast if the compiler +warning +level set very high. + +---------------------------------------- +13 October 2009. Summary of changes for version 20091013: + +1) ACPI CA Core Subsystem: + +Fixed a problem where an Operation Region _REG method could be executed +more +than once. If a custom address space handler is installed by the host +before +the "initialize operation regions" phase of the ACPICA initialization, +any +_REG methods for that address space could be executed twice. This change +fixes the problem. ACPICA BZ 427. Lin Ming. + +Fixed a possible memory leak for the Scope() ASL operator. When the exact +invocation of "Scope(\)" is executed (change scope to root), one internal +operand object was leaked. Lin Ming. + +Implemented a run-time repair for the _MAT predefined method. If the _MAT +return value is defined as a Field object in the AML, and the field +size is less than or equal to the default width of an integer (32 or +64),_MAT +can incorrectly return an Integer instead of a Buffer. ACPICA now +automatically repairs this problem. ACPICA BZ 810. + +Implemented a run-time repair for the _BIF and _BIX predefined methods. +The +"OEM Information" field is often incorrectly returned as an Integer with +value zero if the field is not supported by the platform. This is due to +an +ambiguity in the ACPI specification. The field should always be a string. +ACPICA now automatically repairs this problem by returning a NULL string +within the returned Package. ACPICA BZ 807. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total + Debug Version: 161.7K Code, 50.9K Data, 212.6K Total + Current Release: + Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total + Debug Version: 161.8K Code, 50.6K Data, 212.4K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed a problem where references to external symbols that +contained one or more parent-prefixes (carats) were not handled +correctly, +possibly causing a fault. ACPICA BZ 806. Lin Ming. + +Disassembler: Restructured the code so that all functions that handle +external symbols are in a single module. One new file is added, +common/dmextern.c. + +AML Debugger: Added a max count argument for the Batch command (which +executes multiple predefined methods within the namespace.) + +iASL: Updated the compiler documentation (User Reference.) Available at +http://www.acpica.org/documentation/. ACPICA BZ 750. + +AcpiXtract: Updated for Lint and other formatting changes. Close all open +files. + +---------------------------------------- +03 September 2009. Summary of changes for version 20090903: + +1) ACPI CA Core Subsystem: + +For Windows Vista compatibility, added the automatic execution of an _INI +method located at the namespace root (\_INI). This method is executed at +table load time. This support is in addition to the automatic execution +of +\_SB._INI. Lin Ming. + +Fixed a possible memory leak in the interpreter for AML package objects +if +the package initializer list is longer than the defined size of the +package. +This apparently can only happen if the BIOS changes the package size on +the +fly (seen in a _PSS object), as ASL compilers do not allow this. The +interpreter will truncate the package to the defined size (and issue an +error +message), but previously could leave the extra objects undeleted if they +were +pre-created during the argument processing (such is the case if the +package +consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. + +Fixed a problem seen when a Buffer or String is stored to itself via ASL. +This has been reported in the field. Previously, ACPICA would zero out +the +buffer/string. Now, the operation is treated as a noop. Provides Windows +compatibility. ACPICA BZ 803. Lin Ming. + +Removed an extraneous error message for ASL constructs of the form +Store(LocalX,LocalX) when LocalX is uninitialized. These curious +statements +are seen in many BIOSs and are once again treated as NOOPs and no error +is +emitted when they are encountered. ACPICA BZ 785. + +Fixed an extraneous warning message if a _DSM reserved method returns a +Package object. _DSM can return any type of object, so validation on the +return type cannot be performed. ACPICA BZ 802. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total + Debug Version: 161.6K Code, 50.9K Data, 212.5K Total + Current Release: + Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total + Debug Version: 161.7K Code, 50.9K Data, 212.6K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a problem with the use of the Alias operator and Resource +Templates. The correct alias is now constructed and no error is emitted. +ACPICA BZ 738. + +iASL: Implemented the -I option to specify additional search directories +for +include files. Allows multiple additional search paths for include files. +Directories are searched in the order specified on the command line +(after +the local directory is searched.) ACPICA BZ 800. + +iASL: Fixed a problem where the full pathname for include files was not +emitted for warnings/errors. This caused the IDE support to not work +properly. ACPICA BZ 765. + +iASL: Implemented the -@ option to specify a Windows-style response file +containing additional command line options. ACPICA BZ 801. + +AcpiExec: Added support to load multiple AML files simultaneously (such +as +a +DSDT and multiple SSDTs). Also added support for wildcards within the AML +pathname. These features allow all machine tables to be easily loaded and +debugged together. ACPICA BZ 804. + +Disassembler: Added missing support for disassembly of HEST table Error +Bank +subtables. + +---------------------------------------- +30 July 2009. Summary of changes for version 20090730: + +The ACPI 4.0 implementation for ACPICA is complete with this release. + +1) ACPI CA Core Subsystem: + +ACPI 4.0: Added header file support for all new and changed ACPI tables. +Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are +new +for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, +BERT, +EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. +There +have been some ACPI 4.0 changes to other existing tables. Split the large +actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. + +ACPI 4.0: Implemented predefined name validation for all new names. There +are +31 new names in ACPI 4.0. The predefined validation module was split into +two +files. The new file is namespace/nsrepair.c. ACPICA BZ 770. + +Implemented support for so-called "module-level executable code". This is +executable AML code that exists outside of any control method and is +intended +to be executed at table load time. Although illegal since ACPI 2.0, this +type +of code still exists and is apparently still being created. Blocks of +this +code are now detected and executed as intended. Currently, the code +blocks +must exist under either an If, Else, or While construct; these are the +typical cases seen in the field. ACPICA BZ 762. Lin Ming. + +Implemented an automatic dynamic repair for predefined names that return +nested Package objects. This applies to predefined names that are defined +to +return a variable-length Package of sub-packages. If the number of sub- +packages is one, BIOS code is occasionally seen that creates a simple +single +package with no sub-packages. This code attempts to fix the problem by +wrapping a new package object around the existing package. These methods +can +be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA +BZ +790. + +Fixed a regression introduced in 20090625 for the AcpiGetDevices +interface. +The _HID/_CID matching was broken and no longer matched IDs correctly. +ACPICA +BZ 793. + +Fixed a problem with AcpiReset where the reset would silently fail if the +register was one of the protected I/O ports. AcpiReset now bypasses the +port +validation mechanism. This may eventually be driven into the +AcpiRead/Write +interfaces. + +Fixed a regression related to the recent update of the AcpiRead/Write +interfaces. A sleep/suspend could fail if the optional PM2 Control +register +does not exist during an attempt to write the Bus Master Arbitration bit. +(However, some hosts already delete the code that writes this bit, and +the +code may in fact be obsolete at this date.) ACPICA BZ 799. + +Fixed a problem where AcpiTerminate could fault if inadvertently called +twice +in succession. ACPICA BZ 795. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total + Debug Version: 160.5K Code, 50.6K Data, 211.1K Total + Current Release: + Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total + Debug Version: 161.6K Code, 50.9K Data, 212.5K Total + +2) iASL Compiler/Disassembler and Tools: + +ACPI 4.0: Implemented disassembler support for all new ACPI tables and +changes to existing tables. ACPICA BZ 775. + +---------------------------------------- +25 June 2009. Summary of changes for version 20090625: + +The ACPI 4.0 Specification was released on June 16 and is available at +www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will +continue for the next few releases. + +1) ACPI CA Core Subsystem: + +ACPI 4.0: Implemented interpreter support for the IPMI operation region +address space. Includes support for bi-directional data buffers and an +IPMI +address space handler (to be installed by an IPMI device driver.) ACPICA +BZ +773. Lin Ming. + +ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. +Includes +support in both the header files and the disassembler. + +Completed a major update for the AcpiGetObjectInfo external interface. +Changes include: + - Support for variable, unlimited length HID, UID, and CID strings. + - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, +etc.) + - Call the _SxW power methods on behalf of a device object. + - Determine if a device is a PCI root bridge. + - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. +These changes will require an update to all callers of this interface. +See +the updated ACPICA Programmer Reference for details. One new source file +has +been added - utilities/utids.c. ACPICA BZ 368, 780. + +Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit +transfers. The Value parameter has been extended from 32 bits to 64 bits +in +order to support new ACPI 4.0 tables. These changes will require an +update +to +all callers of these interfaces. See the ACPICA Programmer Reference for +details. ACPICA BZ 768. + +Fixed several problems with AcpiAttachData. The handler was not invoked +when +the host node was deleted. The data sub-object was not automatically +deleted +when the host node was deleted. The interface to the handler had an +unused +parameter, this was removed. ACPICA BZ 778. + +Enhanced the function that dumps ACPI table headers. All non-printable +characters in the string fields are now replaced with '?' (Signature, +OemId, +OemTableId, and CompilerId.) ACPI tables with non-printable characters in +these fields are occasionally seen in the field. ACPICA BZ 788. + +Fixed a problem with predefined method repair code where the code that +attempts to repair/convert an object of incorrect type is only executed +on +the first time the predefined method is called. The mechanism that +disables +warnings on subsequent calls was interfering with the repair mechanism. +ACPICA BZ 781. + +Fixed a possible memory leak in the predefined validation/repair code +when +a +buffer is automatically converted to an expected string object. + +Removed obsolete 16-bit files from the distribution and from the current +git +tree head. ACPICA BZ 776. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total + Debug Version: 158.9K Code, 50.0K Data, 208.9K Total + Current Release: + Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total + Debug Version: 160.5K Code, 50.6K Data, 211.1K Total + +2) iASL Compiler/Disassembler and Tools: + +ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI +operation region keyword. ACPICA BZ 771, 772. Lin Ming. + +ACPI 4.0: iASL - implemented compile-time validation support for all new +predefined names and control methods (31 total). ACPICA BZ 769. + +---------------------------------------- +21 May 2009. Summary of changes for version 20090521: + +1) ACPI CA Core Subsystem: + +Disabled the preservation of the SCI enable bit in the PM1 control +register. +The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification +to +be +a "preserved" bit - "OSPM always preserves this bit position", section +4.7.3.2.1. However, some machines fail if this bit is in fact preserved +because the bit needs to be explicitly set by the OS as a workaround. No +machines fail if the bit is not preserved. Therefore, ACPICA no longer +attempts to preserve this bit. + +Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or +incorrectly formed _PRT package could cause a fault. Added validation to +ensure that each package element is actually a sub-package. + +Implemented a new interface to install or override a single control +method, +AcpiInstallMethod. This interface is useful when debugging in order to +repair +an existing method or to install a missing method without having to +override +the entire ACPI table. See the ACPICA Programmer Reference for use and +examples. Lin Ming, Bob Moore. + +Fixed several reference count issues with the DdbHandle object that is +created from a Load or LoadTable operator. Prevent premature deletion of +the +object. Also, mark the object as invalid once the table has been +unloaded. +This is needed because the handle itself may not be deleted after the +table +unload, depending on whether it has been stored in a named object by the +caller. Lin Ming. + +Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple +mutexes of the same sync level are acquired but then not released in +strict +opposite order, the internally maintained Current Sync Level becomes +confused +and can cause subsequent execution errors. ACPICA BZ 471. + +Changed the allowable release order for ASL mutex objects. The ACPI 4.0 +specification has been changed to make the SyncLevel for mutex objects +more +useful. When releasing a mutex, the SyncLevel of the mutex must now be +the +same as the current sync level. This makes more sense than the previous +rule +(SyncLevel less than or equal). This change updates the code to match the +specification. + +Fixed a problem with the local version of the AcpiOsPurgeCache function. +The +(local) cache must be locked during all cache object deletions. Andrew +Baumann. + +Updated the Load operator to use operation region interfaces. This +replaces +direct memory mapping with region access calls. Now, all region accesses +go +through the installed region handler as they should. + +Simplified and optimized the NsGetNextNode function. Reduced parameter +count +and reduced code for this frequently used function. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total + Debug Version: 158.0K Code, 49.9K Data, 207.9K Total + Current Release: + Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total + Debug Version: 158.9K Code, 50.0K Data, 208.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some +problems +with sub-table disassembly and handling invalid sub-tables. Attempt +recovery +after an invalid sub-table ID. + +---------------------------------------- +22 April 2009. Summary of changes for version 20090422: + +1) ACPI CA Core Subsystem: + +Fixed a compatibility issue with the recently released I/O port +protection +mechanism. For windows compatibility, 1) On a port protection violation, +simply ignore the request and do not return an exception (allow the +control +method to continue execution.) 2) If only part of the request overlaps a +protected port, read/write the individual ports that are not protected. +Linux +BZ 13036. Lin Ming + +Enhanced the execution of the ASL/AML BreakPoint operator so that it +actually +breaks into the AML debugger if the debugger is present. This matches the +ACPI-defined behavior. + +Fixed several possible warnings related to the use of the configurable +ACPI_THREAD_ID. This type can now be configured as either an integer or a +pointer with no warnings. Also fixes several warnings in printf-like +statements for the 64-bit build when the type is configured as a pointer. +ACPICA BZ 766, 767. + +Fixed a number of possible warnings when compiling with gcc 4+ (depending +on +warning options.) Examples include printf formats, aliasing, unused +globals, +missing prototypes, missing switch default statements, use of non-ANSI +library functions, use of non-ANSI constructs. See generate/unix/Makefile +for +a list of warning options used with gcc 3 and 4. ACPICA BZ 735. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total + Debug Version: 157.7K Code, 49.9K Data, 207.6K Total + Current Release: + Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total + Debug Version: 158.0K Code, 49.9K Data, 207.9K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a generation warning from Bison 2.3 and fixed several +warnings +on +the 64-bit build. + +iASL: Fixed a problem where the Unix/Linux versions of the compiler could +not +correctly digest Windows/DOS formatted files (with CR/LF). + +iASL: Added a new option for "quiet mode" (-va) that produces only the +compilation summary, not individual errors and warnings. Useful for large +batch compilations. + +AcpiExec: Implemented a new option (-z) to enable a forced +semaphore/mutex +timeout that can be used to detect hang conditions during execution of +AML +code (includes both internal semaphores and AML-defined mutexes and +events.) + +Added new makefiles for the generation of acpica in a generic unix-like +environment. These makefiles are intended to generate the acpica tools +and +utilities from the original acpica git source tree structure. + +Test Suites: Updated and cleaned up the documentation files. Updated the +copyrights to 2009, affecting all source files. Use the new version of +iASL +with quiet mode. Increased the number of available semaphores in the +Windows +OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, +added +an alternate implementation of the semaphore timeout to allow aslts to +execute fully on Cygwin. + +---------------------------------------- +20 March 2009. Summary of changes for version 20090320: + +1) ACPI CA Core Subsystem: + +Fixed a possible race condition between AcpiWalkNamespace and dynamic +table +unloads. Added a reader/writer locking mechanism to allow multiple +concurrent +namespace walks (readers), but block a dynamic table unload until it can +gain +exclusive write access to the namespace. This fixes a problem where a +table +unload could (possibly catastrophically) delete the portion of the +namespace +that is currently being examined by a walk. Adds a new file, utlock.c, +that +implements the reader/writer lock mechanism. ACPICA BZ 749. + +Fixed a regression introduced in version 20090220 where a change to the +FADT +handling could cause the ACPICA subsystem to access non-existent I/O +ports. + +Modified the handling of FADT register and table (FACS/DSDT) addresses. +The +FADT can contain both 32-bit and 64-bit versions of these addresses. +Previously, the 64-bit versions were favored, meaning that if both 32 and +64 +versions were valid, but not equal, the 64-bit version was used. This was +found to cause some machines to fail. Now, in this case, the 32-bit +version +is used instead. This now matches the Windows behavior. + +Implemented a new mechanism to protect certain I/O ports. Provides +Microsoft +compatibility and protects the standard PC I/O ports from access via AML +code. Adds a new file, hwvalid.c + +Fixed a possible extraneous warning message from the FADT support. The +message warns of a 32/64 length mismatch between the legacy and GAS +definitions for a register. + +Removed the obsolete AcpiOsValidateAddress OSL interface. This interface +is +made obsolete by the port protection mechanism above. It was previously +used +to validate the entire address range of an operation region, which could +be +incorrect if the range included illegal ports, but fields within the +operation region did not actually access those ports. Validation is now +performed on a per-field basis instead of the entire region. + +Modified the handling of the PM1 Status Register ignored bit (bit 11.) +Ignored bits must be "preserved" according to the ACPI spec. Usually, +this +means a read/modify/write when writing to the register. However, for +status +registers, writing a one means clear the event. Writing a zero means +preserve +the event (do not clear.) This behavior is clarified in the ACPI 4.0 +spec, +and the ACPICA code now simply always writes a zero to the ignored bit. + +Modified the handling of ignored bits for the PM1 A/B Control Registers. +As +per the ACPI specification, for the control registers, preserve +(read/modify/write) all bits that are defined as either reserved or +ignored. + +Updated the handling of write-only bits in the PM1 A/B Control Registers. +When reading the register, zero the write-only bits as per the ACPI spec. +ACPICA BZ 443. Lin Ming. + +Removed "Linux" from the list of supported _OSI strings. Linux no longer +wants to reply true to this request. The Windows strings are the only +paths +through the AML that are tested and known to work properly. + + Previous Release: + Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total + Debug Version: 156.9K Code, 49.8K Data, 206.7K Total + Current Release: + Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total + Debug Version: 157.7K Code, 49.9K Data, 207.6K Total + +2) iASL Compiler/Disassembler and Tools: + +Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c +and +aetables.c + +---------------------------------------- +20 February 2009. Summary of changes for version 20090220: + +1) ACPI CA Core Subsystem: + +Optimized the ACPI register locking. Removed locking for reads from the +ACPI +bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock +is +not required when reading the single-bit registers. The +AcpiGetRegisterUnlocked function is no longer needed and has been +removed. +This will improve performance for reads on these registers. ACPICA BZ +760. + +Fixed the parameter validation for AcpiRead/Write. Now return +AE_BAD_PARAMETER if the input register pointer is null, and +AE_BAD_ADDRESS +if +the register has an address of zero. Previously, these cases simply +returned +AE_OK. For optional registers such as PM1B status/enable/control, the +caller +should check for a valid register address before calling. ACPICA BZ 748. + +Renamed the external ACPI bit register access functions. Renamed +AcpiGetRegister and AcpiSetRegister to clarify the purpose of these +functions. The new names are AcpiReadBitRegister and +AcpiWriteBitRegister. +Also, restructured the code for these functions by simplifying the code +path +and condensing duplicate code to reduce code size. + +Added new functions to transparently handle the possibly split PM1 A/B +registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two +functions +now handle the split registers for PM1 Status, Enable, and Control. +ACPICA +BZ +746. + +Added a function to handle the PM1 control registers, +AcpiHwWritePm1Control. +This function writes both of the PM1 control registers (A/B). These +registers +are different than the PM1 A/B status and enable registers in that +different +values can be written to the A/B registers. Most notably, the SLP_TYP +bits +can be different, as per the values returned from the _Sx predefined +methods. + +Removed an extra register write within AcpiHwClearAcpiStatus. This +function +was writing an optional PM1B status register twice. The existing call to +the +low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 +A/B +register. ACPICA BZ 751. + +Split out the PM1 Status registers from the FADT. Added new globals for +these +registers (A/B), similar to the way the PM1 Enable registers are handled. +Instead of overloading the FADT Event Register blocks. This makes the +code +clearer and less prone to error. + +Fixed the warning message for when the platform contains too many ACPI +tables +for the default size of the global root table data structure. The +calculation +for the truncation value was incorrect. + +Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this +obsolete macro, since it is now a simple reference to ->common.type. +There +were about 150 invocations of the macro across 41 files. ACPICA BZ 755. + +Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as +TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to +simply SLEEP_TYPE. ACPICA BZ 754. + +Conditionally compile the AcpiSetFirmwareWakingVector64 function. This +function is only needed on 64-bit host operating systems and is thus not +included for 32-bit hosts. + +Debug output: print the input and result for invocations of the _OSI +reserved +control method via the ACPI_LV_INFO debug level. Also, reduced some of +the +verbosity of this debug level. Len Brown. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total + Debug Version: 157.3K Code, 49.8K Data, 207.1K Total + Current Release: + Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total + Debug Version: 156.9K Code, 49.8K Data, 206.7K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the +various legal performance profiles. + +---------------------------------------- +23 January 2009. Summary of changes for version 20090123: + +1) ACPI CA Core Subsystem: + +Added the 2009 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, and +the tools/utilities. + +Implemented a change to allow the host to override any ACPI table, +including +dynamically loaded tables. Previously, only the DSDT could be replaced by +the +host. With this change, the AcpiOsTableOverride interface is called for +each +table found in the RSDT/XSDT during ACPICA initialization, and also +whenever +a table is dynamically loaded via the AML Load operator. + +Updated FADT flag definitions, especially the Boot Architecture flags. + +Debugger: For the Find command, automatically pad the input ACPI name +with +underscores if the name is shorter than 4 characters. This enables a +match +with the actual namespace entry which is itself padded with underscores. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total + Debug Version: 157.1K Code, 49.7K Data, 206.8K Total + Current Release: + Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total + Debug Version: 157.3K Code, 49.8K Data, 207.1K Total + +2) iASL Compiler/Disassembler and Tools: + +Fix build error under Bison-2.4. + +Disassembler: Enhanced FADT support. Added decoding of the Boot +Architecture +flags. Now decode all flags, regardless of the FADT version. Flag output +includes the FADT version which first defined each flag. + +The iASL -g option now dumps the RSDT to a file (in addition to the FADT +and +DSDT). Windows only. + +---------------------------------------- +04 December 2008. Summary of changes for version 20081204: + +1) ACPI CA Core Subsystem: + +The ACPICA Programmer Reference has been completely updated and revamped +for +this release. This includes updates to the external interfaces, OSL +interfaces, the overview sections, and the debugger reference. + +Several new ACPICA interfaces have been implemented and documented in the +programmer reference: +AcpiReset - Writes the reset value to the FADT-defined reset register. +AcpiDisableAllGpes - Disable all available GPEs. +AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. +AcpiGetGpeDevice - Get the GPE block device associated with a GPE. +AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. +AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) +AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) + +Most of the public ACPI hardware-related interfaces have been moved to a +new +file, components/hardware/hwxface.c + +Enhanced the FADT parsing and low-level ACPI register access: The ACPI +register lengths within the FADT are now used, and the low level ACPI +register access no longer hardcodes the ACPI register lengths. Given that +there may be some risk in actually trusting the FADT register lengths, a +run- +time option was added to fall back to the default hardcoded lengths if +the +FADT proves to contain incorrect values - UseDefaultRegisterWidths. This +option is set to true for now, and a warning is issued if a suspicious +FADT +register length is overridden with the default value. + +Fixed a reference count issue in NsRepairObject. This problem was +introduced +in version 20081031 as part of a fix to repair Buffer objects within +Packages. Lin Ming. + +Added semaphore support to the Linux/Unix application OS-services layer +(OSL). ACPICA BZ 448. Lin Ming. + +Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes +will +be implemented in the OSL, or will binary semaphores be used instead. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total + Debug Version: 156.4K Code, 49.4K Data, 205.8K Total + Current Release: + Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total + Debug Version: 157.1K Code, 49.7K Data, 206.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Completed the '-e' option to include additional ACPI tables in +order +to +aid with disassembly and External statement generation. ACPICA BZ 742. +Lin +Ming. + +iASL: Removed the "named object in while loop" error. The compiler cannot +determine how many times a loop will execute. ACPICA BZ 730. + +Disassembler: Implemented support for FADT revision 2 (MS extension). +ACPICA +BZ 743. + +Disassembler: Updates for several ACPI data tables (HEST, EINJ, and +MCFG). + +---------------------------------------- +31 October 2008. Summary of changes for version 20081031: + +1) ACPI CA Core Subsystem: + +Restructured the ACPICA header files into public/private. acpi.h now +includes +only the "public" acpica headers. All other acpica headers are "private" +and +should not be included by acpica users. One new file, accommon.h is used +to +include the commonly used private headers for acpica code generation. +Future +plans include moving all private headers to a new subdirectory. + +Implemented an automatic Buffer->String return value conversion for +predefined ACPI methods. For these methods (such as _BIF), added +automatic +conversion for return objects that are required to be a String, but a +Buffer +was found instead. This can happen when reading string battery data from +an +operation region, because it used to be difficult to convert the data +from +buffer to string from within the ASL. Ensures that the host OS is +provided +with a valid null-terminated string. Linux BZ 11822. + +Updated the FACS waking vector interfaces. Split +AcpiSetFirmwareWakingVector +into two: one for the 32-bit vector, another for the 64-bit vector. This +is +required because the host OS must setup the wake much differently for +each +vector (real vs. protected mode, etc.) and the interface itself should +not +be +deciding which vector to use. Also, eliminated the +GetFirmwareWakingVector +interface, as it served no purpose (only the firmware reads the vector, +OS +only writes the vector.) ACPICA BZ 731. + +Implemented a mechanism to escape infinite AML While() loops. Added a +loop +counter to force exit from AML While loops if the count becomes too +large. +This can occur in poorly written AML when the hardware does not respond +within a while loop and the loop does not implement a timeout. The +maximum +loop count is configurable. A new exception code is returned when a loop +is +broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. + +Optimized the execution of AML While loops. Previously, a control state +object was allocated and freed for each execution of the loop. The +optimization is to simply reuse the control state for each iteration. +This +speeds up the raw loop execution time by about 5%. + +Enhanced the implicit return mechanism. For Windows compatibility, return +an +implicit integer of value zero for methods that contain no executable +code. +Such methods are seen in the field as stubs (presumably), and can cause +drivers to fail if they expect a return value. Lin Ming. + +Allow multiple backslashes as root prefixes in namepaths. In a fully +qualified namepath, allow multiple backslash prefixes. This can happen +(and +is seen in the field) because of the use of a double-backslash in strings +(since backslash is the escape character) causing confusion. ACPICA BZ +739 +Lin Ming. + +Emit a warning if two different FACS or DSDT tables are discovered in the +FADT. Checks if there are two valid but different addresses for the FACS +and +DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) + +Consolidated the method argument count validation code. Merged the code +that +validates control method argument counts into the predefined validation +module. Eliminates possible multiple warnings for incorrect argument +counts. + +Implemented ACPICA example code. Includes code for ACPICA initialization, +handler installation, and calling a control method. Available at +source/tools/examples. + +Added a global pointer for FACS table to simplify internal FACS access. +Use +the global pointer instead of using AcpiGetTableByIndex for each FACS +access. +This simplifies the code for the Global Lock and the Firmware Waking +Vector(s). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total + Debug Version: 155.8K Code, 49.1K Data, 204.9K Total + Current Release: + Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total + Debug Version: 156.4K Code, 49.4K Data, 205.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Improved disassembly of external method calls. Added the -e option +to +allow the inclusion of additional ACPI tables to help with the +disassembly +of +method invocations and the generation of external declarations during the +disassembly. Certain external method invocations cannot be disassembled +properly without the actual declaration of the method. Use the -e option +to +include the table where the external method(s) are actually declared. +Most +useful for disassembling SSDTs that make method calls back to the master +DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl +-d +-e dsdt.aml ssdt1.aml + +iASL: Fix to allow references to aliases within ASL namepaths. Fixes a +problem where the use of an alias within a namepath would result in a not +found error or cause the compiler to fault. Also now allows forward +references from the Alias operator itself. ACPICA BZ 738. + +---------------------------------------- +26 September 2008. Summary of changes for version 20080926: + +1) ACPI CA Core Subsystem: + +Designed and implemented a mechanism to validate predefined ACPI methods +and +objects. This code validates the predefined ACPI objects (objects whose +names +start with underscore) that appear in the namespace, at the time they are +evaluated. The argument count and the type of the returned object are +validated against the ACPI specification. The purpose of this validation +is +to detect problems with the BIOS-implemented predefined ACPI objects +before +the results are returned to the ACPI-related drivers. Future enhancements +may +include actual repair of incorrect return objects where possible. Two new +files are nspredef.c and acpredef.h. + +Fixed a fault in the AML parser if a memory allocation fails during the +Op +completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. + +Fixed an issue with implicit return compatibility. This change improves +the +implicit return mechanism to be more compatible with the MS interpreter. +Lin +Ming, ACPICA BZ 349. + +Implemented support for zero-length buffer-to-string conversions. Allow +zero +length strings during interpreter buffer-to-string conversions. For +example, +during the ToDecimalString and ToHexString operators, as well as implicit +conversions. Fiodor Suietov, ACPICA BZ 585. + +Fixed two possible memory leaks in the error exit paths of +AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions +are +similar in that they use a stack of state objects in order to eliminate +recursion. The stack must be fully unwound and deallocated if an error +occurs. Lin Ming. ACPICA BZ 383. + +Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the +global +ACPI register table. This bit does not exist and is unused. Lin Ming, Bob +Moore ACPICA BZ 442. + +Removed the obsolete version number in module headers. Removed the +"$Revision" number that appeared in each module header. This version +number +was useful under SourceSafe and CVS, but has no meaning under git. It is +not +only incorrect, it could also be misleading. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.7K Code, 48.2K Data, 201.9K Total + Current Release: + Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total + Debug Version: 155.8K Code, 49.1K Data, 204.9K Total + +---------------------------------------- +29 August 2008. Summary of changes for version 20080829: + +1) ACPI CA Core Subsystem: + +Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type +Reference. Changes include the elimination of cheating on the Object +field +for the DdbHandle subtype, addition of a reference class field to +differentiate the various reference types (instead of an AML opcode), and +the +cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 + +Reduce an error to a warning for an incorrect method argument count. +Previously aborted with an error if too few arguments were passed to a +control method via the external ACPICA interface. Now issue a warning +instead +and continue. Handles the case where the method inadvertently declares +too +many arguments, but does not actually use the extra ones. Applies mainly +to +the predefined methods. Lin Ming. Linux BZ 11032. + +Disallow the evaluation of named object types with no intrinsic value. +Return +AE_TYPE for objects that have no value and therefore evaluation is +undefined: +Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation +of +these types were allowed, but an exception would be generated at some +point +during the evaluation. Now, the error is generated up front. + +Fixed a possible memory leak in the AcpiNsGetExternalPathname function +(nsnames.c). Fixes a leak in the error exit path. + +Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These +debug +levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and +ACPI_EXCEPTION +interfaces. Also added ACPI_DB_EVENTS to correspond with the existing +ACPI_LV_EVENTS. + +Removed obsolete and/or unused exception codes from the acexcep.h header. +There is the possibility that certain device drivers may be affected if +they +use any of these exceptions. + +The ACPICA documentation has been added to the public git source tree, +under +acpica/documents. Included are the ACPICA programmer reference, the iASL +compiler reference, and the changes.txt release logfile. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.9K Code, 48.4K Data, 202.3K Total + Current Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.7K Code, 48.2K Data, 201.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 +defines _SCP with 3 arguments. Previous versions defined it with only 1 +argument. iASL now allows both definitions. + +iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for +zero- +length subtables when disassembling ACPI tables. Also fixed a couple of +errors where a full 16-bit table type field was not extracted from the +input +properly. + +acpisrc: Improve comment counting mechanism for generating source code +statistics. Count first and last lines of multi-line comments as +whitespace, +not comment lines. Handle Linux legal header in addition to standard +acpica +header. + +---------------------------------------- + +29 July 2008. Summary of changes for version 20080729: + +1) ACPI CA Core Subsystem: + +Fix a possible deadlock in the GPE dispatch. Remove call to +AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will +attempt +to acquire the GPE lock but can deadlock since the GPE lock is already +held +at dispatch time. This code was introduced in version 20060831 as a +response +to Linux BZ 6881 and has since been removed from Linux. + +Add a function to dereference returned reference objects. Examines the +return +object from a call to AcpiEvaluateObject. Any Index or RefOf references +are +automatically dereferenced in an attempt to return something useful +(these +reference types cannot be converted into an external ACPI_OBJECT.) +Provides +MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 + +x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new +subtables for the MADT and one new subtable for the SRAT. Includes +disassembler and AcpiSrc support. Data from the Intel 64 Architecture +x2APIC +Specification, June 2008. + +Additional error checking for pathname utilities. Add error check after +all +calls to AcpiNsGetPathnameLength. Add status return from +AcpiNsBuildExternalPath and check after all calls. Add parameter +validation +to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. + +Return status from the global init function AcpiUtGlobalInitialize. This +is +used by both the kernel subsystem and the utilities such as iASL +compiler. +The function could possibly fail when the caches are initialized. Yang +Yi. + +Add a function to decode reference object types to strings. Created for +improved error messages. + +Improve object conversion error messages. Better error messages during +object +conversion from internal to the external ACPI_OBJECT. Used for external +calls +to AcpiEvaluateObject. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total + Debug Version: 153.5K Code, 48.2K Data, 201.7K Total + Current Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.9K Code, 48.4K Data, 202.3K Total + +2) iASL Compiler/Disassembler and Tools: + +Debugger: fix a possible hang when evaluating non-methods. Fixes a +problem +introduced in version 20080701. If the object being evaluated (via +execute +command) is not a method, the debugger can hang while trying to obtain +non- +existent parameters. + +iASL: relax error for using reserved "_T_x" identifiers. These names can +appear in a disassembled ASL file if they were emitted by the original +compiler. Instead of issuing an error or warning and forcing the user to +manually change these names, issue a remark instead. + +iASL: error if named object created in while loop. Emit an error if any +named +object is created within a While loop. If allowed, this code will +generate +a +run-time error on the second iteration of the loop when an attempt is +made +to +create the same named object twice. ACPICA bugzilla 730. + +iASL: Support absolute pathnames for include files. Add support for +absolute +pathnames within the Include operator. previously, only relative +pathnames +were supported. + +iASL: Enforce minimum 1 interrupt in interrupt macro and Resource +Descriptor. +The ACPI spec requires one interrupt minimum. BZ 423 + +iASL: Handle a missing ResourceSource arg, with a present SourceIndex. +Handles the case for the Interrupt Resource Descriptor where +the ResourceSource argument is omitted but ResourceSourceIndex +is present. Now leave room for the Index. BZ 426 + +iASL: Prevent error message if CondRefOf target does not exist. Fixes +cases +where an error message is emitted if the target does not exist. BZ 516 + +iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option +(get ACPI tables on Windows). This was apparently broken in version +20070919. + +AcpiXtract: Handle EOF while extracting data. Correctly handle the case +where +the EOF happens immediately after the last table in the input file. Print +completion message. Previously, no message was displayed in this case. + +---------------------------------------- +01 July 2008. Summary of changes for version 20080701: + +0) Git source tree / acpica.org + +Fixed a problem where a git-clone from http would not transfer the entire +source tree. + +1) ACPI CA Core Subsystem: + +Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one +enable bit. Now performs a read-change-write of the enable register +instead +of simply writing out the cached enable mask. This will prevent +inadvertent +enabling of GPEs if a rogue GPE is received during initialization (before +GPE +handlers are installed.) + +Implemented a copy for dynamically loaded tables. Previously, dynamically +loaded tables were simply mapped - but on some machines this memory is +corrupted after suspend. Now copy the table to a local buffer. For the +OpRegion case, added checksum verify. Use the table length from the table +header, not the region length. For the Buffer case, use the table length +also. Dennis Noordsij, Bob Moore. BZ 10734 + +Fixed a problem where the same ACPI table could not be dynamically loaded +and +unloaded more than once. Without this change, a table cannot be loaded +again +once it has been loaded/unloaded one time. The current mechanism does not +unregister a table upon an unload. During a load, if the same table is +found, +this no longer returns an exception. BZ 722 + +Fixed a problem where the wrong descriptor length was calculated for the +EndTag descriptor in 64-bit mode. The "minimal" descriptors such as +EndTag +are calculated as 12 bytes long, but the actual length in the internal +descriptor is 16 because of the round-up to 8 on the 64-bit build. +Reported +by Linn Crosetto. BZ 728 + +Fixed a possible memory leak in the Unload operator. The DdbHandle +returned +by Load() did not have its reference count decremented during unload, +leading +to a memory leak. Lin Ming. BZ 727 + +Fixed a possible memory leak when deleting thermal/processor objects. Any +associated notify handlers (and objects) were not being deleted. Fiodor +Suietov. BZ 506 + +Fixed the ordering of the ASCII names in the global mutex table to match +the +actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug +only. +Vegard Nossum. BZ 726 + +Enhanced the AcpiGetObjectInfo interface to return the number of required +arguments if the object is a control method. Added this call to the +debugger +so the proper number of default arguments are passed to a method. This +prevents a warning when executing methods from AcpiExec. + +Added a check for an invalid handle in AcpiGetObjectInfo. Return +AE_BAD_PARAMETER if input handle is invalid. BZ 474 + +Fixed an extraneous warning from exconfig.c on the 64-bit build. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total + Debug Version: 153.0K Code, 48.2K Data, 201.2K Total + Current Release: + Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total + Debug Version: 153.5K Code, 48.2K Data, 201.7K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both +resource descriptor names. + +iASL: Detect invalid ASCII characters in input (windows version). Removed +the +"-CF" flag from the flex compile, enables correct detection of non-ASCII +characters in the input. BZ 441 + +iASL: Eliminate warning when result of LoadTable is not used. Eliminate +the +"result of operation not used" warning when the DDB handle returned from +LoadTable is not used. The warning is not needed. BZ 590 + +AcpiExec: Add support for dynamic table load/unload. Now calls _CFG +method +to +pass address of table to the AML. Added option to disable OpRegion +simulation +to allow creation of an OpRegion with a real address that was passed to +_CFG. +All of this allows testing of the Load and Unload operators from +AcpiExec. + +Debugger: update tables command for unloaded tables. Handle unloaded +tables +and use the standard table header output routine. + +---------------------------------------- +09 June 2008. Summary of changes for version 20080609: + +1) ACPI CA Core Subsystem: + +Implemented a workaround for reversed _PRT entries. A significant number +of +BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This +change dynamically detects and repairs this problem. Provides +compatibility +with MS ACPI. BZ 6859 + +Simplified the internal ACPI hardware interfaces to eliminate the locking +flag parameter from Register Read/Write. Added a new external interface, +AcpiGetRegisterUnlocked. + +Fixed a problem where the invocation of a GPE control method could hang. +This +was a regression introduced in 20080514. The new method argument count +validation mechanism can enter an infinite loop when a GPE method is +dispatched. Problem fixed by removing the obsolete code that passed GPE +block +information to the notify handler via the control method parameter +pointer. + +Fixed a problem where the _SST execution status was incorrectly returned +to +the caller of AcpiEnterSleepStatePrep. This was a regression introduced +in +20080514. _SST is optional and a NOT_FOUND exception should never be +returned. BZ 716 + +Fixed a problem where a deleted object could be accessed from within the +AML +parser. This was a regression introduced in version 20080123 as a fix for +the +Unload operator. Lin Ming. BZ 10669 + +Cleaned up the debug operand dump mechanism. Eliminated unnecessary +operands +and eliminated the use of a negative index in a loop. Operands are now +displayed in the correct order, not backwards. This also fixes a +regression +introduced in 20080514 on 64-bit systems where the elimination of +ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ +715 + +Fixed a possible memory leak in EvPciConfigRegionSetup where the error +exit +path did not delete a locally allocated structure. + +Updated definitions for the DMAR and SRAT tables to synchronize with the +current specifications. Includes disassembler support. + +Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect +loop termination value was used. Loop terminated on iteration early, +missing +one mutex. Linn Crosetto + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total + Debug Version: 153.3K Code, 48.3K Data, 201.6K Total + Current Release: + Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total + Debug Version: 153.0K Code, 48.2K Data, 201.2K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support for EisaId() within _CID objects. Now +disassemble integer _CID objects back to EisaId invocations, including +multiple integers within _CID packages. Includes single-step support for +debugger also. + +Disassembler: Added support for DMAR and SRAT table definition changes. + +---------------------------------------- +14 May 2008. Summary of changes for version 20080514: + +1) ACPI CA Core Subsystem: + +Fixed a problem where GPEs were enabled too early during the ACPICA +initialization. This could lead to "handler not installed" errors on some +machines. Moved GPE enable until after _REG/_STA/_INI methods are run. +This +ensures that all operation regions and devices throughout the namespace +have +been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. + +Implemented a change to the enter sleep code. Moved execution of the _GTS +method to just before setting sleep enable bit. The execution was 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. + +Implemented a fix to disable unknown GPEs (2nd version). Now always +disable +the GPE, even if ACPICA thinks 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. + +Fixed a problem with the Field operator where zero-length fields would +return +an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length +ASL +field declarations in Field(), BankField(), and IndexField(). BZ 10606. + +Implemented a fix for the Load operator, now load the table at the +namespace +root. 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 ACPI specification will be updated to reflect this in ACPI 4.0. Lin +Ming. + +Fixed a problem where ACPICA would not Load() tables with unusual +signatures. +Now ignore ACPI table signature for Load() operator. 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. + +Fixed a possible negative array index in AcpiUtValidateException. Added +NULL +fields to the exception string arrays to eliminate a -1 subtraction on +the +SubStatus field. + +Updated the debug tracking macros to reduce overall code and data size. +Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings +instead of pointers to static strings. Jan Beulich and Bob Moore. + +Implemented argument count checking in control method invocation via +AcpiEvaluateObject. Now emit an error if too few arguments, warning if +too +many. This applies only to extern programmatic control method execution, +not +method-to-method calls within the AML. Lin Ming. + +Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is +no +longer needed, especially with the removal of 16-bit support. It was +replaced +mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 +bit +on +32/64-bit platforms is required. + +Added the C const qualifier for appropriate string constants -- mostly +MODULE_NAME and printf format strings. Jan Beulich. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total + Debug Version: 159.4K Code, 64.4K Data, 223.8K Total + Current Release: + Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total + Debug Version: 153.3K Code, 48.3K Data, 201.6K Total + +2) iASL Compiler/Disassembler and Tools: + +Implemented ACPI table revision ID validation in the disassembler. Zero +is +always invalid. For DSDTs, the ID controls the interpreter integer width. +1 +means 32-bit and this is unusual. 2 or greater is 64-bit. + +---------------------------------------- +21 March 2008. Summary of changes for version 20080321: + +1) ACPI CA Core Subsystem: + +Implemented an additional change to the GPE support in order to suppress +spurious or stray GPEs. The AcpiEvDisableGpe function will now +permanently +disable incoming GPEs that are neither enabled nor disabled -- meaning +that +the GPE is unknown to the system. This should prevent future interrupt +floods +from that GPE. BZ 6217 (Zhang Rui) + +Fixed a problem where NULL package elements were not returned to the +AcpiEvaluateObject interface correctly. The element was simply ignored +instead of returning a NULL ACPI_OBJECT package element, 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 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) + +All Reference Objects returned via the AcpiEvaluateObject interface are +now +marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved +for +NULL objects - either NULL package elements or unresolved named +references. + +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 now +an +error message rather than a debug message. Added a debug message for the +opposite case, where NumElements is larger than the Package List (the +package +will be padded out with NULL elements as per the ACPI spec.) + +Implemented several improvements for the output of the ASL "Debug" object +to +clarify and keep all data for a given object on one output line. + +Fixed two size calculation issues with the variable-length Start +Dependent +resource descriptor. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total + Debug Version: 158.9K Code, 64.0K Data, 222.9K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total + Debug Version: 159.4K Code, 64.4K Data, 223.8K Total + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem with the use of the Switch operator where execution of +the +containing method by multiple concurrent threads could cause an +AE_ALREADY_EXISTS exception. This is caused by the fact that there is no +actual Switch opcode, it must be simulated with local named temporary +variables and if/else pairs. The solution chosen was to mark any method +that +uses Switch as Serialized, thus preventing multiple thread entries. BZ +469. + +---------------------------------------- +13 February 2008. Summary of changes for version 20080213: + +1) ACPI CA Core Subsystem: + +Implemented another MS compatibility design change for GPE/Notify +handling. +GPEs are now cleared/enabled asynchronously to allow all pending notifies +to +complete first. It is expected that the OSL will queue the enable request +behind all pending notify requests (may require changes to the local host +OSL +in AcpiOsExecute). Alexey Starikovskiy. + +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 where resource descriptor size optimization could cause a +problem when a _CRS resource template is passed to a _SRS method. The +_SRS +resource template must use the same descriptors (with the same size) as +returned from _CRS. This change affects the following resource +descriptors: +IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ +9487) + +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 + +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 regression introduced in version 20071114. The ACPI_HIDWORD macro +was +inadvertently changed to return a 16-bit value instead of a 32-bit value, +truncating the upper dword of a 64-bit value. This macro is only used to +display debug output, so no incorrect calculations were made. Also, +reimplemented the macro so that a 64-bit shift is not performed by +inefficient compilers. + +Added missing va_end statements that should correspond with each va_start +statement. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total + Debug Version: 159.0K Code, 63.8K Data, 222.8K Total + Current Release: + Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total + Debug Version: 158.9K Code, 64.0K Data, 222.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Implemented full disassembler support for the following new ACPI tables: +BERT, EINJ, and ERST. Implemented partial disassembler support for the +complicated HEST table. These tables support the Windows Hardware Error +Architecture (WHEA). + +---------------------------------------- +23 January 2008. Summary of changes for version 20080123: + +1) ACPI CA Core Subsystem: + +Added the 2008 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, and +the tools/utilities. + +Fixed a problem with the SizeOf operator when used with Package and +Buffer +objects. These objects have deferred execution for some arguments, and +the +execution is now completed before the SizeOf is executed. This problem +caused +unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) +BZ +9558 + +Implemented an enhancement to the interpreter "slack mode". In the +absence +of +an explicit return or an implicitly returned object from the last +executed +opcode, a control method will now implicitly return an integer of value 0 +for +Microsoft compatibility. (Lin Ming) BZ 392 + +Fixed a problem with the Load operator where an exception was not +returned +in +the case where the table is already loaded. (Lin Ming) BZ 463 + +Implemented support for the use of DDBHandles as an Indexed Reference, as +per +the ACPI spec. (Lin Ming) BZ 486 + +Implemented support for UserTerm (Method invocation) for the Unload +operator +as per the ACPI spec. (Lin Ming) BZ 580 + +Fixed a problem with the LoadTable operator where the OemId and +OemTableId +input strings could cause unexpected failures if they were shorter than +the +maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 + +Implemented support for UserTerm (Method invocation) for the Unload +operator +as per the ACPI spec. (Lin Ming) BZ 580 + +Implemented header file support for new ACPI tables - BERT, ERST, EINJ, +HEST, +IBFT, UEFI, WDAT. Disassembler support is forthcoming. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total + Debug Version: 158.6K Code, 63.8K Data, 222.4K Total + Current Release: + Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total + Debug Version: 159.0K Code, 63.8K Data, 222.8K Total + +2) iASL Compiler/Disassembler and Tools: + +Implemented support in the disassembler for checksum validation on +incoming +binary DSDTs and SSDTs. If incorrect, a message is displayed within the +table +header dump at the start of the disassembly. + +Implemented additional debugging information in the namespace listing +file +created during compilation. In addition to the namespace hierarchy, the +full +pathname to each namespace object is displayed. + +Fixed a problem with the disassembler where invalid ACPI tables could +cause +faults or infinite loops. + +Fixed an unexpected parse error when using the optional "parameter types" +list in a control method declaration. (Lin Ming) BZ 397 + +Fixed a problem where two External declarations with the same name did +not +cause an error (Lin Ming) BZ 509 + +Implemented support for full TermArgs (adding Argx, Localx and method +invocation) for the ParameterData parameter to the LoadTable operator. +(Lin +Ming) BZ 583,587 + +---------------------------------------- +19 December 2007. Summary of changes for version 20071219: + +1) ACPI CA Core Subsystem: + +Implemented full support for deferred execution for the TermArg string +arguments for DataTableRegion. This enables forward references and full +operand resolution for the three string arguments. Similar to +OperationRegion +deferred argument execution.) Lin Ming. BZ 430 + +Implemented full argument resolution support for the BankValue argument +to +BankField. Previously, only constants were supported, now any TermArg may +be +used. Lin Ming BZ 387, 393 + +Fixed a problem with AcpiGetDevices where the search of a branch of the +device tree could be terminated prematurely. In accordance with the ACPI +specification, the search down the current branch is terminated if a +device +is both not present and not functional (instead of just not present.) +Yakui +Zhao. + +Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly +if +the underlying AML code changed the GPE enable registers. Now, any +unknown +incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately +disabled +instead of simply ignored. Rui Zhang. + +Fixed a problem with Index Fields where the Index register was +incorrectly +limited to a maximum of 32 bits. Now any size may be used. + +Fixed a couple memory leaks associated with "implicit return" objects +when +the AML Interpreter slack mode is enabled. Lin Ming BZ 349 + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total + Debug Version: 157.9K Code, 63.6K Data, 221.5K Total + Current Release: + Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total + Debug Version: 158.6K Code, 63.8K Data, 222.4K Total + +---------------------------------------- +14 November 2007. Summary of changes for version 20071114: + +1) ACPI CA Core Subsystem: + +Implemented event counters for each of the Fixed Events, the ACPI SCI +(interrupt) itself, and control methods executed. Named +AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. +These +should be useful for debugging and statistics. + +Implemented a new external interface, AcpiGetStatistics, to retrieve the +contents of the various event counters. Returns the current values for +AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and +AcpiMethodCount. The interface can be expanded in the future if new +counters +are added. Device drivers should use this interface rather than access +the +counters directly. + +Fixed a problem with the FromBCD and ToBCD operators. With some +compilers, +the ShortDivide function worked incorrectly, causing problems with the +BCD +functions with large input values. A truncation from 64-bit to 32-bit +inadvertently occurred. Internal BZ 435. Lin Ming + +Fixed a problem with Index references passed as method arguments. +References +passed as arguments to control methods were dereferenced immediately +(before +control was passed to the called method). The references are now +correctly +passed directly to the called method. BZ 5389. Lin Ming + +Fixed a problem with CopyObject used in conjunction with the Index +operator. +The reference was incorrectly dereferenced before the copy. The reference +is +now correctly copied. BZ 5391. Lin Ming + +Fixed a problem with Control Method references within Package objects. +These +references are now correctly generated. This completes the package +construction overhaul that began in version 20071019. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total + Debug Version: 157.2K Code, 63.4K Data, 220.6K Total + Current Release: + Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total + Debug Version: 157.9K Code, 63.6K Data, 221.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +The AcpiExec utility now installs handlers for all of the predefined +Operation Region types. New types supported are: PCI_Config, CMOS, and +PCIBARTarget. + +Fixed a problem with the 64-bit version of AcpiExec where the extended +(64- +bit) address fields for the DSDT and FACS within the FADT were not being +used, causing truncation of the upper 32-bits of these addresses. Lin +Ming +and Bob Moore + +---------------------------------------- +19 October 2007. Summary of changes for version 20071019: + +1) ACPI CA Core Subsystem: + +Fixed a problem with the Alias operator when the target of the alias is a +named ASL operator that opens a new scope -- Scope, Device, +PowerResource, +Processor, and ThermalZone. In these cases, any children of the original +operator could not be accessed via the alias, potentially causing +unexpected +AE_NOT_FOUND exceptions. (BZ 9067) + +Fixed a problem with the Package operator where all named references were +created as object references and left otherwise unresolved. According to +the +ACPI specification, a Package can only contain Data Objects or references +to +control methods. The implication is that named references to Data Objects +(Integer, Buffer, String, Package, BufferField, Field) should be resolved +immediately upon package creation. This is the approach taken with this +change. References to all other named objects (Methods, Devices, Scopes, +etc.) are all now properly created as reference objects. (BZ 5328) + +Reverted a change to Notify handling that was introduced in version +20070508. This version changed the Notify handling from asynchronous to +fully synchronous (Device driver Notify handling with respect to the +Notify +ASL operator). It was found that this change caused more problems than it +solved and was removed by most users. + +Fixed a problem with the Increment and Decrement operators where the type +of +the target object could be unexpectedly and incorrectly changed. (BZ 353) +Lin Ming. + +Fixed a problem with the Load and LoadTable operators where the table +location within the namespace was ignored. Instead, the table was always +loaded into the root or current scope. Lin Ming. + +Fixed a problem with the Load operator when loading a table from a buffer +object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) + +Fixed a problem with the Debug object where a store of a DdbHandle +reference +object to the Debug object could cause a fault. + +Added a table checksum verification for the Load operator, in the case +where +the load is from a buffer. (BZ 578). + +Implemented additional parameter validation for the LoadTable operator. +The +length of the input strings SignatureString, OemIdString, and OemTableId +are +now checked for maximum lengths. (BZ 582) Lin Ming. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total + Debug Version: 156.7K Code, 63.2K Data, 219.9K Total + Current Release: + Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total + Debug Version: 157.2K Code, 63.4K Data, 220.6K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem where if a single file was specified and the file did not +exist, no error message was emitted. (Introduced with wildcard support in +version 20070917.) + +---------------------------------------- +19 September 2007. Summary of changes for version 20070919: + +1) ACPI CA Core Subsystem: + +Designed and implemented new external interfaces to install and remove +handlers for ACPI table-related events. Current events that are defined +are +LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as +they are dynamically loaded and unloaded. See AcpiInstallTableHandler and +AcpiRemoveTableHandler. (Lin Ming and Bob Moore) + +Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag +(acpi_serialized option on Linux) could cause some systems to hang during +initialization. (Bob Moore) BZ 8171 + +Fixed a problem where objects of certain types (Device, ThermalZone, +Processor, PowerResource) can be not found if they are declared and +referenced from within the same control method (Lin Ming) BZ 341 + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total + Debug Version: 156.3K Code, 63.1K Data, 219.4K Total + Current Release: + Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total + Debug Version: 156.7K Code, 63.2K Data, 219.9K Total + + +2) iASL Compiler/Disassembler: + +Implemented support to allow multiple files to be compiled/disassembled +in +a +single invocation. This includes command line wildcard support for both +the +Windows and Unix versions of the compiler. This feature simplifies the +disassembly and compilation of multiple ACPI tables in a single +directory. + +---------------------------------------- +08 May 2007. Summary of changes for version 20070508: + +1) ACPI CA Core Subsystem: + +Implemented a Microsoft compatibility design change for the handling of +the +Notify AML operator. Previously, notify handlers were dispatched and +executed completely asynchronously in a deferred thread. The new design +still executes the notify handlers in a different thread, but the +original +thread that executed the Notify() now waits at a synchronization point +for +the notify handler to complete. Some machines depend on a synchronous +Notify +operator in order to operate correctly. + +Implemented support to allow Package objects to be passed as method +arguments to the external AcpiEvaluateObject interface. Previously, this +would return the AE_NOT_IMPLEMENTED exception. This feature had not been +implemented since there were no reserved control methods that required it +until recently. + +Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs +that +contained invalid non-zero values in reserved fields could cause later +failures because these fields have meaning in later revisions of the +FADT. +For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The +fields +are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) + +Fixed a problem where the Global Lock handle was not properly updated if +a +thread that acquired the Global Lock via executing AML code then +attempted +to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by +Joe +Liu. + +Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list +could be corrupted if the interrupt being removed was at the head of the +list. Reported by Linn Crosetto. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.9K Code, 63.1K Data, 219.0K Total + Current Release: + Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total + Debug Version: 156.3K Code, 63.1K Data, 219.4K Total + +---------------------------------------- +20 March 2007. Summary of changes for version 20070320: + +1) ACPI CA Core Subsystem: + +Implemented a change to the order of interpretation and evaluation of AML +operand objects within the AML interpreter. The interpreter now evaluates +operands in the order that they appear in the AML stream (and the +corresponding ASL code), instead of in the reverse order (after the +entire +operand list has been parsed). The previous behavior caused several +subtle +incompatibilities with the Microsoft AML interpreter as well as being +somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. + +Implemented a change to the ACPI Global Lock support. All interfaces to +the +global lock now allow the same thread to acquire the lock multiple times. +This affects the AcpiAcquireGlobalLock external interface to the global +lock +as well as the internal use of the global lock to support AML fields -- a +control method that is holding the global lock can now simultaneously +access +AML fields that require global lock protection. Previously, in both +cases, +this would have resulted in an AE_ALREADY_ACQUIRED exception. The change +to +AcpiAcquireGlobalLock is of special interest to drivers for the Embedded +Controller. There is no change to the behavior of the AML Acquire +operator, +as this can already be used to acquire a mutex multiple times by the same +thread. BZ 8066. With assistance from Alexey Starikovskiy. + +Fixed a problem where invalid objects could be referenced in the AML +Interpreter after error conditions. During operand evaluation, ensure +that +the internal "Return Object" field is cleared on error and only valid +pointers are stored there. Caused occasional access to deleted objects +that +resulted in "large reference count" warning messages. Valery Podrezov. + +Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur +on +deeply nested control method invocations. BZ 7873, local BZ 487. Valery +Podrezov. + +Fixed an internal problem with the handling of result objects on the +interpreter result stack. BZ 7872. Valery Podrezov. + +Removed obsolete code that handled the case where AML_NAME_OP is the +target +of a reference (Reference.Opcode). This code was no longer necessary. BZ +7874. Valery Podrezov. + +Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This +was +a +remnant from the previously discontinued 16-bit support. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.9K Code, 63.1K Data, 219.0K Total + +---------------------------------------- +26 January 2007. Summary of changes for version 20070126: + +1) ACPI CA Core Subsystem: + +Added the 2007 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, and +the utilities. + +Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable +during a table load. A bad pointer was passed in the case where the DSDT +is +overridden, causing a fault in this case. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + +---------------------------------------- +15 December 2006. Summary of changes for version 20061215: + +1) ACPI CA Core Subsystem: + +Support for 16-bit ACPICA has been completely removed since it is no +longer +necessary and it clutters the code. All 16-bit macros, types, and +conditional compiles have been removed, cleaning up and simplifying the +code +across the entire subsystem. DOS support is no longer needed since the +bootable Linux firmware kit is now available. + +The handler for the Global Lock is now removed during AcpiTerminate to +enable a clean subsystem restart, via the implementation of the +AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, +HP) + +Implemented enhancements to the multithreading support within the +debugger +to enable improved multithreading debugging and evaluation of the +subsystem. +(Valery Podrezov) + +Debugger: Enhanced the Statistics/Memory command to emit the total +(maximum) +memory used during the execution, as well as the maximum memory consumed +by +each of the various object types. (Valery Podrezov) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total + Debug Version: 155.2K Code, 63.1K Data, 218.3K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Implemented a new option (-m) to display full memory use +statistics upon subsystem/program termination. (Valery Podrezov) + +---------------------------------------- +09 November 2006. Summary of changes for version 20061109: + +1) ACPI CA Core Subsystem: + +Optimized the Load ASL operator in the case where the source operand is +an +operation region. Simply map the operation region memory, instead of +performing a bytewise read. (Region must be of type SystemMemory, see +below.) + +Fixed the Load ASL operator for the case where the source operand is a +region field. A buffer object is also allowed as the source operand. BZ +480 + +Fixed a problem where the Load ASL operator allowed the source operand to +be +an operation region of any type. It is now restricted to regions of type +SystemMemory, as per the ACPI specification. BZ 481 + +Additional cleanup and optimizations for the new Table Manager code. + +AcpiEnable will now fail if all of the required ACPI tables are not +loaded +(FADT, FACS, DSDT). BZ 477 + +Added #pragma pack(8/4) to acobject.h to ensure that the structures in +this +header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been +manually optimized to be aligned and will not work if it is byte-packed. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total + Debug Version: 155.4K Code, 63.1K Data, 218.5K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total + Debug Version: 155.2K Code, 63.1K Data, 218.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem where the presence of the _OSI predefined control method +within complex expressions could cause an internal compiler error. + +AcpiExec: Implemented full region support for multiple address spaces. +SpaceId is now part of the REGION object. BZ 429 + +---------------------------------------- +11 October 2006. Summary of changes for version 20061011: + +1) ACPI CA Core Subsystem: + +Completed an AML interpreter performance enhancement for control method +execution. Previously a 2-pass parse/execution, control methods are now +completely parsed and executed in a single pass. This improves overall +interpreter performance by ~25%, reduces code size, and reduces CPU stack +use. (Valery Podrezov + interpreter changes in version 20051202 that +eliminated namespace loading during the pass one parse.) + +Implemented _CID support for PCI Root Bridge detection. If the _HID does +not +match the predefined PCI Root Bridge IDs, the _CID list (if present) is +now +obtained and also checked for an ID match. + +Implemented additional support for the PCI _ADR execution: upsearch until +a +device scope is found before executing _ADR. This allows PCI_Config +operation regions to be declared locally within control methods +underneath +PCI device objects. + +Fixed a problem with a possible race condition between threads executing +AcpiWalkNamespace and the AML interpreter. This condition was removed by +modifying AcpiWalkNamespace to (by default) ignore all temporary +namespace +entries created during any concurrent control method execution. An +additional namespace race condition is known to exist between +AcpiWalkNamespace and the Load/Unload ASL operators and is still under +investigation. + +Restructured the AML ParseLoop function, breaking it into several +subfunctions in order to reduce CPU stack use and improve +maintainability. +(Mikhail Kouzmich) + +AcpiGetHandle: Fix for parameter validation to detect invalid +combinations +of prefix handle and pathname. BZ 478 + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.6K Code, 63.0K Data, 217.6K Total + Current Release: + Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total + Debug Version: 155.4K Code, 63.1K Data, 218.5K Total + +2) iASL Compiler/Disassembler and Tools: + +Ported the -g option (get local ACPI tables) to the new ACPICA Table +Manager +to restore original behavior. + +---------------------------------------- +27 September 2006. Summary of changes for version 20060927: + +1) ACPI CA Core Subsystem: + +Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. +These functions now use a spinlock for mutual exclusion and the interrupt +level indication flag is not needed. + +Fixed a problem with the Global Lock where the lock could appear to be +obtained before it is actually obtained. The global lock semaphore was +inadvertently created with one unit instead of zero units. (BZ 464) +Fiodor +Suietov. + +Fixed a possible memory leak and fault in AcpiExResolveObjectToValue +during +a read from a buffer or region field. (BZ 458) Fiodor Suietov. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.7K Code, 63.0K Data, 217.7K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.6K Code, 63.0K Data, 217.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a compilation problem with the pre-defined Resource Descriptor +field +names where an "object does not exist" error could be incorrectly +generated +if the parent ResourceTemplate pathname places the template within a +different namespace scope than the current scope. (BZ 7212) + +Fixed a problem where the compiler could hang after syntax errors +detected +in an ElseIf construct. (BZ 453) + +Fixed a problem with the AmlFilename parameter to the DefinitionBlock() +operator. An incorrect output filename was produced when this parameter +was +a null string (""). Now, the original input filename is used as the AML +output filename, with an ".aml" extension. + +Implemented a generic batch command mode for the AcpiExec utility +(execute +any AML debugger command) (Valery Podrezov). + +---------------------------------------- +12 September 2006. Summary of changes for version 20060912: + +1) ACPI CA Core Subsystem: + +Enhanced the implementation of the "serialized mode" of the interpreter +(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is +specified, instead of creating a serialization semaphore per control +method, +the interpreter lock is simply no longer released before a blocking +operation during control method execution. This effectively makes the AML +Interpreter single-threaded. The overhead of a semaphore per-method is +eliminated. + +Fixed a regression where an error was no longer emitted if a control +method +attempts to create 2 objects of the same name. This once again returns +AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism +that +will dynamically serialize the control method to possible prevent future +errors. (BZ 440) + +Integrated a fix for a problem with PCI Express HID detection in the PCI +Config Space setup procedure. (BZ 7145) + +Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the +AcpiHwInitialize function - the FADT registers are now validated when the +table is loaded. + +Added two new warnings during FADT verification - 1) if the FADT is +larger +than the largest known FADT version, and 2) if there is a mismatch +between +a +32-bit block address and the 64-bit X counterpart (when both are non- +zero.) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total + Debug Version: 154.9K Code, 62.6K Data, 217.5K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.7K Code, 63.0K Data, 217.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem with the implementation of the Switch() operator where +the +temporary variable was declared too close to the actual Switch, instead +of +at method level. This could cause a problem if the Switch() operator is +within a while loop, causing an error on the second iteration. (BZ 460) + +Disassembler - fix for error emitted for unknown type for target of scope +operator. Now, ignore it and continue. + +Disassembly of an FADT now verifies the input FADT and reports any errors +found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. + +Disassembly of raw data buffers with byte initialization data now +prefixes +each output line with the current buffer offset. + +Disassembly of ASF! table now includes all variable-length data fields at +the end of some of the subtables. + +The disassembler now emits a comment if a buffer appears to be a +ResourceTemplate, but cannot be disassembled as such because the EndTag +does +not appear at the very end of the buffer. + +AcpiExec - Added the "-t" command line option to enable the serialized +mode +of the AML interpreter. + +---------------------------------------- +31 August 2006. Summary of changes for version 20060831: + +1) ACPI CA Core Subsystem: + +Miscellaneous fixes for the Table Manager: +- Correctly initialize internal common FADT for all 64-bit "X" fields +- Fixed a couple table mapping issues during table load +- Fixed a couple alignment issues for IA64 +- Initialize input array to zero in AcpiInitializeTables +- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, +AcpiGetTableByIndex + +Change for GPE support: when a "wake" GPE is received, all wake GPEs are +now +immediately disabled to prevent the waking GPE from firing again and to +prevent other wake GPEs from interrupting the wake process. + +Added the AcpiGpeCount global that tracks the number of processed GPEs, +to +be used for debugging systems with a large number of ACPI interrupts. + +Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in +both the ACPICA headers and the disassembler. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total + Debug Version: 154.6K Code, 62.3K Data, 216.9K Total + Current Release: + Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total + Debug Version: 154.9K Code, 62.6K Data, 217.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler support for the DMAR ACPI table. + +---------------------------------------- +23 August 2006. Summary of changes for version 20060823: + +1) ACPI CA Core Subsystem: + +The Table Manager component has been completely redesigned and +reimplemented. The new design is much simpler, and reduces the overall +code +and data size of the kernel-resident ACPICA by approximately 5%. Also, it +is +now possible to obtain the ACPI tables very early during kernel +initialization, even before dynamic memory management is initialized. +(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) + +Obsolete ACPICA interfaces: + +- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel +init +time). +- AcpiLoadTable: Not needed. +- AcpiUnloadTable: Not needed. + +New ACPICA interfaces: + +- AcpiInitializeTables: Must be called before the table manager can be +used. +- AcpiReallocateRootTable: Used to transfer the root table to dynamically +allocated memory after it becomes available. +- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI +tables +in the RSDT/XSDT. + +Other ACPICA changes: + +- AcpiGetTableHeader returns the actual mapped table header, not a copy. +Use +AcpiOsUnmapMemory to free this mapping. +- AcpiGetTable returns the actual mapped table. The mapping is managed +internally and must not be deleted by the caller. Use of this interface +causes no additional dynamic memory allocation. +- AcpiFindRootPointer: Support for physical addressing has been +eliminated, +it appeared to be unused. +- The interface to AcpiOsMapMemory has changed to be consistent with the +other allocation interfaces. +- The interface to AcpiOsGetRootPointer has changed to eliminate +unnecessary +parameters. +- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on +64- +bit platforms. Was previously 64 bits on all platforms. +- The interface to the ACPI Global Lock acquire/release macros have +changed +slightly since ACPICA no longer keeps a local copy of the FACS with a +constructed pointer to the actual global lock. + +Porting to the new table manager: + +- AcpiInitializeTables: Must be called once, and can be called anytime +during the OS initialization process. It allows the host to specify an +area +of memory to be used to store the internal version of the RSDT/XSDT (root +table). This allows the host to access ACPI tables before memory +management +is initialized and running. +- AcpiReallocateRootTable: Can be called after memory management is +running +to copy the root table to a dynamically allocated array, freeing up the +scratch memory specified in the call to AcpiInitializeTables. +- AcpiSubsystemInitialize: This existing interface is independent of the +Table Manager, and does not have to be called before the Table Manager +can +be used, it only must be called before the rest of ACPICA can be used. +- ACPI Tables: Some changes have been made to the names and structure of +the +actbl.h and actbl1.h header files and may require changes to existing +code. +For example, bitfields have been completely removed because of their lack +of +portability across C compilers. +- Update interfaces to the Global Lock acquire/release macros if local +versions are used. (see acwin.h) + +Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c + +New files: tbfind.c + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + Current Release: + Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total + Debug Version: 154.6K Code, 62.3K Data, 216.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +21 July 2006. Summary of changes for version 20060721: + +1) ACPI CA Core Subsystem: + +The full source code for the ASL test suite used to validate the iASL +compiler and the ACPICA core subsystem is being released with the ACPICA +source for the first time. The source is contained in a separate package +and +consists of over 1100 files that exercise all ASL/AML operators. The +package +should appear on the Intel/ACPI web site shortly. (Valery Podrezov, +Fiodor +Suietov) + +Completed a new design and implementation for support of the ACPI Global +Lock. On the OS side, the global lock is now treated as a standard AML +mutex. Previously, multiple OS threads could "acquire" the global lock +simultaneously. However, this could cause the BIOS to be starved out of +the +lock - especially in cases such as the Embedded Controller driver where +there is a tight coupling between the OS and the BIOS. + +Implemented an optimization for the ACPI Global Lock interrupt mechanism. +The Global Lock interrupt handler no longer queues the execution of a +separate thread to signal the global lock semaphore. Instead, the +semaphore +is signaled directly from the interrupt handler. + +Implemented support within the AML interpreter for package objects that +contain a larger AML length (package list length) than the package +element +count. In this case, the length of the package is truncated to match the +package element count. Some BIOS code apparently modifies the package +length +on the fly, and this change supports this behavior. Provides +compatibility +with the MS AML interpreter. (With assistance from Fiodor Suietov) + +Implemented a temporary fix for the BankValue parameter of a Bank Field +to +support all constant values, now including the Zero and One opcodes. +Evaluation of this parameter must eventually be converted to a full +TermArg +evaluation. A not-implemented error is now returned (temporarily) for +non- +constant values for this parameter. + +Fixed problem reports (Fiodor Suietov) integrated: +- Fix for premature object deletion after CopyObject on Operation Region +(BZ +350) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total + Debug Version: 160.9K Code, 65.1K Data, 226.0K Total + Current Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +07 July 2006. Summary of changes for version 20060707: + +1) ACPI CA Core Subsystem: + +Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers +that do not allow the initialization of address pointers within packed +structures - even though the hardware itself may support misaligned +transfers. Some of the debug data structures are packed by default to +minimize size. + +Added an error message for the case where AcpiOsGetThreadId() returns +zero. +A non-zero value is required by the core ACPICA code to ensure the proper +operation of AML mutexes and recursive control methods. + +The DSDT is now the only ACPI table that determines whether the AML +interpreter is in 32-bit or 64-bit mode. Not really a functional change, +but +the hooks for per-table 32/64 switching have been removed from the code. +A +clarification to the ACPI specification is forthcoming in ACPI 3.0B. + +Fixed a possible leak of an OwnerID in the error path of +AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID +deletion to a single place in AcpiTbUninstallTable to correct possible +leaks +when using the AcpiTbDeleteTablesByType interface (with assistance from +Lance Ortiz.) + +Fixed a problem with Serialized control methods where the semaphore +associated with the method could be over-signaled after multiple method +invocations. + +Fixed two issues with the locking of the internal namespace data +structure. +Both the Unload() operator and AcpiUnloadTable interface now lock the +namespace during the namespace deletion associated with the table unload +(with assistance from Linn Crosetto.) + +Fixed problem reports (Valery Podrezov) integrated: +- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) + +Fixed problem reports (Fiodor Suietov) integrated: +- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) +- On Address Space handler deletion, needless deactivation call (BZ 374) +- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ +375) +- Possible memory leak, Notify sub-objects of Processor, Power, +ThermalZone +(BZ 376) +- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) +- Minimum Length of RSDT should be validated (BZ 379) +- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no +Handler (BZ (380) +- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type +loaded +(BZ 381) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total + Debug Version: 160.8K Code, 64.8K Data, 225.6K Total + Current Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed problem reports: +Compiler segfault when ASL contains a long (>1024) String declaration (BZ +436) + +---------------------------------------- +23 June 2006. Summary of changes for version 20060623: + +1) ACPI CA Core Subsystem: + +Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This +allows the type to be customized to the host OS for improved efficiency +(since a spinlock is usually a very small object.) + +Implemented support for "ignored" bits in the ACPI registers. According +to +the ACPI specification, these bits should be preserved when writing the +registers via a read/modify/write cycle. There are 3 bits preserved in +this +manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. + +Implemented the initial deployment of new OSL mutex interfaces. Since +some +host operating systems have separate mutex and semaphore objects, this +feature was requested. The base code now uses mutexes (and the new mutex +interfaces) wherever a binary semaphore was used previously. However, for +the current release, the mutex interfaces are defined as macros to map +them +to the existing semaphore interfaces. Therefore, no OSL changes are +required +at this time. (See acpiosxf.h) + +Fixed several problems with the support for the control method SyncLevel +parameter. The SyncLevel now works according to the ACPI specification +and +in concert with the Mutex SyncLevel parameter, since the current +SyncLevel +is a property of the executing thread. Mutual exclusion for control +methods +is now implemented with a mutex instead of a semaphore. + +Fixed three instances of the use of the C shift operator in the bitfield +support code (exfldio.c) to avoid the use of a shift value larger than +the +target data width. The behavior of C compilers is undefined in this case +and +can cause unpredictable results, and therefore the case must be detected +and +avoided. (Fiodor Suietov) + +Added an info message whenever an SSDT or OEM table is loaded dynamically +via the Load() or LoadTable() ASL operators. This should improve +debugging +capability since it will show exactly what tables have been loaded +(beyond +the tables present in the RSDT/XSDT.) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total + Debug Version: 160.2K Code, 64.7K Data, 224.9K Total + Current Release: + Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total + Debug Version: 160.8K Code, 64.8K Data, 225.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +08 June 2006. Summary of changes for version 20060608: + +1) ACPI CA Core Subsystem: + +Converted the locking mutex used for the ACPI hardware to a spinlock. +This +change should eliminate all problems caused by attempting to acquire a +semaphore at interrupt level, and it means that all ACPICA external +interfaces that directly access the ACPI hardware can be safely called +from +interrupt level. OSL code that implements the semaphore interfaces should +be +able to eliminate any workarounds for being called at interrupt level. + +Fixed a regression introduced in 20060526 where the ACPI device +initialization could be prematurely aborted with an AE_NOT_FOUND if a +device +did not have an optional _INI method. + +Fixed an IndexField issue where a write to the Data Register should be +limited in size to the AccessSize (width) of the IndexField itself. (BZ +433, +Fiodor Suietov) + +Fixed problem reports (Valery Podrezov) integrated: +- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) + +Fixed problem reports (Fiodor Suietov) integrated: +- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) + +Removed four global mutexes that were obsolete and were no longer being +used. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total + Debug Version: 160.3K Code, 64.9K Data, 225.2K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total + Debug Version: 160.2K Code, 64.7K Data, 224.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a fault when using -g option (get tables from registry) on Windows +machines. + +Fixed problem reports integrated: +- Generate error if CreateField NumBits parameter is zero. (BZ 405) +- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor +Suietov) +- Global table revision override (-r) is ignored (BZ 413) + +---------------------------------------- +26 May 2006. Summary of changes for version 20060526: + +1) ACPI CA Core Subsystem: + +Restructured, flattened, and simplified the internal interfaces for +namespace object evaluation - resulting in smaller code, less CPU stack +use, +and fewer interfaces. (With assistance from Mikhail Kouzmich) + +Fixed a problem with the CopyObject operator where the first parameter +was +not typed correctly for the parser, interpreter, compiler, and +disassembler. +Caused various errors and unexpected behavior. + +Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits +produced incorrect results with some C compilers. Since the behavior of C +compilers when the shift value is larger than the datatype width is +apparently not well defined, the interpreter now detects this condition +and +simply returns zero as expected in all such cases. (BZ 395) + +Fixed problem reports (Valery Podrezov) integrated: +- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) +- Allow interpreter to handle nested method declarations (BZ 5361) + +Fixed problem reports (Fiodor Suietov) integrated: +- AcpiTerminate doesn't free debug memory allocation list objects (BZ +355) +- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ +356) +- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) +- Resource Manager should return AE_TYPE for non-device objects (BZ 358) +- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) +- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) +- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) +- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) +- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ +365) +- Status of the Global Initialization Handler call not used (BZ 366) +- Incorrect object parameter to Global Initialization Handler (BZ 367) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total + Debug Version: 160.5K Code, 65.1K Data, 225.6K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total + Debug Version: 160.3K Code, 64.9K Data, 225.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +Modified the parser to allow the names IO, DMA, and IRQ to be used as +namespace identifiers with no collision with existing resource descriptor +macro names. This provides compatibility with other ASL compilers and is +most useful for disassembly/recompilation of existing tables without +parse +errors. (With assistance from Thomas Renninger) + +Disassembler: fixed an incorrect disassembly problem with the +DataTableRegion and CopyObject operators. Fixed a possible fault during +disassembly of some Alias operators. + +---------------------------------------- +12 May 2006. Summary of changes for version 20060512: + +1) ACPI CA Core Subsystem: + +Replaced the AcpiOsQueueForExecution interface with a new interface named +AcpiOsExecute. The major difference is that the new interface does not +have +a Priority parameter, this appeared to be useless and has been replaced +by +a +Type parameter. The Type tells the host what type of execution is being +requested, such as global lock handler, notify handler, GPE handler, etc. +This allows the host to queue and execute the request as appropriate for +the +request type, possibly using different work queues and different +priorities +for the various request types. This enables fixes for multithreading +deadlock problems such as BZ #5534, and will require changes to all +existing +OS interface layers. (Alexey Starikovskiy and Bob Moore) + +Fixed a possible memory leak associated with the support for the so- +called +"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor +Suietov) + +Fixed a problem with the Load() operator where a table load from an +operation region could overwrite an internal table buffer by up to 7 +bytes +and cause alignment faults on IPF systems. (With assistance from Luming +Yu) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total + Debug Version: 160.1K Code, 65.2K Data, 225.3K Total + Current Release: + Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total + Debug Version: 160.5K Code, 65.1K Data, 225.6K Total + + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support to cross reference the internal +namespace +and automatically generate ASL External() statements for symbols not +defined +within the current table being disassembled. This will simplify the +disassembly and recompilation of interdependent tables such as SSDTs +since +these statements will no longer have to be added manually. + +Disassembler: Implemented experimental support to automatically detect +invocations of external control methods and generate appropriate +External() +statements. This is problematic because the AML cannot be correctly +parsed +until the number of arguments for each control method is known. +Currently, +standalone method invocations and invocations as the source operand of a +Store() statement are supported. + +Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, +LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), +LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code +more readable and likely closer to the original ASL source. + +---------------------------------------- +21 April 2006. Summary of changes for version 20060421: + +1) ACPI CA Core Subsystem: + +Removed a device initialization optimization introduced in 20051216 where +the _STA method was not run unless an _INI was also present for the same +device. This optimization could cause problems because it could allow +_INI +methods to be run within a not-present device subtree. (If a not-present +device had no _INI, _STA would not be run, the not-present status would +not +be discovered, and the children of the device would be incorrectly +traversed.) + +Implemented a new _STA optimization where namespace subtrees that do not +contain _INI are identified and ignored during device initialization. +Selectively running _STA can significantly improve boot time on large +machines (with assistance from Len Brown.) + +Implemented support for the device initialization case where the returned +_STA flags indicate a device not-present but functioning. In this case, +_INI +is not run, but the device children are examined for presence, as per the +ACPI specification. + +Implemented an additional change to the IndexField support in order to +conform to MS behavior. The value written to the Index Register is not +simply a byte offset, it is a byte offset in units of the access width of +the parent Index Field. (Fiodor Suietov) + +Defined and deployed a new OSL interface, AcpiOsValidateAddress. This +interface is called during the creation of all AML operation regions, and +allows the host OS to exert control over what addresses it will allow the +AML code to access. Operation Regions whose addresses are disallowed will +cause a runtime exception when they are actually accessed (will not +affect +or abort table loading.) See oswinxf or osunixxf for an example +implementation. + +Defined and deployed a new OSL interface, AcpiOsValidateInterface. This +interface allows the host OS to match the various "optional" +interface/behavior strings for the _OSI predefined control method as +appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf +for an example implementation. + +Restructured and corrected various problems in the exception handling +code +paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod +(with assistance from Takayoshi Kochi.) + +Modified the Linux source converter to ignore quoted string literals +while +converting identifiers from mixed to lower case. This will correct +problems +with the disassembler and other areas where such strings must not be +modified. + +The ACPI_FUNCTION_* macros no longer require quotes around the function +name. This allows the Linux source converter to convert the names, now +that +the converter ignores quoted strings. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + + Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total + Debug Version: 158.9K Code, 64.9K Data, 223.8K Total + Current Release: + Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total + Debug Version: 160.1K Code, 65.2K Data, 225.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Implemented 3 new warnings for iASL, and implemented multiple warning +levels +(w2 flag). + +1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is +not +WAIT_FOREVER (0xFFFF) and the code does not examine the return value to +check for the possible timeout, a warning is issued. + +2) Useless operators: If an ASL operator does not specify an optional +target +operand and it also does not use the function return value from the +operator, a warning is issued since the operator effectively does +nothing. + +3) Unreferenced objects: If a namespace object is created, but never +referenced, a warning is issued. This is a warning level 2 since there +are +cases where this is ok, such as when a secondary table is loaded that +uses +the unreferenced objects. Even so, care is taken to only flag objects +that +don't look like they will ever be used. For example, the reserved methods +(starting with an underscore) are usually not referenced because it is +expected that the OS will invoke them. + +---------------------------------------- +31 March 2006. Summary of changes for version 20060331: + +1) ACPI CA Core Subsystem: + +Implemented header file support for the following additional ACPI tables: +ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this +support, +all current and known ACPI tables are now defined in the ACPICA headers +and +are available for use by device drivers and other software. + +Implemented support to allow tables that contain ACPI names with invalid +characters to be loaded. Previously, this would cause the table load to +fail, but since there are several known cases of such tables on existing +machines, this change was made to enable ACPI support for them. Also, +this +matches the behavior of the Microsoft ACPI implementation. + +Fixed a couple regressions introduced during the memory optimization in +the +20060317 release. The namespace node definition required additional +reorganization and an internal datatype that had been changed to 8-bit +was +restored to 32-bit. (Valery Podrezov) + +Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState +could be passed through to AcpiOsReleaseObject which is unexpected. Such +null pointers are now trapped and ignored, matching the behavior of the +previous implementation before the deployment of AcpiOsReleaseObject. +(Valery Podrezov, Fiodor Suietov) + +Fixed a memory mapping leak during the deletion of a SystemMemory +operation +region where a cached memory mapping was not deleted. This became a +noticeable problem for operation regions that are defined within +frequently +used control methods. (Dana Meyers) + +Reorganized the ACPI table header files into two main files: one for the +ACPI tables consumed by the ACPICA core, and another for the +miscellaneous +ACPI tables that are consumed by the drivers and other software. The +various +FADT definitions were merged into one common section and three different +tables (ACPI 1.0, 1.0+, and 2.0) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total + Debug Version: 158.7K Code, 64.8K Data, 223.5K Total + Current Release: + Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total + Debug Version: 158.9K Code, 64.9K Data, 223.8K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support to decode and format all non-AML ACPI +tables (tables other than DSDTs and SSDTs.) This includes the new tables +added to the ACPICA headers, therefore all current and known ACPI tables +are +supported. + +Disassembler: The change to allow ACPI names with invalid characters also +enables the disassembly of such tables. Invalid characters within names +are +changed to '*' to make the name printable; the iASL compiler will still +generate an error for such names, however, since this is an invalid ACPI +character. + +Implemented an option for AcpiXtract (-a) to extract all tables found in +the +input file. The default invocation extracts only the DSDTs and SSDTs. + +Fixed a couple of gcc generation issues for iASL and AcpiExec and added a +makefile for the AcpiXtract utility. + +---------------------------------------- +17 March 2006. Summary of changes for version 20060317: + +1) ACPI CA Core Subsystem: + +Implemented the use of a cache object for all internal namespace nodes. +Since there are about 1000 static nodes in a typical system, this will +decrease memory use for cache implementations that minimize per- +allocation +overhead (such as a slab allocator.) + +Removed the reference count mechanism for internal namespace nodes, since +it +was deemed unnecessary. This reduces the size of each namespace node by +about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit +case, +and 32 bytes for the 64-bit case. + +Optimized several internal data structures to reduce object size on 64- +bit +platforms by packing data within the 64-bit alignment. This includes the +frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static +instances corresponding to the namespace objects. + +Added two new strings for the predefined _OSI method: "Windows 2001.1 +SP1" +and "Windows 2006". + +Split the allocation tracking mechanism out to a separate file, from +utalloc.c to uttrack.c. This mechanism appears to be only useful for +application-level code. Kernels may wish to not include uttrack.c in +distributions. + +Removed all remnants of the obsolete ACPI_REPORT_* macros and the +associated +code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING +macros.) + +Code and Data Size: These are the sizes for the acpica.lib produced by +the +Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any +ACPI +driver or OSPM code. The debug version of the code includes the debug +output +trace mechanism and has a much larger code and data size. Note that these +values will vary depending on the efficiency of the compiler and the +compiler options used during generation. + + Previous Release: + Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total + Debug Version: 161.6K Code, 65.7K Data, 227.3K Total + Current Release: + Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total + Debug Version: 158.7K Code, 64.8K Data, 223.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +Implemented an ANSI C version of the acpixtract utility. This version +will +automatically extract the DSDT and all SSDTs from the input acpidump text +file and dump the binary output to separate files. It can also display a +summary of the input file including the headers for each table found and +will extract any single ACPI table, with any signature. (See +source/tools/acpixtract) + +---------------------------------------- +10 March 2006. Summary of changes for version 20060310: + +1) ACPI CA Core Subsystem: + +Tagged all external interfaces to the subsystem with the new +ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to +assist +kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL +macro. The default definition is NULL. + +Added the ACPI_THREAD_ID type for the return value from +AcpiOsGetThreadId. +This allows the host to define this as necessary to simplify kernel +integration. The default definition is ACPI_NATIVE_UINT. + +Fixed two interpreter problems related to error processing, the deletion +of +objects, and placing invalid pointers onto the internal operator result +stack. BZ 6028, 6151 (Valery Podrezov) + +Increased the reference count threshold where a warning is emitted for +large +reference counts in order to eliminate unnecessary warnings on systems +with +large namespaces (especially 64-bit.) Increased the value from 0x400 to +0x800. + +Due to universal disagreement as to the meaning of the 'c' in the +calloc() +function, the ACPI_MEM_CALLOCATE macro has been renamed to +ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. +ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and +ACPI_FREE. + +Code and Data Size: These are the sizes for the acpica.lib produced by +the +Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any +ACPI +driver or OSPM code. The debug version of the code includes the debug +output +trace mechanism and has a much larger code and data size. Note that these +values will vary depending on the efficiency of the compiler and the +compiler options used during generation. + + Previous Release: + Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total + Debug Version: 161.4K Code, 65.7K Data, 227.1K Total + Current Release: + Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total + Debug Version: 161.6K Code, 65.7K Data, 227.3K Total + + +2) iASL Compiler/Disassembler: + +Disassembler: implemented support for symbolic resource descriptor +references. If a CreateXxxxField operator references a fixed offset +within +a +resource descriptor, a name is assigned to the descriptor and the offset +is +translated to the appropriate resource tag and pathname. The addition of +this support brings the disassembled code very close to the original ASL +source code and helps eliminate run-time errors when the disassembled +code +is modified (and recompiled) in such a way as to invalidate the original +fixed offsets. + +Implemented support for a Descriptor Name as the last parameter to the +ASL +Register() macro. This parameter was inadvertently left out of the ACPI +specification, and will be added for ACPI 3.0b. + +Fixed a problem where the use of the "_OSI" string (versus the full path +"\_OSI") caused an internal compiler error. ("No back ptr to op") + +Fixed a problem with the error message that occurs when an invalid string +is +used for a _HID object (such as one with an embedded asterisk: +"*PNP010A".) +The correct message is now displayed. + +---------------------------------------- +17 February 2006. Summary of changes for version 20060217: + +1) ACPI CA Core Subsystem: + +Implemented a change to the IndexField support to match the behavior of +the +Microsoft AML interpreter. The value written to the Index register is now +a +byte offset, no longer an index based upon the width of the Data +register. +This should fix IndexField problems seen on some machines where the Data +register is not exactly one byte wide. The ACPI specification will be +clarified on this point. + +Fixed a problem where several resource descriptor types could overrun the +internal descriptor buffer due to size miscalculation: VendorShort, +VendorLong, and Interrupt. This was noticed on IA64 machines, but could +affect all platforms. + +Fixed a problem where individual resource descriptors were misaligned +within +the internal buffer, causing alignment faults on IA64 platforms. + +Code and Data Size: These are the sizes for the acpica.lib produced by +the +Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any +ACPI +driver or OSPM code. The debug version of the code includes the debug +output +trace mechanism and has a much larger code and data size. Note that these +values will vary depending on the efficiency of the compiler and the +compiler options used during generation. + + Previous Release: + Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total + Debug Version: 161.3K Code, 65.6K Data, 226.9K Total + Current Release: + Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total + Debug Version: 161.4K Code, 65.7K Data, 227.1K Total + + +2) iASL Compiler/Disassembler: + +Implemented support for new reserved names: _WDG and _WED are Microsoft +extensions for Windows Instrumentation Management, _TDL is a new ACPI- +defined method (Throttling Depth Limit.) + +Fixed a problem where a zero-length VendorShort or VendorLong resource +descriptor was incorrectly emitted as a descriptor of length one. + +---------------------------------------- +10 February 2006. Summary of changes for version 20060210: + +1) ACPI CA Core Subsystem: + +Removed a couple of extraneous ACPI_ERROR messages that appeared during +normal execution. These became apparent after the conversion from +ACPI_DEBUG_PRINT. + +Fixed a problem where the CreateField operator could hang if the BitIndex +or +NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) + +Fixed a problem where a DeRefOf operation on a buffer object incorrectly +failed with an exception. This also fixes a couple of related RefOf and +DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) + +Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead +of +AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, +BZ +5480) + +Implemented a memory cleanup at the end of the execution of each +iteration +of an AML While() loop, preventing the accumulation of outstanding +objects. +(Valery Podrezov, BZ 5427) + +Eliminated a chunk of duplicate code in the object resolution code. +(Valery +Podrezov, BZ 5336) + +Fixed several warnings during the 64-bit code generation. + +The AcpiSrc source code conversion tool now inserts one line of +whitespace +after an if() statement that is followed immediately by a comment, +improving +readability of the Linux code. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total + Debug Version: 161.3K Code, 65.7K Data, 227.0K Total + Current Release: + Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total + Debug Version: 161.3K Code, 65.6K Data, 226.9K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem with the disassembly of a BankField operator with a +complex +expression for the BankValue parameter. + +---------------------------------------- +27 January 2006. Summary of changes for version 20060127: + +1) ACPI CA Core Subsystem: + +Implemented support in the Resource Manager to allow unresolved +namestring +references within resource package objects for the _PRT method. This +support +is in addition to the previously implemented unresolved reference support +within the AML parser. If the interpreter slack mode is enabled, these +unresolved references will be passed through to the caller as a NULL +package +entry. + +Implemented and deployed new macros and functions for error and warning +messages across the subsystem. These macros are simpler and generate less +code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, +ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older +macros remain defined to allow ACPI drivers time to migrate to the new +macros. + +Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of +the +Acquire/Release Lock OSL interfaces. + +Fixed a problem where Alias ASL operators are sometimes not correctly +resolved, in both the interpreter and the iASL compiler. + +Fixed several problems with the implementation of the +ConcatenateResTemplate +ASL operator. As per the ACPI specification, zero length buffers are now +treated as a single EndTag. One-length buffers always cause a fatal +exception. Non-zero length buffers that do not end with a full 2-byte +EndTag +cause a fatal exception. + +Fixed a possible structure overwrite in the AcpiGetObjectInfo external +interface. (With assistance from Thomas Renninger) + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total + Debug Version: 163.2K Code, 66.2K Data, 229.4K Total + Current Release: + Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total + Debug Version: 161.3K Code, 65.7K Data, 227.0K Total + + +2) iASL Compiler/Disassembler: + +Fixed an internal error that was generated for any forward references to +ASL +Alias objects. + +---------------------------------------- +13 January 2006. Summary of changes for version 20060113: + +1) ACPI CA Core Subsystem: + +Added 2006 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, iASL compiler, and the +utilities. + +Enhanced the ACPICA error reporting in order to simplify user migration +to +the non-debug version of ACPICA. Replaced all instances of the +ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN +debug +levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, +respectively. This preserves all error and warning messages in the non- +debug +version of the ACPICA code (this has been referred to as the "debug lite" +option.) Over 200 cases were converted to create a total of over 380 +error/warning messages across the ACPICA code. This increases the code +and +data size of the default non-debug version of the code somewhat (about +13K), +but all error/warning reporting may be disabled if desired (and code +eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time +configuration option. The size of the debug version of ACPICA remains +about +the same. + +Fixed a memory leak within the AML Debugger "Set" command. One object was +not properly deleted for every successful invocation of the command. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total + Debug Version: 163.7K Code, 67.5K Data, 231.2K Total + Current Release: + Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total + Debug Version: 163.2K Code, 66.2K Data, 229.4K Total + + +2) iASL Compiler/Disassembler: + +The compiler now officially supports the ACPI 3.0a specification that was +released on December 30, 2005. (Specification is available at +www.acpi.info) + +---------------------------------------- +16 December 2005. Summary of changes for version 20051216: + +1) ACPI CA Core Subsystem: + +Implemented optional support to allow unresolved names within ASL Package +objects. A null object is inserted in the package when a named reference +cannot be located in the current namespace. Enabled via the interpreter +slack flag, this should eliminate AE_NOT_FOUND exceptions seen on +machines +that contain such code. + +Implemented an optimization to the initialization sequence that can +improve +boot time. During ACPI device initialization, the _STA method is now run +if +and only if the _INI method exists. The _STA method is used to determine +if +the device is present; An _INI can only be run if _STA returns present, +but +it is a waste of time to run the _STA method if the _INI does not exist. +(Prototype and assistance from Dong Wei) + +Implemented use of the C99 uintptr_t for the pointer casting macros if it +is +available in the current compiler. Otherwise, the default (void *) cast +is +used as before. + +Fixed some possible memory leaks found within the execution path of the +Break, Continue, If, and CreateField operators. (Valery Podrezov) + +Fixed a problem introduced in the 20051202 release where an exception is +generated during method execution if a control method attempts to declare +another method. + +Moved resource descriptor string constants that are used by both the AML +disassembler and AML debugger to the common utilities directory so that +these components are independent. + +Implemented support in the AcpiExec utility (-e switch) to globally +ignore +exceptions during control method execution (method is not aborted.) + +Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix +generation. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total + Debug Version: 163.2K Code, 67.4K Data, 230.6K Total + Current Release: + Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total + Debug Version: 163.7K Code, 67.5K Data, 231.2K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem where a CPU stack overflow fault could occur if a +recursive +method call was made from within a Return statement. + +---------------------------------------- +02 December 2005. Summary of changes for version 20051202: + +1) ACPI CA Core Subsystem: + +Modified the parsing of control methods to no longer create namespace +objects during the first pass of the parse. Objects are now created only +during the execute phase, at the moment the namespace creation operator +is +encountered in the AML (Name, OperationRegion, CreateByteField, etc.) +This +should eliminate ALREADY_EXISTS exceptions seen on some machines where +reentrant control methods are protected by an AML mutex. The mutex will +now +correctly block multiple threads from attempting to create the same +object +more than once. + +Increased the number of available Owner Ids for namespace object tracking +from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen +on +some machines with a large number of ACPI tables (either static or +dynamic). + +Fixed a problem with the AcpiExec utility where a fault could occur when +the +-b switch (batch mode) is used. + +Enhanced the namespace dump routine to output the owner ID for each +namespace object. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total + Debug Version: 163.0K Code, 67.4K Data, 230.4K Total + Current Release: + Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total + Debug Version: 163.2K Code, 67.4K Data, 230.6K Total + + +2) iASL Compiler/Disassembler: + +Fixed a parse error during compilation of certain Switch/Case constructs. +To +simplify the parse, the grammar now allows for multiple Default +statements +and this error is now detected and flagged during the analysis phase. + +Disassembler: The disassembly now includes the contents of the original +table header within a comment at the start of the file. This includes the +name and version of the original ASL compiler. + +---------------------------------------- +17 November 2005. Summary of changes for version 20051117: + +1) ACPI CA Core Subsystem: + +Fixed a problem in the AML parser where the method thread count could be +decremented below zero if any errors occurred during the method parse +phase. +This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some +machines. +This also fixed a related regression with the mechanism that detects and +corrects methods that cannot properly handle reentrancy (related to the +deployment of the new OwnerId mechanism.) + +Eliminated the pre-parsing of control methods (to detect errors) during +table load. Related to the problem above, this was causing unwind issues +if +any errors occurred during the parse, and it seemed to be overkill. A +table +load should not be aborted if there are problems with any single control +method, thus rendering this feature rather pointless. + +Fixed a problem with the new table-driven resource manager where an +internal +buffer overflow could occur for small resource templates. + +Implemented a new external interface, AcpiGetVendorResource. This +interface +will find and return a vendor-defined resource descriptor within a _CRS +or +_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn +Helgaas. + +Removed the length limit (200) on string objects as per the upcoming ACPI +3.0A specification. This affects the following areas of the interpreter: +1) +any implicit conversion of a Buffer to a String, 2) a String object +result +of the ASL Concatenate operator, 3) the String object result of the ASL +ToString operator. + +Fixed a problem in the Windows OS interface layer (OSL) where a +WAIT_FOREVER +on a semaphore object would incorrectly timeout. This allows the +multithreading features of the AcpiExec utility to work properly under +Windows. + +Updated the Linux makefiles for the iASL compiler and AcpiExec to include +the recently added file named "utresrc.c". + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total + Debug Version: 163.0K Code, 67.4K Data, 230.4K Total + Current Release: + Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total + Debug Version: 163.0K Code, 67.4K Data, 230.4K Total + + +2) iASL Compiler/Disassembler: + +Removed the limit (200) on string objects as per the upcoming ACPI 3.0A +specification. For the iASL compiler, this means that string literals +within +the source ASL can be of any length. + +Enhanced the listing output to dump the AML code for resource descriptors +immediately after the ASL code for each descriptor, instead of in a block +at +the end of the entire resource template. + +Enhanced the compiler debug output to dump the entire original parse tree +constructed during the parse phase, before any transforms are applied to +the +tree. The transformed tree is dumped also. + +---------------------------------------- +02 November 2005. Summary of changes for version 20051102: + +1) ACPI CA Core Subsystem: + +Modified the subsystem initialization sequence to improve GPE support. +The +GPE initialization has been split into two parts in order to defer +execution +of the _PRW methods (Power Resources for Wake) until after the hardware +is +fully initialized and the SCI handler is installed. This allows the _PRW +methods to access fields protected by the Global Lock. This will fix +systems +where a NO_GLOBAL_LOCK exception has been seen during initialization. + +Converted the ACPI internal object disassemble and display code within +the +AML debugger to fully table-driven operation, reducing code size and +increasing maintainability. + +Fixed a regression with the ConcatenateResTemplate() ASL operator +introduced +in the 20051021 release. + +Implemented support for "local" internal ACPI object types within the +debugger "Object" command and the AcpiWalkNamespace external interfaces. +These local types include RegionFields, BankFields, IndexFields, Alias, +and +reference objects. + +Moved common AML resource handling code into a new file, "utresrc.c". +This +code is shared by both the Resource Manager and the AML Debugger. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total + Debug Version: 163.5K Code, 67.0K Data, 230.5K Total + Current Release: + Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total + Debug Version: 163.0K Code, 67.4K Data, 230.4K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem with very large initializer lists (more than 4000 +elements) +for both Buffer and Package objects where the parse stack could overflow. + +Enhanced the pre-compile source code scan for non-ASCII characters to +ignore +characters within comment fields. The scan is now always performed and is +no +longer optional, detecting invalid characters within a source file +immediately rather than during the parse phase or later. + +Enhanced the ASL grammar definition to force early reductions on all +list- +style grammar elements so that the overall parse stack usage is greatly +reduced. This should improve performance and reduce the possibility of +parse +stack overflow. + +Eliminated all reduce/reduce conflicts in the iASL parser generation. +Also, +with the addition of a %expected statement, the compiler generates from +source with no warnings. + +Fixed a possible segment fault in the disassembler if the input filename +does not contain a "dot" extension (Thomas Renninger). + +---------------------------------------- +21 October 2005. Summary of changes for version 20051021: + +1) ACPI CA Core Subsystem: + +Implemented support for the EM64T and other x86-64 processors. This +essentially entails recognizing that these processors support non-aligned +memory transfers. Previously, all 64-bit processors were assumed to lack +hardware support for non-aligned transfers. + +Completed conversion of the Resource Manager to nearly full table-driven +operation. Specifically, the resource conversion code (convert AML to +internal format and the reverse) and the debug code to dump internal +resource descriptors are fully table-driven, reducing code and data size +and +improving maintainability. + +The OSL interfaces for Acquire and Release Lock now use a 64-bit flag +word +on 64-bit processors instead of a fixed 32-bit word. (With assistance +from +Alexey Starikovskiy) + +Implemented support within the resource conversion code for the Type- +Specific byte within the various ACPI 3.0 *WordSpace macros. + +Fixed some issues within the resource conversion code for the type- +specific +flags for both Memory and I/O address resource descriptors. For Memory, +implemented support for the MTP and TTP flags. For I/O, split the TRS and +TTP flags into two separate fields. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total + Debug Version: 168.0K Code, 68.3K Data, 236.3K Total + Current Release: + Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total + Debug Version: 163.5K Code, 67.0K Data, 230.5K Total + + + +2) iASL Compiler/Disassembler: + +Relaxed a compiler restriction that disallowed a ResourceIndex byte if +the +corresponding ResourceSource string was not also present in a resource +descriptor declaration. This restriction caused problems with existing +AML/ASL code that includes the Index byte without the string. When such +AML +was disassembled, it could not be compiled without modification. Further, +the modified code created a resource template with a different size than +the +original, breaking code that used fixed offsets into the resource +template +buffer. + +Removed a recent feature of the disassembler to ignore a lone +ResourceIndex +byte. This byte is now emitted if present so that the exact AML can be +reproduced when the disassembled code is recompiled. + +Improved comments and text alignment for the resource descriptor code +emitted by the disassembler. + +Implemented disassembler support for the ACPI 3.0 AccessSize field within +a +Register() resource descriptor. + +---------------------------------------- +30 September 2005. Summary of changes for version 20050930: + +1) ACPI CA Core Subsystem: + +Completed a major overhaul of the Resource Manager code - specifically, +optimizations in the area of the AML/internal resource conversion code. +The +code has been optimized to simplify and eliminate duplicated code, CPU +stack +use has been decreased by optimizing function parameters and local +variables, and naming conventions across the manager have been +standardized +for clarity and ease of maintenance (this includes function, parameter, +variable, and struct/typedef names.) The update may force changes in some +driver code, depending on how resources are handled by the host OS. + +All Resource Manager dispatch and information tables have been moved to a +single location for clarity and ease of maintenance. One new file was +created, named "rsinfo.c". + +The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to +guarantee that the argument is not evaluated twice, making them less +prone +to macro side-effects. However, since there exists the possibility of +additional stack use if a particular compiler cannot optimize them (such +as +in the debug generation case), the original macros are optionally +available. +Note that some invocations of the return_VALUE macro may now cause size +mismatch warnings; the return_UINT8 and return_UINT32 macros are provided +to +eliminate these. (From Randy Dunlap) + +Implemented a new mechanism to enable debug tracing for individual +control +methods. A new external interface, AcpiDebugTrace, is provided to enable +this mechanism. The intent is to allow the host OS to easily enable and +disable tracing for problematic control methods. This interface can be +easily exposed to a user or debugger interface if desired. See the file +psxface.c for details. + +AcpiUtCallocate will now return a valid pointer if a length of zero is +specified - a length of one is used and a warning is issued. This matches +the behavior of AcpiUtAllocate. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total + Debug Version: 168.1K Code, 68.4K Data, 236.5K Total + Current Release: + Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total + Debug Version: 168.0K Code, 68.3K Data, 236.3K Total + + +2) iASL Compiler/Disassembler: + +A remark is issued if the effective compile-time length of a package or +buffer is zero. Previously, this was a warning. + +---------------------------------------- +16 September 2005. Summary of changes for version 20050916: + +1) ACPI CA Core Subsystem: + +Fixed a problem within the Resource Manager where support for the Generic +Register descriptor was not fully implemented. This descriptor is now +fully +recognized, parsed, disassembled, and displayed. + +Completely restructured the Resource Manager code to utilize table-driven +dispatch and lookup, eliminating many of the large switch() statements. +This +reduces overall subsystem code size and code complexity. Affects the +resource parsing and construction, disassembly, and debug dump output. + +Cleaned up and restructured the debug dump output for all resource +descriptors. Improved readability of the output and reduced code size. + +Fixed a problem where changes to internal data structures caused the +optional ACPI_MUTEX_DEBUG code to fail compilation if specified. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. +These +values do not include any ACPI driver or OSPM code. The debug version of +the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the +efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total + Debug Version: 169.6K Code, 69.9K Data, 239.5K Total + Current Release: + Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total + Debug Version: 168.1K Code, 68.4K Data, 236.5K Total + + +2) iASL Compiler/Disassembler: + +Updated the disassembler to automatically insert an EndDependentFn() +macro +into the ASL stream if this macro is missing in the original AML code, +simplifying compilation of the resulting ASL module. + +Fixed a problem in the disassembler where a disassembled ResourceSource +string (within a large resource descriptor) was not surrounded by quotes +and +not followed by a comma, causing errors when the resulting ASL module was +compiled. Also, escape sequences within a ResourceSource string are now +handled correctly (especially "\\") + +---------------------------------------- +02 September 2005. Summary of changes for version 20050902: + +1) ACPI CA Core Subsystem: + +Fixed a problem with the internal Owner ID allocation and deallocation +mechanisms for control method execution and recursive method invocation. +This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" +messages seen on some systems. Recursive method invocation depth is +currently limited to 255. (Alexey Starikovskiy) + +Completely eliminated all vestiges of support for the "module-level +executable code" until this support is fully implemented and debugged. +This +should eliminate the NO_RETURN_VALUE exceptions seen during table load on +some systems that invoke this support. + +Fixed a problem within the resource manager code where the transaction +flags +for a 64-bit address descriptor were handled incorrectly in the type- +specific flag byte. + +Consolidated duplicate code within the address descriptor resource +manager +code, reducing overall subsystem code size. + +Fixed a fault when using the AML debugger "disassemble" command to +disassemble individual control methods. + +Removed references to the "release_current" directory within the Unix +release package. + +Code and Data Size: The current and previous core subsystem library sizes +are shown below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler. These values do not +include any ACPI driver or OSPM code. The debug version of the code +includes +the debug output trace mechanism and has a much larger code and data +size. +Note that these values will vary depending on the efficiency of the +compiler +and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total + Debug Version: 170.0K Code, 69.9K Data, 239.9K Total + Current Release: + Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total + Debug Version: 169.6K Code, 69.9K Data, 239.5K Total + + +2) iASL Compiler/Disassembler: + +Implemented an error check for illegal duplicate values in the interrupt +and +dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and +Interrupt(). + +Implemented error checking for the Irq() and IrqNoFlags() macros to +detect +too many values in the interrupt list (16 max) and invalid values in the +list (range 0 - 15) + +The maximum length string literal within an ASL file is now restricted to +200 characters as per the ACPI specification. + +Fixed a fault when using the -ln option (generate namespace listing). + +Implemented an error check to determine if a DescriptorName within a +resource descriptor has already been used within the current scope. + +---------------------------------------- +15 August 2005. Summary of changes for version 20050815: + +1) ACPI CA Core Subsystem: + +Implemented a full bytewise compare to determine if a table load request +is +attempting to load a duplicate table. The compare is performed if the +table +signatures and table lengths match. This will allow different tables with +the same OEM Table ID and revision to be loaded - probably against the +ACPI +specification, but discovered in the field nonetheless. + +Added the changes.txt logfile to each of the zipped release packages. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total + Debug Version: 167.0K Code, 69.9K Data, 236.9K Total + Current Release: + Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total + Debug Version: 170.0K Code, 69.9K Data, 239.9K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem where incorrect AML code could be generated for Package +objects if optimization is disabled (via the -oa switch). + +Fixed a problem with where incorrect AML code is generated for variable- +length packages when the package length is not specified and the number +of +initializer values is greater than 255. + + +---------------------------------------- +29 July 2005. Summary of changes for version 20050729: + +1) ACPI CA Core Subsystem: + +Implemented support to ignore an attempt to install/load a particular +ACPI +table more than once. Apparently there exists BIOS code that repeatedly +attempts to load the same SSDT upon certain events. With assistance from +Venkatesh Pallipadi. + +Restructured the main interface to the AML parser in order to correctly +handle all exceptional conditions. This will prevent leakage of the +OwnerId +resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on +some +machines. With assistance from Alexey Starikovskiy. + +Support for "module level code" has been disabled in this version due to +a +number of issues that have appeared on various machines. The support can +be +enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem +compilation. When the issues are fully resolved, the code will be enabled +by +default again. + +Modified the internal functions for debug print support to define the +FunctionName parameter as a (const char *) for compatibility with +compiler +built-in macros such as __FUNCTION__, etc. + +Linted the entire ACPICA source tree for both 32-bit and 64-bit. + +Implemented support to display an object count summary for the AML +Debugger +commands Object and Methods. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total + Debug Version: 170.0K Code, 69.7K Data, 239.7K Total + Current Release: + Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total + Debug Version: 167.0K Code, 69.9K Data, 236.9K Total + + +2) iASL Compiler/Disassembler: + +Fixed a regression that appeared in the 20050708 version of the compiler +where an error message was inadvertently emitted for invocations of the +_OSI +reserved control method. + +---------------------------------------- +08 July 2005. Summary of changes for version 20050708: + +1) ACPI CA Core Subsystem: + +The use of the CPU stack in the debug version of the subsystem has been +considerably reduced. Previously, a debug structure was declared in every +function that used the debug macros. This structure has been removed in +favor of declaring the individual elements as parameters to the debug +functions. This reduces the cumulative stack use during nested execution +of +ACPI function calls at the cost of a small increase in the code size of +the +debug version of the subsystem. With assistance from Alexey Starikovskiy +and +Len Brown. + +Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent +headers to define a macro that will return the current function name at +runtime (such as __FUNCTION__ or _func_, etc.) The function name is used +by +the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the +compiler-dependent header, the function name is saved on the CPU stack +(one +pointer per function.) This mechanism is used because apparently there +exists no standard ANSI-C defined macro that that returns the function +name. + +Redesigned and reimplemented the "Owner ID" mechanism used to track +namespace objects created/deleted by ACPI tables and control method +execution. A bitmap is now used to allocate and free the IDs, thus +solving +the wraparound problem present in the previous implementation. The size +of +the namespace node descriptor was reduced by 2 bytes as a result (Alexey +Starikovskiy). + +Removed the UINT32_BIT and UINT16_BIT types that were used for the +bitfield +flag definitions within the headers for the predefined ACPI tables. These +have been replaced by UINT8_BIT in order to increase the code portability +of +the subsystem. If the use of UINT8 remains a problem, we may be forced to +eliminate bitfields entirely because of a lack of portability. + +Enhanced the performance of the AcpiUtUpdateObjectReference procedure. +This +is a frequently used function and this improvement increases the +performance +of the entire subsystem (Alexey Starikovskiy). + +Fixed several possible memory leaks and the inverse - premature object +deletion (Alexey Starikovskiy). + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total + Debug Version: 165.2K Code, 69.6K Data, 234.8K Total + Current Release: + Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total + Debug Version: 170.0K Code, 69.7K Data, 239.7K Total + +---------------------------------------- +24 June 2005. Summary of changes for version 20050624: + +1) ACPI CA Core Subsystem: + +Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for +the host-defined cache object. This allows the OSL implementation to +define +and type this object in any manner desired, simplifying the OSL +implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for +Linux, and should be defined in the OS-specific header file for other +operating systems as required. + +Changed the interface to AcpiOsAcquireObject to directly return the +requested object as the function return (instead of ACPI_STATUS.) This +change was made for performance reasons, since this is the purpose of the +interface in the first place. AcpiOsAcquireObject is now similar to the +AcpiOsAllocate interface. + +Implemented a new AML debugger command named Businfo. This command +displays +information about all devices that have an associate _PRT object. The +_ADR, +_HID, _UID, and _CID are displayed for these devices. + +Modified the initialization sequence in AcpiInitializeSubsystem to call +the +OSL interface AcpiOslInitialize first, before any local initialization. +This +change was required because the global initialization now calls OSL +interfaces. + +Enhanced the Dump command to display the entire contents of Package +objects +(including all sub-objects and their values.) + +Restructured the code base to split some files because of size and/or +because the code logically belonged in a separate file. New files are +listed +below. All makefiles and project files included in the ACPI CA release +have +been updated. + utilities/utcache.c /* Local cache interfaces */ + utilities/utmutex.c /* Local mutex support */ + utilities/utstate.c /* State object support */ + interpreter/parser/psloop.c /* Main AML parse loop */ + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total + Debug Version: 164.0K Code, 69.1K Data, 233.1K Total + Current Release: + Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total + Debug Version: 165.2K Code, 69.6K Data, 234.8K Total + + +2) iASL Compiler/Disassembler: + +Fixed a regression introduced in version 20050513 where the use of a +Package +object within a Case() statement caused a compile time exception. The +original behavior has been restored (a Match() operator is emitted.) + +---------------------------------------- +17 June 2005. Summary of changes for version 20050617: + +1) ACPI CA Core Subsystem: + +Moved the object cache operations into the OS interface layer (OSL) to +allow +the host OS to handle these operations if desired (for example, the Linux +OSL will invoke the slab allocator). This support is optional; the +compile +time define ACPI_USE_LOCAL_CACHE may be used to utilize the original +cache +code in the ACPI CA core. The new OSL interfaces are shown below. See +utalloc.c for an example implementation, and acpiosxf.h for the exact +interface definitions. With assistance from Alexey Starikovskiy. + AcpiOsCreateCache + AcpiOsDeleteCache + AcpiOsPurgeCache + AcpiOsAcquireObject + AcpiOsReleaseObject + +Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to +return +and restore a flags parameter. This fits better with many OS lock models. +Note: the current execution state (interrupt handler or not) is no longer +passed to these interfaces. If necessary, the OSL must determine this +state +by itself, a simple and fast operation. With assistance from Alexey +Starikovskiy. + +Fixed a problem in the ACPI table handling where a valid XSDT was assumed +present if the revision of the RSDP was 2 or greater. According to the +ACPI +specification, the XSDT is optional in all cases, and the table manager +therefore now checks for both an RSDP >=2 and a valid XSDT pointer. +Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs +contain +only the RSDT. + +Fixed an interpreter problem with the Mid() operator in the case of an +input +string where the resulting output string is of zero length. It now +correctly +returns a valid, null terminated string object instead of a string object +with a null pointer. + +Fixed a problem with the control method argument handling to allow a +store +to an Arg object that already contains an object of type Device. The +Device +object is now correctly overwritten. Previously, an error was returned. + + +Enhanced the debugger Find command to emit object values in addition to +the +found object pathnames. The output format is the same as the dump +namespace +command. + +Enhanced the debugger Set command. It now has the ability to set the +value +of any Named integer object in the namespace (Previously, only method +locals +and args could be set.) + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total + Debug Version: 164.0K Code, 69.3K Data, 233.3K Total + Current Release: + Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total + Debug Version: 164.0K Code, 69.1K Data, 233.1K Total + + +2) iASL Compiler/Disassembler: + +Fixed a regression in the disassembler where if/else/while constructs +were +output incorrectly. This problem was introduced in the previous release +(20050526). This problem also affected the single-step disassembly in the +debugger. + +Fixed a problem where compiling the reserved _OSI method would randomly +(but +rarely) produce compile errors. + +Enhanced the disassembler to emit compilable code in the face of +incorrect +AML resource descriptors. If the optional ResourceSourceIndex is present, +but the ResourceSource is not, do not emit the ResourceSourceIndex in the +disassembly. Otherwise, the resulting code cannot be compiled without +errors. + +---------------------------------------- +26 May 2005. Summary of changes for version 20050526: + +1) ACPI CA Core Subsystem: + +Implemented support to execute Type 1 and Type 2 AML opcodes appearing at +the module level (not within a control method.) These opcodes are +executed +exactly once at the time the table is loaded. This type of code was legal +up +until the release of ACPI 2.0B (2002) and is now supported within ACPI CA +in +order to provide backwards compatibility with earlier BIOS +implementations. +This eliminates the "Encountered executable code at module level" warning +that was previously generated upon detection of such code. + +Fixed a problem in the interpreter where an AE_NOT_FOUND exception could +inadvertently be generated during the lookup of namespace objects in the +second pass parse of ACPI tables and control methods. It appears that +this +problem could occur during the resolution of forward references to +namespace +objects. + +Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, +corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This +allows the deadlock detection debug code to be compiled out in the normal +case, improving mutex performance (and overall subsystem performance) +considerably. + +Implemented a handful of miscellaneous fixes for possible memory leaks on +error conditions and error handling control paths. These fixes were +suggested by FreeBSD and the Coverity Prevent source code analysis tool. + +Added a check for a null RSDT pointer in AcpiGetFirmwareTable +(tbxfroot.c) +to prevent a fault in this error case. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total + Debug Version: 163.7K Code, 69.3K Data, 233.0K Total + Current Release: + Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total + Debug Version: 164.0K Code, 69.3K Data, 233.3K Total + + +2) iASL Compiler/Disassembler: + +Implemented support to allow Type 1 and Type 2 ASL operators to appear at +the module level (not within a control method.) These operators will be +executed once at the time the table is loaded. This type of code was +legal +up until the release of ACPI 2.0B (2002) and is now supported by the iASL +compiler in order to provide backwards compatibility with earlier BIOS +ASL +code. + +The ACPI integer width (specified via the table revision ID or the -r +override, 32 or 64 bits) is now used internally during compile-time +constant +folding to ensure that constants are truncated to 32 bits if necessary. +Previously, the revision ID value was only emitted in the AML table +header. + +An error message is now generated for the Mutex and Method operators if +the +SyncLevel parameter is outside the legal range of 0 through 15. + +Fixed a problem with the Method operator ParameterTypes list handling +(ACPI +3.0). Previously, more than 2 types or 2 arguments generated a syntax +error. +The actual underlying implementation of method argument typechecking is +still under development, however. + +---------------------------------------- +13 May 2005. Summary of changes for version 20050513: + +1) ACPI CA Core Subsystem: + +Implemented support for PCI Express root bridges -- added support for +device +PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. + +The interpreter now automatically truncates incoming 64-bit constants to +32 +bits if currently executing out of a 32-bit ACPI table (Revision < 2). +This +also affects the iASL compiler constant folding. (Note: as per below, the +iASL compiler no longer allows 64-bit constants within 32-bit tables.) + +Fixed a problem where string and buffer objects with "static" pointers +(pointers to initialization data within an ACPI table) were not handled +consistently. The internal object copy operation now always copies the +data +to a newly allocated buffer, regardless of whether the source object is +static or not. + +Fixed a problem with the FromBCD operator where an implicit result +conversion was improperly performed while storing the result to the +target +operand. Since this is an "explicit conversion" operator, the implicit +conversion should never be performed on the output. + +Fixed a problem with the CopyObject operator where a copy to an existing +named object did not always completely overwrite the existing object +stored +at name. Specifically, a buffer-to-buffer copy did not delete the +existing +buffer. + +Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces +and +structs for consistency. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total + Debug Version: 163.7K Code, 69.3K Data, 233.0K Total + Current Release: (Same sizes) + Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total + Debug Version: 163.7K Code, 69.3K Data, 233.0K Total + + +2) iASL Compiler/Disassembler: + +The compiler now emits a warning if an attempt is made to generate a 64- +bit +integer constant from within a 32-bit ACPI table (Revision < 2). The +integer +is truncated to 32 bits. + +Fixed a problem with large package objects: if the static length of the +package is greater than 255, the "variable length package" opcode is +emitted. Previously, this caused an error. This requires an update to the +ACPI spec, since it currently (incorrectly) states that packages larger +than +255 elements are not allowed. + +The disassembler now correctly handles variable length packages and +packages +larger than 255 elements. + +---------------------------------------- +08 April 2005. Summary of changes for version 20050408: + +1) ACPI CA Core Subsystem: + +Fixed three cases in the interpreter where an "index" argument to an ASL +function was still (internally) 32 bits instead of the required 64 bits. +This was the Index argument to the Index, Mid, and Match operators. + +The "strupr" function is now permanently local (AcpiUtStrupr), since this +is +not a POSIX-defined function and not present in most kernel-level C +libraries. All references to the C library strupr function have been +removed +from the headers. + +Completed the deployment of static functions/prototypes. All prototypes +with +the static attribute have been moved from the headers to the owning C +file. + +Implemented an extract option (-e) for the AcpiBin utility (AML binary +utility). This option allows the utility to extract individual ACPI +tables +from the output of AcpiDmp. It provides the same functionality of the +acpixtract.pl perl script without the worry of setting the correct perl +options. AcpiBin runs on Windows and has not yet been generated/validated +in +the Linux/Unix environment (but should be soon). + +Updated and fixed the table dump option for AcpiBin (-d). This option +converts a single ACPI table to a hex/ascii file, similar to the output +of +AcpiDmp. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total + Debug Version: 163.5K Code, 69.3K Data, 232.8K Total + Current Release: + Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total + Debug Version: 163.7K Code, 69.3K Data, 233.0K Total + + +2) iASL Compiler/Disassembler: + +Disassembler fix: Added a check to ensure that the table length found in +the +ACPI table header within the input file is not longer than the actual +input +file size. This indicates some kind of file or table corruption. + +---------------------------------------- +29 March 2005. Summary of changes for version 20050329: + +1) ACPI CA Core Subsystem: + +An error is now generated if an attempt is made to create a Buffer Field +of +length zero (A CreateField with a length operand of zero.) + +The interpreter now issues a warning whenever executable code at the +module +level is detected during ACPI table load. This will give some idea of the +prevalence of this type of code. + +Implemented support for references to named objects (other than control +methods) within package objects. + +Enhanced package object output for the debug object. Package objects are +now +completely dumped, showing all elements. + +Enhanced miscellaneous object output for the debug object. Any object can +now be written to the debug object (for example, a device object can be +written, and the type of the object will be displayed.) + +The "static" qualifier has been added to all local functions across both +the +core subsystem and the iASL compiler. + +The number of "long" lines (> 80 chars) within the source has been +significantly reduced, by about 1/3. + +Cleaned up all header files to ensure that all CA/iASL functions are +prototyped (even static functions) and the formatting is consistent. + +Two new header files have been added, acopcode.h and acnames.h. + +Removed several obsolete functions that were no longer used. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total + Debug Version: 165.4K Code, 69.7K Data, 236.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total + Debug Version: 163.5K Code, 69.3K Data, 232.8K Total + + + +2) iASL Compiler/Disassembler: + +Fixed a problem with the resource descriptor generation/support. For the +ResourceSourceIndex and the ResourceSource fields, both must be present, +or +both must be not present - can't have one without the other. + +The compiler now returns non-zero from the main procedure if any errors +have +occurred during the compilation. + + +---------------------------------------- +09 March 2005. Summary of changes for version 20050309: + +1) ACPI CA Core Subsystem: + +The string-to-buffer implicit conversion code has been modified again +after +a change to the ACPI specification. In order to match the behavior of +the +other major ACPI implementation, the target buffer is no longer truncated +if +the source string is smaller than an existing target buffer. This change +requires an update to the ACPI spec, and should eliminate the recent +AE_AML_BUFFER_LIMIT issues. + +The "implicit return" support was rewritten to a new algorithm that +solves +the general case. Rather than attempt to determine when a method is about +to +exit, the result of every ASL operator is saved momentarily until the +very +next ASL operator is executed. Therefore, no matter how the method exits, +there will always be a saved implicit return value. This feature is only +enabled with the AcpiGbl_EnableInterpreterSlack flag, and should +eliminate +AE_AML_NO_RETURN_VALUE errors when enabled. + +Implemented implicit conversion support for the predicate (operand) of +the +If, Else, and While operators. String and Buffer arguments are +automatically +converted to Integers. + +Changed the string-to-integer conversion behavior to match the new ACPI +errata: "If no integer object exists, a new integer is created. The ASCII +string is interpreted as a hexadecimal constant. Each string character is +interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting +with the first character as the most significant digit, and ending with +the +first non-hexadecimal character or end-of-string." This means that the +first +non-hex character terminates the conversion and this is the code that was +changed. + +Fixed a problem where the ObjectType operator would fail (fault) when +used +on an Index of a Package which pointed to a null package element. The +operator now properly returns zero (Uninitialized) in this case. + +Fixed a problem where the While operator used excessive memory by not +properly popping the result stack during execution. There was no memory +leak +after execution, however. (Code provided by Valery Podrezov.) + +Fixed a problem where references to control methods within Package +objects +caused the method to be invoked, instead of producing a reference object +pointing to the method. + +Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) +to +improve performance and reduce code size. (Code provided by Alexey +Starikovskiy.) + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total + Debug Version: 165.4K Code, 69.6K Data, 236.0K Total + Current Release: + Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total + Debug Version: 165.4K Code, 69.7K Data, 236.1K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem with the Return operator with no arguments. Since the AML +grammar for the byte encoding requires an operand for the Return opcode, +the +compiler now emits a Return(Zero) for this case. An ACPI specification +update has been written for this case. + +For tables other than the DSDT, namepath optimization is automatically +disabled. This is because SSDTs can be loaded anywhere in the namespace, +the +compiler has no knowledge of where, and thus cannot optimize namepaths. + +Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was +inadvertently omitted from the ACPI specification, and will require an +update to the spec. + +The source file scan for ASCII characters is now optional (-a). This +change +was made because some vendors place non-ascii characters within comments. +However, the scan is simply a brute-force byte compare to ensure all +characters in the file are in the range 0x00 to 0x7F. + +Fixed a problem with the CondRefOf operator where the compiler was +inappropriately checking for the existence of the target. Since the point +of +the operator is to check for the existence of the target at run-time, the +compiler no longer checks for the target existence. + +Fixed a problem where errors generated from the internal AML interpreter +during constant folding were not handled properly, causing a fault. + +Fixed a problem with overly aggressive range checking for the Stall +operator. The valid range (max 255) is now only checked if the operand is +of +type Integer. All other operand types cannot be statically checked. + +Fixed a problem where control method references within the RefOf, +DeRefOf, +and ObjectType operators were not treated properly. They are now treated +as +actual references, not method invocations. + +Fixed and enhanced the "list namespace" option (-ln). This option was +broken +a number of releases ago. + +Improved error handling for the Field, IndexField, and BankField +operators. +The compiler now cleanly reports and recovers from errors in the field +component (FieldUnit) list. + +Fixed a disassembler problem where the optional ResourceDescriptor fields +TRS and TTP were not always handled correctly. + +Disassembler - Comments in output now use "//" instead of "/*" + +---------------------------------------- +28 February 2005. Summary of changes for version 20050228: + +1) ACPI CA Core Subsystem: + +Fixed a problem where the result of an Index() operator (an object +reference) must increment the reference count on the target object for +the +life of the object reference. + +Implemented AML Interpreter and Debugger support for the new ACPI 3.0 +Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and +WordSpace +resource descriptors. + +Implemented support in the _OSI method for the ACPI 3.0 "Extended Address +Space Descriptor" string, indicating interpreter support for the +descriptors +above. + +Implemented header support for the new ACPI 3.0 FADT flag bits. + +Implemented header support for the new ACPI 3.0 PCI Express bits for the +PM1 +status/enable registers. + +Updated header support for the MADT processor local Apic struct and MADT +platform interrupt source struct for new ACPI 3.0 fields. + +Implemented header support for the SRAT and SLIT ACPI tables. + +Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" +flag +at runtime. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total + Debug Version: 164.9K Code, 69.2K Data, 234.1K Total + Current Release: + Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total + Debug Version: 165.4K Code, 69.6K Data, 236.0K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem with the internal 64-bit String-to-integer conversion +with +strings less than two characters long. + +Fixed a problem with constant folding where the result of the Index() +operator can not be considered a constant. This means that Index() cannot +be +a type3 opcode and this will require an update to the ACPI specification. + +Disassembler: Implemented support for the TTP, MTP, and TRS resource +descriptor fields. These fields were inadvertently ignored and not output +in +the disassembly of the resource descriptor. + + + ---------------------------------------- +11 February 2005. Summary of changes for version 20050211: + +1) ACPI CA Core Subsystem: + +Implemented ACPI 3.0 support for implicit conversion within the Match() +operator. MatchObjects can now be of type integer, buffer, or string +instead +of just type integer. Package elements are implicitly converted to the +type +of the MatchObject. This change aligns the behavior of Match() with the +behavior of the other logical operators (LLess(), etc.) It also requires +an +errata change to the ACPI specification as this support was intended for +ACPI 3.0, but was inadvertently omitted. + +Fixed a problem with the internal implicit "to buffer" conversion. +Strings +that are converted to buffers will cause buffer truncation if the string +is +smaller than the target buffer. Integers that are converted to buffers +will +not cause buffer truncation, only zero extension (both as per the ACPI +spec.) The problem was introduced when code was added to truncate the +buffer, but this should not be performed in all cases, only the string +case. + +Fixed a problem with the Buffer and Package operators where the +interpreter +would get confused if two such operators were used as operands to an ASL +operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result +stack was not being popped after the execution of these operators, +resulting +in an AE_NO_RETURN_VALUE exception. + +Fixed a problem with constructs of the form Store(Index(...),...). The +reference object returned from Index was inadvertently resolved to an +actual +value. This problem was introduced in version 20050114 when the behavior +of +Store() was modified to restrict the object types that can be used as the +source operand (to match the ACPI specification.) + +Reduced excessive stack use within the AcpiGetObjectInfo procedure. + +Added a fix to aclinux.h to allow generation of AcpiExec on Linux. + +Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total + Debug Version: 164.8K Code, 69.2K Data, 234.0K Total + Current Release: + Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total + Debug Version: 164.9K Code, 69.2K Data, 234.1K Total + + +2) iASL Compiler/Disassembler: + +Fixed a code generation problem in the constant folding optimization code +where incorrect code was generated if a constant was reduced to a buffer +object (i.e., a reduced type 5 opcode.) + +Fixed a typechecking problem for the ToBuffer operator. Caused by an +incorrect return type in the internal opcode information table. + +---------------------------------------- +25 January 2005. Summary of changes for version 20050125: + +1) ACPI CA Core Subsystem: + +Fixed a recently introduced problem with the Global Lock where the +underlying semaphore was not created. This problem was introduced in +version 20050114, and caused an AE_AML_NO_OPERAND exception during an +Acquire() operation on _GL. + +The local object cache is now optional, and is disabled by default. Both +AcpiExec and the iASL compiler enable the cache because they run in user +mode and this enhances their performance. #define +ACPI_ENABLE_OBJECT_CACHE +to enable the local cache. + +Fixed an issue in the internal function AcpiUtEvaluateObject concerning +the +optional "implicit return" support where an error was returned if no +return +object was expected, but one was implicitly returned. AE_OK is now +returned +in this case and the implicitly returned object is deleted. +AcpiUtEvaluateObject is only occasionally used, and only to execute +reserved +methods such as _STA and _INI where the return type is known up front. + +Fixed a few issues with the internal convert-to-integer code. It now +returns +an error if an attempt is made to convert a null string, a string of only +blanks/tabs, or a zero-length buffer. This affects both implicit +conversion +and explicit conversion via the ToInteger() operator. + +The internal debug code in AcpiUtAcquireMutex has been commented out. It +is +not needed for normal operation and should increase the performance of +the +entire subsystem. The code remains in case it is needed for debug +purposes +again. + +The AcpiExec source and makefile are included in the Unix/Linux package +for +the first time. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total + Debug Version: 165.4K Code, 69.4K Data, 234.8K Total + Current Release: + Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total + Debug Version: 164.8K Code, 69.2K Data, 234.0K Total + +2) iASL Compiler/Disassembler: + +Switch/Case support: A warning is now issued if the type of the Switch +value +cannot be determined at compile time. For example, Switch(Arg0) will +generate the warning, and the type is assumed to be an integer. As per +the +ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate +the +warning. + +Switch/Case support: Implemented support for buffer and string objects as +the switch value. This is an ACPI 3.0 feature, now that LEqual supports +buffers and strings. + +Switch/Case support: The emitted code for the LEqual() comparisons now +uses +the switch value as the first operand, not the second. The case value is +now +the second operand, and this allows the case value to be implicitly +converted to the type of the switch value, not the other way around. + +Switch/Case support: Temporary variables are now emitted immediately +within +the control method, not at the global level. This means that there are +now +36 temps available per-method, not 36 temps per-module as was the case +with +the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) + +---------------------------------------- +14 January 2005. Summary of changes for version 20050114: + +Added 2005 copyright to all module headers. This affects every module in +the core subsystem, iASL compiler, and the utilities. + +1) ACPI CA Core Subsystem: + +Fixed an issue with the String-to-Buffer conversion code where the string +null terminator was not included in the buffer after conversion, but +there +is existing ASL that assumes the string null terminator is included. This +is +the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was +introduced in the previous version when the code was updated to correctly +set the converted buffer size as per the ACPI specification. The ACPI +spec +is ambiguous and will be updated to specify that the null terminator must +be +included in the converted buffer. This also affects the ToBuffer() ASL +operator. + +Fixed a problem with the Mid() ASL/AML operator where it did not work +correctly on Buffer objects. Newly created sub-buffers were not being +marked +as initialized. + + +Fixed a problem in AcpiTbFindTable where incorrect string compares were +performed on the OemId and OemTableId table header fields. These fields +are +not null terminated, so strncmp is now used instead of strcmp. + +Implemented a restriction on the Store() ASL/AML operator to align the +behavior with the ACPI specification. Previously, any object could be +used +as the source operand. Now, the only objects that may be used are +Integers, +Buffers, Strings, Packages, Object References, and DDB Handles. If +necessary, the original behavior can be restored by enabling the +EnableInterpreterSlack flag. + +Enhanced the optional "implicit return" support to allow an implicit +return +value from methods that are invoked externally via the AcpiEvaluateObject +interface. This enables implicit returns from the _STA and _INI methods, +for example. + +Changed the Revision() ASL/AML operator to return the current version of +the +AML interpreter, in the YYYYMMDD format. Previously, it incorrectly +returned +the supported ACPI version (This is the function of the _REV method). + +Updated the _REV predefined method to return the currently supported +version +of ACPI, now 3. + +Implemented batch mode option for the AcpiExec utility (-b). + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total + Debug Version: 165.3K Code, 69.4K Data, 234.7K Total + Current Release: + Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total + Debug Version: 165.4K Code, 69.4K Data, 234.8K Total + +---------------------------------------- +10 December 2004. Summary of changes for version 20041210: + +ACPI 3.0 support is nearing completion in both the iASL compiler and the +ACPI CA core subsystem. + +1) ACPI CA Core Subsystem: + +Fixed a problem in the ToDecimalString operator where the resulting +string +length was incorrectly calculated. The length is now calculated exactly, +eliminating incorrect AE_STRING_LIMIT exceptions. + +Fixed a problem in the ToHexString operator to allow a maximum 200 +character +string to be produced. + +Fixed a problem in the internal string-to-buffer and buffer-to-buffer +copy +routine where the length of the resulting buffer was not truncated to the +new size (if the target buffer already existed). + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total + Debug Version: 164.7K Code, 68.5K Data, 233.2K Total + Current Release: + Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total + Debug Version: 165.3K Code, 69.4K Data, 234.7K Total + + +2) iASL Compiler/Disassembler: + +Implemented the new ACPI 3.0 resource template macros - DWordSpace, +ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. +Includes support in the disassembler. + +Implemented support for the new (ACPI 3.0) parameter to the Register +macro, +AccessSize. + +Fixed a problem where the _HE resource name for the Interrupt macro was +referencing bit 0 instead of bit 1. + +Implemented check for maximum 255 interrupts in the Interrupt macro. + +Fixed a problem with the predefined resource descriptor names where +incorrect AML code was generated if the offset within the resource buffer +was 0 or 1. The optimizer shortened the AML code to a single byte opcode +but did not update the surrounding package lengths. + +Changes to the Dma macro: All channels within the channel list must be +in +the range 0-7. Maximum 8 channels can be specified. BusMaster operand is +optional (default is BusMaster). + +Implemented check for maximum 7 data bytes for the VendorShort macro. + +The ReadWrite parameter is now optional for the Memory32 and similar +macros. + +---------------------------------------- +03 December 2004. Summary of changes for version 20041203: + +1) ACPI CA Core Subsystem: + +The low-level field insertion/extraction code (exfldio) has been +completely +rewritten to eliminate unnecessary complexity, bugs, and boundary +conditions. + +Fixed a problem in the ToInteger, ToBuffer, ToHexString, and +ToDecimalString +operators where the input operand could be inadvertently deleted if no +conversion was necessary (e.g., if the input to ToInteger was an Integer +object.) + +Fixed a problem with the ToDecimalString and ToHexString where an +incorrect +exception code was returned if the resulting string would be > 200 chars. +AE_STRING_LIMIT is now returned. + +Fixed a problem with the Concatenate operator where AE_OK was always +returned, even if the operation failed. + +Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 +semaphores to be allocated. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total + Debug Version: 165.2K Code, 68.6K Data, 233.8K Total + Current Release: + Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total + Debug Version: 164.7K Code, 68.5K Data, 233.2K Total + + +2) iASL Compiler/Disassembler: + +Fixed typechecking for the ObjectType and SizeOf operators. Problem was +recently introduced in 20041119. + +Fixed a problem with the ToUUID macro where the upper nybble of each +buffer +byte was inadvertently set to zero. + +---------------------------------------- +19 November 2004. Summary of changes for version 20041119: + +1) ACPI CA Core Subsystem: + +Fixed a problem in the internal ConvertToInteger routine where new +integers +were not truncated to 32 bits for 32-bit ACPI tables. This routine +converts +buffers and strings to integers. + +Implemented support to store a value to an Index() on a String object. +This +is an ACPI 2.0 feature that had not yet been implemented. + +Implemented new behavior for storing objects to individual package +elements +(via the Index() operator). The previous behavior was to invoke the +implicit +conversion rules if an object was already present at the index. The new +behavior is to simply delete any existing object and directly store the +new +object. Although the ACPI specification seems unclear on this subject, +other +ACPI implementations behave in this manner. (This is the root of the +AE_BAD_HEX_CONSTANT issue.) + +Modified the RSDP memory scan mechanism to support the extended checksum +for +ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid +RSDP signature is found with a valid checksum. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total + Debug Version: 165.2K Code, 68.6K Data, 233.8K Total + Current Release: + Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total + Debug Version: 165.2K Code, 68.6K Data, 233.8K Total + + +2) iASL Compiler/Disassembler: + +Fixed a missing semicolon in the aslcompiler.y file. + +---------------------------------------- +05 November 2004. Summary of changes for version 20041105: + +1) ACPI CA Core Subsystem: + +Implemented support for FADT revision 2. This was an interim table +(between +ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. + +Implemented optional support to allow uninitialized LocalX and ArgX +variables in a control method. The variables are initialized to an +Integer +object with a value of zero. This support is enabled by setting the +AcpiGbl_EnableInterpreterSlack flag to TRUE. + +Implemented support for Integer objects for the SizeOf operator. Either +4 +or 8 is returned, depending on the current integer size (32-bit or 64- +bit, +depending on the parent table revision). + +Fixed a problem in the implementation of the SizeOf and ObjectType +operators +where the operand was resolved to a value too early, causing incorrect +return values for some objects. + +Fixed some possible memory leaks during exceptional conditions. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total + Debug Version: 164.8K Code, 68.6K Data, 233.4K Total + Current Release: + Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total + Debug Version: 165.2K Code, 68.6K Data, 233.8K Total + + +2) iASL Compiler/Disassembler: + +Implemented support for all ACPI 3.0 reserved names and methods. + +Implemented all ACPI 3.0 grammar elements in the front-end, including +support for semicolons. + +Implemented the ACPI 3.0 Function() and ToUUID() macros + +Fixed a problem in the disassembler where a Scope() operator would not be +emitted properly if the target of the scope was in another table. + +---------------------------------------- +15 October 2004. Summary of changes for version 20041015: + +Note: ACPI CA is currently undergoing an in-depth and complete formal +evaluation to test/verify the following areas. Other suggestions are +welcome. This will result in an increase in the frequency of releases and +the number of bug fixes in the next few months. + - Functional tests for all ASL/AML operators + - All implicit/explicit type conversions + - Bit fields and operation regions + - 64-bit math support and 32-bit-only "truncated" math support + - Exceptional conditions, both compiler and interpreter + - Dynamic object deletion and memory leaks + - ACPI 3.0 support when implemented + - External interfaces to the ACPI subsystem + + +1) ACPI CA Core Subsystem: + +Fixed two alignment issues on 64-bit platforms - within debug statements +in +AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the +Address +field within the non-aligned ACPI generic address structure. + +Fixed a problem in the Increment and Decrement operators where incorrect +operand resolution could result in the inadvertent modification of the +original integer when the integer is passed into another method as an +argument and the arg is then incremented/decremented. + +Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- +bit +BCD number were truncated during conversion. + +Fixed a problem in the ToDecimal operator where the length of the +resulting +string could be set incorrectly too long if the input operand was a +Buffer +object. + +Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte +(0) +within a buffer would prematurely terminate a compare between buffer +objects. + +Added a check for string overflow (>200 characters as per the ACPI +specification) during the Concatenate operator with two string operands. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total + Debug Version: 164.6K Code, 68.5K Data, 233.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total + Debug Version: 164.8K Code, 68.6K Data, 233.4K Total + + + +2) iASL Compiler/Disassembler: + +Allow the use of the ObjectType operator on uninitialized Locals and Args +(returns 0 as per the ACPI specification). + +Fixed a problem where the compiler would fault if there was a syntax +error +in the FieldName of all of the various CreateXXXField operators. + +Disallow the use of lower case letters within the EISAID macro, as per +the +ACPI specification. All EISAID strings must be of the form "UUUNNNN" +Where +U is an uppercase letter and N is a hex digit. + + +---------------------------------------- +06 October 2004. Summary of changes for version 20041006: + +1) ACPI CA Core Subsystem: + +Implemented support for the ACPI 3.0 Timer operator. This ASL function +implements a 64-bit timer with 100 nanosecond granularity. + +Defined a new OSL interface, AcpiOsGetTimer. This interface is used to +implement the ACPI 3.0 Timer operator. This allows the host OS to +implement +the timer with the best clock available. Also, it keeps the core +subsystem +out of the clock handling business, since the host OS (usually) performs +this function. + +Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) +functions use a 64-bit address which is part of the packed ACPI Generic +Address Structure. Since the structure is non-aligned, the alignment +macros +are now used to extract the address to a local variable before use. + +Fixed a problem where the ToInteger operator assumed all input strings +were +hexadecimal. The operator now handles both decimal strings and hex +strings +(prefixed with "0x"). + +Fixed a problem where the string length in the string object created as a +result of the internal ConvertToString procedure could be incorrect. This +potentially affected all implicit conversions and also the +ToDecimalString +and ToHexString operators. + +Fixed two problems in the ToString operator. If the length parameter was +zero, an incorrect string object was created and the value of the input +length parameter was inadvertently changed from zero to Ones. + +Fixed a problem where the optional ResourceSource string in the +ExtendedIRQ +resource macro was ignored. + +Simplified the interfaces to the internal division functions, reducing +code +size and complexity. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total + Debug Version: 164.5K Code, 68.3K Data, 232.8K Total + Current Release: + Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total + Debug Version: 164.6K Code, 68.5K Data, 233.1K Total + + +2) iASL Compiler/Disassembler: + +Implemented support for the ACPI 3.0 Timer operator. + +Fixed a problem where the Default() operator was inadvertently ignored in +a +Switch/Case block. This was a problem in the translation of the Switch +statement to If...Else pairs. + +Added support to allow a standalone Return operator, with no parentheses +(or +operands). + +Fixed a problem with code generation for the ElseIf operator where the +translated Else...If parse tree was improperly constructed leading to the +loss of some code. + +---------------------------------------- +22 September 2004. Summary of changes for version 20040922: + +1) ACPI CA Core Subsystem: + +Fixed a problem with the implementation of the LNot() operator where +"Ones" +was not returned for the TRUE case. Changed the code to return Ones +instead +of (!Arg) which was usually 1. This change affects iASL constant folding +for +this operator also. + +Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was +not +initialized properly -- Now zero the entire buffer in this case where the +buffer already exists. + +Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 +Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all +related code considerably. This will require changes/updates to all OS +interface layers (OSLs.) + +Implemented a new external interface, AcpiInstallExceptionHandler, to +allow +a system exception handler to be installed. This handler is invoked upon +any +run-time exception that occurs during control method execution. + +Added support for the DSDT in AcpiTbFindTable. This allows the +DataTableRegion() operator to access the local copy of the DSDT. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total + Debug Version: 164.2K Code, 68.2K Data, 232.4K Total + Current Release: + Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total + Debug Version: 164.5K Code, 68.3K Data, 232.8K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem with constant folding and the LNot operator. LNot was +returning 1 in the TRUE case, not Ones as per the ACPI specification. +This +could result in the generation of an incorrect folded/reduced constant. + +End-Of-File is now allowed within a "//"-style comment. A parse error no +longer occurs if such a comment is at the very end of the input ASL +source +file. + +Implemented the "-r" option to override the Revision in the table header. +The initial use of this option will be to simplify the evaluation of the +AML +interpreter by allowing a single ASL source module to be compiled for +either +32-bit or 64-bit integers. + + +---------------------------------------- +27 August 2004. Summary of changes for version 20040827: + +1) ACPI CA Core Subsystem: + +- Implemented support for implicit object conversion in the non-numeric +logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, +and +LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; +the second operand is implicitly converted on the fly to match the type +of +the first operand. For example: + + LEqual (Source1, Source2) + +Source1 and Source2 must each evaluate to an integer, a string, or a +buffer. +The data type of Source1 dictates the required type of Source2. Source2 +is +implicitly converted if necessary to match the type of Source1. + +- Updated and corrected the behavior of the string conversion support. +The +rules concerning conversion of buffers to strings (according to the ACPI +specification) are as follows: + +ToDecimalString - explicit byte-wise conversion of buffer to string of +decimal values (0-255) separated by commas. ToHexString - explicit byte- +wise +conversion of buffer to string of hex values (0-FF) separated by commas. +ToString - explicit byte-wise conversion of buffer to string. Byte-by- +byte +copy with no transform except NULL terminated. Any other implicit buffer- +to- +string conversion - byte-wise conversion of buffer to string of hex +values +(0-FF) separated by spaces. + +- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. + +- Fixed a problem in AcpiNsGetPathnameLength where the returned length +was +one byte too short in the case of a node in the root scope. This could +cause a fault during debug output. + +- Code and Data Size: Current and previous core subsystem library sizes +are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total + Debug Version: 164.1K Code, 68.3K Data, 232.4K Total + Current Release: + Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total + Debug Version: 164.2K Code, 68.2K Data, 232.4K Total + + +2) iASL Compiler/Disassembler: + +- Fixed a Linux generation error. + + +---------------------------------------- +16 August 2004. Summary of changes for version 20040816: + +1) ACPI CA Core Subsystem: + +Designed and implemented support within the AML interpreter for the so- +called "implicit return". This support returns the result of the last +ASL +operation within a control method, in the absence of an explicit Return() +operator. A few machines depend on this behavior, even though it is not +explicitly supported by the ASL language. It is optional support that +can +be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. + +Removed support for the PCI_Config address space from the internal low +level +hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This +support was not used internally, and would not work correctly anyway +because +the PCI bus number and segment number were not supported. There are +separate interfaces for PCI configuration space access because of the +unique +interface. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total + Debug Version: 164.1K Code, 68.2K Data, 232.3K Total + Current Release: + Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total + Debug Version: 164.1K Code, 68.3K Data, 232.4K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem where constants in ASL expressions at the root level (not +within a control method) could be inadvertently truncated during code +generation. This problem was introduced in the 20040715 release. + + +---------------------------------------- +15 July 2004. Summary of changes for version 20040715: + +1) ACPI CA Core Subsystem: + +Restructured the internal HW GPE interfaces to pass/track the current +state +of interrupts (enabled/disabled) in order to avoid possible deadlock and +increase flexibility of the interfaces. + +Implemented a "lexicographical compare" for String and Buffer objects +within +the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - +- +as per further clarification to the ACPI specification. Behavior is +similar +to C library "strcmp". + +Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable +external function. In the 32-bit non-debug case, the stack use has been +reduced from 168 bytes to 32 bytes. + +Deployed a new run-time configuration flag, +AcpiGbl_EnableInterpreterSlack, +whose purpose is to allow the AML interpreter to forgive certain bad AML +constructs. Default setting is FALSE. + +Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field +IO +support code. If enabled, it allows field access to go beyond the end of +a +region definition if the field is within the region length rounded up to +the +next access width boundary (a common coding error.) + +Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to +ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, +these +symbols are lowercase by the latest version of the AcpiSrc tool. + +The prototypes for the PCI interfaces in acpiosxf.h have been updated to +rename "Register" to simply "Reg" to prevent certain compilers from +complaining. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total + Debug Version: 163.8K Code, 68.2K Data, 232.0K Total + Current Release: + Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total + Debug Version: 164.1K Code, 68.2K Data, 232.3K Total + + +2) iASL Compiler/Disassembler: + +Implemented full support for Package objects within the Case() operator. +Note: The Break() operator is currently not supported within Case blocks +(TermLists) as there is some question about backward compatibility with +ACPI +1.0 interpreters. + + +Fixed a problem where complex terms were not supported properly within +the +Switch() operator. + +Eliminated extraneous warning for compiler-emitted reserved names of the +form "_T_x". (Used in Switch/Case operators.) + +Eliminated optimization messages for "_T_x" objects and small constants +within the DefinitionBlock operator. + + +---------------------------------------- +15 June 2004. Summary of changes for version 20040615: + +1) ACPI CA Core Subsystem: + +Implemented support for Buffer and String objects (as per ACPI 2.0) for +the +following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and +LLessEqual. + +All directory names in the entire source package are lower case, as they +were in earlier releases. + +Implemented "Disassemble" command in the AML debugger that will +disassemble +a single control method. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total + Debug Version: 163.3K Code, 67.2K Data, 230.5K Total + + Current Release: + Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total + Debug Version: 163.8K Code, 68.2K Data, 232.0K Total + + +2) iASL Compiler/Disassembler: + +Implemented support for Buffer and String objects (as per ACPI 2.0) for +the +following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and +LLessEqual. + +All directory names in the entire source package are lower case, as they +were in earlier releases. + +Fixed a fault when using the -g or -d<nofilename> options if the FADT was +not found. + +Fixed an issue with the Windows version of the compiler where later +versions +of Windows place the FADT in the registry under the name "FADT" and not +"FACP" as earlier versions did. This applies when using the -g or - +d<nofilename> options. The compiler now looks for both strings as +necessary. + +Fixed a problem with compiler namepath optimization where a namepath +within +the Scope() operator could not be optimized if the namepath was a subpath +of +the current scope path. + +---------------------------------------- +27 May 2004. Summary of changes for version 20040527: + +1) ACPI CA Core Subsystem: + +Completed a new design and implementation for EBDA (Extended BIOS Data +Area) +support in the RSDP scan code. The original code improperly scanned for +the +EBDA by simply scanning from memory location 0 to 0x400. The correct +method +is to first obtain the EBDA pointer from within the BIOS data area, then +scan 1K of memory starting at the EBDA pointer. There appear to be few +if +any machines that place the RSDP in the EBDA, however. + +Integrated a fix for a possible fault during evaluation of BufferField +arguments. Obsolete code that was causing the problem was removed. + +Found and fixed a problem in the Field Support Code where data could be +corrupted on a bit field read that starts on an aligned boundary but does +not end on an aligned boundary. Merged the read/write "datum length" +calculation code into a common procedure. + +Rolled in a couple of changes to the FreeBSD-specific header. + + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total + Debug Version: 163.2K Code, 67.2K Data, 230.4K Total + Current Release: + Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total + Debug Version: 163.3K Code, 67.2K Data, 230.5K Total + + +2) iASL Compiler/Disassembler: + +Fixed a generation warning produced by some overly-verbose compilers for +a +64-bit constant. + +---------------------------------------- +14 May 2004. Summary of changes for version 20040514: + +1) ACPI CA Core Subsystem: + +Fixed a problem where hardware GPE enable bits sometimes not set properly +during and after GPE method execution. Result of 04/27 changes. + +Removed extra "clear all GPEs" when sleeping/waking. + +Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single +AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above +to +the new AcpiEv* calls as appropriate. + +ACPI_OS_NAME was removed from the OS-specific headers. The default name +is +now "Microsoft Windows NT" for maximum compatibility. However this can +be +changed by modifying the acconfig.h file. + +Allow a single invocation of AcpiInstallNotifyHandler for a handler that +traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. + +Run _INI methods on ThermalZone objects. This is against the ACPI +specification, but there is apparently ASL code in the field that has +these +_INI methods, and apparently "other" AML interpreters execute them. + +Performed a full 16/32/64 bit lint that resulted in some small changes. + +Added a sleep simulation command to the AML debugger to test sleep code. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total + Debug Version: 162.9K Code, 67.0K Data, 229.9K Total + Current Release: + Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total + Debug Version: 163.2K Code, 67.2K Data, 230.4K Total + +---------------------------------------- +27 April 2004. Summary of changes for version 20040427: + +1) ACPI CA Core Subsystem: + +Completed a major overhaul of the GPE handling within ACPI CA. There are +now three types of GPEs: wake-only, runtime-only, and combination +wake/run. +The only GPEs allowed to be combination wake/run are for button-style +devices such as a control-method power button, control-method sleep +button, +or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are +not +referenced by any _PRW methods are marked for "runtime" and hardware +enabled. Any GPE that is referenced by a _PRW method is marked for +"wake" +(and disabled at runtime). However, at sleep time, only those GPEs that +have been specifically enabled for wake via the AcpiEnableGpe interface +will +actually be hardware enabled. + +A new external interface has been added, AcpiSetGpeType(), that is meant +to +be used by device drivers to force a GPE to a particular type. It will +be +especially useful for the drivers for the button devices mentioned above. + +Completed restructuring of the ACPI CA initialization sequence so that +default operation region handlers are installed before GPEs are +initialized +and the _PRW methods are executed. This will prevent errors when the +_PRW +methods attempt to access system memory or I/O space. + +GPE enable/disable no longer reads the GPE enable register. We now keep +the +enable info for runtime and wake separate and in the GPE_EVENT_INFO. We +thus no longer depend on the hardware to maintain these bits. + +Always clear the wake status and fixed/GPE status bits before sleep, even +for state S5. + +Improved the AML debugger output for displaying the GPE blocks and their +current status. + +Added new strings for the _OSI method, of the form "Windows 2001 SPx" +where +x = 0,1,2,3,4. + +Fixed a problem where the physical address was incorrectly calculated +when +the Load() operator was used to directly load from an Operation Region +(vs. +loading from a Field object.) Also added check for minimum table length +for +this case. + +Fix for multiple mutex acquisition. Restore original thread SyncLevel on +mutex release. + +Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for +consistency with the other fields returned. + +Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such +structure for each GPE in the system, so the size of this structure is +important. + +CPU stack requirement reduction: Cleaned up the method execution and +object +evaluation paths so that now a parameter structure is passed, instead of +copying the various method parameters over and over again. + +In evregion.c: Correctly exit and reenter the interpreter region if and +only if dispatching an operation region request to a user-installed +handler. +Do not exit/reenter when dispatching to a default handler (e.g., default +system memory or I/O handlers) + + +Notes for updating drivers for the new GPE support. The following +changes +must be made to ACPI-related device drivers that are attached to one or +more +GPEs: (This information will be added to the ACPI CA Programmer +Reference.) + +1) AcpiInstallGpeHandler no longer automatically enables the GPE, you +must +explicitly call AcpiEnableGpe. +2) There is a new interface called AcpiSetGpeType. This should be called +before enabling the GPE. Also, this interface will automatically disable +the GPE if it is currently enabled. +3) AcpiEnableGpe no longer supports a GPE type flag. + +Specific drivers that must be changed: +1) EC driver: + AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, +AeGpeHandler, NULL); + AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); + AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); + +2) Button Drivers (Power, Lid, Sleep): +Run _PRW method under parent device +If _PRW exists: /* This is a control-method button */ + Extract GPE number and possibly GpeDevice + AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); + AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); + +For all other devices that have _PRWs, we automatically set the GPE type +to +ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. +This +must be done on a selective basis, usually requiring some kind of user +app +to allow the user to pick the wake devices. + + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total + Debug Version: 161.0K Code, 66.3K Data, 227.3K Total + Current Release: + + Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total + Debug Version: 162.9K Code, 67.0K Data, 229.9K Total + + + +---------------------------------------- +02 April 2004. Summary of changes for version 20040402: + +1) ACPI CA Core Subsystem: + +Fixed an interpreter problem where an indirect store through an ArgX +parameter was incorrectly applying the "implicit conversion rules" during +the store. From the ACPI specification: "If the target is a method local +or +argument (LocalX or ArgX), no conversion is performed and the result is +stored directly to the target". The new behavior is to disable implicit +conversion during ALL stores to an ArgX. + +Changed the behavior of the _PRW method scan to ignore any and all errors +returned by a given _PRW. This prevents the scan from aborting from the +failure of any single _PRW. + +Moved the runtime configuration parameters from the global init procedure +to +static variables in acglobal.h. This will allow the host to override the +default values easily. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total + Debug Version: 160.8K Code, 66.1K Data, 226.9K Total + Current Release: + Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total + Debug Version: 161.0K Code, 66.3K Data, 227.3K Total + + +2) iASL Compiler/Disassembler: + +iASL now fully disassembles SSDTs. However, External() statements are +not +generated automatically for unresolved symbols at this time. This is a +planned feature for future implementation. + +Fixed a scoping problem in the disassembler that occurs when the type of +the +target of a Scope() operator is overridden. This problem caused an +incorrectly nested internal namespace to be constructed. + +Any warnings or errors that are emitted during disassembly are now +commented +out automatically so that the resulting file can be recompiled without +any +hand editing. + +---------------------------------------- +26 March 2004. Summary of changes for version 20040326: + +1) ACPI CA Core Subsystem: + +Implemented support for "wake" GPEs via interaction between GPEs and the +_PRW methods. Every GPE that is pointed to by one or more _PRWs is +identified as a WAKE GPE and by default will no longer be enabled at +runtime. Previously, we were blindly enabling all GPEs with a +corresponding +_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. +We +believe this has been the cause of thousands of "spurious" GPEs on some +systems. + +This new GPE behavior is can be reverted to the original behavior (enable +ALL GPEs at runtime) via a runtime flag. + +Fixed a problem where aliased control methods could not access objects +properly. The proper scope within the namespace was not initialized +(transferred to the target of the aliased method) before executing the +target method. + +Fixed a potential race condition on internal object deletion on the +return +object in AcpiEvaluateObject. + +Integrated a fix for resource descriptors where both _MEM and _MTP were +being extracted instead of just _MEM. (i.e. bitmask was incorrectly too +wide, 0x0F instead of 0x03.) + +Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, +preventing +a +fault in some cases. + +Updated Notify() values for debug statements in evmisc.c + +Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + + Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total + Debug Version: 160.3K Code, 66.0K Data, 226.3K Total + Current Release: + Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total + Debug Version: 160.8K Code, 66.1K Data, 226.9K Total + +---------------------------------------- +11 March 2004. Summary of changes for version 20040311: + +1) ACPI CA Core Subsystem: + +Fixed a problem where errors occurring during the parse phase of control +method execution did not abort cleanly. For example, objects created and +installed in the namespace were not deleted. This caused all subsequent +invocations of the method to return the AE_ALREADY_EXISTS exception. + +Implemented a mechanism to force a control method to "Serialized" +execution +if the method attempts to create namespace objects. (The root of the +AE_ALREADY_EXISTS problem.) + +Implemented support for the predefined _OSI "internal" control method. +Initial supported strings are "Linux", "Windows 2000", "Windows 2001", +and +"Windows 2001.1", and can be easily upgraded for new strings as +necessary. +This feature will allow "other" operating systems to execute the fully +tested, "Windows" code path through the ASL code + +Global Lock Support: Now allows multiple acquires and releases with any +internal thread. Removed concept of "owning thread" for this special +mutex. + +Fixed two functions that were inappropriately declaring large objects on +the +CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage +during +method execution considerably. + +Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the +S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. + +Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs +defined on the machine. + +Implemented two runtime options: One to force all control method +execution +to "Serialized" to mimic Windows behavior, another to disable _OSI +support +if it causes problems on a given machine. + +Code and Data Size: Current and previous core subsystem library sizes are +shown below. These are the code and data sizes for the acpica.lib +produced +by the Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code includes the +debug output trace mechanism and has a much larger code and data size. +Note +that these values will vary depending on the efficiency of the compiler +and +the compiler options used during generation. + + Previous Release: + Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total + Debug Version: 158.7K Code, 65.1K Data, 223.8K Total + Current Release: + Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total + Debug Version: 160.3K Code, 66.0K Data, 226.3K Total + +2) iASL Compiler/Disassembler: + +Fixed an array size problem for FreeBSD that would cause the compiler to +fault. + +---------------------------------------- +20 February 2004. Summary of changes for version 20040220: + + +1) ACPI CA Core Subsystem: + +Implemented execution of _SxD methods for Device objects in the +GetObjectInfo interface. + +Fixed calls to _SST method to pass the correct arguments. + +Added a call to _SST on wake to restore to "working" state. + +Check for End-Of-Buffer failure case in the WalkResources interface. + +Integrated fix for 64-bit alignment issue in acglobal.h by moving two +structures to the beginning of the file. + +After wake, clear GPE status register(s) before enabling GPEs. + +After wake, clear/enable power button. (Perhaps we should clear/enable +all +fixed events upon wake.) + +Fixed a couple of possible memory leaks in the Namespace manager. + +Integrated latest acnetbsd.h file. + +---------------------------------------- +11 February 2004. Summary of changes for version 20040211: + + +1) ACPI CA Core Subsystem: + +Completed investigation and implementation of the call-by-reference +mechanism for control method arguments. + +Fixed a problem where a store of an object into an indexed package could +fail if the store occurs within a different method than the method that +created the package. + +Fixed a problem where the ToDecimal operator could return incorrect +results. + +Fixed a problem where the CopyObject operator could fail on some of the +more +obscure objects (e.g., Reference objects.) + +Improved the output of the Debug object to display buffer, package, and +index objects. + +Fixed a problem where constructs of the form "RefOf (ArgX)" did not +return +the expected result. + +Added permanent ACPI_REPORT_ERROR macros for all instances of the +ACPI_AML_INTERNAL exception. + +Integrated latest version of acfreebsd.h + +---------------------------------------- +16 January 2004. Summary of changes for version 20040116: + +The purpose of this release is primarily to update the copyright years in +each module, thus causing a huge number of diffs. There are a few small +functional changes, however. + +1) ACPI CA Core Subsystem: + +Improved error messages when there is a problem finding one or more of +the +required base ACPI tables + +Reintroduced the definition of APIC_HEADER in actbl.h + +Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) + +Removed extraneous reference to NewObj in dsmthdat.c + +2) iASL compiler + +Fixed a problem introduced in December that disabled the correct +disassembly +of Resource Templates + + +---------------------------------------- +03 December 2003. Summary of changes for version 20031203: + +1) ACPI CA Core Subsystem: + +Changed the initialization of Operation Regions during subsystem +init to perform two entire walks of the ACPI namespace; The first +to initialize the regions themselves, the second to execute the +_REG methods. This fixed some interdependencies across _REG +methods found on some machines. + +Fixed a problem where a Store(Local0, Local1) could simply update +the object reference count, and not create a new copy of the +object if the Local1 is uninitialized. + +Implemented support for the _SST reserved method during sleep +transitions. + +Implemented support to clear the SLP_TYP and SLP_EN bits when +waking up, this is apparently required by some machines. + +When sleeping, clear the wake status only if SleepState is not S5. + +Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect +pointer arithmetic advanced a string pointer too far. + +Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer +could be returned if the requested table has not been loaded. + +Within the support for IRQ resources, restructured the handling of +the active and edge/level bits. + +Fixed a few problems in AcpiPsxExecute() where memory could be +leaked under certain error conditions. + +Improved error messages for the cases where the ACPI mode could +not be entered. + +Code and Data Size: Current and previous core subsystem library +sizes are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and +these values do not include any ACPI driver or OSPM code. The +debug version of the code includes the debug output trace +mechanism and has a much larger code and data size. Note that +these values will vary depending on the efficiency of the compiler +and the compiler options used during generation. + + Previous Release (20031029): + Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total + Debug Version: 158.3K Code, 65.0K Data, 223.3K Total + Current Release: + Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total + Debug Version: 158.7K Code, 65.1K Data, 223.8K Total + +2) iASL Compiler/Disassembler: + +Implemented a fix for the iASL disassembler where a bad index was +generated. This was most noticeable on 64-bit platforms + + +---------------------------------------- +29 October 2003. Summary of changes for version 20031029: + +1) ACPI CA Core Subsystem: + + +Fixed a problem where a level-triggered GPE with an associated +_Lxx control method was incorrectly cleared twice. + +Fixed a problem with the Field support code where an access can +occur beyond the end-of-region if the field is non-aligned but +extends to the very end of the parent region (resulted in an +AE_AML_REGION_LIMIT exception.) + +Fixed a problem with ACPI Fixed Events where an RT Clock handler +would not get invoked on an RTC event. The RTC event bitmasks for +the PM1 registers were not being initialized properly. + +Implemented support for executing _STA and _INI methods for +Processor objects. Although this is currently not part of the +ACPI specification, there is existing ASL code that depends on the +init-time execution of these methods. + +Implemented and deployed a GetDescriptorName function to decode +the various types of internal descriptors. Guards against null +descriptors during debug output also. + +Implemented and deployed a GetNodeName function to extract the 4- +character namespace node name. This function simplifies the debug +and error output, as well as guarding against null pointers during +output. + +Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to +simplify the debug and error output of 64-bit integers. This +macro replaces the HIDWORD and LODWORD macros for dumping these +integers. + +Updated the implementation of the Stall() operator to only call +AcpiOsStall(), and also return an error if the operand is larger +than 255. This preserves the required behavior of not +relinquishing the processor, as would happen if AcpiOsSleep() was +called for "long stalls". + +Constructs of the form "Store(LocalX,LocalX)" where LocalX is not +initialized are now treated as NOOPs. + +Cleaned up a handful of warnings during 64-bit generation. + +Fixed a reported error where and incorrect GPE number was passed +to the GPE dispatch handler. This value is only used for error +output, however. Used this opportunity to clean up and streamline +the GPE dispatch code. + +Code and Data Size: Current and previous core subsystem library +sizes are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and +these values do not include any ACPI driver or OSPM code. The + +debug version of the code includes the debug output trace +mechanism and has a much larger code and data size. Note that +these values will vary depending on the efficiency of the compiler +and the compiler options used during generation. + + Previous Release (20031002): + Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total + Debug Version: 157.9K Code, 64.8K Data, 222.7K Total + Current Release: + Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total + Debug Version: 158.3K Code, 65.0K Data, 223.3K Total + + +2) iASL Compiler/Disassembler: + +Updated the iASL compiler to return an error if the operand to the +Stall() operator is larger than 255. + + +---------------------------------------- +02 October 2003. Summary of changes for version 20031002: + + +1) ACPI CA Core Subsystem: + +Fixed a problem with Index Fields where the index was not +incremented for fields that require multiple writes to the +index/data registers (Fields that are wider than the data +register.) + +Fixed a problem with all Field objects where a write could go +beyond the end-of-field if the field was larger than the access +granularity and therefore required multiple writes to complete the +request. An extra write beyond the end of the field could happen +inadvertently. + +Fixed a problem with Index Fields where a BUFFER_OVERFLOW error +would incorrectly be returned if the width of the Data Register +was larger than the specified field access width. + +Completed fixes for LoadTable() and Unload() and verified their +operation. Implemented full support for the "DdbHandle" object +throughout the ACPI CA subsystem. + +Implemented full support for the MADT and ECDT tables in the ACPI +CA header files. Even though these tables are not directly +consumed by ACPI CA, the header definitions are useful for ACPI +device drivers. + +Integrated resource descriptor fixes posted to the Linux ACPI +list. This included checks for minimum descriptor length, and +support for trailing NULL strings within descriptors that have +optional string elements. + +Code and Data Size: Current and previous core subsystem library +sizes are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and +these values do not include any ACPI driver or OSPM code. The +debug version of the code includes the debug output trace +mechanism and has a much larger code and data size. Note that +these values will vary depending on the efficiency of the compiler +and the compiler options used during generation. + + Previous Release (20030918): + Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total + Debug Version: 157.3K Code, 64.5K Data, 221.8K Total + Current Release: + Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total + Debug Version: 157.9K Code, 64.8K Data, 222.7K Total + + +2) iASL Compiler: + +Implemented detection of non-ASCII characters within the input +source ASL file. This catches attempts to compile binary (AML) +files early in the compile, with an informative error message. + +Fixed a problem where the disassembler would fault if the output +filename could not be generated or if the output file could not be +opened. + +---------------------------------------- +18 September 2003. Summary of changes for version 20030918: + + +1) ACPI CA Core Subsystem: + +Found and fixed a longstanding problem with the late execution of +the various deferred AML opcodes (such as Operation Regions, +Buffer Fields, Buffers, and Packages). If the name string +specified for the name of the new object placed the object in a +scope other than the current scope, the initialization/execution +of the opcode failed. The solution to this problem was to +implement a mechanism where the late execution of such opcodes +does not attempt to lookup/create the name a second time in an +incorrect scope. This fixes the "region size computed +incorrectly" problem. + +Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a +Global Lock AE_BAD_PARAMETER error. + +Fixed several 64-bit issues with prototypes, casting and data +types. + +Removed duplicate prototype from acdisasm.h + +Fixed an issue involving EC Operation Region Detach (Shaohua Li) + +Code and Data Size: Current and previous core subsystem library +sizes are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and +these values do not include any ACPI driver or OSPM code. The +debug version of the code includes the debug output trace +mechanism and has a much larger code and data size. Note that +these values will vary depending on the efficiency of the compiler +and the compiler options used during generation. + + Previous Release: + + Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total + Debug Version: 156.9K Code, 64.2K Data, 221.1K Total + Current Release: + Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total + Debug Version: 157.3K Code, 64.5K Data, 221.8K Total + + +2) Linux: + +Fixed the AcpiOsSleep implementation in osunixxf.c to pass the +correct sleep time in seconds. + +---------------------------------------- +14 July 2003. Summary of changes for version 20030619: + +1) ACPI CA Core Subsystem: + +Parse SSDTs in order discovered, as opposed to reverse order +(Hrvoje Habjanic) + +Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas +Klausner, + Nate Lawson) + + +2) Linux: + +Dynamically allocate SDT list (suggested by Andi Kleen) + +proc function return value cleanups (Andi Kleen) + +Correctly handle NMI watchdog during long stalls (Andrew Morton) + +Make it so acpismp=force works (reported by Andrew Morton) + + +---------------------------------------- +19 June 2003. Summary of changes for version 20030619: + +1) ACPI CA Core Subsystem: + +Fix To/FromBCD, eliminating the need for an arch-specific #define. + +Do not acquire a semaphore in the S5 shutdown path. + +Fix ex_digits_needed for 0. (Takayoshi Kochi) + +Fix sleep/stall code reversal. (Andi Kleen) + +Revert a change having to do with control method calling +semantics. + +2) Linux: + +acpiphp update (Takayoshi Kochi) + +Export acpi_disabled for sonypi (Stelian Pop) + +Mention acpismp=force in config help + +Re-add acpitable.c and acpismp=force. This improves backwards + +compatibility and also cleans up the code to a significant degree. + +Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) + +---------------------------------------- +22 May 2003. Summary of changes for version 20030522: + +1) ACPI CA Core Subsystem: + +Found and fixed a reported problem where an AE_NOT_FOUND error +occurred occasionally during _BST evaluation. This turned out to +be an Owner ID allocation issue where a called method did not get +a new ID assigned to it. Eventually, (after 64k calls), the Owner +ID UINT16 would wraparound so that the ID would be the same as the +caller's and the called method would delete the caller's +namespace. + +Implemented extended error reporting for control methods that are +aborted due to a run-time exception. Output includes the exact +AML instruction that caused the method abort, a dump of the method +locals and arguments at the time of the abort, and a trace of all +nested control method calls. + +Modified the interpreter to allow the creation of buffers of zero +length from the AML code. Implemented new code to ensure that no +attempt is made to actually allocate a memory buffer (of length +zero) - instead, a simple buffer object with a NULL buffer pointer +and length zero is created. A warning is no longer issued when +the AML attempts to create a zero-length buffer. + +Implemented a workaround for the "leading asterisk issue" in +_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading +asterisk is automatically removed if present in any HID, UID, or +CID strings. The iASL compiler will still flag this asterisk as +an error, however. + +Implemented full support for _CID methods that return a package of +multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface +now additionally returns a device _CID list if present. This +required a change to the external interface in order to pass an +ACPI_BUFFER object as a parameter since the _CID list is of +variable length. + +Fixed a problem with the new AE_SAME_HANDLER exception where +handler initialization code did not know about this exception. + +Code and Data Size: Current and previous core subsystem library +sizes are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and +these values do not include any ACPI driver or OSPM code. The +debug version of the code includes the debug output trace +mechanism and has a much larger code and data size. Note that +these values will vary depending on the efficiency of the compiler +and the compiler options used during generation. + + Previous Release (20030509): + Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total + Debug Version: 156.1K Code, 63.9K Data, 220.0K Total + Current Release: + Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total + Debug Version: 156.9K Code, 64.2K Data, 221.1K Total + + +2) Linux: + +Fixed a bug in which we would reinitialize the ACPI interrupt +after it was already working, thus disabling all ACPI and the IRQs +for any other device sharing the interrupt. (Thanks to Stian +Jordet) + +Toshiba driver update (John Belmonte) + +Return only 0 or 1 for our interrupt handler status (Andrew +Morton) + + +3) iASL Compiler: + +Fixed a reported problem where multiple (nested) ElseIf() +statements were not handled correctly by the compiler, resulting +in incorrect warnings and incorrect AML code. This was a problem +in both the ASL parser and the code generator. + + +4) Documentation: + +Added changes to existing interfaces, new exception codes, and new +text concerning reference count object management versus garbage +collection. + +---------------------------------------- +09 May 2003. Summary of changes for version 20030509. + + +1) ACPI CA Core Subsystem: + +Changed the subsystem initialization sequence to hold off +installation of address space handlers until the hardware has been +initialized and the system has entered ACPI mode. This is because +the installation of space handlers can cause _REG methods to be +run. Previously, the _REG methods could potentially be run before +ACPI mode was enabled. + +Fixed some memory leak issues related to address space handler and +notify handler installation. There were some problems with the +reference count mechanism caused by the fact that the handler +objects are shared across several namespace objects. + +Fixed a reported problem where reference counts within the +namespace were not properly updated when named objects created by +method execution were deleted. + +Fixed a reported problem where multiple SSDTs caused a deletion +issue during subsystem termination. Restructured the table data +structures to simplify the linked lists and the related code. + +Fixed a problem where the table ID associated with secondary +tables (SSDTs) was not being propagated into the namespace objects +created by those tables. This would only present a problem for +tables that are unloaded at run-time, however. + +Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE +type as the length parameter (instead of UINT32). + +Solved a long-standing problem where an ALREADY_EXISTS error +appears on various systems. This problem could happen when there +are multiple PCI_Config operation regions under a single PCI root +bus. This doesn't happen very frequently, but there are some +systems that do this in the ASL. + +Fixed a reported problem where the internal DeleteNode function +was incorrectly handling the case where a namespace node was the +first in the parent's child list, and had additional peers (not +the only child, but first in the list of children.) + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total + Debug Version: 156.1K Code, 63.6K Data, 219.7K Total + Current Release: + Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total + Debug Version: 156.1K Code, 63.9K Data, 220.0K Total + + +2) Linux: + +Allow ":" in OS override string (Ducrot Bruno) + +Kobject fix (Greg KH) + + +3 iASL Compiler/Disassembler: + +Fixed a problem in the generation of the C source code files (AML +is emitted in C source statements for BIOS inclusion) where the +Ascii dump that appears within a C comment at the end of each line +could cause a compile time error if the AML sequence happens to +have an open comment or close comment sequence embedded. + + +---------------------------------------- +24 April 2003. Summary of changes for version 20030424. + + +1) ACPI CA Core Subsystem: + +Support for big-endian systems has been implemented. Most of the +support has been invisibly added behind big-endian versions of the +ACPI_MOVE_* macros. + +Fixed a problem in AcpiHwDisableGpeBlock() and +AcpiHwClearGpeBlock() where an incorrect offset was passed to the +low level hardware write routine. The offset parameter was +actually eliminated from the low level read/write routines because +they had become obsolete. + +Fixed a problem where a handler object was deleted twice during +the removal of a fixed event handler. + + +2) Linux: + +A fix for SMP systems with link devices was contributed by + +Compaq's Dan Zink. + +(2.5) Return whether we handled the interrupt in our IRQ handler. +(Linux ISRs no longer return void, so we can propagate the handler +return value from the ACPI CA core back to the OS.) + + + +3) Documentation: + +The ACPI CA Programmer Reference has been updated to reflect new +interfaces and changes to existing interfaces. + +---------------------------------------- +28 March 2003. Summary of changes for version 20030328. + +1) ACPI CA Core Subsystem: + +The GPE Block Device support has been completed. New interfaces +are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event +interfaces (enable, disable, clear, getstatus) have been split +into separate interfaces for Fixed Events and General Purpose +Events (GPEs) in order to support GPE Block Devices properly. + +Fixed a problem where the error message "Failed to acquire +semaphore" would appear during operations on the embedded +controller (EC). + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total + Debug Version: 154.0K Code, 63.4K Data, 217.4K Total + Current Release: + Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total + Debug Version: 156.1K Code, 63.6K Data, 219.7K Total + + +---------------------------------------- +28 February 2003. Summary of changes for version 20030228. + + +1) ACPI CA Core Subsystem: + +The GPE handling and dispatch code has been completely overhauled +in preparation for support of GPE Block Devices (ID ACPI0006). +This affects internal data structures and code only; there should +be no differences visible externally. One new file has been +added, evgpeblk.c + +The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only +fields that are used to determine the GPE block lengths. The +REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address +structures are ignored. This is per the ACPI specification but it +isn't very clear. The full 256 Block 0/1 GPEs are now supported +(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). + +In the SCI interrupt handler, removed the read of the PM1_CONTROL +register to look at the SCI_EN bit. On some machines, this read +causes an SMI event and greatly slows down SCI events. (This may +in fact be the cause of slow battery status response on some +systems.) + +Fixed a problem where a store of a NULL string to a package object +could cause the premature deletion of the object. This was seen +during execution of the battery _BIF method on some systems, +resulting in no battery data being returned. + +Added AcpiWalkResources interface to simplify parsing of resource +lists. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total + Debug Version: 153.0K Code, 62.9K Data, 215.9K Total + Current Release: + Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total + Debug Version: 154.0K Code, 63.4K Data, 217.4K Total + + +2) Linux + +S3 fixes (Ole Rohne) + +Update ACPI PHP driver with to use new acpi_walk_resource API +(Bjorn Helgaas) + +Add S4BIOS support (Pavel Machek) + +Map in entire table before performing checksum (John Stultz) + +Expand the mem= cmdline to allow the specification of reserved and +ACPI DATA blocks (Pavel Machek) + +Never use ACPI on VISWS + +Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) + +Revert a change that allowed P_BLK lengths to be 4 or 5. This is +causing us to think that some systems support C2 when they really +don't. + +Do not count processor objects for non-present CPUs (Thanks to +Dominik Brodowski) + + +3) iASL Compiler: + +Fixed a problem where ASL include files could not be found and +opened. + +Added support for the _PDC reserved name. + + +---------------------------------------- +22 January 2003. Summary of changes for version 20030122. + + +1) ACPI CA Core Subsystem: + +Added a check for constructs of the form: Store (Local0, Local0) +where Local0 is not initialized. Apparently, some BIOS +programmers believe that this is a NOOP. Since this store doesn't +do anything anyway, the new prototype behavior will ignore this +error. This is a case where we can relax the strict checking in +the interpreter in the name of compatibility. + + +2) Linux + +The AcpiSrc Source Conversion Utility has been released with the +Linux package for the first time. This is the utility that is +used to convert the ACPI CA base source code to the Linux version. + +(Both) Handle P_BLK lengths shorter than 6 more gracefully + +(Both) Move more headers to include/acpi, and delete an unused +header. + +(Both) Move drivers/acpi/include directory to include/acpi + +(Both) Boot functions don't use cmdline, so don't pass it around + +(Both) Remove include of unused header (Adrian Bunk) + +(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since +the +former now also includes the latter, acpiphp.h only needs the one, +now. + +(2.5) Make it possible to select method of bios restoring after S3 +resume. [=> no more ugly ifdefs] (Pavel Machek) + +(2.5) Make proc write interfaces work (Pavel Machek) + +(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) + +(2.5) Break out ACPI Perf code into its own module, under cpufreq +(Dominik Brodowski) + +(2.4) S4BIOS support (Ducrot Bruno) + +(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio +Visinoni) + + +3) iASL Compiler: + +Added support to disassemble SSDT and PSDTs. + +Implemented support to obtain SSDTs from the Windows registry if +available. + + +---------------------------------------- +09 January 2003. Summary of changes for version 20030109. + +1) ACPI CA Core Subsystem: + +Changed the behavior of the internal Buffer-to-String conversion +function. The current ACPI specification states that the contents +of the buffer are "converted to a string of two-character +hexadecimal numbers, each separated by a space". Unfortunately, +this definition is not backwards compatible with existing ACPI 1.0 +implementations (although the behavior was not defined in the ACPI +1.0 specification). The new behavior simply copies data from the +buffer to the string until a null character is found or the end of +the buffer is reached. The new String object is always null +terminated. This problem was seen during the generation of _BIF +battery data where incorrect strings were returned for battery +type, etc. This will also require an errata to the ACPI +specification. + +Renamed all instances of NATIVE_UINT and NATIVE_INT to +ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. + +Copyright in all module headers (both Linux and non-Linux) has be +updated to 2003. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total + Debug Version: 153.0K Code, 62.9K Data, 215.9K Total + Current Release: + Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total + Debug Version: 153.0K Code, 62.9K Data, 215.9K Total + + +2) Linux + +Fixed an oops on module insertion/removal (Matthew Tippett) + +(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) + +(2.5) Replace pr_debug (Randy Dunlap) + +(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) + +(Both) Eliminate spawning of thread from timer callback, in favor +of schedule_work() + +(Both) Show Lid status in /proc (Zdenek OGAR Skalak) + +(Both) Added define for Fixed Function HW region (Matthew Wilcox) + +(Both) Add missing statics to button.c (Pavel Machek) + +Several changes have been made to the source code translation +utility that generates the Linux Code in order to make the code +more "Linux-like": + +All typedefs on structs and unions have been removed in keeping +with the Linux coding style. + +Removed the non-Linux SourceSafe module revision number from each +module header. + +Completed major overhaul of symbols to be lowercase for linux. +Doubled the number of symbols that are lowercase. + +Fixed a problem where identifiers within procedure headers and +within quotes were not fully lower cased (they were left with a +starting capital.) + +Some C macros whose only purpose is to allow the generation of 16- +bit code are now completely removed in the Linux code, increasing +readability and maintainability. + +---------------------------------------- + +12 December 2002. Summary of changes for version 20021212. + + +1) ACPI CA Core Subsystem: + +Fixed a problem where the creation of a zero-length AML Buffer +would cause a fault. + +Fixed a problem where a Buffer object that pointed to a static AML +buffer (in an ACPI table) could inadvertently be deleted, causing +memory corruption. + +Fixed a problem where a user buffer (passed in to the external +ACPI CA interfaces) could be overwritten if the buffer was too +small to complete the operation, causing memory corruption. + +Fixed a problem in the Buffer-to-String conversion code where a +string of length one was always returned, regardless of the size +of the input Buffer object. + +Removed the NATIVE_CHAR data type across the entire source due to +lack of need and lack of consistent use. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total + Debug Version: 152.7K Code, 62.7K Data, 215.4K Total + Current Release: + Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total + Debug Version: 153.0K Code, 62.9K Data, 215.9K Total + + +---------------------------------------- +05 December 2002. Summary of changes for version 20021205. + +1) ACPI CA Core Subsystem: + +Fixed a problem where a store to a String or Buffer object could +cause corruption of the DSDT if the object type being stored was +the same as the target object type and the length of the object +being stored was equal to or smaller than the original (existing) +target object. This was seen to cause corruption of battery _BIF +buffers if the _BIF method modified the buffer on the fly. + +Fixed a problem where an internal error was generated if a control +method invocation was used in an OperationRegion, Buffer, or +Package declaration. This was caused by the deferred parsing of +the control method and thus the deferred creation of the internal +method object. The solution to this problem was to create the +internal method object at the moment the method is encountered in +the first pass - so that subsequent references to the method will +able to obtain the required parameter count and thus properly +parse the method invocation. This problem presented itself as an +AE_AML_INTERNAL during the pass 1 parse phase during table load. + +Fixed a problem where the internal String object copy routine did +not always allocate sufficient memory for the target String object +and caused memory corruption. This problem was seen to cause +"Allocation already present in list!" errors as memory allocation +became corrupted. + +Implemented a new function for the evaluation of namespace objects +that allows the specification of the allowable return object +types. This simplifies a lot of code that checks for a return +object of one or more specific objects returned from the +evaluation (such as _STA, etc.) This may become and external +function if it would be useful to ACPI-related drivers. + +Completed another round of prefixing #defines with "ACPI_" for +clarity. + +Completed additional code restructuring to allow more modular +linking for iASL compiler and AcpiExec. Several files were split +creating new files. New files: nsparse.c dsinit.c evgpe.c + +Implemented an abort mechanism to terminate an executing control +method via the AML debugger. This feature is useful for debugging +control methods that depend (wait) for specific hardware +responses. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total + Debug Version: 152.9K Code, 63.3K Data, 216.2K Total + Current Release: + Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total + Debug Version: 152.7K Code, 62.7K Data, 215.4K Total + + +2) iASL Compiler/Disassembler + +Fixed a compiler code generation problem for "Interrupt" Resource +Descriptors. If specified in the ASL, the optional "Resource +Source Index" and "Resource Source" fields were not inserted into +the correct location within the AML resource descriptor, creating +an invalid descriptor. + +Fixed a disassembler problem for "Interrupt" resource descriptors. +The optional "Resource Source Index" and "Resource Source" fields +were ignored. + + +---------------------------------------- +22 November 2002. Summary of changes for version 20021122. + + +1) ACPI CA Core Subsystem: + +Fixed a reported problem where an object stored to a Method Local +or Arg was not copied to a new object during the store - the +object pointer was simply copied to the Local/Arg. This caused +all subsequent operations on the Local/Arg to also affect the +original source of the store operation. + +Fixed a problem where a store operation to a Method Local or Arg +was not completed properly if the Local/Arg contained a reference +(from RefOf) to a named field. The general-purpose store-to- +namespace-node code is now used so that this case is handled +automatically. + +Fixed a problem where the internal object copy routine would cause +a protection fault if the object being copied was a Package and +contained either 1) a NULL package element or 2) a nested sub- +package. + +Fixed a problem with the GPE initialization that resulted from an +ambiguity in the ACPI specification. One section of the +specification states that both the address and length of the GPE +block must be zero if the block is not supported. Another section +implies that only the address need be zero if the block is not +supported. The code has been changed so that both the address and +the length must be non-zero to indicate a valid GPE block (i.e., +if either the address or the length is zero, the GPE block is +invalid.) + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total + Debug Version: 152.7K Code, 63.2K Data, 215.5K Total + Current Release: + Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total + Debug Version: 152.9K Code, 63.3K Data, 216.2K Total + + +2) Linux + +Cleaned up EC driver. Exported an external EC read/write +interface. By going through this, other drivers (most notably +sonypi) will be able to serialize access to the EC. + + +3) iASL Compiler/Disassembler + +Implemented support to optionally generate include files for both +ASM and C (the -i switch). This simplifies BIOS development by +automatically creating include files that contain external +declarations for the symbols that are created within the + +(optionally generated) ASM and C AML source files. + + +---------------------------------------- +15 November 2002. Summary of changes for version 20021115. + +1) ACPI CA Core Subsystem: + +Fixed a memory leak problem where an error during resolution of + +method arguments during a method invocation from another method +failed to cleanup properly by deleting all successfully resolved +argument objects. + +Fixed a problem where the target of the Index() operator was not +correctly constructed if the source object was a package. This +problem has not been detected because the use of a target operand +with Index() is very rare. + +Fixed a problem with the Index() operator where an attempt was +made to delete the operand objects twice. + +Fixed a problem where an attempt was made to delete an operand +twice during execution of the CondRefOf() operator if the target +did not exist. + +Implemented the first of perhaps several internal create object +functions that create and initialize a specific object type. This +consolidates duplicated code wherever the object is created, thus +shrinking the size of the subsystem. + +Implemented improved debug/error messages for errors that occur +during nested method invocations. All executing method pathnames +are displayed (with the error) as the call stack is unwound - thus +simplifying debug. + +Fixed a problem introduced in the 10/02 release that caused +premature deletion of a buffer object if a buffer was used as an +ASL operand where an integer operand is required (Thus causing an +implicit object conversion from Buffer to Integer.) The change in +the 10/02 release was attempting to fix a memory leak (albeit +incorrectly.) + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total + Debug Version: 153.1K Code, 63.3K Data, 216.4K Total + Current Release: + Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total + Debug Version: 152.7K Code, 63.2K Data, 215.5K Total + + +2) Linux + +Changed the implementation of the ACPI semaphores to use down() +instead of down_interruptable(). It is important that the +execution of ACPI control methods not be interrupted by signals. +Methods must run to completion, or the system may be left in an +unknown/unstable state. + +Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. +(Shawn Starr) + + +3) iASL Compiler/Disassembler + + +Changed the default location of output files. All output files +are now placed in the current directory by default instead of in +the directory of the source file. This change may affect some +existing makefiles, but it brings the behavior of the compiler in +line with other similar tools. The location of the output files +can be overridden with the -p command line switch. + + +---------------------------------------- +11 November 2002. Summary of changes for version 20021111. + + +0) ACPI Specification 2.0B is released and is now available at: +http://www.acpi.info/index.html + + +1) ACPI CA Core Subsystem: + +Implemented support for the ACPI 2.0 SMBus Operation Regions. +This includes the early detection and handoff of the request to +the SMBus region handler (avoiding all of the complex field +support code), and support for the bidirectional return packet +from an SMBus write operation. This paves the way for the +development of SMBus drivers in each host operating system. + +Fixed a problem where the semaphore WAIT_FOREVER constant was +defined as 32 bits, but must be 16 bits according to the ACPI +specification. This had the side effect of causing ASL +Mutex/Event timeouts even though the ASL code requested a wait +forever. Changed all internal references to the ACPI timeout +parameter to 16 bits to prevent future problems. Changed the name +of WAIT_FOREVER to ACPI_WAIT_FOREVER. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total + Debug Version: 152.3K Code, 63.0K Data, 215.3K Total + Current Release: + Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total + Debug Version: 153.1K Code, 63.3K Data, 216.4K Total + + +2) Linux + +Module loading/unloading fixes (John Cagle) + + +3) iASL Compiler/Disassembler + +Added support for the SMBBlockProcessCall keyword (ACPI 2.0) + +Implemented support for the disassembly of all SMBus protocol +keywords (SMBQuick, SMBWord, etc.) + +---------------------------------------- +01 November 2002. Summary of changes for version 20021101. + + +1) ACPI CA Core Subsystem: + +Fixed a problem where platforms that have a GPE1 block but no GPE0 +block were not handled correctly. This resulted in a "GPE +overlap" error message. GPE0 is no longer required. + +Removed code added in the previous release that inserted nodes +into the namespace in alphabetical order. This caused some side- +effects on various machines. The root cause of the problem is +still under investigation since in theory, the internal ordering +of the namespace nodes should not matter. + + +Enhanced error reporting for the case where a named object is not +found during control method execution. The full ACPI namepath +(name reference) of the object that was not found is displayed in +this case. + +Note: as a result of the overhaul of the namespace object types in +the previous release, the namespace nodes for the predefined +scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE +instead of ACPI_TYPE_ANY. This simplifies the namespace +management code but may affect code that walks the namespace tree +looking for specific object types. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total + Debug Version: 151.7K Code, 62.4K Data, 214.1K Total + Current Release: + Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total + Debug Version: 152.3K Code, 63.0K Data, 215.3K Total + + +2) Linux + +Fixed a problem introduced in the previous release where the +Processor and Thermal objects were not recognized and installed in +/proc. This was related to the scope type change described above. + + +3) iASL Compiler/Disassembler + +Implemented the -g option to get all of the required ACPI tables +from the registry and save them to files (Windows version of the +compiler only.) The required tables are the FADT, FACS, and DSDT. + +Added ACPI table checksum validation during table disassembly in +order to catch corrupted tables. + + +---------------------------------------- +22 October 2002. Summary of changes for version 20021022. + +1) ACPI CA Core Subsystem: + +Implemented a restriction on the Scope operator that the target +must already exist in the namespace at the time the operator is +encountered (during table load or method execution). In other +words, forward references are not allowed and Scope() cannot +create a new object. This changes the previous behavior where the +interpreter would create the name if not found. This new behavior +correctly enables the search-to-root algorithm during namespace +lookup of the target name. Because of this upsearch, this fixes +the known Compaq _SB_.OKEC problem and makes both the AML +interpreter and iASL compiler compatible with other ACPI +implementations. + +Completed a major overhaul of the internal ACPI object types for +the ACPI Namespace and the associated operand objects. Many of +these types had become obsolete with the introduction of the two- +pass namespace load. This cleanup simplifies the code and makes +the entire namespace load mechanism much clearer and easier to +understand. + +Improved debug output for tracking scope opening/closing to help +diagnose scoping issues. The old scope name as well as the new +scope name are displayed. Also improved error messages for +problems with ASL Mutex objects and error messages for GPE +problems. + +Cleaned up the namespace dump code, removed obsolete code. + +All string output (for all namespace/object dumps) now uses the +common ACPI string output procedure which handles escapes properly +and does not emit non-printable characters. + +Fixed some issues with constants in the 64-bit version of the +local C library (utclib.c) + + +2) Linux + +EC Driver: No longer attempts to acquire the Global Lock at +interrupt level. + + +3) iASL Compiler/Disassembler + +Implemented ACPI 2.0B grammar change that disallows all Type 1 and +2 opcodes outside of a control method. This means that the +"executable" operators (versus the "namespace" operators) cannot +be used at the table level; they can only be used within a control +method. + +Implemented the restriction on the Scope() operator where the +target must already exist in the namespace at the time the +operator is encountered (during ASL compilation). In other words, +forward references are not allowed and Scope() cannot create a new +object. This makes the iASL compiler compatible with other ACPI +implementations and makes the Scope() implementation adhere to the +ACPI specification. + +Fixed a problem where namepath optimization for the Alias operator +was optimizing the wrong path (of the two namepaths.) This caused +a "Missing alias link" error message. + +Fixed a problem where an "unknown reserved name" warning could be +incorrectly generated for names like "_SB" when the trailing +underscore is not used in the original ASL. + +Fixed a problem where the reserved name check did not handle +NamePaths with multiple NameSegs correctly. The first nameseg of +the NamePath was examined instead of the last NameSeg. + + +---------------------------------------- + +02 October 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem version 20021002: + +Fixed a problem where a store/copy of a string to an existing +string did not always set the string length properly in the String +object. + +Fixed a reported problem with the ToString operator where the +behavior was identical to the ToHexString operator instead of just +simply converting a raw buffer to a string data type. + +Fixed a problem where CopyObject and the other "explicit" +conversion operators were not updating the internal namespace node +type as part of the store operation. + +Fixed a memory leak during implicit source operand conversion +where the original object was not deleted if it was converted to a +new object of a different type. + +Enhanced error messages for all problems associated with namespace +lookups. Common procedure generates and prints the lookup name as +well as the formatted status. + +Completed implementation of a new design for the Alias support +within the namespace. The existing design did not handle the case +where a new object was assigned to one of the two names due to the +use of an explicit conversion operator, resulting in the two names +pointing to two different objects. The new design simply points +the Alias name to the original name node - not to the object. +This results in a level of indirection that must be handled in the +name resolution mechanism. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total + Debug Version: 150.0K Code, 61.7K Data, 211.7K Total + Current Release: + Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total + Debug Version: 151.7K Code, 62.4K Data, 214.1K Total + + +2) Linux + +Initialize thermal driver's timer before it is used. (Knut +Neumann) + +Allow handling negative celsius values. (Kochi Takayoshi) + +Fix thermal management and make trip points. R/W (Pavel Machek) + +Fix /proc/acpi/sleep. (P. Christeas) + +IA64 fixes. (David Mosberger) + +Fix reversed logic in blacklist code. (Sergio Monteiro Basto) + +Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik +Brodowski) + + +3) iASL Compiler/Disassembler + +Clarified some warning/error messages. + + +---------------------------------------- +18 September 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem version 20020918: + +Fixed a reported problem with reference chaining (via the Index() +and RefOf() operators) in the ObjectType() and SizeOf() operators. +The definition of these operators includes the dereferencing of +all chained references to return information on the base object. + +Fixed a problem with stores to indexed package elements - the +existing code would not complete the store if an "implicit +conversion" was not performed. In other words, if the existing +object (package element) was to be replaced completely, the code +didn't handle this case. + +Relaxed typechecking on the ASL "Scope" operator to allow the +target name to refer to an object of type Integer, String, or +Buffer, in addition to the scoping object types (Device, +predefined Scopes, Processor, PowerResource, and ThermalZone.) +This allows existing AML code that has workarounds for a bug in +Windows to function properly. A warning is issued, however. This +affects both the AML interpreter and the iASL compiler. Below is +an example of this type of ASL code: + + Name(DEB,0x00) + Scope(DEB) + { + +Fixed some reported problems with 64-bit integer support in the +local implementation of C library functions (clib.c) + + +2) Linux + +Use ACPI fix map region instead of IOAPIC region, since it is +undefined in non-SMP. + +Ensure that the SCI has the proper polarity and trigger, even on +systems that do not have an interrupt override entry in the MADT. + +2.5 big driver reorganization (Pat Mochel) + +Use early table mapping code from acpitable.c (Andi Kleen) + +New blacklist entries (Andi Kleen) + +Blacklist improvements. Split blacklist code out into a separate +file. Move checking the blacklist to very early. Previously, we +would use ACPI tables, and then halfway through init, check the +blacklist -- too late. Now, it's early enough to completely fall- +back to non-ACPI. + + +3) iASL Compiler/Disassembler version 20020918: + +Fixed a problem where the typechecking code didn't know that an +alias could point to a method. In other words, aliases were not +being dereferenced during typechecking. + + +---------------------------------------- +29 August 2002. Summary of changes for this release. + +1) ACPI CA Core Subsystem Version 20020829: + +If the target of a Scope() operator already exists, it must be an +object type that actually opens a scope -- such as a Device, +Method, Scope, etc. This is a fatal runtime error. Similar error +check has been added to the iASL compiler also. + +Tightened up the namespace load to disallow multiple names in the +same scope. This previously was allowed if both objects were of +the same type. (i.e., a lookup was the same as entering a new +name). + + +2) Linux + +Ensure that the ACPI interrupt has the proper trigger and +polarity. + +local_irq_disable is extraneous. (Matthew Wilcox) + +Make "acpi=off" actually do what it says, and not use the ACPI +interpreter *or* the tables. + +Added arch-neutral support for parsing SLIT and SRAT tables (Kochi +Takayoshi) + + +3) iASL Compiler/Disassembler Version 20020829: + +Implemented namepath optimization for name declarations. For +example, a declaration like "Method (\_SB_.ABCD)" would get +optimized to "Method (ABCD)" if the declaration is within the +\_SB_ scope. This optimization is in addition to the named +reference path optimization first released in the previous +version. This would seem to complete all possible optimizations +for namepaths within the ASL/AML. + +If the target of a Scope() operator already exists, it must be an +object type that actually opens a scope -- such as a Device, +Method, Scope, etc. + +Implemented a check and warning for unreachable code in the same +block below a Return() statement. + +Fixed a problem where the listing file was not generated if the +compiler aborted if the maximum error count was exceeded (200). + +Fixed a problem where the typechecking of method return values was +broken. This includes the check for a return value when the +method is invoked as a TermArg (a return value is expected.) + +Fixed a reported problem where EOF conditions during a quoted +string or comment caused a fault. + + +---------------------------------------- +15 August 2002. Summary of changes for this release. + +1) ACPI CA Core Subsystem Version 20020815: + +Fixed a reported problem where a Store to a method argument that +contains a reference did not perform the indirect store correctly. +This problem was created during the conversion to the new +reference object model - the indirect store to a method argument +code was not updated to reflect the new model. + +Reworked the ACPI mode change code to better conform to ACPI 2.0, +handle corner cases, and improve code legibility (Kochi Takayoshi) + +Fixed a problem with the pathname parsing for the carat (^) +prefix. The heavy use of the carat operator by the new namepath +optimization in the iASL compiler uncovered a problem with the AML +interpreter handling of this prefix. In the case where one or +more carats precede a single nameseg, the nameseg was treated as +standalone and the search rule (to root) was inadvertently +applied. This could cause both the iASL compiler and the +interpreter to find the wrong object or to miss the error that +should occur if the object does not exist at that exact pathname. + +Found and fixed the problem where the HP Pavilion DSDT would not +load. This was a relatively minor tweak to the table loading code +(a problem caused by the unexpected encounter with a method +invocation not within a control method), but it does not solve the +overall issue of the execution of AML code at the table level. +This investigation is still ongoing. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total + Debug Version: 149.4K Code, 61.6K Data, 211.0K Total + Current Release: + Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total + Debug Version: 150.0K Code, 61.7K Data, 211.7K Total + + +2) Linux + +Remove redundant slab.h include (Brad Hards) + +Fix several bugs in thermal.c (Herbert Nachtnebel) + +Make CONFIG_ACPI_BOOT work properly (Pavel Machek) + +Change acpi_system_suspend to use updated irq functions (Pavel +Machek) + +Export acpi_get_firmware_table (Matthew Wilcox) + +Use proper root proc entry for ACPI (Kochi Takayoshi) + +Fix early-boot table parsing (Bjorn Helgaas) + + +3) iASL Compiler/Disassembler + +Reworked the compiler options to make them more consistent and to +use two-letter options where appropriate. We were running out of +sensible letters. This may break some makefiles, so check the +current options list by invoking the compiler with no parameters. + +Completed the design and implementation of the ASL namepath +optimization option for the compiler. This option optimizes all +references to named objects to the shortest possible path. The +first attempt tries to utilize a single nameseg (4 characters) and +the "search-to-root" algorithm used by the interpreter. If that +cannot be used (because either the name is not in the search path +or there is a conflict with another object with the same name), +the pathname is optimized using the carat prefix (usually a +shorter string than specifying the entire path from the root.) + +Implemented support to obtain the DSDT from the Windows registry +(when the disassembly option is specified with no input file). +Added this code as the implementation for AcpiOsTableOverride in +the Windows OSL. Migrated the 16-bit code (used in the AcpiDump +utility) to scan memory for the DSDT to the AcpiOsTableOverride +function in the DOS OSL to make the disassembler truly OS +independent. + +Implemented a new option to disassemble and compile in one step. +When used without an input filename, this option will grab the +DSDT from the local machine, disassemble it, and compile it in one +step. + +Added a warning message for invalid escapes (a backslash followed +by any character other than the allowable escapes). This catches +the quoted string error "\_SB_" (which should be "\\_SB_" ). + +Also, there are numerous instances in the ACPI specification where +this error occurs. + +Added a compiler option to disable all optimizations. This is +basically the "compatibility mode" because by using this option, +the AML code will come out exactly the same as other ASL +compilers. + +Added error messages for incorrectly ordered dependent resource +functions. This includes: missing EndDependentFn macro at end of +dependent resource list, nested dependent function macros (both +start and end), and missing StartDependentFn macro. These are +common errors that should be caught at compile time. + +Implemented _OSI support for the disassembler and compiler. _OSI +must be included in the namespace for proper disassembly (because +the disassembler must know the number of arguments.) + +Added an "optimization" message type that is optional (off by +default). This message is used for all optimizations - including +constant folding, integer optimization, and namepath optimization. + +---------------------------------------- +25 July 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020725: + +The AML Disassembler has been enhanced to produce compilable ASL +code and has been integrated into the iASL compiler (see below) as +well as the single-step disassembly for the AML debugger and the +disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, +resource templates and macros are fully supported. The +disassembler has been tested on over 30 different AML files, +producing identical AML when the resulting disassembled ASL file +is recompiled with the same ASL compiler. + +Modified the Resource Manager to allow zero interrupts and zero +dma channels during the GetCurrentResources call. This was +causing problems on some platforms. + +Added the AcpiOsRedirectOutput interface to the OSL to simplify +output redirection for the AcpiOsPrintf and AcpiOsVprintf +interfaces. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total + Debug Version: 142.9K Code, 58.7K Data, 201.6K Total + Current Release: + Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total + Debug Version: 149.4K Code, 61.6K Data, 211.0K Total + + +2) Linux + +Fixed a panic in the EC driver (Dominik Brodowski) + +Implemented checksum of the R/XSDT itself during Linux table scan +(Richard Schaal) + + +3) iASL compiler + +The AML disassembler is integrated into the compiler. The "-d" +option invokes the disassembler to completely disassemble an +input AML file, producing as output a text ASL file with the +extension ".dsl" (to avoid name collisions with existing .asl +source files.) A future enhancement will allow the disassembler +to obtain the BIOS DSDT from the registry under Windows. + +Fixed a problem with the VendorShort and VendorLong resource +descriptors where an invalid AML sequence was created. + +Implemented a fix for BufferData term in the ASL parser. It was +inadvertently defined twice, allowing invalid syntax to pass and +causing reduction conflicts. + +Fixed a problem where the Ones opcode could get converted to a +value of zero if "Ones" was used where a byte, word or dword value +was expected. The 64-bit value is now truncated to the correct +size with the correct value. + + + +---------------------------------------- +02 July 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020702: + +The Table Manager code has been restructured to add several new +features. Tables that are not required by the core subsystem +(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer +validated in any way and are returned from AcpiGetFirmwareTable if +requested. The AcpiOsTableOverride interface is now called for +each table that is loaded by the subsystem in order to allow the +host to override any table it chooses. Previously, only the DSDT +could be overridden. Added one new files, tbrsdt.c and +tbgetall.c. + +Fixed a problem with the conversion of internal package objects to +external objects (when a package is returned from a control +method.) The return buffer length was set to zero instead of the +proper length of the package object. + +Fixed a reported problem with the use of the RefOf and DeRefOf +operators when passing reference arguments to control methods. A +new type of Reference object is used internally for references +produced by the RefOf operator. + +Added additional error messages in the Resource Manager to explain +AE_BAD_DATA errors when they occur during resource parsing. + +Split the AcpiEnableSubsystem into two primitives to enable a +finer granularity initialization sequence. These two calls should +be called in this order: AcpiEnableSubsystem (flags), +AcpiInitializeObjects (flags). The flags parameter remains the +same. + + +2) Linux + +Updated the ACPI utilities module to understand the new style of +fully resolved package objects that are now returned from the core +subsystem. This eliminates errors of the form: + + ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] + acpi_utils-0430 [145] acpi_evaluate_reference: + Invalid element in package (not a device reference) + +The method evaluation utility uses the new buffer allocation +scheme instead of calling AcpiEvaluate Object twice. + +Added support for ECDT. This allows the use of the Embedded + +Controller before the namespace has been fully initialized, which +is necessary for ACPI 2.0 support, and for some laptops to +initialize properly. (Laptops using ECDT are still rare, so only +limited testing was performed of the added functionality.) + +Fixed memory leaks in the EC driver. + +Eliminated a brittle code structure in acpi_bus_init(). + +Eliminated the acpi_evaluate() helper function in utils.c. It is +no longer needed since acpi_evaluate_object can optionally +allocate memory for the return object. + +Implemented fix for keyboard hang when getting battery readings on +some systems (Stephen White) + +PCI IRQ routing update (Dominik Brodowski) + +Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC +support + +---------------------------------------- +11 June 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020611: + +Fixed a reported problem where constants such as Zero and One +appearing within _PRT packages were not handled correctly within +the resource manager code. Originally reported against the ASL +compiler because the code generator now optimizes integers to +their minimal AML representation (i.e. AML constants if possible.) +The _PRT code now handles all AML constant opcodes correctly +(Zero, One, Ones, Revision). + +Fixed a problem with the Concatenate operator in the AML +interpreter where a buffer result object was incorrectly marked as +not fully evaluated, causing a run-time error of AE_AML_INTERNAL. + +All package sub-objects are now fully resolved before they are +returned from the external ACPI interfaces. This means that name +strings are resolved to object handles, and constant operators +(Zero, One, Ones, Revision) are resolved to Integers. + +Implemented immediate resolution of the AML Constant opcodes +(Zero, One, Ones, Revision) to Integer objects upon detection +within the AML stream. This has simplified and reduced the +generated code size of the subsystem by eliminating about 10 +switch statements for these constants (which previously were +contained in Reference objects.) The complicating issues are that +the Zero opcode is used as a "placeholder" for unspecified +optional target operands and stores to constants are defined to be +no-ops. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total + Debug Version: 143.8K Code, 58.8K Data, 202.6K Total + Current Release: + Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total + Debug Version: 142.9K Code, 58.7K Data, 201.6K Total + + +2) Linux + + +Added preliminary support for obtaining _TRA data for PCI root +bridges (Bjorn Helgaas). + + +3) iASL Compiler Version X2046: + +Fixed a problem where the "_DDN" reserved name was defined to be a +control method with one argument. There are no arguments, and +_DDN does not have to be a control method. + +Fixed a problem with the Linux version of the compiler where the +source lines printed with error messages were the wrong lines. +This turned out to be the "LF versus CR/LF" difference between +Windows and Unix. This appears to be the longstanding issue +concerning listing output and error messages. + +Fixed a problem with the Linux version of compiler where opcode +names within error messages were wrong. This was caused by a +slight difference in the output of the Flex tool on Linux versus +Windows. + +Fixed a problem with the Linux compiler where the hex output files +contained some garbage data caused by an internal buffer overrun. + + +---------------------------------------- +17 May 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020517: + +Implemented a workaround to an BIOS bug discovered on the HP +OmniBook where the FADT revision number and the table size are +inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new +behavior is to fallback to using only the ACPI 1.0 fields of the +FADT if the table is too small to be a ACPI 2.0 table as claimed +by the revision number. Although this is a BIOS bug, this is a +case where the workaround is simple enough and with no side +effects, so it seemed prudent to add it. A warning message is +issued, however. + +Implemented minimum size checks for the fixed-length ACPI tables - +- the FADT and FACS, as well as consistency checks between the +revision number and the table size. + +Fixed a reported problem in the table override support where the +new table pointer was incorrectly treated as a physical address +instead of a logical address. + +Eliminated the use of the AE_AML_ERROR exception and replaced it +with more descriptive codes. + +Fixed a problem where an exception would occur if an ASL Field was +defined with no named Field Units underneath it (used by some +index fields). + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total + Debug Version: 142.9K Code, 58.4K Data, 201.3K Total + Current Release: + Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total + Debug Version: 143.8K Code, 58.8K Data, 202.6K Total + + + +2) Linux + +Much work done on ACPI init (MADT and PCI IRQ routing support). +(Paul D. and Dominik Brodowski) + +Fix PCI IRQ-related panic on boot (Sam Revitch) + +Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) + +Fix "MHz" typo (Dominik Brodowski) + +Fix RTC year 2000 issue (Dominik Brodowski) + +Preclude multiple button proc entries (Eric Brunet) + +Moved arch-specific code out of include/platform/aclinux.h + +3) iASL Compiler Version X2044: + +Implemented error checking for the string used in the EISAID macro +(Usually used in the definition of the _HID object.) The code now +strictly enforces the PnP format - exactly 7 characters, 3 +uppercase letters and 4 hex digits. + +If a raw string is used in the definition of the _HID object +(instead of the EISAID macro), the string must contain all +alphanumeric characters (e.g., "*PNP0011" is not allowed because +of the asterisk.) + +Implemented checking for invalid use of ACPI reserved names for +most of the name creation operators (Name, Device, Event, Mutex, +OperationRegion, PowerResource, Processor, and ThermalZone.) +Previously, this check was only performed for control methods. + +Implemented an additional check on the Name operator to emit an +error if a reserved name that must be implemented in ASL as a +control method is used. We know that a reserved name must be a +method if it is defined with input arguments. + +The warning emitted when a namespace object reference is not found +during the cross reference phase has been changed into an error. +The "External" directive should be used for names defined in other +modules. + + +4) Tools and Utilities + +The 16-bit tools (adump16 and aexec16) have been regenerated and +tested. + +Fixed a problem with the output of both acpidump and adump16 where +the indentation of closing parentheses and brackets was not + +aligned properly with the parent block. + + +---------------------------------------- +03 May 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020503: + +Added support a new OSL interface that allows the host operating + +system software to override the DSDT found in the firmware - +AcpiOsTableOverride. With this interface, the OSL can examine the +version of the firmware DSDT and replace it with a different one +if desired. + +Added new external interfaces for accessing ACPI registers from +device drivers and other system software - AcpiGetRegister and +AcpiSetRegister. This was simply an externalization of the +existing AcpiHwBitRegister interfaces. + +Fixed a regression introduced in the previous build where the +ASL/AML CreateField operator always returned an error, +"destination must be a NS Node". + +Extended the maximum time (before failure) to successfully enable +ACPI mode to 3 seconds. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total + Debug Version: 142.4K Code, 58.3K Data, 200.7K Total + Current Release: + Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total + Debug Version: 142.9K Code, 58.4K Data, 201.3K Total + + +2) Linux + +Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- +free. While 3 out of 4 of our in-house systems work fine, the last +one still hangs when testing the LAPIC timer. + +Renamed many files in 2.5 kernel release to omit "acpi_" from the +name. + +Added warning on boot for Presario 711FR. + +Sleep improvements (Pavel Machek) + +ACPI can now be built without CONFIG_PCI enabled. + +IA64: Fixed memory map functions (JI Lee) + + +3) iASL Compiler Version X2043: + +Added support to allow the compiler to be integrated into the MS +VC++ development environment for one-button compilation of single +files or entire projects -- with error-to-source-line mapping. + +Implemented support for compile-time constant folding for the +Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 +specification. This allows the ASL writer to use expressions +instead of Integer/Buffer/String constants in terms that must +evaluate to constants at compile time and will also simplify the +emitted AML in any such sub-expressions that can be folded +(evaluated at compile-time.) This increases the size of the +compiler significantly because a portion of the ACPI CA AML +interpreter is included within the compiler in order to pre- +evaluate constant expressions. + + +Fixed a problem with the "Unicode" ASL macro that caused the +compiler to fault. (This macro is used in conjunction with the +_STR reserved name.) + +Implemented an AML opcode optimization to use the Zero, One, and +Ones opcodes where possible to further reduce the size of integer +constants and thus reduce the overall size of the generated AML +code. + +Implemented error checking for new reserved terms for ACPI version +2.0A. + +Implemented the -qr option to display the current list of ACPI +reserved names known to the compiler. + +Implemented the -qc option to display the current list of ASL +operators that are allowed within constant expressions and can +therefore be folded at compile time if the operands are constants. + + +4) Documentation + +Updated the Programmer's Reference for new interfaces, data types, +and memory allocation model options. + +Updated the iASL Compiler User Reference to apply new format and +add information about new features and options. + +---------------------------------------- +19 April 2002. Summary of changes for this release. + +1) ACPI CA Core Subsystem Version 20020419: + +The source code base for the Core Subsystem has been completely +cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit +versions. The Lint option files used are included in the +/acpi/generate/lint directory. + +Implemented enhanced status/error checking across the entire +Hardware manager subsystem. Any hardware errors (reported from +the OSL) are now bubbled up and will abort a running control +method. + + +Fixed a problem where the per-ACPI-table integer width (32 or 64) +was stored only with control method nodes, causing a fault when +non-control method code was executed during table loading. The +solution implemented uses a global variable to indicate table +width across the entire ACPI subsystem. Therefore, ACPI CA does +not support mixed integer widths across different ACPI tables +(DSDT, SSDT). + +Fixed a problem where NULL extended fields (X fields) in an ACPI +2.0 ACPI FADT caused the table load to fail. Although the +existing ACPI specification is a bit fuzzy on this topic, the new +behavior is to fall back on a ACPI 1.0 field if the corresponding +ACPI 2.0 X field is zero (even though the table revision indicates +a full ACPI 2.0 table.) The ACPI specification will be updated to +clarify this issue. + +Fixed a problem with the SystemMemory operation region handler +where memory was always accessed byte-wise even if the AML- +specified access width was larger than a byte. This caused +problems on systems with memory-mapped I/O. Memory is now +accessed with the width specified. On systems that do not support +non-aligned transfers, a check is made to guarantee proper address +alignment before proceeding in order to avoid an AML-caused +alignment fault within the kernel. + + +Fixed a problem with the ExtendedIrq resource where only one byte +of the 4-byte Irq field was extracted. + +Fixed the AcpiExDigitsNeeded() procedure to support _UID. This +function was out of date and required a rewrite. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total + Debug Version: 139.8K Code, 57.4K Data, 197.2K Total + Current Release: + Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total + Debug Version: 142.4K Code, 58.3K Data, 200.7K Total + + +2) Linux + +PCI IRQ routing fixes (Dominik Brodowski) + + +3) iASL Compiler Version X2042: + +Implemented an additional compile-time error check for a field +unit whose size + minimum access width would cause a run-time +access beyond the end-of-region. Previously, only the field size +itself was checked. + +The Core subsystem and iASL compiler now share a common parse +object in preparation for compile-time evaluation of the type +3/4/5 ASL operators. + + +---------------------------------------- +Summary of changes for this release: 03_29_02 + +1) ACPI CA Core Subsystem Version 20020329: + +Implemented support for late evaluation of TermArg operands to +Buffer and Package objects. This allows complex expressions to be +used in the declarations of these object types. + +Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI +1.0, if the field was larger than 32 bits, it was returned as a +buffer - otherwise it was returned as an integer. In ACPI 2.0, +the field is returned as a buffer only if the field is larger than +64 bits. The TableRevision is now considered when making this +conversion to avoid incompatibility with existing ASL code. + +Implemented logical addressing for AcpiOsGetRootPointer. This +allows an RSDP with either a logical or physical address. With +this support, the host OS can now override all ACPI tables with +one logical RSDP. Includes implementation of "typed" pointer +support to allow a common data type for both physical and logical +pointers internally. This required a change to the +AcpiOsGetRootPointer interface. + +Implemented the use of ACPI 2.0 Generic Address Structures for all +GPE, Fixed Event, and PM Timer I/O. This allows the use of memory +mapped I/O for these ACPI features. + +Initialization now ignores not only non-required tables (All +tables other than the FADT, FACS, DSDT, and SSDTs), but also does +not validate the table headers of unrecognized tables. + +Fixed a problem where a notify handler could only be +installed/removed on an object of type Device. All "notify" + +objects are now supported -- Devices, Processor, Power, and +Thermal. + +Removed most verbosity from the ACPI_DB_INFO debug level. Only +critical information is returned when this debug level is enabled. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release + Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total + Debug Version: 138.0K Code, 56.6K Data, 194.6K Total + Current Release: + Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total + Debug Version: 139.8K Code, 57.4K Data, 197.2K Total + + +2) Linux: + +The processor driver (acpi_processor.c) now fully supports ACPI +2.0-based processor performance control (e.g. Intel(R) +SpeedStep(TM) technology) Note that older laptops that only have +the Intel "applet" interface are not supported through this. The +'limit' and 'performance' interface (/proc) are fully functional. +[Note that basic policy for controlling performance state +transitions will be included in the next version of ospmd.] The +idle handler was modified to more aggressively use C2, and PIIX4 +errata handling underwent a complete overhaul (big thanks to +Dominik Brodowski). + +Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- +based devices in the ACPI namespace are now dynamically bound +(associated) with their PCI counterparts (e.g. PCI1->01:00.0). +This allows, among other things, ACPI to resolve bus numbers for +subordinate PCI bridges. + +Enhanced PCI IRQ routing to get the proper bus number for _PRT +entries defined underneath PCI bridges. + +Added IBM 600E to bad bios list due to invalid _ADR value for +PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. + +In the process of adding full MADT support (e.g. IOAPIC) for IA32 +(acpi.c, mpparse.c) -- stay tuned. + +Added back visual differentiation between fixed-feature and +control-method buttons in dmesg. Buttons are also subtyped (e.g. +button/power/PWRF) to simplify button identification. + +We no longer use -Wno-unused when compiling debug. Please ignore +any "_THIS_MODULE defined but not used" messages. + +Can now shut down the system using "magic sysrq" key. + + +3) iASL Compiler version 2041: + +Fixed a problem where conversion errors for hex/octal/decimal +constants were not reported. + +Implemented a fix for the General Register template Address field. +This field was 8 bits when it should be 64. + +Fixed a problem where errors/warnings were no longer being emitted +within the listing output file. + +Implemented the ACPI 2.0A restriction on ACPI Table Signatures to +exactly 4 characters, alphanumeric only. + + + + +---------------------------------------- +Summary of changes for this release: 03_08_02 + + +1) ACPI CA Core Subsystem Version 20020308: + +Fixed a problem with AML Fields where the use of the "AccessAny" +keyword could cause an interpreter error due to attempting to read +or write beyond the end of the parent Operation Region. + +Fixed a problem in the SystemMemory Operation Region handler where +an attempt was made to map memory beyond the end of the region. +This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" +errors on some Linux systems. + +Fixed a problem where the interpreter/namespace "search to root" +algorithm was not functioning for some object types. Relaxed the +internal restriction on the search to allow upsearches for all +external object types as well as most internal types. + + +2) Linux: + +We now use safe_halt() macro versus individual calls to sti | hlt. + +Writing to the processor limit interface should now work. "echo 1" +will increase the limit, 2 will decrease, and 0 will reset to the + +default. + + +3) ASL compiler: + +Fixed segfault on Linux version. + + +---------------------------------------- +Summary of changes for this release: 02_25_02 + +1) ACPI CA Core Subsystem: + + +Fixed a problem where the GPE bit masks were not initialized +properly, causing erratic GPE behavior. + +Implemented limited support for multiple calling conventions. The +code can be generated with either the VPL (variable parameter +list, or "C") convention, or the FPL (fixed parameter list, or +"Pascal") convention. The core subsystem is about 3.4% smaller +when generated with FPL. + + +2) Linux + +Re-add some /proc/acpi/event functionality that was lost during +the rewrite + +Resolved issue with /proc events for fixed-feature buttons showing +up as the system device. + +Fixed checks on C2/C3 latencies to be inclusive of maximum values. + +Replaced AE_ERRORs in acpi_osl.c with more specific error codes. + +Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" + +Fixed limit interface & usage to fix bugs with passive cooling +hysterisis. + +Restructured PRT support. + + +---------------------------------------- +Summary of changes for this label: 02_14_02 + + +1) ACPI CA Core Subsystem: + +Implemented support in AcpiLoadTable to allow loading of FACS and +FADT tables. + +Support for the now-obsolete interim 0.71 64-bit ACPI tables has +been removed. All 64-bit platforms should be migrated to the ACPI +2.0 tables. The actbl71.h header has been removed from the source +tree. + +All C macros defined within the subsystem have been prefixed with +"ACPI_" to avoid collision with other system include files. + +Removed the return value for the two AcpiOsPrint interfaces, since +it is never used and causes lint warnings for ignoring the return +value. + +Added error checking to all internal mutex acquire and release +calls. Although a failure from one of these interfaces is +probably a fatal system error, these checks will cause the +immediate abort of the currently executing method or interface. + +Fixed a problem where the AcpiSetCurrentResources interface could +fault. This was a side effect of the deployment of the new memory +allocation model. + +Fixed a couple of problems with the Global Lock support introduced +in the last major build. The "common" (1.0/2.0) internal FACS was +being overwritten with the FACS signature and clobbering the +Global Lock pointer. Also, the actual firmware FACS was being +unmapped after construction of the "common" FACS, preventing +access to the actual Global Lock field within it. The "common" +internal FACS is no longer installed as an actual ACPI table; it +is used simply as a global. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release (02_07_01) + Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total + Debug Version: 136.9K Code, 56.4K Data, 193.3K Total + Current Release: + Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total + Debug Version: 138.0K Code, 56.6K Data, 194.6K Total + + +2) Linux + +Updated Linux-specific code for core macro and OSL interface +changes described above. + +Improved /proc/acpi/event. It now can be opened only once and has +proper poll functionality. + +Fixed and restructured power management (acpi_bus). + +Only create /proc "view by type" when devices of that class exist. + +Fixed "charging/discharging" bug (and others) in acpi_battery. + +Improved thermal zone code. + + +3) ASL Compiler, version X2039: + + +Implemented the new compiler restriction on ASL String hex/octal +escapes to non-null, ASCII values. An error results if an invalid +value is used. (This will require an ACPI 2.0 specification +change.) + +AML object labels that are output to the optional C and ASM source +are now prefixed with both the ACPI table signature and table ID +to help guarantee uniqueness within a large BIOS project. + + +---------------------------------------- +Summary of changes for this label: 02_01_02 + +1) ACPI CA Core Subsystem: + +ACPI 2.0 support is complete in the entire Core Subsystem and the +ASL compiler. All new ACPI 2.0 operators are implemented and all +other changes for ACPI 2.0 support are complete. With +simultaneous code and data optimizations throughout the subsystem, +ACPI 2.0 support has been implemented with almost no additional +cost in terms of code and data size. + +Implemented a new mechanism for allocation of return buffers. If +the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will +be allocated on behalf of the caller. Consolidated all return +buffer validation and allocation to a common procedure. Return +buffers will be allocated via the primary OSL allocation interface +since it appears that a separate pool is not needed by most users. +If a separate pool is required for these buffers, the caller can +still use the original mechanism and pre-allocate the buffer(s). + +Implemented support for string operands within the DerefOf +operator. + +Restructured the Hardware and Event managers to be table driven, +simplifying the source code and reducing the amount of generated +code. + +Split the common read/write low-level ACPI register bitfield +procedure into a separate read and write, simplifying the code +considerably. + +Obsoleted the AcpiOsCallocate OSL interface. This interface was +used only a handful of times and didn't have enough critical mass +for a separate interface. Replaced with a common calloc procedure +in the core. + +Fixed a reported problem with the GPE number mapping mechanism +that allows GPE1 numbers to be non-contiguous with GPE0. +Reorganized the GPE information and shrunk a large array that was +originally large enough to hold info for all possible GPEs (256) +to simply large enough to hold all GPEs up to the largest GPE +number on the machine. + +Fixed a reported problem with resource structure alignment on 64- +bit platforms. + +Changed the AcpiEnableEvent and AcpiDisableEvent external +interfaces to not require any flags for the common case of +enabling/disabling a GPE. + +Implemented support to allow a "Notify" on a Processor object. + +Most TBDs in comments within the source code have been resolved +and eliminated. + + +Fixed a problem in the interpreter where a standalone parent +prefix (^) was not handled correctly in the interpreter and +debugger. + +Removed obsolete and unnecessary GPE save/restore code. + +Implemented Field support in the ASL Load operator. This allows a +table to be loaded from a named field, in addition to loading a +table directly from an Operation Region. + +Implemented timeout and handle support in the external Global Lock +interfaces. + +Fixed a problem in the AcpiDump utility where pathnames were no +longer being generated correctly during the dump of named objects. + +Modified the AML debugger to give a full display of if/while +predicates instead of just one AML opcode at a time. (The +predicate can have several nested ASL statements.) The old method +was confusing during single stepping. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release (12_18_01) + Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total + Debug Version: 138.3K Code, 55.9K Data, 194.2K Total + Current Release: + Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total + Debug Version: 136.9K Code, 56.4K Data, 193.3K Total + +2) Linux + + Implemented fix for PIIX reverse throttling errata (Processor +driver) + +Added new Limit interface (Processor and Thermal drivers) + +New thermal policy (Thermal driver) + +Many updates to /proc + +Battery "low" event support (Battery driver) + +Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) + +IA32 - IA64 initialization unification, no longer experimental + +Menuconfig options redesigned + +3) ASL Compiler, version X2037: + +Implemented several new output features to simplify integration of +AML code into firmware: 1) Output the AML in C source code with +labels for each named ASL object. The original ASL source code +is interleaved as C comments. 2) Output the AML in ASM source code +with labels and interleaved ASL source. 3) Output the AML in +raw hex table form, in either C or ASM. + +Implemented support for optional string parameters to the +LoadTable operator. + +Completed support for embedded escape sequences within string +literals. The compiler now supports all single character escapes +as well as the Octal and Hex escapes. Note: the insertion of a +null byte into a string literal (via the hex/octal escape) causes +the string to be immediately terminated. A warning is issued. + +Fixed a problem where incorrect AML was generated for the case +where an ASL namepath consists of a single parent prefix ( + +) with no trailing name segments. + +The compiler has been successfully generated with a 64-bit C +compiler. + + + + +---------------------------------------- +Summary of changes for this label: 12_18_01 + +1) Linux + +Enhanced blacklist with reason and severity fields. Any table's +signature may now be used to identify a blacklisted system. + +Call _PIC control method to inform the firmware which interrupt +model the OS is using. Turn on any disabled link devices. + +Cleaned up busmgr /proc error handling (Andreas Dilger) + + 2) ACPI CA Core Subsystem: + +Implemented ACPI 2.0 semantics for the "Break" operator (Exit from +while loop) + +Completed implementation of the ACPI 2.0 "Continue", +"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" +operators. All new ACPI 2.0 operators are now implemented in both +the ASL compiler and the AML interpreter. The only remaining ACPI +2.0 task is support for the String data type in the DerefOf +operator. Fixed a problem with AcquireMutex where the status code +was lost if the caller had to actually wait for the mutex. + +Increased the maximum ASL Field size from 64K bits to 4G bits. + +Completed implementation of the external Global Lock interfaces -- +AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and +Handler parameters were added. + +Completed another pass at removing warnings and issues when +compiling with 64-bit compilers. The code now compiles cleanly +with the Intel 64-bit C/C++ compiler. Most notably, the pointer +add and subtract (diff) macros have changed considerably. + + +Created and deployed a new ACPI_SIZE type that is 64-bits wide on +64-bit platforms, 32-bits on all others. This type is used +wherever memory allocation and/or the C sizeof() operator is used, +and affects the OSL memory allocation interfaces AcpiOsAllocate +and AcpiOsCallocate. + +Implemented sticky user breakpoints in the AML debugger. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release (12_05_01) + Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total + Debug Version: 136.2K Code, 55.6K Data, 191.8K Total + Current Release: + Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total + Debug Version: 138.3K Code, 55.9K Data, 194.2K Total + + 3) ASL Compiler, version X2034: + +Now checks for (and generates an error if detected) the use of a +Break or Continue statement without an enclosing While statement. + + +Successfully generated the compiler with the Intel 64-bit C +compiler. + + ---------------------------------------- +Summary of changes for this label: 12_05_01 + + 1) ACPI CA Core Subsystem: + +The ACPI 2.0 CopyObject operator is fully implemented. This +operator creates a new copy of an object (and is also used to +bypass the "implicit conversion" mechanism of the Store operator.) + +The ACPI 2.0 semantics for the SizeOf operator are fully +implemented. The change is that performing a SizeOf on a +reference object causes an automatic dereference of the object to +tha actual value before the size is evaluated. This behavior was +undefined in ACPI 1.0. + +The ACPI 2.0 semantics for the Extended IRQ resource descriptor +have been implemented. The interrupt polarity and mode are now +independently set. + +Fixed a problem where ASL Constants (Zero, One, Ones, Revision) +appearing in Package objects were not properly converted to +integers when the internal Package was converted to an external +object (via the AcpiEvaluateObject interface.) + +Fixed a problem with the namespace object deletion mechanism for +objects created by control methods. There were two parts to this +problem: 1) Objects created during the initialization phase method +parse were not being deleted, and 2) The object owner ID mechanism +to track objects was broken. + +Fixed a problem where the use of the ASL Scope operator within a +control method would result in an invalid opcode exception. + +Fixed a problem introduced in the previous label where the buffer +length required for the _PRT structure was not being returned +correctly. + +Code and Data Size: Current core subsystem library sizes are shown +below. These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The debug +version of the code includes the debug output trace mechanism and +has a larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Release (11_20_01) + Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total + Debug Version: 135.1K Code, 55.4K Data, 190.5K Total + + Current Release: + Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total + Debug Version: 136.2K Code, 55.6K Data, 191.8K Total + + 2) Linux: + +Updated all files to apply cleanly against 2.4.16. + +Added basic PCI Interrupt Routing Table (PRT) support for IA32 +(acpi_pci.c), and unified the PRT code for IA32 and IA64. This +version supports both static and dynamic PRT entries, but dynamic +entries are treated as if they were static (not yet +reconfigurable). Architecture- specific code to use this data is +absent on IA32 but should be available shortly. + +Changed the initialization sequence to start the ACPI interpreter +(acpi_init) prior to initialization of the PCI driver (pci_init) +in init/main.c. This ordering is required to support PRT and +facilitate other (future) enhancement. A side effect is that the +ACPI bus driver and certain device drivers can no longer be loaded +as modules. + +Modified the 'make menuconfig' options to allow PCI Interrupt +Routing support to be included without the ACPI Bus and other +device drivers. + + 3) ASL Compiler, version X2033: + +Fixed some issues with the use of the new CopyObject and +DataTableRegion operators. Both are fully functional. + + ---------------------------------------- +Summary of changes for this label: 11_20_01 + + 20 November 2001. Summary of changes for this release. + + 1) ACPI CA Core Subsystem: + +Updated Index support to match ACPI 2.0 semantics. Storing a +Integer, String, or Buffer to an Index of a Buffer will store only +the least-significant byte of the source to the Indexed buffer +byte. Multiple writes are not performed. + +Fixed a problem where the access type used in an AccessAs ASL +operator was not recorded correctly into the field object. + +Fixed a problem where ASL Event objects were created in a +signalled state. Events are now created in an unsignalled state. + +The internal object cache is now purged after table loading and +initialization to reduce the use of dynamic kernel memory -- on +the assumption that object use is greatest during the parse phase +of the entire table (versus the run-time use of individual control +methods.) + +ACPI 2.0 variable-length packages are now fully operational. + +Code and Data Size: Code and Data optimizations have permitted new +feature development with an actual reduction in the library size. +Current core subsystem library sizes are shown below. These are +the code and data sizes for the acpica.lib produced by the +Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code +includes the debug output trace mechanism and has a larger code +and data size. Note that these values will vary depending on the +efficiency of the compiler and the compiler options used during +generation. + + Previous Release (11_09_01): + Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total + Debug Version: 134.5K Code, 55.4K Data, 189.9K Total + + Current Release: + Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total + Debug Version: 135.1K Code, 55.4K Data, 190.5K Total + + 2) Linux: + +Enhanced the ACPI boot-time initialization code to allow the use +of Local APIC tables for processor enumeration on IA-32, and to +pave the way for a fully MPS-free boot (on SMP systems) in the +near future. This functionality replaces +arch/i386/kernel/acpitables.c, which was introduced in an earlier +2.4.15-preX release. To enable this feature you must add +"acpi_boot=on" to the kernel command line -- see the help entry +for CONFIG_ACPI_BOOT for more information. An IA-64 release is in +the works... + +Restructured the configuration options to allow boot-time table +parsing support without inclusion of the ACPI Interpreter (and +other) code. + +NOTE: This release does not include fixes for the reported events, +power-down, and thermal passive cooling issues (coming soon). + + 3) ASL Compiler: + +Added additional typechecking for Fields within restricted access +Operation Regions. All fields within EC and CMOS regions must be +declared with ByteAcc. All fields within SMBus regions must be +declared with the BufferAcc access type. + +Fixed a problem where the listing file output of control methods +no longer interleaved the actual AML code with the ASL source +code. + + + + +---------------------------------------- +Summary of changes for this label: 11_09_01 + +1) ACPI CA Core Subsystem: + +Implemented ACPI 2.0-defined support for writes to fields with a +Buffer, String, or Integer source operand that is smaller than the +target field. In these cases, the source operand is zero-extended +to fill the target field. + +Fixed a problem where a Field starting bit offset (within the +parent operation region) was calculated incorrectly if the + +alignment of the field differed from the access width. This +affected CreateWordField, CreateDwordField, CreateQwordField, and +possibly other fields that use the "AccessAny" keyword. + +Fixed a problem introduced in the 11_02_01 release where indirect +stores through method arguments did not operate correctly. + +2) Linux: + +Implemented boot-time ACPI table parsing support +(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code +facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than +legacy BIOS interfaces (e.g. MPS) for the configuration of system +processors, memory, and interrupts during setup_arch(). Note that +this patch does not include the required architecture-specific +changes required to apply this information -- subsequent patches +will be posted for both IA32 and IA64 to achieve this. + +Added low-level sleep support for IA32 platforms, courtesy of Pat +Mochel. This allows IA32 systems to transition to/from various +sleeping states (e.g. S1, S3), although the lack of a centralized +driver model and power-manageable drivers will prevent its +(successful) use on most systems. + +Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" +submenu, unified IA32 and IA64 options, added new "Boot using ACPI +tables" option, etc. + +Increased the default timeout for the EC driver from 1ms to 10ms +(1000 cycles of 10us) to try to address AE_TIME errors during EC +transactions. + + ---------------------------------------- +Summary of changes for this label: 11_02_01 + +1) ACPI CA Core Subsystem: + +ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access +(QWordAcc keyword). All ACPI 2.0 64-bit support is now +implemented. + +OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required +changes to support ACPI 2.0 Qword field access. Read/Write +PciConfiguration(), Read/Write Memory(), and Read/Write Port() now +accept an ACPI_INTEGER (64 bits) as the value parameter. Also, +the value parameter for the address space handler interface is now +an ACPI_INTEGER. OSL implementations of these interfaces must now +handle the case where the Width parameter is 64. + +Index Fields: Fixed a problem where unaligned bit assembly and +disassembly for IndexFields was not supported correctly. + +Index and Bank Fields: Nested Index and Bank Fields are now +supported. During field access, a check is performed to ensure +that the value written to an Index or Bank register is not out of +the range of the register. The Index (or Bank) register is +written before each access to the field data. Future support will +include allowing individual IndexFields to be wider than the +DataRegister width. + +Fields: Fixed a problem where the AML interpreter was incorrectly +attempting to write beyond the end of a Field/OpRegion. This was +a boundary case that occurred when a DWORD field was written to a +BYTE access OpRegion, forcing multiple writes and causing the +interpreter to write one datum too many. + +Fields: Fixed a problem with Field/OpRegion access where the +starting bit address of a field was incorrectly calculated if the +current access type was wider than a byte (WordAcc, DwordAcc, or +QwordAcc). + +Fields: Fixed a problem where forward references to individual +FieldUnits (individual Field names within a Field definition) were +not resolved during the AML table load. + +Fields: Fixed a problem where forward references from a Field +definition to the parent Operation Region definition were not +resolved during the AML table load. + +Fields: Duplicate FieldUnit names within a scope are now detected +during AML table load. + +Acpi Interfaces: Fixed a problem where the AcpiGetName() interface +returned an incorrect name for the root node. + +Code and Data Size: Code and Data optimizations have permitted new +feature development with an actual reduction in the library size. +Current core subsystem library sizes are shown below. These are +the code and data sizes for the acpica.lib produced by the +Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code +includes the debug output trace mechanism and has a larger code +and data size. Note that these values will vary depending on the +efficiency of the compiler and the compiler options used during +generation. + + Previous Release (10_18_01): + Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total + Debug Version: 136.7K Code, 57.4K Data, 194.2K Total + + Current Release: + Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total + Debug Version: 134.5K Code, 55.4K Data, 189.9K Total + + 2) Linux: + +Improved /proc processor output (Pavel Machek) Re-added +MODULE_LICENSE("GPL") to all modules. + + 3) ASL Compiler version X2030: + +Duplicate FieldUnit names within a scope are now detected and +flagged as errors. + + 4) Documentation: + +Programmer Reference updated to reflect OSL and address space +handler interface changes described above. + +---------------------------------------- +Summary of changes for this label: 10_18_01 + +ACPI CA Core Subsystem: + +Fixed a problem with the internal object reference count mechanism +that occasionally caused premature object deletion. This resolves +all of the outstanding problem reports where an object is deleted +in the middle of an interpreter evaluation. Although this problem +only showed up in rather obscure cases, the solution to the +problem involved an adjustment of all reference counts involving +objects attached to namespace nodes. + +Fixed a problem with Field support in the interpreter where +writing to an aligned field whose length is an exact multiple (2 +or greater) of the field access granularity would cause an attempt +to write beyond the end of the field. + +The top level AML opcode execution functions within the +interpreter have been renamed with a more meaningful and +consistent naming convention. The modules exmonad.c and +exdyadic.c were eliminated. New modules are exoparg1.c, +exoparg2.c, exoparg3.c, and exoparg6.c. + +Support for the ACPI 2.0 "Mid" ASL operator has been implemented. + +Fixed a problem where the AML debugger was causing some internal +objects to not be deleted during subsystem termination. + +Fixed a problem with the external AcpiEvaluateObject interface +where the subsystem would fault if the named object to be +evaluated referred to a constant such as Zero, Ones, etc. + +Fixed a problem with IndexFields and BankFields where the +subsystem would fault if the index, data, or bank registers were +not defined in the same scope as the field itself. + +Added printf format string checking for compilers that support +this feature. Corrected more than 50 instances of issues with +format specifiers within invocations of ACPI_DEBUG_PRINT +throughout the core subsystem code. + +The ASL "Revision" operator now returns the ACPI support level +implemented in the core - the value "2" since the ACPI 2.0 support +is more than 50% implemented. + +Enhanced the output of the AML debugger "dump namespace" command +to output in a more human-readable form. + +Current core subsystem library code sizes are shown below. These + +are the code and data sizes for the acpica.lib produced by the +Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code +includes the full debug trace mechanism -- leading to a much + +larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Previous Label (09_20_01): + Non-Debug Version: 65K Code, 5K Data, 70K Total + Debug Version: 138K Code, 58K Data, 196K Total + + This Label: + + Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total + Debug Version: 136.7K Code, 57.4K Data, 194.2K Total + +Linux: + +Implemented a "Bad BIOS Blacklist" to track machines that have +known ASL/AML problems. + +Enhanced the /proc interface for the thermal zone driver and added +support for _HOT (the critical suspend trip point). The 'info' +file now includes threshold/policy information, and allows setting +of _SCP (cooling preference) and _TZP (polling frequency) values +to the 'info' file. Examples: "echo tzp=5 > info" sets the polling +frequency to 5 seconds, and "echo scp=1 > info" sets the cooling +preference to the passive/quiet mode (if supported by the ASL). + +Implemented a workaround for a gcc bug that resuted in an OOPs +when loading the control method battery driver. + + ---------------------------------------- +Summary of changes for this label: 09_20_01 + + ACPI CA Core Subsystem: + +The AcpiEnableEvent and AcpiDisableEvent interfaces have been +modified to allow individual GPE levels to be flagged as wake- +enabled (i.e., these GPEs are to remain enabled when the platform +sleeps.) + +The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now +support wake-enabled GPEs. This means that upon entering the +sleep state, all GPEs that are not wake-enabled are disabled. +When leaving the sleep state, these GPEs are re-enabled. + +A local double-precision divide/modulo module has been added to +enhance portability to OS kernels where a 64-bit math library is +not available. The new module is "utmath.c". + +Several optimizations have been made to reduce the use of CPU +stack. Originally over 2K, the maximum stack usage is now below +2K at 1860 bytes (1.82k) + +Fixed a problem with the AcpiGetFirmwareTable interface where the +root table pointer was not mapped into a logical address properly. + +Fixed a problem where a NULL pointer was being dereferenced in the +interpreter code for the ASL Notify operator. + +Fixed a problem where the use of the ASL Revision operator +returned an error. This operator now returns the current version +of the ACPI CA core subsystem. + +Fixed a problem where objects passed as control method parameters +to AcpiEvaluateObject were always deleted at method termination. +However, these objects may end up being stored into the namespace +by the called method. The object reference count mechanism was +applied to these objects instead of a force delete. + +Fixed a problem where static strings or buffers (contained in the +AML code) that are declared as package elements within the ASL +code could cause a fault because the interpreter would attempt to +delete them. These objects are now marked with the "static +object" flag to prevent any attempt to delete them. + +Implemented an interpreter optimization to use operands directly +from the state object instead of extracting the operands to local +variables. This reduces stack use and code size, and improves +performance. + +The module exxface.c was eliminated as it was an unnecessary extra +layer of code. + +Current core subsystem library code sizes are shown below. These +are the code and data sizes for the acpica.lib produced by the +Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code +includes the full debug trace mechanism -- leading to a much +larger code and data size. Note that these values will vary +depending on the efficiency of the compiler and the compiler +options used during generation. + + Non-Debug Version: 65K Code, 5K Data, 70K Total +(Previously 69K) Debug Version: 138K Code, 58K Data, 196K +Total (Previously 195K) + +Linux: + +Support for ACPI 2.0 64-bit integers has been added. All ACPI +Integer objects are now 64 bits wide + +All Acpi data types and structures are now in lower case. Only +Acpi macros are upper case for differentiation. + + Documentation: + +Changes to the external interfaces as described above. + + ---------------------------------------- +Summary of changes for this label: 08_31_01 + + ACPI CA Core Subsystem: + +A bug with interpreter implementation of the ASL Divide operator +was found and fixed. The implicit function return value (not the +explicit store operands) was returning the remainder instead of +the quotient. This was a longstanding bug and it fixes several +known outstanding issues on various platforms. + +The ACPI_DEBUG_PRINT and function trace entry/exit macros have +been further optimized for size. There are 700 invocations of the +DEBUG_PRINT macro alone, so each optimization reduces the size of +the debug version of the subsystem significantly. + +A stack trace mechanism has been implemented. The maximum stack +usage is about 2K on 32-bit platforms. The debugger command "stat +stack" will display the current maximum stack usage. + +All public symbols and global variables within the subsystem are +now prefixed with the string "Acpi". This keeps all of the +symbols grouped together in a kernel map, and avoids conflicts +with other kernel subsystems. + +Most of the internal fixed lookup tables have been moved into the +code segment via the const operator. + +Several enhancements have been made to the interpreter to both +reduce the code size and improve performance. + +Current core subsystem library code sizes are shown below. These +are the code and data sizes for the acpica.lib produced by the +Microsoft Visual C++ 6.0 compiler, and these values do not include +any ACPI driver or OSPM code. The debug version of the code +includes the full debug trace mechanism which contains over 700 +invocations of the DEBUG_PRINT macro, 500 function entry macro +invocations, and over 900 function exit macro invocations -- +leading to a much larger code and data size. Note that these +values will vary depending on the efficiency of the compiler and +the compiler options used during generation. + + Non-Debug Version: 64K Code, 5K Data, 69K Total +Debug Version: 137K Code, 58K Data, 195K Total + + Linux: + +Implemented wbinvd() macro, pending a kernel-wide definition. + +Fixed /proc/acpi/event to handle poll() and short reads. + + ASL Compiler, version X2026: + +Fixed a problem introduced in the previous label where the AML + +code emitted for package objects produced packages with zero +length. + + ---------------------------------------- +Summary of changes for this label: 08_16_01 + +ACPI CA Core Subsystem: + +The following ACPI 2.0 ASL operators have been implemented in the +AML interpreter (These are already supported by the Intel ASL +compiler): ToDecimalString, ToHexString, ToString, ToInteger, and +ToBuffer. Support for 64-bit AML constants is implemented in the +AML parser, debugger, and disassembler. + +The internal memory tracking mechanism (leak detection code) has +been upgraded to reduce the memory overhead (a separate tracking +block is no longer allocated for each memory allocation), and now +supports all of the internal object caches. + +The data structures and code for the internal object caches have +been coelesced and optimized so that there is a single cache and +memory list data structure and a single group of functions that +implement generic cache management. This has reduced the code +size in both the debug and release versions of the subsystem. + +The DEBUG_PRINT macro(s) have been optimized for size and replaced +by ACPI_DEBUG_PRINT. The syntax for this macro is slightly +different, because it generates a single call to an internal +function. This results in a savings of about 90 bytes per +invocation, resulting in an overall code and data savings of about +16% in the debug version of the subsystem. + + Linux: + +Fixed C3 disk corruption problems and re-enabled C3 on supporting +machines. + +Integrated low-level sleep code by Patrick Mochel. + +Further tweaked source code Linuxization. + +Other minor fixes. + + ASL Compiler: + +Support for ACPI 2.0 variable length packages is fixed/completed. + +Fixed a problem where the optional length parameter for the ACPI +2.0 ToString operator. + +Fixed multiple extraneous error messages when a syntax error is +detected within the declaration line of a control method. + + ---------------------------------------- +Summary of changes for this label: 07_17_01 + +ACPI CA Core Subsystem: + +Added a new interface named AcpiGetFirmwareTable to obtain any +ACPI table via the ACPI signature. The interface can be called at +any time during kernel initialization, even before the kernel +virtual memory manager is initialized and paging is enabled. This +allows kernel subsystems to obtain ACPI tables very early, even +before the ACPI CA subsystem is initialized. + +Fixed a problem where Fields defined with the AnyAcc attribute +could be resolved to the incorrect address under the following +conditions: 1) the field width is larger than 8 bits and 2) the +parent operation region is not defined on a DWORD boundary. + +Fixed a problem where the interpreter is not being locked during +namespace initialization (during execution of the _INI control +methods), causing an error when an attempt is made to release it +later. + +ACPI 2.0 support in the AML Interpreter has begun and will be +ongoing throughout the rest of this year. In this label, The Mod +operator is implemented. + +Added a new data type to contain full PCI addresses named +ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, +and Function values. + + Linux: + +Enhanced the Linux version of the source code to change most +capitalized ACPI type names to lowercase. For example, all +instances of ACPI_STATUS are changed to acpi_status. This will +result in a large diff, but the change is strictly cosmetic and +aligns the CA code closer to the Linux coding standard. + +OSL Interfaces: + +The interfaces to the PCI configuration space have been changed to +add the PCI Segment number and to split the single 32-bit combined +DeviceFunction field into two 16-bit fields. This was +accomplished by moving the four values that define an address in +PCI configuration space (segment, bus, device, and function) to +the new ACPI_PCI_ID structure. + +The changes to the PCI configuration space interfaces led to a +reexamination of the complete set of address space access +interfaces for PCI, I/O, and Memory. The previously existing 18 +interfaces have proven difficult to maintain (any small change +must be propagated across at least 6 interfaces) and do not easily +allow for future expansion to 64 bits if necessary. Also, on some +systems, it would not be appropriate to demultiplex the access +width (8, 16, 32,or 64) before calling the OSL if the +corresponding native OS interfaces contain a similar access width +parameter. For these reasons, the 18 address space interfaces +have been replaced by these 6 new ones: + +AcpiOsReadPciConfiguration +AcpiOsWritePciConfiguration +AcpiOsReadMemory +AcpiOsWriteMemory +AcpiOsReadPort +AcpiOsWritePort + +Added a new interface named AcpiOsGetRootPointer to allow the OSL +to perform the platform and/or OS-specific actions necessary to +obtain the ACPI RSDP table pointer. On IA-32 platforms, this +interface will simply call down to the CA core to perform the low- +memory search for the table. On IA-64, the RSDP is obtained from +EFI. Migrating this interface to the OSL allows the CA core to + +remain OS and platform independent. + +Added a new interface named AcpiOsSignal to provide a generic +"function code and pointer" interface for various miscellaneous +signals and notifications that must be made to the host OS. The +first such signals are intended to support the ASL Fatal and +Breakpoint operators. In the latter case, the AcpiOsBreakpoint +interface has been obsoleted. + +The definition of the AcpiFormatException interface has been +changed to simplify its use. The caller no longer must supply a +buffer to the call; A pointer to a const string is now returned +directly. This allows the call to be easily used in printf +statements, etc. since the caller does not have to manage a local +buffer. + + + ASL Compiler, Version X2025: + +The ACPI 2.0 Switch/Case/Default operators have been implemented +and are fully functional. They will work with all ACPI 1.0 +interpreters, since the operators are simply translated to If/Else +pairs. + +The ACPI 2.0 ElseIf operator is implemented and will also work +with 1.0 interpreters, for the same reason. + +Implemented support for ACPI 2.0 variable-length packages. These +packages have a separate opcode, and their size is determined by +the interpreter at run-time. + +Documentation The ACPI CA Programmer Reference has been updated to +reflect the new interfaces and changes to existing interfaces. + + ------------------------------------------ +Summary of changes for this label: 06_15_01 + + ACPI CA Core Subsystem: + +Fixed a problem where a DWORD-accessed field within a Buffer +object would get its byte address inadvertently rounded down to +the nearest DWORD. Buffers are always Byte-accessible. + + ASL Compiler, version X2024: + +Fixed a problem where the Switch() operator would either fault or +hang the compiler. Note however, that the AML code for this ACPI +2.0 operator is not yet implemented. + +Compiler uses the new AcpiOsGetTimer interface to obtain compile +timings. + +Implementation of the CreateField operator automatically converts +a reference to a named field within a resource descriptor from a +byte offset to a bit offset if required. + +Added some missing named fields from the resource descriptor +support. These are the names that are automatically created by the +compiler to reference fields within a descriptor. They are only +valid at compile time and are not passed through to the AML +interpreter. + +Resource descriptor named fields are now typed as Integers and +subject to compile-time typechecking when used in expressions. + + ------------------------------------------ +Summary of changes for this label: 05_18_01 + + ACPI CA Core Subsystem: + +Fixed a couple of problems in the Field support code where bits +from adjacent fields could be returned along with the proper field +bits. Restructured the field support code to improve performance, +readability and maintainability. + +New DEBUG_PRINTP macro automatically inserts the procedure name +into the output, saving hundreds of copies of procedure name +strings within the source, shrinking the memory footprint of the +debug version of the core subsystem. + + Source Code Structure: + +The source code directory tree was restructured to reflect the +current organization of the component architecture. Some files +and directories have been moved and/or renamed. + + Linux: + +Fixed leaking kacpidpc processes. + +Fixed queueing event data even when /proc/acpi/event is not +opened. + + ASL Compiler, version X2020: + +Memory allocation performance enhancement - over 24X compile time +improvement on large ASL files. Parse nodes and namestring +buffers are now allocated from a large internal compiler buffer. + +The temporary .SRC file is deleted unless the "-s" option is +specified + +The "-d" debug output option now sends all output to the .DBG file +instead of the console. + +"External" second parameter is now optional + +"ElseIf" syntax now properly allows the predicate + +Last operand to "Load" now recognized as a Target operand + +Debug object can now be used anywhere as a normal object. + +ResourceTemplate now returns an object of type BUFFER + +EISAID now returns an object of type INTEGER + +"Index" now works with a STRING operand + +"LoadTable" now accepts optional parameters + +"ToString" length parameter is now optional + +"Interrupt (ResourceType," parse error fixed. + +"Register" with a user-defined region space parse error fixed + +Escaped backslash at the end of a string ("\\") scan/parse error +fixed + +"Revision" is now an object of type INTEGER. + + + +------------------------------------------ +Summary of changes for this label: 05_02_01 + +Linux: + +/proc/acpi/event now blocks properly. + +Removed /proc/sys/acpi. You can still dump your DSDT from +/proc/acpi/dsdt. + + ACPI CA Core Subsystem: + +Fixed a problem introduced in the previous label where some of the +"small" resource descriptor types were not recognized. + +Improved error messages for the case where an ASL Field is outside +the range of the parent operation region. + + ASL Compiler, version X2018: + + +Added error detection for ASL Fields that extend beyond the length +of the parent operation region (only if the length of the region +is known at compile time.) This includes fields that have a +minimum access width that is smaller than the parent region, and +individual field units that are partially or entirely beyond the +extent of the parent. + + + +------------------------------------------ +Summary of changes for this label: 04_27_01 + + ACPI CA Core Subsystem: + +Fixed a problem where the namespace mutex could be released at the +wrong time during execution of AcpiRemoveAddressSpaceHandler. + +Added optional thread ID output for debug traces, to simplify +debugging of multiple threads. Added context switch notification +when the debug code realizes that a different thread is now +executing ACPI code. + +Some additional external data types have been prefixed with the +string "ACPI_" for consistency. This may effect existing code. +The data types affected are the external callback typedefs - e.g., + +WALK_CALLBACK becomes ACPI_WALK_CALLBACK. + + Linux: + +Fixed an issue with the OSL semaphore implementation where a +thread was waking up with an error from receiving a SIGCHLD +signal. + +Linux version of ACPI CA now uses the system C library for string +manipulation routines instead of a local implementation. + +Cleaned up comments and removed TBDs. + + ASL Compiler, version X2017: + +Enhanced error detection and reporting for all file I/O +operations. + + Documentation: + +Programmer Reference updated to version 1.06. + + + +------------------------------------------ +Summary of changes for this label: 04_13_01 + + ACPI CA Core Subsystem: + +Restructured support for BufferFields and RegionFields. +BankFields support is now fully operational. All known 32-bit +limitations on field sizes have been removed. Both BufferFields +and (Operation) RegionFields are now supported by the same field +management code. + +Resource support now supports QWORD address and IO resources. The +16/32/64 bit address structures and the Extended IRQ structure +have been changed to properly handle Source Resource strings. + +A ThreadId of -1 is now used to indicate a "mutex not acquired" +condition internally and must never be returned by AcpiOsThreadId. +This reserved value was changed from 0 since Unix systems allow a +thread ID of 0. + +Linux: + +Driver code reorganized to enhance portability + +Added a kernel configuration option to control ACPI_DEBUG + +Fixed the EC driver to honor _GLK. + +ASL Compiler, version X2016: + +Fixed support for the "FixedHw" keyword. Previously, the FixedHw +address space was set to 0, not 0x7f as it should be. + + ------------------------------------------ +Summary of changes for this label: 03_13_01 + + ACPI CA Core Subsystem: + +During ACPI initialization, the _SB_._INI method is now run if +present. + +Notify handler fix - notifies are deferred until the parent method +completes execution. This fixes the "mutex already acquired" +issue seen occasionally. + +Part of the "implicit conversion" rules in ACPI 2.0 have been +found to cause compatibility problems with existing ASL/AML. The +convert "result-to-target-type" implementation has been removed +for stores to method Args and Locals. Source operand conversion +is still fully implemented. Possible changes to ACPI 2.0 +specification pending. + +Fix to AcpiRsCalculatePciRoutingTableLength to return correct +length. + +Fix for compiler warnings for 64-bit compiles. + + Linux: + +/proc output aligned for easier parsing. + +Release-version compile problem fixed. + +New kernel configuration options documented in Configure.help. + +IBM 600E - Fixed Sleep button may generate "Invalid <NULL> +context" message. + + OSPM: + +Power resource driver integrated with bus manager. + +Fixed kernel fault during active cooling for thermal zones. + +Source Code: + +The source code tree has been restructured. + + + +------------------------------------------ +Summary of changes for this label: 03_02_01 + + Linux OS Services Layer (OSL): + +Major revision of all Linux-specific code. + +Modularized all ACPI-specific drivers. + +Added new thermal zone and power resource drivers. + +Revamped /proc interface (new functionality is under /proc/acpi). + +New kernel configuration options. + + Linux known issues: + +New kernel configuration options not documented in Configure.help +yet. + + +Module dependencies not currently implemented. If used, they +should be loaded in this order: busmgr, power, ec, system, +processor, battery, ac_adapter, button, thermal. + +Modules will not load if CONFIG_MODVERSION is set. + +IBM 600E - entering S5 may reboot instead of shutting down. + +IBM 600E - Sleep button may generate "Invalid <NULL> context" +message. + +Some systems may fail with "execution mutex already acquired" +message. + + ACPI CA Core Subsystem: + +Added a new OSL Interface, AcpiOsGetThreadId. This was required +for the deadlock detection code. Defined to return a non-zero, 32- +bit thread ID for the currently executing thread. May be a non- +zero constant integer on single-thread systems. + +Implemented deadlock detection for internal subsystem mutexes. We +may add conditional compilation for this code (debug only) later. + +ASL/AML Mutex object semantics are now fully supported. This +includes multiple acquires/releases by owner and support for the + +Mutex SyncLevel parameter. + +A new "Force Release" mechanism automatically frees all ASL +Mutexes that have been acquired but not released when a thread +exits the interpreter. This forces conformance to the ACPI spec +("All mutexes must be released when an invocation exits") and +prevents deadlocked ASL threads. This mechanism can be expanded +(later) to monitor other resource acquisitions if OEM ASL code +continues to misbehave (which it will). + +Several new ACPI exception codes have been added for the Mutex +support. + +Recursive method calls are now allowed and supported (the ACPI +spec does in fact allow recursive method calls.) The number of +recursive calls is subject to the restrictions imposed by the +SERIALIZED method keyword and SyncLevel (ACPI 2.0) method +parameter. + +Implemented support for the SyncLevel parameter for control +methods (ACPI 2.0 feature) + +Fixed a deadlock problem when multiple threads attempted to use +the interpreter. + +Fixed a problem where the string length of a String package +element was not always set in a package returned from +AcpiEvaluateObject. + +Fixed a problem where the length of a String package element was +not always included in the length of the overall package returned +from AcpiEvaluateObject. + +Added external interfaces (Acpi*) to the ACPI debug memory +manager. This manager keeps a list of all outstanding +allocations, and can therefore detect memory leaks and attempts to +free memory blocks more than once. Useful for code such as the +power manager, etc. May not be appropriate for device drivers. +Performance with the debug code enabled is slow. + +The ACPI Global Lock is now an optional hardware element. + + ASL Compiler Version X2015: + +Integrated changes to allow the compiler to be generated on +multiple platforms. + +Linux makefile added to generate the compiler on Linux + + Source Code: + +All platform-specific headers have been moved to their own +subdirectory, Include/Platform. + +New source file added, Interpreter/ammutex.c + +New header file, Include/acstruct.h + + Documentation: + +The programmer reference has been updated for the following new +interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree + + ------------------------------------------ +Summary of changes for this label: 02_08_01 + +Core ACPI CA Subsystem: Fixed a problem where an error was +incorrectly returned if the return resource buffer was larger than +the actual data (in the resource interfaces). + +References to named objects within packages are resolved to the + +full pathname string before packages are returned directly (via +the AcpiEvaluateObject interface) or indirectly via the resource +interfaces. + +Linux OS Services Layer (OSL): + +Improved /proc battery interface. + + +Added C-state debugging output and other miscellaneous fixes. + +ASL Compiler Version X2014: + +All defined method arguments can now be used as local variables, +including the ones that are not actually passed in as parameters. +The compiler tracks initialization of the arguments and issues an +exception if they are used without prior assignment (just like +locals). + +The -o option now specifies a filename prefix that is used for all +output files, including the AML output file. Otherwise, the +default behavior is as follows: 1) the AML goes to the file +specified in the DSDT. 2) all other output files use the input +source filename as the base. + + ------------------------------------------ +Summary of changes for this label: 01_25_01 + +Core ACPI CA Subsystem: Restructured the implementation of object +store support within the interpreter. This includes support for +the Store operator as well as any ASL operators that include a +target operand. + +Partially implemented support for Implicit Result-to-Target +conversion. This is when a result object is converted on the fly +to the type of an existing target object. Completion of this +support is pending further analysis of the ACPI specification +concerning this matter. + +CPU-specific code has been removed from the subsystem (hardware +directory). + +New Power Management Timer functions added + +Linux OS Services Layer (OSL): Moved system state transition code +to the core, fixed it, and modified Linux OSL accordingly. + +Fixed C2 and C3 latency calculations. + + +We no longer use the compilation date for the version message on +initialization, but retrieve the version from AcpiGetSystemInfo(). + +Incorporated for fix Sony VAIO machines. + +Documentation: The Programmer Reference has been updated and +reformatted. + + +ASL Compiler: Version X2013: Fixed a problem where the line +numbering and error reporting could get out of sync in the +presence of multiple include files. + + ------------------------------------------ +Summary of changes for this label: 01_15_01 + +Core ACPI CA Subsystem: + +Implemented support for type conversions in the execution of the +ASL Concatenate operator (The second operand is converted to +match the type of the first operand before concatenation.) + +Support for implicit source operand conversion is partially +implemented. The ASL source operand types Integer, Buffer, and +String are freely interchangeable for most ASL operators and are +converted by the interpreter on the fly as required. Implicit +Target operand conversion (where the result is converted to the +target type before storing) is not yet implemented. + +Support for 32-bit and 64-bit BCD integers is implemented. + +Problem fixed where a field read on an aligned field could cause a +read past the end of the field. + +New exception, AE_AML_NO_RETURN_VALUE, is returned when a method +does not return a value, but the caller expects one. (The ASL +compiler flags this as a warning.) + +ASL Compiler: + +Version X2011: +1. Static typechecking of all operands is implemented. This +prevents the use of invalid objects (such as using a Package where +an Integer is required) at compile time instead of at interpreter +run-time. +2. The ASL source line is printed with ALL errors and warnings. +3. Bug fix for source EOF without final linefeed. +4. Debug option is split into a parse trace and a namespace trace. +5. Namespace output option (-n) includes initial values for +integers and strings. +6. Parse-only option added for quick syntax checking. +7. Compiler checks for duplicate ACPI name declarations + +Version X2012: +1. Relaxed typechecking to allow interchangeability between +strings, integers, and buffers. These types are now converted by +the interpreter at runtime. +2. Compiler reports time taken by each internal subsystem in the +debug output file. + + + ------------------------------------------ +Summary of changes for this label: 12_14_00 + +ASL Compiler: + +This is the first official release of the compiler. Since the +compiler requires elements of the Core Subsystem, this label +synchronizes everything. + +------------------------------------------ +Summary of changes for this label: 12_08_00 + + +Fixed a problem where named references within the ASL definition +of both OperationRegions and CreateXXXFields did not work +properly. The symptom was an AE_AML_OPERAND_TYPE during +initialization of the region/field. This is similar (but not +related internally) to the problem that was fixed in the last +label. + +Implemented both 32-bit and 64-bit support for the BCD ASL +functions ToBCD and FromBCD. + +Updated all legal headers to include "2000" in the copyright +years. + + ------------------------------------------ +Summary of changes for this label: 12_01_00 + +Fixed a problem where method invocations within the ASL definition +of both OperationRegions and CreateXXXFields did not work +properly. The symptom was an AE_AML_OPERAND_TYPE during +initialization of the region/field: + + nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments +[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) +(0x3005) + +Fixed a problem where operators with more than one nested +subexpression would fail. The symptoms were varied, by mostly +AE_AML_OPERAND_TYPE errors. This was actually a rather serious +problem that has gone unnoticed until now. + + Subtract (Add (1,2), Multiply (3,4)) + +Fixed a problem where AcpiGetHandle didn't quite get fixed in the +previous build (The prefix part of a relative path was handled +incorrectly). + +Fixed a problem where Operation Region initialization failed if +the operation region name was a "namepath" instead of a simple +"nameseg". Symptom was an AE_NO_OPERAND error. + +Fixed a problem where an assignment to a local variable via the +indirect RefOf mechanism only worked for the first such +assignment. Subsequent assignments were ignored. + + ------------------------------------------ +Summary of changes for this label: 11_15_00 + +ACPI 2.0 table support with backwards support for ACPI 1.0 and the +0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, +the AML interpreter does NOT have support for the new 2.0 ASL +grammar terms at this time. + +All ACPI hardware access is via the GAS structures in the ACPI 2.0 +FADT. + +All physical memory addresses across all platforms are now 64 bits +wide. Logical address width remains dependent on the platform +(i.e., "void *"). + +AcpiOsMapMemory interface changed to a 64-bit physical address. + +The AML interpreter integer size is now 64 bits, as per the ACPI +2.0 specification. + +For backwards compatibility with ACPI 1.0, ACPI tables with a +revision number less than 2 use 32-bit integers only. + +Fixed a problem where the evaluation of OpRegion operands did not +always resolve them to numbers properly. + +------------------------------------------ +Summary of changes for this label: 10_20_00 + +Fix for CBN_._STA issue. This fix will allow correct access to +CBN_ OpRegions when the _STA returns 0x8. + +Support to convert ACPI constants (Ones, Zeros, One) to actual +values before a package object is returned + +Fix for method call as predicate to if/while construct causing +incorrect if/while behavior + +Fix for Else block package lengths sometimes calculated wrong (if +block > 63 bytes) + +Fix for Processor object length field, was always zero + +Table load abort if FACP sanity check fails + +Fix for problem with Scope(name) if name already exists + +Warning emitted if a named object referenced cannot be found +(resolved) during method execution. + + + + + +------------------------------------------ +Summary of changes for this label: 9_29_00 + +New table initialization interfaces: AcpiInitializeSubsystem no +longer has any parameters AcpiFindRootPointer - Find the RSDP (if +necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- +>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by +AcpiLoadTables + +Note: These interface changes require changes to all existing OSDs + +The PCI_Config default address space handler is always installed +at the root namespace object. + +------------------------------------------- +Summary of changes for this label: 09_15_00 + +The new initialization architecture is implemented. New +interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) +AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace + +(Namespace is automatically loaded when a table is loaded) + +The ACPI_OPERAND_OBJECT has been optimized to shrink its size from +52 bytes to 32 bytes. There is usually one of these for every +namespace object, so the memory savings is significant. + +Implemented just-in-time evaluation of the CreateField operators. + +Bug fixes for IA-64 support have been integrated. + +Additional code review comments have been implemented + +The so-called "third pass parse" has been replaced by a final walk +through the namespace to initialize all operation regions (address +spaces) and fields that have not yet been initialized during the +execution of the various _INI and REG methods. + +New file - namespace/nsinit.c + +------------------------------------------- +Summary of changes for this label: 09_01_00 + +Namespace manager data structures have been reworked to change the +primary object from a table to a single object. This has +resulted in dynamic memory savings of 3X within the namespace and +2X overall in the ACPI CA subsystem. + +Fixed problem where the call to AcpiEvFindPciRootBuses was +inadvertently left commented out. + +Reduced the warning count when generating the source with the GCC +compiler. + +Revision numbers added to each module header showing the +SourceSafe version of the file. Please refer to this version +number when giving us feedback or comments on individual modules. + +The main object types within the subsystem have been renamed to +clarify their purpose: + +ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT +ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT +ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE + +NOTE: no changes to the initialization sequence are included in +this label. + +------------------------------------------- +Summary of changes for this label: 08_23_00 + +Fixed problem where TerminateControlMethod was being called +multiple times per method + +Fixed debugger problem where single stepping caused a semaphore to +be oversignalled + +Improved performance through additional parse object caching - +added ACPI_EXTENDED_OP type + +------------------------------------------- +Summary of changes for this label: 08_10_00 + +Parser/Interpreter integration: Eliminated the creation of +complete parse trees for ACPI tables and control methods. +Instead, parse subtrees are created and then deleted as soon as +they are processed (Either entered into the namespace or executed +by the interpreter). This reduces the use of dynamic kernel +memory significantly. (about 10X) + +Exception codes broken into classes and renumbered. Be sure to +recompile all code that includes acexcep.h. Hopefully we won't +have to renumber the codes again now that they are split into +classes (environment, programmer, AML code, ACPI table, and +internal). + +Fixed some additional alignment issues in the Resource Manager +subcomponent + +Implemented semaphore tracking in the AcpiExec utility, and fixed +several places where mutexes/semaphores were being unlocked +without a corresponding lock operation. There are no known +semaphore or mutex "leaks" at this time. + +Fixed the case where an ASL Return operator is used to return an +unnamed package. + +------------------------------------------- +Summary of changes for this label: 07_28_00 + +Fixed a problem with the way addresses were calculated in +AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem +manifested itself when a Field was created with WordAccess or +DwordAccess, but the field unit defined within the Field was less + +than a Word or Dword. + +Fixed a problem in AmlDumpOperands() module's loop to pull +operands off of the operand stack to display information. The +problem manifested itself as a TLB error on 64-bit systems when +accessing an operand stack with two or more operands. + +Fixed a problem with the PCI configuration space handlers where +context was getting confused between accesses. This required a +change to the generic address space handler and address space +setup definitions. Handlers now get both a global handler context +(this is the one passed in by the user when executing +AcpiInstallAddressSpaceHandler() and a specific region context +that is unique to each region (For example, the _ADR, _SEG and +_BBN values associated with a specific region). The generic +function definitions have changed to the following: + +typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, +UINT32 Address, UINT32 BitWidth, UINT32 *Value, void +*HandlerContext, // This used to be void *Context void +*RegionContext); // This is an additional parameter + +typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE +RegionHandle, UINT32 Function, void *HandlerContext, void +**RegionContext); // This used to be **ReturnContext + +------------------------------------------- +Summary of changes for this label: 07_21_00 + +Major file consolidation and rename. All files within the +interpreter have been renamed as well as most header files. This +was done to prevent collisions with existing files in the host +OSs -- filenames such as "config.h" and "global.h" seem to be +quite common. The VC project files have been updated. All +makefiles will require modification. + +The parser/interpreter integration continues in Phase 5 with the +implementation of a complete 2-pass parse (the AML is parsed +twice) for each table; This avoids the construction of a huge +parse tree and therefore reduces the amount of dynamic memory +required by the subsystem. Greater use of the parse object cache +means that performance is unaffected. + +Many comments from the two code reviews have been rolled in. + +The 64-bit alignment support is complete. + +------------------------------------------- +Summary of changes for this label: 06_30_00 + +With a nod and a tip of the hat to the technology of yesteryear, +we've added support in the source code for 80 column output +devices. The code is now mostly constrained to 80 columns or +less to support environments and editors that 1) cannot display +or print more than 80 characters on a single line, and 2) cannot +disable line wrapping. + +A major restructuring of the namespace data structure has been +completed. The result is 1) cleaner and more +understandable/maintainable code, and 2) a significant reduction +in the dynamic memory requirement for each named ACPI object +(almost half). + +------------------------------------------- +Summary of changes for this label: 06_23_00 + +Linux support has been added. In order to obtain approval to get +the ACPI CA subsystem into the Linux kernel, we've had to make +quite a few changes to the base subsystem that will affect all +users (all the changes are generic and OS- independent). The +effects of these global changes have been somewhat far reaching. +Files have been merged and/or renamed and interfaces have been +renamed. The major changes are described below. + +Osd* interfaces renamed to AcpiOs* to eliminate namespace +pollution/confusion within our target kernels. All OSD +interfaces must be modified to match the new naming convention. + +Files merged across the subsystem. A number of the smaller source +and header files have been merged to reduce the file count and +increase the density of the existing files. There are too many +to list here. In general, makefiles that call out individual +files will require rebuilding. + +Interpreter files renamed. All interpreter files now have the +prefix am* instead of ie* and is*. + +Header files renamed: The acapi.h file is now acpixf.h. The +acpiosd.h file is now acpiosxf.h. We are removing references to +the acronym "API" since it is somewhat windowsy. The new name is +"external interface" or xface or xf in the filenames.j + + +All manifest constants have been forced to upper case (some were +mixed case.) Also, the string "ACPI_" has been prepended to many +(not all) of the constants, typedefs, and structs. + +The globals "DebugLevel" and "DebugLayer" have been renamed +"AcpiDbgLevel" and "AcpiDbgLayer" respectively. + +All other globals within the subsystem are now prefixed with +"AcpiGbl_" Internal procedures within the subsystem are now +prefixed with "Acpi" (with only a few exceptions). The original +two-letter abbreviation for the subcomponent remains after "Acpi" +- for example, CmCallocate became AcpiCmCallocate. + +Added a source code translation/conversion utility. Used to +generate the Linux source code, it can be modified to generate +other types of source as well. Can also be used to cleanup +existing source by removing extraneous spaces and blank lines. +Found in tools/acpisrc/* + +OsdUnMapMemory was renamed to OsdUnmapMemory and then +AcpiOsUnmapMemory. (UnMap became Unmap). + +A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. +When set to one, this indicates that the caller wants to use the + +semaphore as a mutex, not a counting semaphore. ACPI CA uses +both types. However, implementers of this call may want to use +different OS primitives depending on the type of semaphore +requested. For example, some operating systems provide separate + +"mutex" and "semaphore" interfaces - where the mutex interface is +much faster because it doesn't have all the overhead of a full +semaphore implementation. + +Fixed a deadlock problem where a method that accesses the PCI +address space can block forever if it is the first access to the +space. + +------------------------------------------- +Summary of changes for this label: 06_02_00 + +Support for environments that cannot handle unaligned data +accesses (e.g. firmware and OS environments devoid of alignment +handler technology namely SAL/EFI and the IA-64 Linux kernel) has +been added (via configurable macros) in these three areas: - +Transfer of data from the raw AML byte stream is done via byte +moves instead of word/dword/qword moves. - External objects are +aligned within the user buffer, including package elements (sub- +objects). - Conversion of name strings to UINT32 Acpi Names is now +done byte-wise. + +The Store operator was modified to mimic Microsoft's +implementation when storing to a Buffer Field. + +Added a check of the BM_STS bit before entering C3. + +The methods subdirectory has been obsoleted and removed. A new +file, cmeval.c subsumes the functionality. + +A 16-bit (DOS) version of AcpiExec has been developed. The +makefile is under the acpiexec directory. |