diff options
Diffstat (limited to 'sys/contrib/dev/acpica/changes.txt')
-rw-r--r-- | sys/contrib/dev/acpica/changes.txt | 9235 |
1 files changed, 9235 insertions, 0 deletions
diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt new file mode 100644 index 0000000..89f6232 --- /dev/null +++ b/sys/contrib/dev/acpica/changes.txt @@ -0,0 +1,9235 @@ +---------------------------------------- +21 May 2009. Summary of changes for version 20090521: + +This release is available at www.acpica.org/downloads + +1) ACPI CA Core Subsystem: + +Disabled the preservation of the SCI enable bit in the PM1 control register. +The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be +a "preserved" bit - "OSPM always preserves this bit position", section +4.7.3.2.1. However, some machines fail if this bit is in fact preserved +because the bit needs to be explicitly set by the OS as a workaround. No +machines fail if the bit is not preserved. Therefore, ACPICA no longer +attempts to preserve this bit. + +Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or +incorrectly formed _PRT package could cause a fault. Added validation to +ensure that each package element is actually a sub-package. + +Implemented a new interface to install or override a single control method, +AcpiInstallMethod. This interface is useful when debugging in order to repair +an existing method or to install a missing method without having to override +the entire ACPI table. See the ACPICA Programmer Reference for use and +examples. Lin Ming, Bob Moore. + +Fixed several reference count issues with the DdbHandle object that is +created from a Load or LoadTable operator. Prevent premature deletion of the +object. Also, mark the object as invalid once the table has been unloaded. +This is needed because the handle itself may not be deleted after the table +unload, depending on whether it has been stored in a named object by the +caller. Lin Ming. + +Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple +mutexes of the same sync level are acquired but then not released in strict +opposite order, the internally maintained Current Sync Level becomes confused +and can cause subsequent execution errors. ACPICA BZ 471. + +Changed the allowable release order for ASL mutex objects. The ACPI 4.0 +specification has been changed to make the SyncLevel for mutex objects more +useful. When releasing a mutex, the SyncLevel of the mutex must now be the +same as the current sync level. This makes more sense than the previous rule +(SyncLevel less than or equal). This change updates the code to match the +specification. + +Fixed a problem with the local version of the AcpiOsPurgeCache function. The +(local) cache must be locked during all cache object deletions. Andrew +Baumann. + +Updated the Load operator to use operation region interfaces. This replaces +direct memory mapping with region access calls. Now, all region accesses go +through the installed region handler as they should. + +Simplified and optimized the NsGetNextNode function. Reduced parameter count +and reduced code for this frequently used function. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total + Debug Version: 158.0K Code, 49.9K Data, 207.9K Total + Current Release: + Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total + Debug Version: 158.9K Code, 50.0K Data, 208.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems +with sub-table disassembly and handling invalid sub-tables. Attempt recovery +after an invalid sub-table ID. + +---------------------------------------- +22 April 2009. Summary of changes for version 20090422: + +This release is available at www.acpica.org/downloads + +1) ACPI CA Core Subsystem: + +Fixed a compatibility issue with the recently released I/O port protection +mechanism. For windows compatibility, 1) On a port protection violation, +simply ignore the request and do not return an exception (allow the control +method to continue execution.) 2) If only part of the request overlaps a +protected port, read/write the individual ports that are not protected. Linux +BZ 13036. Lin Ming + +Enhanced the execution of the ASL/AML BreakPoint operator so that it actually +breaks into the AML debugger if the debugger is present. This matches the +ACPI-defined behavior. + +Fixed several possible warnings related to the use of the configurable +ACPI_THREAD_ID. This type can now be configured as either an integer or a +pointer with no warnings. Also fixes several warnings in printf-like +statements for the 64-bit build when the type is configured as a pointer. +ACPICA BZ 766, 767. + +Fixed a number of possible warnings when compiling with gcc 4+ (depending on +warning options.) Examples include printf formats, aliasing, unused globals, +missing prototypes, missing switch default statements, use of non-ANSI +library functions, use of non-ANSI constructs. See generate/unix/Makefile for +a list of warning options used with gcc 3 and 4. ACPICA BZ 735. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total + Debug Version: 157.7K Code, 49.9K Data, 207.6K Total + Current Release: + Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total + Debug Version: 158.0K Code, 49.9K Data, 207.9K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on +the 64-bit build. + +iASL: Fixed a problem where the Unix/Linux versions of the compiler could not +correctly digest Windows/DOS formatted files (with CR/LF). + +iASL: Added a new option for "quiet mode" (-va) that produces only the +compilation summary, not individual errors and warnings. Useful for large +batch compilations. + +AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex +timeout that can be used to detect hang conditions during execution of AML +code (includes both internal semaphores and AML-defined mutexes and events.) + +Added new makefiles for the generation of acpica in a generic unix-like +environment. These makefiles are intended to generate the acpica tools and +utilities from the original acpica git source tree structure. + +Test Suites: Updated and cleaned up the documentation files. Updated the +copyrights to 2009, affecting all source files. Use the new version of iASL +with quiet mode. Increased the number of available semaphores in the Windows +OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added +an alternate implementation of the semaphore timeout to allow aslts to +execute fully on Cygwin. + +---------------------------------------- +20 March 2009. Summary of changes for version 20090320: + +1) ACPI CA Core Subsystem: + +Fixed a possible race condition between AcpiWalkNamespace and dynamic table +unloads. Added a reader/writer locking mechanism to allow multiple concurrent +namespace walks (readers), but block a dynamic table unload until it can gain +exclusive write access to the namespace. This fixes a problem where a table +unload could (possibly catastrophically) delete the portion of the namespace +that is currently being examined by a walk. Adds a new file, utlock.c, that +implements the reader/writer lock mechanism. ACPICA BZ 749. + +Fixed a regression introduced in version 20090220 where a change to the FADT +handling could cause the ACPICA subsystem to access non-existent I/O ports. + +Modified the handling of FADT register and table (FACS/DSDT) addresses. The +FADT can contain both 32-bit and 64-bit versions of these addresses. +Previously, the 64-bit versions were favored, meaning that if both 32 and 64 +versions were valid, but not equal, the 64-bit version was used. This was +found to cause some machines to fail. Now, in this case, the 32-bit version +is used instead. This now matches the Windows behavior. + +Implemented a new mechanism to protect certain I/O ports. Provides Microsoft +compatibility and protects the standard PC I/O ports from access via AML +code. Adds a new file, hwvalid.c + +Fixed a possible extraneous warning message from the FADT support. The +message warns of a 32/64 length mismatch between the legacy and GAS +definitions for a register. + +Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is +made obsolete by the port protection mechanism above. It was previously used +to validate the entire address range of an operation region, which could be +incorrect if the range included illegal ports, but fields within the +operation region did not actually access those ports. Validation is now +performed on a per-field basis instead of the entire region. + +Modified the handling of the PM1 Status Register ignored bit (bit 11.) +Ignored bits must be "preserved" according to the ACPI spec. Usually, this +means a read/modify/write when writing to the register. However, for status +registers, writing a one means clear the event. Writing a zero means preserve +the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, +and the ACPICA code now simply always writes a zero to the ignored bit. + +Modified the handling of ignored bits for the PM1 A/B Control Registers. As +per the ACPI specification, for the control registers, preserve +(read/modify/write) all bits that are defined as either reserved or ignored. + +Updated the handling of write-only bits in the PM1 A/B Control Registers. +When reading the register, zero the write-only bits as per the ACPI spec. +ACPICA BZ 443. Lin Ming. + +Removed "Linux" from the list of supported _OSI strings. Linux no longer +wants to reply true to this request. The Windows strings are the only paths +through the AML that are tested and known to work properly. + + Previous Release: + Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total + Debug Version: 156.9K Code, 49.8K Data, 206.7K Total + Current Release: + Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total + Debug Version: 157.7K Code, 49.9K Data, 207.6K Total + +2) iASL Compiler/Disassembler and Tools: + +Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and +aetables.c + +---------------------------------------- +20 February 2009. Summary of changes for version 20090220: + +1) ACPI CA Core Subsystem: + +Optimized the ACPI register locking. Removed locking for reads from the ACPI +bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is +not required when reading the single-bit registers. The +AcpiGetRegisterUnlocked function is no longer needed and has been removed. +This will improve performance for reads on these registers. ACPICA BZ 760. + +Fixed the parameter validation for AcpiRead/Write. Now return +AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if +the register has an address of zero. Previously, these cases simply returned +AE_OK. For optional registers such as PM1B status/enable/control, the caller +should check for a valid register address before calling. ACPICA BZ 748. + +Renamed the external ACPI bit register access functions. Renamed +AcpiGetRegister and AcpiSetRegister to clarify the purpose of these +functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. +Also, restructured the code for these functions by simplifying the code path +and condensing duplicate code to reduce code size. + +Added new functions to transparently handle the possibly split PM1 A/B +registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions +now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ +746. + +Added a function to handle the PM1 control registers, AcpiHwWritePm1Control. +This function writes both of the PM1 control registers (A/B). These registers +are different than the PM1 A/B status and enable registers in that different +values can be written to the A/B registers. Most notably, the SLP_TYP bits +can be different, as per the values returned from the _Sx predefined methods. + +Removed an extra register write within AcpiHwClearAcpiStatus. This function +was writing an optional PM1B status register twice. The existing call to the +low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B +register. ACPICA BZ 751. + +Split out the PM1 Status registers from the FADT. Added new globals for these +registers (A/B), similar to the way the PM1 Enable registers are handled. +Instead of overloading the FADT Event Register blocks. This makes the code +clearer and less prone to error. + +Fixed the warning message for when the platform contains too many ACPI tables +for the default size of the global root table data structure. The calculation +for the truncation value was incorrect. + +Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this +obsolete macro, since it is now a simple reference to ->common.type. There +were about 150 invocations of the macro across 41 files. ACPICA BZ 755. + +Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as +TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to +simply SLEEP_TYPE. ACPICA BZ 754. + +Conditionally compile the AcpiSetFirmwareWakingVector64 function. This +function is only needed on 64-bit host operating systems and is thus not +included for 32-bit hosts. + +Debug output: print the input and result for invocations of the _OSI reserved +control method via the ACPI_LV_INFO debug level. Also, reduced some of the +verbosity of this debug level. Len Brown. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total + Debug Version: 157.3K Code, 49.8K Data, 207.1K Total + Current Release: + Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total + Debug Version: 156.9K Code, 49.8K Data, 206.7K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the +various legal performance profiles. + +---------------------------------------- +23 January 2009. Summary of changes for version 20090123: + +1) ACPI CA Core Subsystem: + +Added the 2009 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, and +the tools/utilities. + +Implemented a change to allow the host to override any ACPI table, including +dynamically loaded tables. Previously, only the DSDT could be replaced by the +host. With this change, the AcpiOsTableOverride interface is called for each +table found in the RSDT/XSDT during ACPICA initialization, and also whenever +a table is dynamically loaded via the AML Load operator. + +Updated FADT flag definitions, especially the Boot Architecture flags. + +Debugger: For the Find command, automatically pad the input ACPI name with +underscores if the name is shorter than 4 characters. This enables a match +with the actual namespace entry which is itself padded with underscores. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total + Debug Version: 157.1K Code, 49.7K Data, 206.8K Total + Current Release: + Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total + Debug Version: 157.3K Code, 49.8K Data, 207.1K Total + +2) iASL Compiler/Disassembler and Tools: + +Fix build error under Bison-2.4. + +Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture +flags. Now decode all flags, regardless of the FADT version. Flag output +includes the FADT version which first defined each flag. + +The iASL -g option now dumps the RSDT to a file (in addition to the FADT and +DSDT). Windows only. + +---------------------------------------- +04 December 2008. Summary of changes for version 20081204: + +1) ACPI CA Core Subsystem: + +The ACPICA Programmer Reference has been completely updated and revamped for +this release. This includes updates to the external interfaces, OSL +interfaces, the overview sections, and the debugger reference. + +Several new ACPICA interfaces have been implemented and documented in the +programmer reference: +AcpiReset - Writes the reset value to the FADT-defined reset register. +AcpiDisableAllGpes - Disable all available GPEs. +AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. +AcpiGetGpeDevice - Get the GPE block device associated with a GPE. +AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. +AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) +AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) + +Most of the public ACPI hardware-related interfaces have been moved to a new +file, components/hardware/hwxface.c + +Enhanced the FADT parsing and low-level ACPI register access: The ACPI +register lengths within the FADT are now used, and the low level ACPI +register access no longer hardcodes the ACPI register lengths. Given that +there may be some risk in actually trusting the FADT register lengths, a run- +time option was added to fall back to the default hardcoded lengths if the +FADT proves to contain incorrect values - UseDefaultRegisterWidths. This +option is set to true for now, and a warning is issued if a suspicious FADT +register length is overridden with the default value. + +Fixed a reference count issue in NsRepairObject. This problem was introduced +in version 20081031 as part of a fix to repair Buffer objects within +Packages. Lin Ming. + +Added semaphore support to the Linux/Unix application OS-services layer +(OSL). ACPICA BZ 448. Lin Ming. + +Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will +be implemented in the OSL, or will binary semaphores be used instead. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total + Debug Version: 156.4K Code, 49.4K Data, 205.8K Total + Current Release: + Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total + Debug Version: 157.1K Code, 49.7K Data, 206.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Completed the '-e' option to include additional ACPI tables in order to +aid with disassembly and External statement generation. ACPICA BZ 742. Lin +Ming. + +iASL: Removed the "named object in while loop" error. The compiler cannot +determine how many times a loop will execute. ACPICA BZ 730. + +Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA +BZ 743. + +Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG). + +---------------------------------------- +31 October 2008. Summary of changes for version 20081031: + +1) ACPI CA Core Subsystem: + +Restructured the ACPICA header files into public/private. acpi.h now includes +only the "public" acpica headers. All other acpica headers are "private" and +should not be included by acpica users. One new file, accommon.h is used to +include the commonly used private headers for acpica code generation. Future +plans include moving all private headers to a new subdirectory. + +Implemented an automatic Buffer->String return value conversion for +predefined ACPI methods. For these methods (such as _BIF), added automatic +conversion for return objects that are required to be a String, but a Buffer +was found instead. This can happen when reading string battery data from an +operation region, because it used to be difficult to convert the data from +buffer to string from within the ASL. Ensures that the host OS is provided +with a valid null-terminated string. Linux BZ 11822. + +Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector +into two: one for the 32-bit vector, another for the 64-bit vector. This is +required because the host OS must setup the wake much differently for each +vector (real vs. protected mode, etc.) and the interface itself should not be +deciding which vector to use. Also, eliminated the GetFirmwareWakingVector +interface, as it served no purpose (only the firmware reads the vector, OS +only writes the vector.) ACPICA BZ 731. + +Implemented a mechanism to escape infinite AML While() loops. Added a loop +counter to force exit from AML While loops if the count becomes too large. +This can occur in poorly written AML when the hardware does not respond +within a while loop and the loop does not implement a timeout. The maximum +loop count is configurable. A new exception code is returned when a loop is +broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. + +Optimized the execution of AML While loops. Previously, a control state +object was allocated and freed for each execution of the loop. The +optimization is to simply reuse the control state for each iteration. This +speeds up the raw loop execution time by about 5%. + +Enhanced the implicit return mechanism. For Windows compatibility, return an +implicit integer of value zero for methods that contain no executable code. +Such methods are seen in the field as stubs (presumably), and can cause +drivers to fail if they expect a return value. Lin Ming. + +Allow multiple backslashes as root prefixes in namepaths. In a fully +qualified namepath, allow multiple backslash prefixes. This can happen (and +is seen in the field) because of the use of a double-backslash in strings +(since backslash is the escape character) causing confusion. ACPICA BZ 739 +Lin Ming. + +Emit a warning if two different FACS or DSDT tables are discovered in the +FADT. Checks if there are two valid but different addresses for the FACS and +DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) + +Consolidated the method argument count validation code. Merged the code that +validates control method argument counts into the predefined validation +module. Eliminates possible multiple warnings for incorrect argument counts. + +Implemented ACPICA example code. Includes code for ACPICA initialization, +handler installation, and calling a control method. Available at +source/tools/examples. + +Added a global pointer for FACS table to simplify internal FACS access. Use +the global pointer instead of using AcpiGetTableByIndex for each FACS access. +This simplifies the code for the Global Lock and the Firmware Waking +Vector(s). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total + Debug Version: 155.8K Code, 49.1K Data, 204.9K Total + Current Release: + Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total + Debug Version: 156.4K Code, 49.4K Data, 205.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Improved disassembly of external method calls. Added the -e option to +allow the inclusion of additional ACPI tables to help with the disassembly of +method invocations and the generation of external declarations during the +disassembly. Certain external method invocations cannot be disassembled +properly without the actual declaration of the method. Use the -e option to +include the table where the external method(s) are actually declared. Most +useful for disassembling SSDTs that make method calls back to the master +DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl -d +-e dsdt.aml ssdt1.aml + +iASL: Fix to allow references to aliases within ASL namepaths. Fixes a +problem where the use of an alias within a namepath would result in a not +found error or cause the compiler to fault. Also now allows forward +references from the Alias operator itself. ACPICA BZ 738. + +---------------------------------------- +26 September 2008. Summary of changes for version 20080926: + +1) ACPI CA Core Subsystem: + +Designed and implemented a mechanism to validate predefined ACPI methods and +objects. This code validates the predefined ACPI objects (objects whose names +start with underscore) that appear in the namespace, at the time they are +evaluated. The argument count and the type of the returned object are +validated against the ACPI specification. The purpose of this validation is +to detect problems with the BIOS-implemented predefined ACPI objects before +the results are returned to the ACPI-related drivers. Future enhancements may +include actual repair of incorrect return objects where possible. Two new +files are nspredef.c and acpredef.h. + +Fixed a fault in the AML parser if a memory allocation fails during the Op +completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. + +Fixed an issue with implicit return compatibility. This change improves the +implicit return mechanism to be more compatible with the MS interpreter. Lin +Ming, ACPICA BZ 349. + +Implemented support for zero-length buffer-to-string conversions. Allow zero +length strings during interpreter buffer-to-string conversions. For example, +during the ToDecimalString and ToHexString operators, as well as implicit +conversions. Fiodor Suietov, ACPICA BZ 585. + +Fixed two possible memory leaks in the error exit paths of +AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are +similar in that they use a stack of state objects in order to eliminate +recursion. The stack must be fully unwound and deallocated if an error +occurs. Lin Ming. ACPICA BZ 383. + +Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global +ACPI register table. This bit does not exist and is unused. Lin Ming, Bob +Moore ACPICA BZ 442. + +Removed the obsolete version number in module headers. Removed the +"$Revision" number that appeared in each module header. This version number +was useful under SourceSafe and CVS, but has no meaning under git. It is not +only incorrect, it could also be misleading. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.7K Code, 48.2K Data, 201.9K Total + Current Release: + Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total + Debug Version: 155.8K Code, 49.1K Data, 204.9K Total + +---------------------------------------- +29 August 2008. Summary of changes for version 20080829: + +1) ACPI CA Core Subsystem: + +Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type +Reference. Changes include the elimination of cheating on the Object field +for the DdbHandle subtype, addition of a reference class field to +differentiate the various reference types (instead of an AML opcode), and the +cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 + +Reduce an error to a warning for an incorrect method argument count. +Previously aborted with an error if too few arguments were passed to a +control method via the external ACPICA interface. Now issue a warning instead +and continue. Handles the case where the method inadvertently declares too +many arguments, but does not actually use the extra ones. Applies mainly to +the predefined methods. Lin Ming. Linux BZ 11032. + +Disallow the evaluation of named object types with no intrinsic value. Return +AE_TYPE for objects that have no value and therefore evaluation is undefined: +Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of +these types were allowed, but an exception would be generated at some point +during the evaluation. Now, the error is generated up front. + +Fixed a possible memory leak in the AcpiNsGetExternalPathname function +(nsnames.c). Fixes a leak in the error exit path. + +Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug +levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION +interfaces. Also added ACPI_DB_EVENTS to correspond with the existing +ACPI_LV_EVENTS. + +Removed obsolete and/or unused exception codes from the acexcep.h header. +There is the possibility that certain device drivers may be affected if they +use any of these exceptions. + +The ACPICA documentation has been added to the public git source tree, under +acpica/documents. Included are the ACPICA programmer reference, the iASL +compiler reference, and the changes.txt release logfile. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.9K Code, 48.4K Data, 202.3K Total + Current Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.7K Code, 48.2K Data, 201.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 +defines _SCP with 3 arguments. Previous versions defined it with only 1 +argument. iASL now allows both definitions. + +iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero- +length subtables when disassembling ACPI tables. Also fixed a couple of +errors where a full 16-bit table type field was not extracted from the input +properly. + +acpisrc: Improve comment counting mechanism for generating source code +statistics. Count first and last lines of multi-line comments as whitespace, +not comment lines. Handle Linux legal header in addition to standard acpica +header. + +---------------------------------------- + +29 July 2008. Summary of changes for version 20080729: + +This release is available at http://acpica.org/downloads +Direct git access via http://www.acpica.org/repos/acpica.git + +1) ACPI CA Core Subsystem: + +Fix a possible deadlock in the GPE dispatch. Remove call to +AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt +to acquire the GPE lock but can deadlock since the GPE lock is already held +at dispatch time. This code was introduced in version 20060831 as a response +to Linux BZ 6881 and has since been removed from Linux. + +Add a function to dereference returned reference objects. Examines the return +object from a call to AcpiEvaluateObject. Any Index or RefOf references are +automatically dereferenced in an attempt to return something useful (these +reference types cannot be converted into an external ACPI_OBJECT.) Provides +MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 + +x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new +subtables for the MADT and one new subtable for the SRAT. Includes +disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC +Specification, June 2008. + +Additional error checking for pathname utilities. Add error check after all +calls to AcpiNsGetPathnameLength. Add status return from +AcpiNsBuildExternalPath and check after all calls. Add parameter validation +to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. + +Return status from the global init function AcpiUtGlobalInitialize. This is +used by both the kernel subsystem and the utilities such as iASL compiler. +The function could possibly fail when the caches are initialized. Yang Yi. + +Add a function to decode reference object types to strings. Created for +improved error messages. + +Improve object conversion error messages. Better error messages during object +conversion from internal to the external ACPI_OBJECT. Used for external calls +to AcpiEvaluateObject. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total + Debug Version: 153.5K Code, 48.2K Data, 201.7K Total + Current Release: + Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total + Debug Version: 153.9K Code, 48.4K Data, 202.3K Total + +2) iASL Compiler/Disassembler and Tools: + +Debugger: fix a possible hang when evaluating non-methods. Fixes a problem +introduced in version 20080701. If the object being evaluated (via execute +command) is not a method, the debugger can hang while trying to obtain non- +existent parameters. + +iASL: relax error for using reserved "_T_x" identifiers. These names can +appear in a disassembled ASL file if they were emitted by the original +compiler. Instead of issuing an error or warning and forcing the user to +manually change these names, issue a remark instead. + +iASL: error if named object created in while loop. Emit an error if any named +object is created within a While loop. If allowed, this code will generate a +run-time error on the second iteration of the loop when an attempt is made to +create the same named object twice. ACPICA bugzilla 730. + +iASL: Support absolute pathnames for include files. Add support for absolute +pathnames within the Include operator. previously, only relative pathnames +were supported. + +iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor. +The ACPI spec requires one interrupt minimum. BZ 423 + +iASL: Handle a missing ResourceSource arg, with a present SourceIndex. +Handles the case for the Interrupt Resource Descriptor where +the ResourceSource argument is omitted but ResourceSourceIndex +is present. Now leave room for the Index. BZ 426 + +iASL: Prevent error message if CondRefOf target does not exist. Fixes cases +where an error message is emitted if the target does not exist. BZ 516 + +iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option +(get ACPI tables on Windows). This was apparently broken in version 20070919. + +AcpiXtract: Handle EOF while extracting data. Correctly handle the case where +the EOF happens immediately after the last table in the input file. Print +completion message. Previously, no message was displayed in this case. + +---------------------------------------- +01 July 2008. Summary of changes for version 20080701: + +This release is available at http://acpica.org/downloads +Direct git access via http://www.acpica.org/repos/acpica.git + +0) Git source tree / acpica.org + +Fixed a problem where a git-clone from http would not transfer the entire +source tree. + +1) ACPI CA Core Subsystem: + +Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one +enable bit. Now performs a read-change-write of the enable register instead +of simply writing out the cached enable mask. This will prevent inadvertent +enabling of GPEs if a rogue GPE is received during initialization (before GPE +handlers are installed.) + +Implemented a copy for dynamically loaded tables. Previously, dynamically +loaded tables were simply mapped - but on some machines this memory is +corrupted after suspend. Now copy the table to a local buffer. For the +OpRegion case, added checksum verify. Use the table length from the table +header, not the region length. For the Buffer case, use the table length +also. Dennis Noordsij, Bob Moore. BZ 10734 + +Fixed a problem where the same ACPI table could not be dynamically loaded and +unloaded more than once. Without this change, a table cannot be loaded again +once it has been loaded/unloaded one time. The current mechanism does not +unregister a table upon an unload. During a load, if the same table is found, +this no longer returns an exception. BZ 722 + +Fixed a problem where the wrong descriptor length was calculated for the +EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag +are calculated as 12 bytes long, but the actual length in the internal +descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported +by Linn Crosetto. BZ 728 + +Fixed a possible memory leak in the Unload operator. The DdbHandle returned +by Load() did not have its reference count decremented during unload, leading +to a memory leak. Lin Ming. BZ 727 + +Fixed a possible memory leak when deleting thermal/processor objects. Any +associated notify handlers (and objects) were not being deleted. Fiodor +Suietov. BZ 506 + +Fixed the ordering of the ASCII names in the global mutex table to match the +actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only. +Vegard Nossum. BZ 726 + +Enhanced the AcpiGetObjectInfo interface to return the number of required +arguments if the object is a control method. Added this call to the debugger +so the proper number of default arguments are passed to a method. This +prevents a warning when executing methods from AcpiExec. + +Added a check for an invalid handle in AcpiGetObjectInfo. Return +AE_BAD_PARAMETER if input handle is invalid. BZ 474 + +Fixed an extraneous warning from exconfig.c on the 64-bit build. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total + Debug Version: 153.0K Code, 48.2K Data, 201.2K Total + Current Release: + Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total + Debug Version: 153.5K Code, 48.2K Data, 201.7K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both +resource descriptor names. + +iASL: Detect invalid ASCII characters in input (windows version). Removed the +"-CF" flag from the flex compile, enables correct detection of non-ASCII +characters in the input. BZ 441 + +iASL: Eliminate warning when result of LoadTable is not used. Eliminate the +"result of operation not used" warning when the DDB handle returned from +LoadTable is not used. The warning is not needed. BZ 590 + +AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to +pass address of table to the AML. Added option to disable OpRegion simulation +to allow creation of an OpRegion with a real address that was passed to _CFG. +All of this allows testing of the Load and Unload operators from AcpiExec. + +Debugger: update tables command for unloaded tables. Handle unloaded tables +and use the standard table header output routine. + +---------------------------------------- +09 June 2008. Summary of changes for version 20080609: + +1) ACPI CA Core Subsystem: + +Implemented a workaround for reversed _PRT entries. A significant number of +BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This +change dynamically detects and repairs this problem. Provides compatibility +with MS ACPI. BZ 6859 + +Simplified the internal ACPI hardware interfaces to eliminate the locking +flag parameter from Register Read/Write. Added a new external interface, +AcpiGetRegisterUnlocked. + +Fixed a problem where the invocation of a GPE control method could hang. This +was a regression introduced in 20080514. The new method argument count +validation mechanism can enter an infinite loop when a GPE method is +dispatched. Problem fixed by removing the obsolete code that passed GPE block +information to the notify handler via the control method parameter pointer. + +Fixed a problem where the _SST execution status was incorrectly returned to +the caller of AcpiEnterSleepStatePrep. This was a regression introduced in +20080514. _SST is optional and a NOT_FOUND exception should never be +returned. BZ 716 + +Fixed a problem where a deleted object could be accessed from within the AML +parser. This was a regression introduced in version 20080123 as a fix for the +Unload operator. Lin Ming. BZ 10669 + +Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands +and eliminated the use of a negative index in a loop. Operands are now +displayed in the correct order, not backwards. This also fixes a regression +introduced in 20080514 on 64-bit systems where the elimination of +ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715 + +Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit +path did not delete a locally allocated structure. + +Updated definitions for the DMAR and SRAT tables to synchronize with the +current specifications. Includes disassembler support. + +Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect +loop termination value was used. Loop terminated on iteration early, missing +one mutex. Linn Crosetto + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total + Debug Version: 153.3K Code, 48.3K Data, 201.6K Total + Current Release: + Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total + Debug Version: 153.0K Code, 48.2K Data, 201.2K Total + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support for EisaId() within _CID objects. Now +disassemble integer _CID objects back to EisaId invocations, including +multiple integers within _CID packages. Includes single-step support for +debugger also. + +Disassembler: Added support for DMAR and SRAT table definition changes. + +---------------------------------------- +14 May 2008. Summary of changes for version 20080514: + +1) ACPI CA Core Subsystem: + +Fixed a problem where GPEs were enabled too early during the ACPICA +initialization. This could lead to "handler not installed" errors on some +machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This +ensures that all operation regions and devices throughout the namespace have +been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. + +Implemented a change to the enter sleep code. Moved execution of the _GTS +method to just before setting sleep enable bit. The execution was moved from +AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed +immediately before the SLP_EN bit is set, as per the ACPI specification. +Luming Yu, BZ 1653. + +Implemented a fix to disable unknown GPEs (2nd version). Now always disable +the GPE, even if ACPICA thinks that that it is already disabled. It is +possible that the AML or some other code has enabled the GPE unbeknownst to +the ACPICA code. + +Fixed a problem with the Field operator where zero-length fields would return +an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL +field declarations in Field(), BankField(), and IndexField(). BZ 10606. + +Implemented a fix for the Load operator, now load the table at the namespace +root. This reverts a change introduced in version 20071019. The table is now +loaded at the namespace root even though this goes against the ACPI +specification. This provides compatibility with other ACPI implementations. +The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming. + +Fixed a problem where ACPICA would not Load() tables with unusual signatures. +Now ignore ACPI table signature for Load() operator. Only "SSDT" is +acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. +Therefore, signature validation is worthless. Apparently MS ACPI accepts such +signatures, ACPICA must be compatible. BZ 10454. + +Fixed a possible negative array index in AcpiUtValidateException. Added NULL +fields to the exception string arrays to eliminate a -1 subtraction on the +SubStatus field. + +Updated the debug tracking macros to reduce overall code and data size. +Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings +instead of pointers to static strings. Jan Beulich and Bob Moore. + +Implemented argument count checking in control method invocation via +AcpiEvaluateObject. Now emit an error if too few arguments, warning if too +many. This applies only to extern programmatic control method execution, not +method-to-method calls within the AML. Lin Ming. + +Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no +longer needed, especially with the removal of 16-bit support. It was replaced +mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on +32/64-bit platforms is required. + +Added the C const qualifier for appropriate string constants -- mostly +MODULE_NAME and printf format strings. Jan Beulich. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total + Debug Version: 159.4K Code, 64.4K Data, 223.8K Total + Current Release: + Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total + Debug Version: 153.3K Code, 48.3K Data, 201.6K Total + +2) iASL Compiler/Disassembler and Tools: + +Implemented ACPI table revision ID validation in the disassembler. Zero is +always invalid. For DSDTs, the ID controls the interpreter integer width. 1 +means 32-bit and this is unusual. 2 or greater is 64-bit. + +---------------------------------------- +21 March 2008. Summary of changes for version 20080321: + +1) ACPI CA Core Subsystem: + +Implemented an additional change to the GPE support in order to suppress +spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently +disable incoming GPEs that are neither enabled nor disabled -- meaning that +the GPE is unknown to the system. This should prevent future interrupt floods +from that GPE. BZ 6217 (Zhang Rui) + +Fixed a problem where NULL package elements were not returned to the +AcpiEvaluateObject interface correctly. The element was simply ignored +instead of returning a NULL ACPI_OBJECT package element, potentially causing +a buffer overflow and/or confusing the caller who expected a fixed number of +elements. BZ 10132 (Lin Ming, Bob Moore) + +Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword, +Qword), Field, BankField, and IndexField operators when invoked from inside +an executing control method. In this case, these operators created namespace +nodes that were incorrectly left marked as permanent nodes instead of +temporary nodes. This could cause a problem if there is race condition +between an exiting control method and a running namespace walk. (Reported by +Linn Crosetto) + +Fixed a problem where the CreateField and CreateXXXField operators would +incorrectly allow duplicate names (the name of the field) with no exception +generated. + +Implemented several changes for Notify handling. Added support for new Notify +values (ACPI 2.0+) and improved the Notify debug output. Notify on +PowerResource objects is no longer allowed, as per the ACPI specification. +(Bob Moore, Zhang Rui) + +All Reference Objects returned via the AcpiEvaluateObject interface are now +marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for +NULL objects - either NULL package elements or unresolved named references. + +Fixed a problem where an extraneous debug message was produced for package +objects (when debugging enabled). The message "Package List length larger +than NumElements count" is now produced in the correct case, and is now an +error message rather than a debug message. Added a debug message for the +opposite case, where NumElements is larger than the Package List (the package +will be padded out with NULL elements as per the ACPI spec.) + +Implemented several improvements for the output of the ASL "Debug" object to +clarify and keep all data for a given object on one output line. + +Fixed two size calculation issues with the variable-length Start Dependent +resource descriptor. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total + Debug Version: 158.9K Code, 64.0K Data, 222.9K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total + Debug Version: 159.4K Code, 64.4K Data, 223.8K Total + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem with the use of the Switch operator where execution of the +containing method by multiple concurrent threads could cause an +AE_ALREADY_EXISTS exception. This is caused by the fact that there is no +actual Switch opcode, it must be simulated with local named temporary +variables and if/else pairs. The solution chosen was to mark any method that +uses Switch as Serialized, thus preventing multiple thread entries. BZ 469. + +---------------------------------------- +13 February 2008. Summary of changes for version 20080213: + +1) ACPI CA Core Subsystem: + +Implemented another MS compatibility design change for GPE/Notify handling. +GPEs are now cleared/enabled asynchronously to allow all pending notifies to +complete first. It is expected that the OSL will queue the enable request +behind all pending notify requests (may require changes to the local host OSL +in AcpiOsExecute). Alexey Starikovskiy. + +Fixed a problem where buffer and package objects passed as arguments to a +control method via the external AcpiEvaluateObject interface could cause an +AE_AML_INTERNAL exception depending on the order and type of operators +executed by the target control method. + +Fixed a problem where resource descriptor size optimization could cause a +problem when a _CRS resource template is passed to a _SRS method. The _SRS +resource template must use the same descriptors (with the same size) as +returned from _CRS. This change affects the following resource descriptors: +IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487) + +Fixed a problem where a CopyObject to RegionField, BankField, and IndexField +objects did not perform an implicit conversion as it should. These types must +retain their initial type permanently as per the ACPI specification. However, +a CopyObject to all other object types should not perform an implicit +conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 + +Fixed a problem with the AcpiGetDevices interface where the mechanism to +match device CIDs did not examine the entire list of available CIDs, but +instead aborted on the first non-matching CID. Andrew Patterson. + +Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was +inadvertently changed to return a 16-bit value instead of a 32-bit value, +truncating the upper dword of a 64-bit value. This macro is only used to +display debug output, so no incorrect calculations were made. Also, +reimplemented the macro so that a 64-bit shift is not performed by +inefficient compilers. + +Added missing va_end statements that should correspond with each va_start +statement. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total + Debug Version: 159.0K Code, 63.8K Data, 222.8K Total + Current Release: + Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total + Debug Version: 158.9K Code, 64.0K Data, 222.9K Total + +2) iASL Compiler/Disassembler and Tools: + +Implemented full disassembler support for the following new ACPI tables: +BERT, EINJ, and ERST. Implemented partial disassembler support for the +complicated HEST table. These tables support the Windows Hardware Error +Architecture (WHEA). + +---------------------------------------- +23 January 2008. Summary of changes for version 20080123: + +1) ACPI CA Core Subsystem: + +Added the 2008 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, and +the tools/utilities. + +Fixed a problem with the SizeOf operator when used with Package and Buffer +objects. These objects have deferred execution for some arguments, and the +execution is now completed before the SizeOf is executed. This problem caused +unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ +9558 + +Implemented an enhancement to the interpreter "slack mode". In the absence of +an explicit return or an implicitly returned object from the last executed +opcode, a control method will now implicitly return an integer of value 0 for +Microsoft compatibility. (Lin Ming) BZ 392 + +Fixed a problem with the Load operator where an exception was not returned in +the case where the table is already loaded. (Lin Ming) BZ 463 + +Implemented support for the use of DDBHandles as an Indexed Reference, as per +the ACPI spec. (Lin Ming) BZ 486 + +Implemented support for UserTerm (Method invocation) for the Unload operator +as per the ACPI spec. (Lin Ming) BZ 580 + +Fixed a problem with the LoadTable operator where the OemId and OemTableId +input strings could cause unexpected failures if they were shorter than the +maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 + +Implemented support for UserTerm (Method invocation) for the Unload operator +as per the ACPI spec. (Lin Ming) BZ 580 + +Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST, +IBFT, UEFI, WDAT. Disassembler support is forthcoming. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total + Debug Version: 158.6K Code, 63.8K Data, 222.4K Total + Current Release: + Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total + Debug Version: 159.0K Code, 63.8K Data, 222.8K Total + +2) iASL Compiler/Disassembler and Tools: + +Implemented support in the disassembler for checksum validation on incoming +binary DSDTs and SSDTs. If incorrect, a message is displayed within the table +header dump at the start of the disassembly. + +Implemented additional debugging information in the namespace listing file +created during compilation. In addition to the namespace hierarchy, the full +pathname to each namespace object is displayed. + +Fixed a problem with the disassembler where invalid ACPI tables could cause +faults or infinite loops. + +Fixed an unexpected parse error when using the optional "parameter types" +list in a control method declaration. (Lin Ming) BZ 397 + +Fixed a problem where two External declarations with the same name did not +cause an error (Lin Ming) BZ 509 + +Implemented support for full TermArgs (adding Argx, Localx and method +invocation) for the ParameterData parameter to the LoadTable operator. (Lin +Ming) BZ 583,587 + +---------------------------------------- +19 December 2007. Summary of changes for version 20071219: + +1) ACPI CA Core Subsystem: + +Implemented full support for deferred execution for the TermArg string +arguments for DataTableRegion. This enables forward references and full +operand resolution for the three string arguments. Similar to OperationRegion +deferred argument execution.) Lin Ming. BZ 430 + +Implemented full argument resolution support for the BankValue argument to +BankField. Previously, only constants were supported, now any TermArg may be +used. Lin Ming BZ 387, 393 + +Fixed a problem with AcpiGetDevices where the search of a branch of the +device tree could be terminated prematurely. In accordance with the ACPI +specification, the search down the current branch is terminated if a device +is both not present and not functional (instead of just not present.) Yakui +Zhao. + +Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if +the underlying AML code changed the GPE enable registers. Now, any unknown +incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled +instead of simply ignored. Rui Zhang. + +Fixed a problem with Index Fields where the Index register was incorrectly +limited to a maximum of 32 bits. Now any size may be used. + +Fixed a couple memory leaks associated with "implicit return" objects when +the AML Interpreter slack mode is enabled. Lin Ming BZ 349 + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total + Debug Version: 157.9K Code, 63.6K Data, 221.5K Total + Current Release: + Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total + Debug Version: 158.6K Code, 63.8K Data, 222.4K Total + +---------------------------------------- +14 November 2007. Summary of changes for version 20071114: + +1) ACPI CA Core Subsystem: + +Implemented event counters for each of the Fixed Events, the ACPI SCI +(interrupt) itself, and control methods executed. Named +AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These +should be useful for debugging and statistics. + +Implemented a new external interface, AcpiGetStatistics, to retrieve the +contents of the various event counters. Returns the current values for +AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and +AcpiMethodCount. The interface can be expanded in the future if new counters +are added. Device drivers should use this interface rather than access the +counters directly. + +Fixed a problem with the FromBCD and ToBCD operators. With some compilers, +the ShortDivide function worked incorrectly, causing problems with the BCD +functions with large input values. A truncation from 64-bit to 32-bit +inadvertently occurred. Internal BZ 435. Lin Ming + +Fixed a problem with Index references passed as method arguments. References +passed as arguments to control methods were dereferenced immediately (before +control was passed to the called method). The references are now correctly +passed directly to the called method. BZ 5389. Lin Ming + +Fixed a problem with CopyObject used in conjunction with the Index operator. +The reference was incorrectly dereferenced before the copy. The reference is +now correctly copied. BZ 5391. Lin Ming + +Fixed a problem with Control Method references within Package objects. These +references are now correctly generated. This completes the package +construction overhaul that began in version 20071019. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total + Debug Version: 157.2K Code, 63.4K Data, 220.6K Total + Current Release: + Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total + Debug Version: 157.9K Code, 63.6K Data, 221.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +The AcpiExec utility now installs handlers for all of the predefined +Operation Region types. New types supported are: PCI_Config, CMOS, and +PCIBARTarget. + +Fixed a problem with the 64-bit version of AcpiExec where the extended (64- +bit) address fields for the DSDT and FACS within the FADT were not being +used, causing truncation of the upper 32-bits of these addresses. Lin Ming +and Bob Moore + +---------------------------------------- +19 October 2007. Summary of changes for version 20071019: + +1) ACPI CA Core Subsystem: + +Fixed a problem with the Alias operator when the target of the alias is a +named ASL operator that opens a new scope -- Scope, Device, PowerResource, +Processor, and ThermalZone. In these cases, any children of the original +operator could not be accessed via the alias, potentially causing unexpected +AE_NOT_FOUND exceptions. (BZ 9067) + +Fixed a problem with the Package operator where all named references were +created as object references and left otherwise unresolved. According to the +ACPI specification, a Package can only contain Data Objects or references to +control methods. The implication is that named references to Data Objects +(Integer, Buffer, String, Package, BufferField, Field) should be resolved +immediately upon package creation. This is the approach taken with this +change. References to all other named objects (Methods, Devices, Scopes, +etc.) are all now properly created as reference objects. (BZ 5328) + +Reverted a change to Notify handling that was introduced in version +20070508. This version changed the Notify handling from asynchronous to +fully synchronous (Device driver Notify handling with respect to the Notify +ASL operator). It was found that this change caused more problems than it +solved and was removed by most users. + +Fixed a problem with the Increment and Decrement operators where the type of +the target object could be unexpectedly and incorrectly changed. (BZ 353) +Lin Ming. + +Fixed a problem with the Load and LoadTable operators where the table +location within the namespace was ignored. Instead, the table was always +loaded into the root or current scope. Lin Ming. + +Fixed a problem with the Load operator when loading a table from a buffer +object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) + +Fixed a problem with the Debug object where a store of a DdbHandle reference +object to the Debug object could cause a fault. + +Added a table checksum verification for the Load operator, in the case where +the load is from a buffer. (BZ 578). + +Implemented additional parameter validation for the LoadTable operator. The +length of the input strings SignatureString, OemIdString, and OemTableId are +now checked for maximum lengths. (BZ 582) Lin Ming. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total + Debug Version: 156.7K Code, 63.2K Data, 219.9K Total + Current Release: + Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total + Debug Version: 157.2K Code, 63.4K Data, 220.6K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem where if a single file was specified and the file did not +exist, no error message was emitted. (Introduced with wildcard support in +version 20070917.) + +---------------------------------------- +19 September 2007. Summary of changes for version 20070919: + +1) ACPI CA Core Subsystem: + +Designed and implemented new external interfaces to install and remove +handlers for ACPI table-related events. Current events that are defined are +LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as +they are dynamically loaded and unloaded. See AcpiInstallTableHandler and +AcpiRemoveTableHandler. (Lin Ming and Bob Moore) + +Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag +(acpi_serialized option on Linux) could cause some systems to hang during +initialization. (Bob Moore) BZ 8171 + +Fixed a problem where objects of certain types (Device, ThermalZone, +Processor, PowerResource) can be not found if they are declared and +referenced from within the same control method (Lin Ming) BZ 341 + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total + Debug Version: 156.3K Code, 63.1K Data, 219.4K Total + Current Release: + Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total + Debug Version: 156.7K Code, 63.2K Data, 219.9K Total + + +2) iASL Compiler/Disassembler: + +Implemented support to allow multiple files to be compiled/disassembled in a +single invocation. This includes command line wildcard support for both the +Windows and Unix versions of the compiler. This feature simplifies the +disassembly and compilation of multiple ACPI tables in a single directory. + +---------------------------------------- +08 May 2007. Summary of changes for version 20070508: + +1) ACPI CA Core Subsystem: + +Implemented a Microsoft compatibility design change for the handling of the +Notify AML operator. Previously, notify handlers were dispatched and +executed completely asynchronously in a deferred thread. The new design +still executes the notify handlers in a different thread, but the original +thread that executed the Notify() now waits at a synchronization point for +the notify handler to complete. Some machines depend on a synchronous Notify +operator in order to operate correctly. + +Implemented support to allow Package objects to be passed as method +arguments to the external AcpiEvaluateObject interface. Previously, this +would return the AE_NOT_IMPLEMENTED exception. This feature had not been +implemented since there were no reserved control methods that required it +until recently. + +Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that +contained invalid non-zero values in reserved fields could cause later +failures because these fields have meaning in later revisions of the FADT. +For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields +are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) + +Fixed a problem where the Global Lock handle was not properly updated if a +thread that acquired the Global Lock via executing AML code then attempted +to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe +Liu. + +Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list +could be corrupted if the interrupt being removed was at the head of the +list. Reported by Linn Crosetto. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.9K Code, 63.1K Data, 219.0K Total + Current Release: + Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total + Debug Version: 156.3K Code, 63.1K Data, 219.4K Total + +---------------------------------------- +20 March 2007. Summary of changes for version 20070320: + +1) ACPI CA Core Subsystem: + +Implemented a change to the order of interpretation and evaluation of AML +operand objects within the AML interpreter. The interpreter now evaluates +operands in the order that they appear in the AML stream (and the +corresponding ASL code), instead of in the reverse order (after the entire +operand list has been parsed). The previous behavior caused several subtle +incompatibilities with the Microsoft AML interpreter as well as being +somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. + +Implemented a change to the ACPI Global Lock support. All interfaces to the +global lock now allow the same thread to acquire the lock multiple times. +This affects the AcpiAcquireGlobalLock external interface to the global lock +as well as the internal use of the global lock to support AML fields -- a +control method that is holding the global lock can now simultaneously access +AML fields that require global lock protection. Previously, in both cases, +this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to +AcpiAcquireGlobalLock is of special interest to drivers for the Embedded +Controller. There is no change to the behavior of the AML Acquire operator, +as this can already be used to acquire a mutex multiple times by the same +thread. BZ 8066. With assistance from Alexey Starikovskiy. + +Fixed a problem where invalid objects could be referenced in the AML +Interpreter after error conditions. During operand evaluation, ensure that +the internal "Return Object" field is cleared on error and only valid +pointers are stored there. Caused occasional access to deleted objects that +resulted in "large reference count" warning messages. Valery Podrezov. + +Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on +deeply nested control method invocations. BZ 7873, local BZ 487. Valery +Podrezov. + +Fixed an internal problem with the handling of result objects on the +interpreter result stack. BZ 7872. Valery Podrezov. + +Removed obsolete code that handled the case where AML_NAME_OP is the target +of a reference (Reference.Opcode). This code was no longer necessary. BZ +7874. Valery Podrezov. + +Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a +remnant from the previously discontinued 16-bit support. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.9K Code, 63.1K Data, 219.0K Total + +---------------------------------------- +26 January 2007. Summary of changes for version 20070126: + +1) ACPI CA Core Subsystem: + +Added the 2007 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, the iASL compiler, and +the utilities. + +Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable +during a table load. A bad pointer was passed in the case where the DSDT is +overridden, causing a fault in this case. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + +---------------------------------------- +15 December 2006. Summary of changes for version 20061215: + +1) ACPI CA Core Subsystem: + +Support for 16-bit ACPICA has been completely removed since it is no longer +necessary and it clutters the code. All 16-bit macros, types, and +conditional compiles have been removed, cleaning up and simplifying the code +across the entire subsystem. DOS support is no longer needed since the +bootable Linux firmware kit is now available. + +The handler for the Global Lock is now removed during AcpiTerminate to +enable a clean subsystem restart, via the implementation of the +AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, +HP) + +Implemented enhancements to the multithreading support within the debugger +to enable improved multithreading debugging and evaluation of the subsystem. +(Valery Podrezov) + +Debugger: Enhanced the Statistics/Memory command to emit the total (maximum) +memory used during the execution, as well as the maximum memory consumed by +each of the various object types. (Valery Podrezov) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total + Debug Version: 155.2K Code, 63.1K Data, 218.3K Total + Current Release: + Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total + Debug Version: 155.8K Code, 63.3K Data, 219.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +AcpiExec: Implemented a new option (-m) to display full memory use +statistics upon subsystem/program termination. (Valery Podrezov) + +---------------------------------------- +09 November 2006. Summary of changes for version 20061109: + +1) ACPI CA Core Subsystem: + +Optimized the Load ASL operator in the case where the source operand is an +operation region. Simply map the operation region memory, instead of +performing a bytewise read. (Region must be of type SystemMemory, see +below.) + +Fixed the Load ASL operator for the case where the source operand is a +region field. A buffer object is also allowed as the source operand. BZ 480 + +Fixed a problem where the Load ASL operator allowed the source operand to be +an operation region of any type. It is now restricted to regions of type +SystemMemory, as per the ACPI specification. BZ 481 + +Additional cleanup and optimizations for the new Table Manager code. + +AcpiEnable will now fail if all of the required ACPI tables are not loaded +(FADT, FACS, DSDT). BZ 477 + +Added #pragma pack(8/4) to acobject.h to ensure that the structures in this +header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been +manually optimized to be aligned and will not work if it is byte-packed. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total + Debug Version: 155.4K Code, 63.1K Data, 218.5K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total + Debug Version: 155.2K Code, 63.1K Data, 218.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem where the presence of the _OSI predefined control method +within complex expressions could cause an internal compiler error. + +AcpiExec: Implemented full region support for multiple address spaces. +SpaceId is now part of the REGION object. BZ 429 + +---------------------------------------- +11 October 2006. Summary of changes for version 20061011: + +1) ACPI CA Core Subsystem: + +Completed an AML interpreter performance enhancement for control method +execution. Previously a 2-pass parse/execution, control methods are now +completely parsed and executed in a single pass. This improves overall +interpreter performance by ~25%, reduces code size, and reduces CPU stack +use. (Valery Podrezov + interpreter changes in version 20051202 that +eliminated namespace loading during the pass one parse.) + +Implemented _CID support for PCI Root Bridge detection. If the _HID does not +match the predefined PCI Root Bridge IDs, the _CID list (if present) is now +obtained and also checked for an ID match. + +Implemented additional support for the PCI _ADR execution: upsearch until a +device scope is found before executing _ADR. This allows PCI_Config +operation regions to be declared locally within control methods underneath +PCI device objects. + +Fixed a problem with a possible race condition between threads executing +AcpiWalkNamespace and the AML interpreter. This condition was removed by +modifying AcpiWalkNamespace to (by default) ignore all temporary namespace +entries created during any concurrent control method execution. An +additional namespace race condition is known to exist between +AcpiWalkNamespace and the Load/Unload ASL operators and is still under +investigation. + +Restructured the AML ParseLoop function, breaking it into several +subfunctions in order to reduce CPU stack use and improve maintainability. +(Mikhail Kouzmich) + +AcpiGetHandle: Fix for parameter validation to detect invalid combinations +of prefix handle and pathname. BZ 478 + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.6K Code, 63.0K Data, 217.6K Total + Current Release: + Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total + Debug Version: 155.4K Code, 63.1K Data, 218.5K Total + +2) iASL Compiler/Disassembler and Tools: + +Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager +to restore original behavior. + +---------------------------------------- +27 September 2006. Summary of changes for version 20060927: + +1) ACPI CA Core Subsystem: + +Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. +These functions now use a spinlock for mutual exclusion and the interrupt +level indication flag is not needed. + +Fixed a problem with the Global Lock where the lock could appear to be +obtained before it is actually obtained. The global lock semaphore was +inadvertently created with one unit instead of zero units. (BZ 464) Fiodor +Suietov. + +Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during +a read from a buffer or region field. (BZ 458) Fiodor Suietov. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.7K Code, 63.0K Data, 217.7K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.6K Code, 63.0K Data, 217.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a compilation problem with the pre-defined Resource Descriptor field +names where an "object does not exist" error could be incorrectly generated +if the parent ResourceTemplate pathname places the template within a +different namespace scope than the current scope. (BZ 7212) + +Fixed a problem where the compiler could hang after syntax errors detected +in an ElseIf construct. (BZ 453) + +Fixed a problem with the AmlFilename parameter to the DefinitionBlock() +operator. An incorrect output filename was produced when this parameter was +a null string (""). Now, the original input filename is used as the AML +output filename, with an ".aml" extension. + +Implemented a generic batch command mode for the AcpiExec utility (execute +any AML debugger command) (Valery Podrezov). + +---------------------------------------- +12 September 2006. Summary of changes for version 20060912: + +1) ACPI CA Core Subsystem: + +Enhanced the implementation of the "serialized mode" of the interpreter +(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is +specified, instead of creating a serialization semaphore per control method, +the interpreter lock is simply no longer released before a blocking +operation during control method execution. This effectively makes the AML +Interpreter single-threaded. The overhead of a semaphore per-method is +eliminated. + +Fixed a regression where an error was no longer emitted if a control method +attempts to create 2 objects of the same name. This once again returns +AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that +will dynamically serialize the control method to possible prevent future +errors. (BZ 440) + +Integrated a fix for a problem with PCI Express HID detection in the PCI +Config Space setup procedure. (BZ 7145) + +Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the +AcpiHwInitialize function - the FADT registers are now validated when the +table is loaded. + +Added two new warnings during FADT verification - 1) if the FADT is larger +than the largest known FADT version, and 2) if there is a mismatch between a +32-bit block address and the 64-bit X counterpart (when both are non-zero.) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total + Debug Version: 154.9K Code, 62.6K Data, 217.5K Total + Current Release: + Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total + Debug Version: 154.7K Code, 63.0K Data, 217.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a problem with the implementation of the Switch() operator where the +temporary variable was declared too close to the actual Switch, instead of +at method level. This could cause a problem if the Switch() operator is +within a while loop, causing an error on the second iteration. (BZ 460) + +Disassembler - fix for error emitted for unknown type for target of scope +operator. Now, ignore it and continue. + +Disassembly of an FADT now verifies the input FADT and reports any errors +found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. + +Disassembly of raw data buffers with byte initialization data now prefixes +each output line with the current buffer offset. + +Disassembly of ASF! table now includes all variable-length data fields at +the end of some of the subtables. + +The disassembler now emits a comment if a buffer appears to be a +ResourceTemplate, but cannot be disassembled as such because the EndTag does +not appear at the very end of the buffer. + +AcpiExec - Added the "-t" command line option to enable the serialized mode +of the AML interpreter. + +---------------------------------------- +31 August 2006. Summary of changes for version 20060831: + +1) ACPI CA Core Subsystem: + +Miscellaneous fixes for the Table Manager: +- Correctly initialize internal common FADT for all 64-bit "X" fields +- Fixed a couple table mapping issues during table load +- Fixed a couple alignment issues for IA64 +- Initialize input array to zero in AcpiInitializeTables +- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, +AcpiGetTableByIndex + +Change for GPE support: when a "wake" GPE is received, all wake GPEs are now +immediately disabled to prevent the waking GPE from firing again and to +prevent other wake GPEs from interrupting the wake process. + +Added the AcpiGpeCount global that tracks the number of processed GPEs, to +be used for debugging systems with a large number of ACPI interrupts. + +Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in +both the ACPICA headers and the disassembler. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total + Debug Version: 154.6K Code, 62.3K Data, 216.9K Total + Current Release: + Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total + Debug Version: 154.9K Code, 62.6K Data, 217.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler support for the DMAR ACPI table. + +---------------------------------------- +23 August 2006. Summary of changes for version 20060823: + +1) ACPI CA Core Subsystem: + +The Table Manager component has been completely redesigned and +reimplemented. The new design is much simpler, and reduces the overall code +and data size of the kernel-resident ACPICA by approximately 5%. Also, it is +now possible to obtain the ACPI tables very early during kernel +initialization, even before dynamic memory management is initialized. +(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) + +Obsolete ACPICA interfaces: + +- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init +time). +- AcpiLoadTable: Not needed. +- AcpiUnloadTable: Not needed. + +New ACPICA interfaces: + +- AcpiInitializeTables: Must be called before the table manager can be used. +- AcpiReallocateRootTable: Used to transfer the root table to dynamically +allocated memory after it becomes available. +- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables +in the RSDT/XSDT. + +Other ACPICA changes: + +- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use +AcpiOsUnmapMemory to free this mapping. +- AcpiGetTable returns the actual mapped table. The mapping is managed +internally and must not be deleted by the caller. Use of this interface +causes no additional dynamic memory allocation. +- AcpiFindRootPointer: Support for physical addressing has been eliminated, +it appeared to be unused. +- The interface to AcpiOsMapMemory has changed to be consistent with the +other allocation interfaces. +- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary +parameters. +- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64- +bit platforms. Was previously 64 bits on all platforms. +- The interface to the ACPI Global Lock acquire/release macros have changed +slightly since ACPICA no longer keeps a local copy of the FACS with a +constructed pointer to the actual global lock. + +Porting to the new table manager: + +- AcpiInitializeTables: Must be called once, and can be called anytime +during the OS initialization process. It allows the host to specify an area +of memory to be used to store the internal version of the RSDT/XSDT (root +table). This allows the host to access ACPI tables before memory management +is initialized and running. +- AcpiReallocateRootTable: Can be called after memory management is running +to copy the root table to a dynamically allocated array, freeing up the +scratch memory specified in the call to AcpiInitializeTables. +- AcpiSubsystemInitialize: This existing interface is independent of the +Table Manager, and does not have to be called before the Table Manager can +be used, it only must be called before the rest of ACPICA can be used. +- ACPI Tables: Some changes have been made to the names and structure of the +actbl.h and actbl1.h header files and may require changes to existing code. +For example, bitfields have been completely removed because of their lack of +portability across C compilers. +- Update interfaces to the Global Lock acquire/release macros if local +versions are used. (see acwin.h) + +Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c + +New files: tbfind.c + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + Current Release: + Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total + Debug Version: 154.6K Code, 62.3K Data, 216.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +21 July 2006. Summary of changes for version 20060721: + +1) ACPI CA Core Subsystem: + +The full source code for the ASL test suite used to validate the iASL +compiler and the ACPICA core subsystem is being released with the ACPICA +source for the first time. The source is contained in a separate package and +consists of over 1100 files that exercise all ASL/AML operators. The package +should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor +Suietov) + +Completed a new design and implementation for support of the ACPI Global +Lock. On the OS side, the global lock is now treated as a standard AML +mutex. Previously, multiple OS threads could "acquire" the global lock +simultaneously. However, this could cause the BIOS to be starved out of the +lock - especially in cases such as the Embedded Controller driver where +there is a tight coupling between the OS and the BIOS. + +Implemented an optimization for the ACPI Global Lock interrupt mechanism. +The Global Lock interrupt handler no longer queues the execution of a +separate thread to signal the global lock semaphore. Instead, the semaphore +is signaled directly from the interrupt handler. + +Implemented support within the AML interpreter for package objects that +contain a larger AML length (package list length) than the package element +count. In this case, the length of the package is truncated to match the +package element count. Some BIOS code apparently modifies the package length +on the fly, and this change supports this behavior. Provides compatibility +with the MS AML interpreter. (With assistance from Fiodor Suietov) + +Implemented a temporary fix for the BankValue parameter of a Bank Field to +support all constant values, now including the Zero and One opcodes. +Evaluation of this parameter must eventually be converted to a full TermArg +evaluation. A not-implemented error is now returned (temporarily) for non- +constant values for this parameter. + +Fixed problem reports (Fiodor Suietov) integrated: +- Fix for premature object deletion after CopyObject on Operation Region (BZ +350) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total + Debug Version: 160.9K Code, 65.1K Data, 226.0K Total + Current Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +07 July 2006. Summary of changes for version 20060707: + +1) ACPI CA Core Subsystem: + +Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers +that do not allow the initialization of address pointers within packed +structures - even though the hardware itself may support misaligned +transfers. Some of the debug data structures are packed by default to +minimize size. + +Added an error message for the case where AcpiOsGetThreadId() returns zero. +A non-zero value is required by the core ACPICA code to ensure the proper +operation of AML mutexes and recursive control methods. + +The DSDT is now the only ACPI table that determines whether the AML +interpreter is in 32-bit or 64-bit mode. Not really a functional change, but +the hooks for per-table 32/64 switching have been removed from the code. A +clarification to the ACPI specification is forthcoming in ACPI 3.0B. + +Fixed a possible leak of an OwnerID in the error path of +AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID +deletion to a single place in AcpiTbUninstallTable to correct possible leaks +when using the AcpiTbDeleteTablesByType interface (with assistance from +Lance Ortiz.) + +Fixed a problem with Serialized control methods where the semaphore +associated with the method could be over-signaled after multiple method +invocations. + +Fixed two issues with the locking of the internal namespace data structure. +Both the Unload() operator and AcpiUnloadTable interface now lock the +namespace during the namespace deletion associated with the table unload +(with assistance from Linn Crosetto.) + +Fixed problem reports (Valery Podrezov) integrated: +- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) + +Fixed problem reports (Fiodor Suietov) integrated: +- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) +- On Address Space handler deletion, needless deactivation call (BZ 374) +- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375) +- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone +(BZ 376) +- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) +- Minimum Length of RSDT should be validated (BZ 379) +- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no +Handler (BZ (380) +- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded +(BZ 381) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total + Debug Version: 160.8K Code, 64.8K Data, 225.6K Total + Current Release: + Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total + Debug Version: 161.0K Code, 65.1K Data, 226.1K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed problem reports: +Compiler segfault when ASL contains a long (>1024) String declaration (BZ +436) + +---------------------------------------- +23 June 2006. Summary of changes for version 20060623: + +1) ACPI CA Core Subsystem: + +Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This +allows the type to be customized to the host OS for improved efficiency +(since a spinlock is usually a very small object.) + +Implemented support for "ignored" bits in the ACPI registers. According to +the ACPI specification, these bits should be preserved when writing the +registers via a read/modify/write cycle. There are 3 bits preserved in this +manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. + +Implemented the initial deployment of new OSL mutex interfaces. Since some +host operating systems have separate mutex and semaphore objects, this +feature was requested. The base code now uses mutexes (and the new mutex +interfaces) wherever a binary semaphore was used previously. However, for +the current release, the mutex interfaces are defined as macros to map them +to the existing semaphore interfaces. Therefore, no OSL changes are required +at this time. (See acpiosxf.h) + +Fixed several problems with the support for the control method SyncLevel +parameter. The SyncLevel now works according to the ACPI specification and +in concert with the Mutex SyncLevel parameter, since the current SyncLevel +is a property of the executing thread. Mutual exclusion for control methods +is now implemented with a mutex instead of a semaphore. + +Fixed three instances of the use of the C shift operator in the bitfield +support code (exfldio.c) to avoid the use of a shift value larger than the +target data width. The behavior of C compilers is undefined in this case and +can cause unpredictable results, and therefore the case must be detected and +avoided. (Fiodor Suietov) + +Added an info message whenever an SSDT or OEM table is loaded dynamically +via the Load() or LoadTable() ASL operators. This should improve debugging +capability since it will show exactly what tables have been loaded (beyond +the tables present in the RSDT/XSDT.) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total + Debug Version: 160.2K Code, 64.7K Data, 224.9K Total + Current Release: + Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total + Debug Version: 160.8K Code, 64.8K Data, 225.6K Total + + +2) iASL Compiler/Disassembler and Tools: + +No changes for this release. + +---------------------------------------- +08 June 2006. Summary of changes for version 20060608: + +1) ACPI CA Core Subsystem: + +Converted the locking mutex used for the ACPI hardware to a spinlock. This +change should eliminate all problems caused by attempting to acquire a +semaphore at interrupt level, and it means that all ACPICA external +interfaces that directly access the ACPI hardware can be safely called from +interrupt level. OSL code that implements the semaphore interfaces should be +able to eliminate any workarounds for being called at interrupt level. + +Fixed a regression introduced in 20060526 where the ACPI device +initialization could be prematurely aborted with an AE_NOT_FOUND if a device +did not have an optional _INI method. + +Fixed an IndexField issue where a write to the Data Register should be +limited in size to the AccessSize (width) of the IndexField itself. (BZ 433, +Fiodor Suietov) + +Fixed problem reports (Valery Podrezov) integrated: +- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) + +Fixed problem reports (Fiodor Suietov) integrated: +- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) + +Removed four global mutexes that were obsolete and were no longer being +used. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total + Debug Version: 160.3K Code, 64.9K Data, 225.2K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total + Debug Version: 160.2K Code, 64.7K Data, 224.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +Fixed a fault when using -g option (get tables from registry) on Windows +machines. + +Fixed problem reports integrated: +- Generate error if CreateField NumBits parameter is zero. (BZ 405) +- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor +Suietov) +- Global table revision override (-r) is ignored (BZ 413) + +---------------------------------------- +26 May 2006. Summary of changes for version 20060526: + +1) ACPI CA Core Subsystem: + +Restructured, flattened, and simplified the internal interfaces for +namespace object evaluation - resulting in smaller code, less CPU stack use, +and fewer interfaces. (With assistance from Mikhail Kouzmich) + +Fixed a problem with the CopyObject operator where the first parameter was +not typed correctly for the parser, interpreter, compiler, and disassembler. +Caused various errors and unexpected behavior. + +Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits +produced incorrect results with some C compilers. Since the behavior of C +compilers when the shift value is larger than the datatype width is +apparently not well defined, the interpreter now detects this condition and +simply returns zero as expected in all such cases. (BZ 395) + +Fixed problem reports (Valery Podrezov) integrated: +- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) +- Allow interpreter to handle nested method declarations (BZ 5361) + +Fixed problem reports (Fiodor Suietov) integrated: +- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355) +- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356) +- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) +- Resource Manager should return AE_TYPE for non-device objects (BZ 358) +- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) +- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) +- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) +- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) +- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365) +- Status of the Global Initialization Handler call not used (BZ 366) +- Incorrect object parameter to Global Initialization Handler (BZ 367) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total + Debug Version: 160.5K Code, 65.1K Data, 225.6K Total + Current Release: + Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total + Debug Version: 160.3K Code, 64.9K Data, 225.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +Modified the parser to allow the names IO, DMA, and IRQ to be used as +namespace identifiers with no collision with existing resource descriptor +macro names. This provides compatibility with other ASL compilers and is +most useful for disassembly/recompilation of existing tables without parse +errors. (With assistance from Thomas Renninger) + +Disassembler: fixed an incorrect disassembly problem with the +DataTableRegion and CopyObject operators. Fixed a possible fault during +disassembly of some Alias operators. + +---------------------------------------- +12 May 2006. Summary of changes for version 20060512: + +1) ACPI CA Core Subsystem: + +Replaced the AcpiOsQueueForExecution interface with a new interface named +AcpiOsExecute. The major difference is that the new interface does not have +a Priority parameter, this appeared to be useless and has been replaced by a +Type parameter. The Type tells the host what type of execution is being +requested, such as global lock handler, notify handler, GPE handler, etc. +This allows the host to queue and execute the request as appropriate for the +request type, possibly using different work queues and different priorities +for the various request types. This enables fixes for multithreading +deadlock problems such as BZ #5534, and will require changes to all existing +OS interface layers. (Alexey Starikovskiy and Bob Moore) + +Fixed a possible memory leak associated with the support for the so-called +"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor +Suietov) + +Fixed a problem with the Load() operator where a table load from an +operation region could overwrite an internal table buffer by up to 7 bytes +and cause alignment faults on IPF systems. (With assistance from Luming Yu) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total + Debug Version: 160.1K Code, 65.2K Data, 225.3K Total + Current Release: + Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total + Debug Version: 160.5K Code, 65.1K Data, 225.6K Total + + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support to cross reference the internal namespace +and automatically generate ASL External() statements for symbols not defined +within the current table being disassembled. This will simplify the +disassembly and recompilation of interdependent tables such as SSDTs since +these statements will no longer have to be added manually. + +Disassembler: Implemented experimental support to automatically detect +invocations of external control methods and generate appropriate External() +statements. This is problematic because the AML cannot be correctly parsed +until the number of arguments for each control method is known. Currently, +standalone method invocations and invocations as the source operand of a +Store() statement are supported. + +Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, +LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), +LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code +more readable and likely closer to the original ASL source. + +---------------------------------------- +21 April 2006. Summary of changes for version 20060421: + +1) ACPI CA Core Subsystem: + +Removed a device initialization optimization introduced in 20051216 where +the _STA method was not run unless an _INI was also present for the same +device. This optimization could cause problems because it could allow _INI +methods to be run within a not-present device subtree. (If a not-present +device had no _INI, _STA would not be run, the not-present status would not +be discovered, and the children of the device would be incorrectly +traversed.) + +Implemented a new _STA optimization where namespace subtrees that do not +contain _INI are identified and ignored during device initialization. +Selectively running _STA can significantly improve boot time on large +machines (with assistance from Len Brown.) + +Implemented support for the device initialization case where the returned +_STA flags indicate a device not-present but functioning. In this case, _INI +is not run, but the device children are examined for presence, as per the +ACPI specification. + +Implemented an additional change to the IndexField support in order to +conform to MS behavior. The value written to the Index Register is not +simply a byte offset, it is a byte offset in units of the access width of +the parent Index Field. (Fiodor Suietov) + +Defined and deployed a new OSL interface, AcpiOsValidateAddress. This +interface is called during the creation of all AML operation regions, and +allows the host OS to exert control over what addresses it will allow the +AML code to access. Operation Regions whose addresses are disallowed will +cause a runtime exception when they are actually accessed (will not affect +or abort table loading.) See oswinxf or osunixxf for an example +implementation. + +Defined and deployed a new OSL interface, AcpiOsValidateInterface. This +interface allows the host OS to match the various "optional" +interface/behavior strings for the _OSI predefined control method as +appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf +for an example implementation. + +Restructured and corrected various problems in the exception handling code +paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod +(with assistance from Takayoshi Kochi.) + +Modified the Linux source converter to ignore quoted string literals while +converting identifiers from mixed to lower case. This will correct problems +with the disassembler and other areas where such strings must not be +modified. + +The ACPI_FUNCTION_* macros no longer require quotes around the function +name. This allows the Linux source converter to convert the names, now that +the converter ignores quoted strings. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + + Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total + Debug Version: 158.9K Code, 64.9K Data, 223.8K Total + Current Release: + Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total + Debug Version: 160.1K Code, 65.2K Data, 225.3K Total + + +2) iASL Compiler/Disassembler and Tools: + +Implemented 3 new warnings for iASL, and implemented multiple warning levels +(w2 flag). + +1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not +WAIT_FOREVER (0xFFFF) and the code does not examine the return value to +check for the possible timeout, a warning is issued. + +2) Useless operators: If an ASL operator does not specify an optional target +operand and it also does not use the function return value from the +operator, a warning is issued since the operator effectively does nothing. + +3) Unreferenced objects: If a namespace object is created, but never +referenced, a warning is issued. This is a warning level 2 since there are +cases where this is ok, such as when a secondary table is loaded that uses +the unreferenced objects. Even so, care is taken to only flag objects that +don't look like they will ever be used. For example, the reserved methods +(starting with an underscore) are usually not referenced because it is +expected that the OS will invoke them. + +---------------------------------------- +31 March 2006. Summary of changes for version 20060331: + +1) ACPI CA Core Subsystem: + +Implemented header file support for the following additional ACPI tables: +ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support, +all current and known ACPI tables are now defined in the ACPICA headers and +are available for use by device drivers and other software. + +Implemented support to allow tables that contain ACPI names with invalid +characters to be loaded. Previously, this would cause the table load to +fail, but since there are several known cases of such tables on existing +machines, this change was made to enable ACPI support for them. Also, this +matches the behavior of the Microsoft ACPI implementation. + +Fixed a couple regressions introduced during the memory optimization in the +20060317 release. The namespace node definition required additional +reorganization and an internal datatype that had been changed to 8-bit was +restored to 32-bit. (Valery Podrezov) + +Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState +could be passed through to AcpiOsReleaseObject which is unexpected. Such +null pointers are now trapped and ignored, matching the behavior of the +previous implementation before the deployment of AcpiOsReleaseObject. +(Valery Podrezov, Fiodor Suietov) + +Fixed a memory mapping leak during the deletion of a SystemMemory operation +region where a cached memory mapping was not deleted. This became a +noticeable problem for operation regions that are defined within frequently +used control methods. (Dana Meyers) + +Reorganized the ACPI table header files into two main files: one for the +ACPI tables consumed by the ACPICA core, and another for the miscellaneous +ACPI tables that are consumed by the drivers and other software. The various +FADT definitions were merged into one common section and three different +tables (ACPI 1.0, 1.0+, and 2.0) + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has +a much larger code and data size. + + Previous Release: + Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total + Debug Version: 158.7K Code, 64.8K Data, 223.5K Total + Current Release: + Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total + Debug Version: 158.9K Code, 64.9K Data, 223.8K Total + + +2) iASL Compiler/Disassembler and Tools: + +Disassembler: Implemented support to decode and format all non-AML ACPI +tables (tables other than DSDTs and SSDTs.) This includes the new tables +added to the ACPICA headers, therefore all current and known ACPI tables are +supported. + +Disassembler: The change to allow ACPI names with invalid characters also +enables the disassembly of such tables. Invalid characters within names are +changed to '*' to make the name printable; the iASL compiler will still +generate an error for such names, however, since this is an invalid ACPI +character. + +Implemented an option for AcpiXtract (-a) to extract all tables found in the +input file. The default invocation extracts only the DSDTs and SSDTs. + +Fixed a couple of gcc generation issues for iASL and AcpiExec and added a +makefile for the AcpiXtract utility. + +---------------------------------------- +17 March 2006. Summary of changes for version 20060317: + +1) ACPI CA Core Subsystem: + +Implemented the use of a cache object for all internal namespace nodes. +Since there are about 1000 static nodes in a typical system, this will +decrease memory use for cache implementations that minimize per-allocation +overhead (such as a slab allocator.) + +Removed the reference count mechanism for internal namespace nodes, since it +was deemed unnecessary. This reduces the size of each namespace node by +about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, +and 32 bytes for the 64-bit case. + +Optimized several internal data structures to reduce object size on 64-bit +platforms by packing data within the 64-bit alignment. This includes the +frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static +instances corresponding to the namespace objects. + +Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" +and "Windows 2006". + +Split the allocation tracking mechanism out to a separate file, from +utalloc.c to uttrack.c. This mechanism appears to be only useful for +application-level code. Kernels may wish to not include uttrack.c in +distributions. + +Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated +code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING +macros.) + +Code and Data Size: These are the sizes for the acpica.lib produced by the +Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI +driver or OSPM code. The debug version of the code includes the debug output +trace mechanism and has a much larger code and data size. Note that these +values will vary depending on the efficiency of the compiler and the +compiler options used during generation. + + Previous Release: + Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total + Debug Version: 161.6K Code, 65.7K Data, 227.3K Total + Current Release: + Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total + Debug Version: 158.7K Code, 64.8K Data, 223.5K Total + + +2) iASL Compiler/Disassembler and Tools: + +Implemented an ANSI C version of the acpixtract utility. This version will +automatically extract the DSDT and all SSDTs from the input acpidump text +file and dump the binary output to separate files. It can also display a +summary of the input file including the headers for each table found and +will extract any single ACPI table, with any signature. (See +source/tools/acpixtract) + +---------------------------------------- +10 March 2006. Summary of changes for version 20060310: + +1) ACPI CA Core Subsystem: + +Tagged all external interfaces to the subsystem with the new +ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist +kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL +macro. The default definition is NULL. + +Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId. +This allows the host to define this as necessary to simplify kernel +integration. The default definition is ACPI_NATIVE_UINT. + +Fixed two interpreter problems related to error processing, the deletion of +objects, and placing invalid pointers onto the internal operator result +stack. BZ 6028, 6151 (Valery Podrezov) + +Increased the reference count threshold where a warning is emitted for large +reference counts in order to eliminate unnecessary warnings on systems with +large namespaces (especially 64-bit.) Increased the value from 0x400 to +0x800. + +Due to universal disagreement as to the meaning of the 'c' in the calloc() +function, the ACPI_MEM_CALLOCATE macro has been renamed to +ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. +ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and +ACPI_FREE. + +Code and Data Size: These are the sizes for the acpica.lib produced by the +Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI +driver or OSPM code. The debug version of the code includes the debug output +trace mechanism and has a much larger code and data size. Note that these +values will vary depending on the efficiency of the compiler and the +compiler options used during generation. + + Previous Release: + Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total + Debug Version: 161.4K Code, 65.7K Data, 227.1K Total + Current Release: + Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total + Debug Version: 161.6K Code, 65.7K Data, 227.3K Total + + +2) iASL Compiler/Disassembler: + +Disassembler: implemented support for symbolic resource descriptor +references. If a CreateXxxxField operator references a fixed offset within a +resource descriptor, a name is assigned to the descriptor and the offset is +translated to the appropriate resource tag and pathname. The addition of +this support brings the disassembled code very close to the original ASL +source code and helps eliminate run-time errors when the disassembled code +is modified (and recompiled) in such a way as to invalidate the original +fixed offsets. + +Implemented support for a Descriptor Name as the last parameter to the ASL +Register() macro. This parameter was inadvertently left out of the ACPI +specification, and will be added for ACPI 3.0b. + +Fixed a problem where the use of the "_OSI" string (versus the full path +"\_OSI") caused an internal compiler error. ("No back ptr to op") + +Fixed a problem with the error message that occurs when an invalid string is +used for a _HID object (such as one with an embedded asterisk: "*PNP010A".) +The correct message is now displayed. + +---------------------------------------- +17 February 2006. Summary of changes for version 20060217: + +1) ACPI CA Core Subsystem: + +Implemented a change to the IndexField support to match the behavior of the +Microsoft AML interpreter. The value written to the Index register is now a +byte offset, no longer an index based upon the width of the Data register. +This should fix IndexField problems seen on some machines where the Data +register is not exactly one byte wide. The ACPI specification will be +clarified on this point. + +Fixed a problem where several resource descriptor types could overrun the +internal descriptor buffer due to size miscalculation: VendorShort, +VendorLong, and Interrupt. This was noticed on IA64 machines, but could +affect all platforms. + +Fixed a problem where individual resource descriptors were misaligned within +the internal buffer, causing alignment faults on IA64 platforms. + +Code and Data Size: These are the sizes for the acpica.lib produced by the +Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI +driver or OSPM code. The debug version of the code includes the debug output +trace mechanism and has a much larger code and data size. Note that these +values will vary depending on the efficiency of the compiler and the +compiler options used during generation. + + Previous Release: + Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total + Debug Version: 161.3K Code, 65.6K Data, 226.9K Total + Current Release: + Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total + Debug Version: 161.4K Code, 65.7K Data, 227.1K Total + + +2) iASL Compiler/Disassembler: + +Implemented support for new reserved names: _WDG and _WED are Microsoft +extensions for Windows Instrumentation Management, _TDL is a new ACPI- +defined method (Throttling Depth Limit.) + +Fixed a problem where a zero-length VendorShort or VendorLong resource +descriptor was incorrectly emitted as a descriptor of length one. + +---------------------------------------- +10 February 2006. Summary of changes for version 20060210: + +1) ACPI CA Core Subsystem: + +Removed a couple of extraneous ACPI_ERROR messages that appeared during +normal execution. These became apparent after the conversion from +ACPI_DEBUG_PRINT. + +Fixed a problem where the CreateField operator could hang if the BitIndex or +NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) + +Fixed a problem where a DeRefOf operation on a buffer object incorrectly +failed with an exception. This also fixes a couple of related RefOf and +DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) + +Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of +AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ +5480) + +Implemented a memory cleanup at the end of the execution of each iteration +of an AML While() loop, preventing the accumulation of outstanding objects. +(Valery Podrezov, BZ 5427) + +Eliminated a chunk of duplicate code in the object resolution code. (Valery +Podrezov, BZ 5336) + +Fixed several warnings during the 64-bit code generation. + +The AcpiSrc source code conversion tool now inserts one line of whitespace +after an if() statement that is followed immediately by a comment, improving +readability of the Linux code. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These +values do not include any ACPI driver or OSPM code. The debug version of the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total + Debug Version: 161.3K Code, 65.7K Data, 227.0K Total + Current Release: + Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total + Debug Version: 161.3K Code, 65.6K Data, 226.9K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem with the disassembly of a BankField operator with a complex +expression for the BankValue parameter. + +---------------------------------------- +27 January 2006. Summary of changes for version 20060127: + +1) ACPI CA Core Subsystem: + +Implemented support in the Resource Manager to allow unresolved namestring +references within resource package objects for the _PRT method. This support +is in addition to the previously implemented unresolved reference support +within the AML parser. If the interpreter slack mode is enabled, these +unresolved references will be passed through to the caller as a NULL package +entry. + +Implemented and deployed new macros and functions for error and warning +messages across the subsystem. These macros are simpler and generate less +code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, +ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older +macros remain defined to allow ACPI drivers time to migrate to the new +macros. + +Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the +Acquire/Release Lock OSL interfaces. + +Fixed a problem where Alias ASL operators are sometimes not correctly +resolved, in both the interpreter and the iASL compiler. + +Fixed several problems with the implementation of the ConcatenateResTemplate +ASL operator. As per the ACPI specification, zero length buffers are now +treated as a single EndTag. One-length buffers always cause a fatal +exception. Non-zero length buffers that do not end with a full 2-byte EndTag +cause a fatal exception. + +Fixed a possible structure overwrite in the AcpiGetObjectInfo external +interface. (With assistance from Thomas Renninger) + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These +values do not include any ACPI driver or OSPM code. The debug version of the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total + Debug Version: 163.2K Code, 66.2K Data, 229.4K Total + Current Release: + Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total + Debug Version: 161.3K Code, 65.7K Data, 227.0K Total + + +2) iASL Compiler/Disassembler: + +Fixed an internal error that was generated for any forward references to ASL +Alias objects. + +---------------------------------------- +13 January 2006. Summary of changes for version 20060113: + +1) ACPI CA Core Subsystem: + +Added 2006 copyright to all module headers and signons. This affects +virtually every file in the ACPICA core subsystem, iASL compiler, and the +utilities. + +Enhanced the ACPICA error reporting in order to simplify user migration to +the non-debug version of ACPICA. Replaced all instances of the +ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug +levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, +respectively. This preserves all error and warning messages in the non-debug +version of the ACPICA code (this has been referred to as the "debug lite" +option.) Over 200 cases were converted to create a total of over 380 +error/warning messages across the ACPICA code. This increases the code and +data size of the default non-debug version of the code somewhat (about 13K), +but all error/warning reporting may be disabled if desired (and code +eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time +configuration option. The size of the debug version of ACPICA remains about +the same. + +Fixed a memory leak within the AML Debugger "Set" command. One object was +not properly deleted for every successful invocation of the command. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These +values do not include any ACPI driver or OSPM code. The debug version of the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total + Debug Version: 163.7K Code, 67.5K Data, 231.2K Total + Current Release: + Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total + Debug Version: 163.2K Code, 66.2K Data, 229.4K Total + + +2) iASL Compiler/Disassembler: + +The compiler now officially supports the ACPI 3.0a specification that was +released on December 30, 2005. (Specification is available at www.acpi.info) + +---------------------------------------- +16 December 2005. Summary of changes for version 20051216: + +1) ACPI CA Core Subsystem: + +Implemented optional support to allow unresolved names within ASL Package +objects. A null object is inserted in the package when a named reference +cannot be located in the current namespace. Enabled via the interpreter +slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines +that contain such code. + +Implemented an optimization to the initialization sequence that can improve +boot time. During ACPI device initialization, the _STA method is now run if +and only if the _INI method exists. The _STA method is used to determine if +the device is present; An _INI can only be run if _STA returns present, but +it is a waste of time to run the _STA method if the _INI does not exist. +(Prototype and assistance from Dong Wei) + +Implemented use of the C99 uintptr_t for the pointer casting macros if it is +available in the current compiler. Otherwise, the default (void *) cast is +used as before. + +Fixed some possible memory leaks found within the execution path of the +Break, Continue, If, and CreateField operators. (Valery Podrezov) + +Fixed a problem introduced in the 20051202 release where an exception is +generated during method execution if a control method attempts to declare +another method. + +Moved resource descriptor string constants that are used by both the AML +disassembler and AML debugger to the common utilities directory so that +these components are independent. + +Implemented support in the AcpiExec utility (-e switch) to globally ignore +exceptions during control method execution (method is not aborted.) + +Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix +generation. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These +values do not include any ACPI driver or OSPM code. The debug version of the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total + Debug Version: 163.2K Code, 67.4K Data, 230.6K Total + Current Release: + Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total + Debug Version: 163.7K Code, 67.5K Data, 231.2K Total + + +2) iASL Compiler/Disassembler: + +Fixed a problem where a CPU stack overflow fault could occur if a recursive +method call was made from within a Return statement. + +---------------------------------------- +02 December 2005. Summary of changes for version 20051202: + +1) ACPI CA Core Subsystem: + +Modified the parsing of control methods to no longer create namespace +objects during the first pass of the parse. Objects are now created only +during the execute phase, at the moment the namespace creation operator is +encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This +should eliminate ALREADY_EXISTS exceptions seen on some machines where +reentrant control methods are protected by an AML mutex. The mutex will now +correctly block multiple threads from attempting to create the same object +more than once. + +Increased the number of available Owner Ids for namespace object tracking +from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on +some machines with a large number of ACPI tables (either static or dynamic). + +Fixed a problem with the AcpiExec utility where a fault could occur when the +-b switch (batch mode) is used. + +Enhanced the namespace dump routine to output the owner ID for each +namespace object. + +Code and Data Size: The current and previous library sizes for the core +subsystem are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These +values do not include any ACPI driver or OSPM code. The debug version of the +code includes the debug output trace mechanism and has a much larger code +and data size. Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during generation. + + Previous Release: + Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total + Debug Version: 163.0K Code, 67.4K Data, 230.4K Total + Current Release: + Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total + Debug Version: 163.2K Code, 67.4K Data, 230.6K Total + + +2) iASL Compiler/Disassembler: + +Fixed a parse error during compilation of certain Switch/Case constructs. To +simplify the parse, the grammar now allows for multiple Default statements +and this error is now detected and flagged during the analysis phase. + +Disassembler: The disassembly now includes the contents of the original +table header within a comment at the start of the file. This includes the +name and version of the original ASL compiler. + +---------------------------------------- +17 November 2005. Summary of changes for version 20051117: + +1) ACPI CA Core Subsystem: + +Fixed a problem in the AML parser where the method thread count could be +decremented below zero if any errors occurred during the method parse phase. +This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines. +This also fixed a related regression with the mechanism that detects and +corrects methods that cannot properly handle reentrancy (related to the +deployment of the new OwnerId mechanism.) + +Eliminated the pre-parsing of control methods (to detect errors) during +table load. Related to the problem above, this was causing unwind issues if +any errors occurred during the parse, and it seemed to be overkill. A table +load should not be aborted if there are problems with any single control +method, thus rendering this feature rather pointless. + +Fixed a problem with the new table-driven resource manager where an internal +buffer overflow could occur for small resource templates. + +Implemented a new external interface, AcpiGetVendorResource. This interface +will find and return a vendor-defined resource descriptor within a _CRS or +_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas. + +Removed the length limit (200) on string objects as per the upcoming ACPI +3.0A specification. This affects the following areas of the interpreter: 1) +any implicit conversion of a Buffer to a String, 2) a String object result +of the ASL 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. |