diff options
Diffstat (limited to 'sys/contrib/dev/acpica/CHANGES.txt')
-rw-r--r-- | sys/contrib/dev/acpica/CHANGES.txt | 8448 |
1 files changed, 0 insertions, 8448 deletions
diff --git a/sys/contrib/dev/acpica/CHANGES.txt b/sys/contrib/dev/acpica/CHANGES.txt deleted file mode 100644 index f26ed47..0000000 --- a/sys/contrib/dev/acpica/CHANGES.txt +++ /dev/null @@ -1,8448 +0,0 @@ ----------------------------------------- -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 Concatentate -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 lowercased 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 lowercased for linux. -Doubled the number of symbols that are lowercased. - -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. - -Suport 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 dyanmic 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 withing 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 refered 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 reenabled. - -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. |