mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-23 11:18:54 +00:00
8449 lines
315 KiB
Plaintext
8449 lines
315 KiB
Plaintext
----------------------------------------
|
|
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.
|