19651 lines
754 KiB
Plaintext
19651 lines
754 KiB
Plaintext
----------------------------------------
|
|
31 March 2022. Summary of changes for version 20220331:
|
|
|
|
0) Global changes:
|
|
|
|
Update all copyright notices to the year 2022. This effects all source
|
|
modules, as well as utility signons.
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
For the ASL Sleep() operator, issue a warning if the sleep value is
|
|
greater than 10 Milliseconds. Quick boottime is important, so warn about
|
|
sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
|
|
ms, so excessive delays should be called out. 10 ms is chosen randomly,
|
|
but three of such delays would already make up ten percent of the
|
|
boottime.
|
|
|
|
Namespace: Avoid attempting to walk the Namespace if the Namespace does
|
|
not exist.
|
|
|
|
AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
|
|
LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
|
|
pass/fail integer. Now load returns a pass/fail integer, as well as
|
|
storing the return value in an optional 2nd argument.
|
|
|
|
Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
|
|
"performing pointer subtraction with a null pointer has undefined
|
|
behavior" compiler warnings, use uintptr_t and offsetof() that are always
|
|
available during Linux kernel builds to define ACPI_UINTPTR_T and the
|
|
ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
|
|
in the Linux kernel.
|
|
|
|
Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
|
|
by superm1.
|
|
|
|
executer/exsystem: Inform users about ACPI spec violation for the Stall()
|
|
operator. Values greater than 100 microseconds violate the ACPI
|
|
specification, so warn users about it. From the ACPI Specification
|
|
version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*:
|
|
> The implementation of Stall is OS-specific, but must not relinquish
|
|
> control of the processor. Because of this, delays longer than 100
|
|
> microseconds must use Sleep instead of Stall.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
Data Table Compiler/Disassembler: Add support for the APMT table - ARM
|
|
Performance Monitoring Unit table. Submitted by @bwicaksononv.
|
|
|
|
Data Table Compiler/Disassembler: For MADT, add support for the OEM-
|
|
defined subtables (Types 0x80-0x7F).
|
|
|
|
Data Table Compiler: Fixed a problem with support for the SDEV table,
|
|
where a subtable Length was not computed correctly.
|
|
|
|
Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
|
|
Acpi table support.
|
|
|
|
Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
|
|
add template. Submitted by MasterDrogo.
|
|
|
|
Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
|
|
iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
|
|
readability of the code.
|
|
iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
|
|
Undocumented bytes at the end of Endpoint Descriptor can be present
|
|
independently of Linux-specific structures. Their size can also vary.
|
|
iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
|
|
bytes of size and then an amount of bytes specified by size. All of the
|
|
terminators that I've seen had a size equal to 4, but theoretically it
|
|
can vary.
|
|
|
|
iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
|
|
|
|
iASL: Remove a remark due to excessive output. Removed a remark for
|
|
duplicate Offset() operators, due to a user complaint.
|
|
|
|
----------------------------------------
|
|
17 December 2021. Summary of changes for version 20211217:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Hardware: Do not flush CPU cache when entering S4 and S5. According to
|
|
ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to
|
|
S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of
|
|
the sleep state. Blind cache flush on entering S5 causes problems for
|
|
TDX.
|
|
|
|
Avoid subobject buffer overflow when validating RSDP signature. Since the
|
|
Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to
|
|
it is only to a 4-char array, and so trying to read past the 4th
|
|
character, as will be done when it is an RSDP, reads beyond the bounds of
|
|
the accessed member. Contributed by jrtc27.
|
|
|
|
Add support for PCC Opregion special context data. PCC Opregion added in
|
|
ACPIC 6.3 requires special context data similar to GPIO and Generic
|
|
Serial Bus as it needs to know the internal PCC buffer and its length as
|
|
well as the PCC channel index when the opregion handler is being executed
|
|
by the OSPM. Adds support for the special context data needed by PCC
|
|
Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com>
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: Completed compiler support for the NHLT ACPI table.
|
|
|
|
iASL/NHLT table: Fixed a reported problem where a fault would occur
|
|
during disassembly of a "Linux-Specific" section if the "Specific Data"
|
|
part was not present.
|
|
|
|
iASL: Added full support (compiler and disassembler) for the AGDI ACPI
|
|
table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>.
|
|
|
|
iASL: Added full support for the TDEL ACPI table.
|
|
|
|
iASL table compiler: FADT support updates:
|
|
1) Allow the 32-bit DSDT address to be zero.
|
|
2) Issue error if both the 32-bit and 64-bit DSDT addresses are zero.
|
|
|
|
iASL: Fix unaligned accesses to local cache allocations. Contributed by
|
|
jrtc27.
|
|
|
|
iASL: Open binary input files in binary mode, not text mode Affects
|
|
binary input AML files, as well as binary data table files, for
|
|
disassembly.
|
|
|
|
----------------------------------------
|
|
30 September 2021. Summary of changes for version 20210930:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Hardware: Avoid evaluating methods too early during system resume. During
|
|
wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called
|
|
and it tries to get memory from the OS in order to evaluate a control
|
|
method, but if KFENCE is enabled in the Linux kernel, the memory
|
|
allocation attempt causes an IRQ work to be queued and a self-IPI to be
|
|
sent to the CPU running the code which requires the memory controller to
|
|
be ready, so if that happens too early in the wakeup path, it doesn't
|
|
work.
|
|
|
|
Prevent that from taking place by calling AcpiGetSleepTypeData() for S0
|
|
upfront, when preparing to enter a given sleep state, and saving the data
|
|
obtained by it for later use during system wakeup.
|
|
|
|
Added a new _OSI string, "Windows 2020". Posted by superm1.
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS
|
|
objects:
|
|
New/latest rules: Under a Device Object:
|
|
1) If _PRS is present, must have _CRS and _SRS
|
|
2) If _SRS is present, must have _PRS (_PRS requires _CRS and
|
|
_SRS)
|
|
3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS
|
|
requires _CRS and _SRS)
|
|
4) If _SRS is present, probably should have a _DIS (Remark only)
|
|
|
|
iASL table disassembler: Added disassembly support for the NHLT ACPI
|
|
table. Note: support for Vendor-defined microphone arrays and SNR
|
|
extensions are not supported at this time -- mostly due to a lack of
|
|
example tables. Actual compiler support for NHLT is forthcoming.
|
|
|
|
Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It
|
|
uses the same subtable structure as the existing Generic Initiator
|
|
Affinity type.
|
|
|
|
Added the flag for online capable in the MADT, introduced in ACPI 6.3.
|
|
Posted by superm1.
|
|
|
|
3) ACPICA documentation: Updated the legal info (that appears at the
|
|
start of the Documents) to clarify distribution rights that are granted.
|
|
|
|
|
|
----------------------------------------
|
|
30 July 2021. Summary of changes for version 20210730:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021).
|
|
Under the Device Object:
|
|
1) If _DIS is present, must have a _CRS and _SRS
|
|
2) If _PRS is present, must have a _CRS, _DIS, and _SRS
|
|
3) If _SRS is present, must have a _CRS and _DIS
|
|
A warning will be issued for each of these cases.
|
|
Note: For existing ASL/projects, these warnings may be disabled by
|
|
specifying this on the command line:
|
|
"-vw 3141"
|
|
|
|
iASL Table Disassembler/Table compiler: Fix for WPBT table with no
|
|
command-line arguments. Handle the case where the Command-line
|
|
Arguments table field does not exist (zero).
|
|
|
|
Headers: Add new DBG2 Serial Port Subtypes
|
|
The Microsoft Debug Port Table 2 (DBG2) specification revision
|
|
September 21, 2020 comprises additional Serial Port Subtypes [1].
|
|
Reflect that in the actbl1.h header file. Submitted by:
|
|
semihalf-wojtas-marcin
|
|
|
|
iASL: Add full support for the AEST table (data compiler)
|
|
Includes support in the table compiler and the disassembler.
|
|
|
|
Add PRMT module header to facilitate parsing.
|
|
This structure is used in to parse PRMT in other Operating Systems
|
|
that relies on using subtable headers in order to parse ACPI tables.
|
|
Although the PRMT doesn't have "subtables" it has a list of module
|
|
information structures that act as subtables.
|
|
|
|
iASL: Table disassembler: Add missing strings to decode subtable types.
|
|
Includes the MADT and CEDT tables.
|
|
|
|
|
|
----------------------------------------
|
|
04 June 2021. Summary of changes for version 20210604:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Cleaned up (delete) the context mutex during local address handler object
|
|
deletion.
|
|
|
|
Fixed a memory leak caused by the _CID repair function.
|
|
|
|
Added support for PlatformRtMechanism OperationRegion handler. Adds a new
|
|
utility function, AcpiUtConvertUuidToString. Writing a buffer to a
|
|
PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
|
|
input buffer contains 26 bytes containing 9 bytes of status, a command
|
|
byte and a 16-byte UUID. This change will simply pass this incoming
|
|
buffer to a handler registered by the OS.
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
Added full support for the PRMT ACPI table (Platform Runtime Mechanism
|
|
Table). Includes support in the iASL compiler, the disassembler, and the
|
|
template generator.
|
|
|
|
Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
|
|
|
|
Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
|
|
table.
|
|
|
|
Added full support for the SVKL (Storage Volume Key Location Table) ACPI
|
|
table. Header file support from Kuppuswamy Sathyanarayanan
|
|
<sathyanarayanan.kuppuswamy@linux.intel.com>.
|
|
|
|
Completed full support for the IVRS (I/O Virtualization Reporting
|
|
Structure) ACPI table. Added compiler support for IVRS, updated
|
|
disassembler support. Adds a new utility, UtIsIdInteger, to determine if
|
|
a HID/CID is an integer or a string.
|
|
|
|
Headers: Added more structs to the CEDT table: CXL fixed memory window
|
|
structure.
|
|
|
|
ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
|
|
|
|
----------------------------------------
|
|
31 March 2021. Summary of changes for version 20210331:
|
|
|
|
This release is available at https://acpica.org/downloads, and includes
|
|
all ACPI 6.4 support
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
ACPI 6.4: iASL: deprecate DDBHandleObj keyword
|
|
Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
|
|
allocating an object using kmalloc(), but then frees it
|
|
using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
|
|
Fixed a race condition in generic serial bus operation region handler.
|
|
Fixed by Hans de Goede.
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
ACPI 6.4: NFIT: add Location Cookie field
|
|
ACPI 6.4: HMAT: add new fields/flags
|
|
ACPI 6.4: Add new flags in SRAT
|
|
ACPI 6.4: add SDEV secure access components
|
|
ACPI 6.4: add Csi2Bus resource template
|
|
ACPI 6.4: add support for PHAT table
|
|
ACPI 6.4: add support for PMTT table
|
|
Add disassembly support for the IVRS table. Compilation of the table is
|
|
not yet complete.
|
|
Fixed a potential infinite loop due to type mismatch. The for-loop is
|
|
using a UINT8 counter and comparing the upper
|
|
limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
|
|
the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
|
|
will wrap around to zero and the loop will never exit. I suspect
|
|
the AslGbl_ExpectedMessagesIndex is never that high, but fixing
|
|
this does future proof the code and cleans up static analysis
|
|
warnings.Colin King.
|
|
iASL/TableCompiler: update it with IORT table E.b revision changes. From
|
|
shamiali2008.
|
|
iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
|
|
off-by: Jean-Philippe Brucker.
|
|
iASL/TableCompiler: Add compilation support for CEDT table. Also, update
|
|
the CEDT template.
|
|
|
|
----------------------------------------
|
|
05 January 2021. Summary of changes for version 20210105:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated all copyrights to 2021. This affects all ACPICA source code
|
|
modules.
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
ASL test suite (ASLTS): Updated all copyrights to 2021.
|
|
|
|
Tools and utilities: Updated all signon copyrights to 2021.
|
|
|
|
iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
|
|
MTMR. Al Stone.
|
|
|
|
|
|
----------------------------------------
|
|
17 December 2020. Summary of changes for version 20201217:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Note: The implementation of ACPI 6.4 is underway, and is expected to be
|
|
mostly finished next month, when ACPI 6.4 is released.
|
|
|
|
From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
|
|
several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
|
|
enable this.
|
|
|
|
AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
|
|
These included a few casts, as well as a null pointer check.
|
|
|
|
Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
|
|
implicit fallthrough, as well as __attribute__((__fallthrough__)) and
|
|
comments to explicitly denote that cases of fallthrough were intentional.
|
|
Clang also supports this warning and statement attribute, but not the
|
|
comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
|
|
of GCC. With assistance from @nickdesaulniers.
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
Added improvement to method call analysis by saving the return type and
|
|
relaxing certain cases of type checking.
|
|
|
|
iASL Table Compiler: Improved info messages. Added a message to the -T
|
|
option for when the default template (DSDT) is used.
|
|
Also added a note for when multiple SSDTs are created with a DSDT that
|
|
the SSDTs are created in the same file as the DSDT.
|
|
|
|
|
|
----------------------------------------
|
|
|
|
13 November 2020. Summary of changes for version 20201113:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Interpreter: fixed a memory leak by using use existing buffer in _HID
|
|
repair. There was a memory leak that occurred when a _CID object is
|
|
defined as a package containing string objects. When _CID is checked for
|
|
any possible repairs, it calls a helper function to repair _HID (because
|
|
_CID basically contains multiple _HID entries). The _HID repair function
|
|
assumes that string objects are standalone objects that are not contained
|
|
inside of any packages. The _HID repair function replaced the string
|
|
object with a brand new object and attempted to delete the old object by
|
|
decrementing the reference count of the old object. Strings inside of
|
|
packages have a reference count of 2 so the _HID repair function leaves
|
|
this object in a dangling state and causes a memory leak. Instead of
|
|
allocating a brand new object and removing the old object, use the
|
|
existing object when repairing the _HID object.
|
|
|
|
Added function trace macros to improve namespace debugging. The namespace
|
|
repair mechanism does not have function tracing macros. Add several trace
|
|
macros to improve debuggability.
|
|
|
|
Handle "orphan" _REG methods for GPIO OpRegions. Before this change
|
|
AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
|
|
matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
|
|
Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
|
|
The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
|
|
UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
|
|
to potential issues with checks for OpRegion availability, or in other
|
|
words checks if _REG has been called for the OpRegion which the ACPI code
|
|
wants to use. Except for the "orphan" EC handling, ACPICA core does not
|
|
call _REG on an ACPI node which does not define an OpRegion matching the
|
|
type being registered; and the reference design DSDT, from which most
|
|
Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
|
|
UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
|
|
were assigned ACPI controlled functions in the reference design. Together
|
|
this leads to the perfect storm, at least on the Cherry Trail based
|
|
Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
|
|
and has added the Cherry Trail specific UserDefined(0x93) opregion to its
|
|
GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
|
|
availability check for the standard GeneralPurposeIo OpRegion. This
|
|
clearly is a bug in the DSDT, but this does work under Windows. This
|
|
issue leads to the intel vbtn driver reporting the device always being in
|
|
tablet-mode at boot, even if it is in laptop mode. Which in turn causes
|
|
userspace to ignore touchpad events. So in other words, this issue causes
|
|
the touchpad to not work at boot. This change fixes this by extending the
|
|
"orphan" _REG method handling to also apply to GPIO address-space
|
|
handlers.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: Added more info to namespace dump file (-ln option). In a separate
|
|
section of the dump file (after the main namespace dump), emit the full
|
|
pathname for each namespace node, its type, and the ASL filename and line
|
|
number where it is declared.
|
|
|
|
AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
|
|
x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
|
|
is omitted, all iASL exceptions are displayed.
|
|
|
|
iASL: Use StringLiteral instead of StringData for some ASL macros. The
|
|
use of the stringData rule allows for some "string" oriented opcodes
|
|
(Such as ToString, ToHexString, etc.) None of which make sense with the
|
|
macros in question. This change modifies the StringData part of the rule
|
|
for these macros to a simple string literal - thus disallowing the use
|
|
of ToString, ToHexString, etc.
|
|
The following ASL operators (macros) are affected:
|
|
EisaId
|
|
Fprintf
|
|
Printf
|
|
ToUuid
|
|
Unicode
|
|
Note: The MS compiler requires the use of string literals for these
|
|
operators also.
|
|
|
|
iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
|
|
the list of "known" UUIDs for the input to the ToUUID macro.
|
|
|
|
Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
|
|
NFIT table.
|
|
|
|
|
|
----------------------------------------
|
|
|
|
25 September 2020. Summary of changes for version 20200925:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Preserve memory opregion mappings. The ACPICA's strategy with respect to
|
|
the handling of memory mappings associated with memory operation regions
|
|
is to avoid mapping the entire region at once which may be problematic at
|
|
least in principle (for example, it may lead to conflicts with
|
|
overlapping mappings having different attributes created by drivers). It
|
|
may also be wasteful, because memory opregions on some systems take up
|
|
vastchunks of address space while the fields in those regions actually
|
|
accessed by AML are sparsely distributed.
|
|
|
|
For this reason, a one-page "window" is mapped for a given opregion on
|
|
the first memory access through it and if that "window" does not cover an
|
|
address range accessed through that opregion subsequently, it is unmapped
|
|
and a new "window" is mapped to replace it. Next, if the new "window" is
|
|
not sufficient to access memory through the opregion in question in the
|
|
future, it will be replaced with yet another "window" and so on. That
|
|
may lead to a suboptimal sequence of memory mapping and unmapping
|
|
operations, for example if two fields in one opregion separated from each
|
|
other by a sufficiently wide chunk of unused address space are accessed
|
|
in an alternating pattern.
|
|
|
|
Added support for 64 bit risc-v compilation. Useful for acpica tools and
|
|
incorporating ACPICA into the Firmware Test Suite. Colin Ian King
|
|
<colin.king@canonical.com>.
|
|
|
|
Added support for SMBus predefined names (from SMBus Control Method
|
|
Interface Specification, Version 1.0, December 10, 1999. New predefined
|
|
names:
|
|
_SBA
|
|
_SBI
|
|
_SBR
|
|
_SBT
|
|
_SBW
|
|
|
|
AML Disassembler: Added a new command, "All <NameSeg>". This command will
|
|
evaluate all objects in the current namespace whose NameString contains
|
|
the input NameSeg as the last element of the NameString. Useful for
|
|
debugging.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: fixed a crash that occurred when predefined objects return packages
|
|
with lengths that exceed the initializer list.
|
|
|
|
iASL: added more detail to external resolution error message when
|
|
compiling multiple definition blocks.
|
|
|
|
iASL: added a remark for an attempt to create a nameseg or namestring
|
|
containing lower-case letters. This should prevent declaring multiple
|
|
namesegs or namestrings in an attempt to refer to different objects (with
|
|
different cases), but actually refer to the same object(s).
|
|
|
|
iASL: improve alias analysis by saving object type. If the alias is a
|
|
method type, the parameter count is also recorded.
|
|
|
|
AcpiExec: Increase the default loop timeout value. Was 1 second, is now
|
|
10 seconds. Prevents unnecessary timeouts when executing control methods
|
|
from the command line.
|
|
|
|
AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
|
|
list. Includes:
|
|
Memory Device
|
|
Generic Buttons Device
|
|
NVDIMM Root Device
|
|
Control Method Battery
|
|
Device Graphs for _DSD method
|
|
Hierarchical Data Extension
|
|
....ARM CoreSight Graph
|
|
|
|
----------------------------------------
|
|
|
|
|
|
17 July 2020. Summary of changes for version 20200717:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Do not increment OperationRegion reference counts for field units. Recent
|
|
server firmware has revealed that this reference count can overflow on
|
|
large servers that declare many field units (thousands) under the same
|
|
OperationRegion. This occurs because each field unit declaration will add
|
|
a reference count to the source OperationRegion. This release solves the
|
|
reference count overflow for OperationRegion objects by preventing
|
|
fieldUnits from incrementing their parent OperationRegion's reference
|
|
count.
|
|
|
|
Replaced one-element arrays with flexible-arrays, which were introduced
|
|
in C99.
|
|
|
|
Restored the readme file containing the directions for generation of
|
|
ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
|
|
located at: generate/msvc2017/readme.txt
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: Fixed a regression found in version 20200214. Prevent iASL from
|
|
emitting an extra byte of garbage data when control methods declared a
|
|
single parameter type without using braces. This extra byte is known to
|
|
cause a blue screen on the Windows AML interpreter.
|
|
|
|
iASL: Made a change to allow external declarations to specify the type of
|
|
a named object even when some name segments are not defined.
|
|
This change allows the following ASL code to compile (When DEV0 is not
|
|
defined or not defined yet):
|
|
|
|
External (\_SB.DEV0.OBJ1, IntObj)
|
|
External (\_SB.DEV0, DeviceObj)
|
|
|
|
iASL: Fixed a problem where method names in "Alias ()" statement could be
|
|
misinterpreted. They are now interpreted correctly as method invocations.
|
|
|
|
iASL: capture a method parameter count (Within the Method info segment,
|
|
as well as the argument node) when using parameter type lists.
|
|
|
|
----------------------------------------
|
|
|
|
|
|
28 May 2020. Summary of changes for version 20200528:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Removed old/obsolete Visual Studio files which were used to build the
|
|
Windows versions of the ACPICA tools. Since we have moved to Visual
|
|
Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
|
|
project files. The new subdirectory and solution file are located at:
|
|
|
|
acpica/generate/msvc2017/AcpiComponents.sln
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: added support for a new OperationRegion Address Space (subtype):
|
|
PlatformRtMechanism. Support for this new keyword is being released for
|
|
early prototyping. It will appear in the next release of the ACPI
|
|
specification.
|
|
|
|
iASL: do not optimize the NameString parameter of the CondRefOf operator.
|
|
In the previous iASL compiler release, the NameString parameter of the
|
|
CondRefOf was optimized. There is evidence that some implementations of
|
|
the AML interpreter do not perform the recursive search-to-parent search
|
|
during the execution of the CondRefOf operator. Therefore, the CondRefOf
|
|
operator behaves differently when the NameString parameter is a single
|
|
name segment (a NameSeg) as opposed to a full NamePath (starting at the
|
|
root scope) or a NameString containing parent prefixes.
|
|
|
|
iASL: Prevent an inadvertent remark message. This change prevents a
|
|
remark if within a control method the following exist:
|
|
1) An Operation Region is defined, and
|
|
2) A Field operator is defined that refers to the region.
|
|
This happens because at the top level, the Field operator does not
|
|
actually create a new named object, it simply references the operation
|
|
region.
|
|
|
|
Removed support for the acpinames utility. The acpinames was a simple
|
|
utility used to populate and display the ACPI namespace without executing
|
|
any AML code. However, ACPICA now supports executable opcodes outside of
|
|
control methods. This means that executable AML opcodes such as If and
|
|
Store opcodes need to be executed during table load. Therefore, acpinames
|
|
would need to be updated to match the same behavior as the acpiexec
|
|
utility and since acpiexec can already dump the entire namespace (via the
|
|
'namespace' command), we no longer have the need to maintain acpinames.
|
|
|
|
In order to dump the contents of the ACPI namespace using acpiexec,
|
|
execute the following command from the command line:
|
|
|
|
acpiexec -b "n" [aml files]
|
|
|
|
----------------------------------------
|
|
|
|
|
|
30 April 2020. Summary of changes for version 20200430:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Cleaned up the coding style of a couple of global variables
|
|
(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
|
|
AcpiProtocolLengths was made static, and the definition of
|
|
AcpiGbl_NextCmdNum was moved to acglobal.h.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL DataTable Compiler: Fixed a segfault on errors that aren't directly
|
|
associated with a field.
|
|
|
|
Disassembler: has been made more resilient so that it will continue to
|
|
parse AML even if the AML generates ACPI namespace errors. This enables
|
|
iASL to disassemble some AML that may have been compiled using older
|
|
versions of iASL that no longer compile with newer versions of iASL.
|
|
|
|
iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
|
|
was a mixup where _NIG required one parameter and _NIH required zero
|
|
parameters. This change swaps these parameter requirements. Now it is
|
|
required that _NIH must be called with one parameter and _NIG requires
|
|
zero parameters.
|
|
|
|
iASL: Allow use of undefined externals as long as they are protected by
|
|
an if (CondRefOf (...)) block when compiling multiple definition blocks.
|
|
|
|
iASL: Fixed the type override behavior of named objects that are declared
|
|
as External. External declarations will no longer override the type of
|
|
the actual definition if it already exists.
|
|
|
|
AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
|
|
command line wildcard support on Windows. Note: the AcpiNames utility is
|
|
essentially redundant with the AcpiExec utility (using the "namespace"
|
|
command) and is therefore deprecated. It will be removed in future
|
|
releases of ACPICA.
|
|
|
|
Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
|
|
operators. The disassembler is intended to emit existing ASL code as-is.
|
|
Therefore, error messages emitted during disassembly should be ignored or
|
|
handled in a way such that the disassembler can continue to parse the
|
|
AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
|
|
parsing for create operators in order to complete parsing ASL termlists.
|
|
|
|
iASL DataTable Compiler: IVRS table: fix potentially uninitialized
|
|
variable warning. Some compilers catch potential uninitialized variables.
|
|
This is done by examining branches of if/else statements. This change
|
|
replaces an "else if" with an "else" to fix the uninitialized variable
|
|
warning.
|
|
|
|
|
|
----------------------------------------
|
|
26 March 2020. Summary of changes for version 20200326:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Performed a code clean-up to prevent build errors on early versions of
|
|
GCC-10.
|
|
|
|
Added the NHLT table signature. iASL data table compiler/disassembler
|
|
support for this table is coming soon.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
AcpiExec: Fixed several problems with the namespace initialization file
|
|
(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
|
|
errors, several seg faults, and enhancements to line parsing within the
|
|
init file. In addition, each object found in the init file and it's new
|
|
value is displayed, as well as any such entries that do not have a
|
|
corresponding name in the namespace. For reference, the syntax for the
|
|
various supported data types are presented below:
|
|
PCHG 0x777788889999BBBB // Integer
|
|
\DEV1.STR1 "XYZ" // String
|
|
BUF1 (88 99 AA) // Buffer
|
|
PKG1 [0x1111 0x2222] // Package
|
|
\BF1 0x7980 // BufferField
|
|
RCRV 0x0123456789ABCDEF // Field Unit
|
|
|
|
iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
|
|
can be used anywhere in a given ASL file to configure iASL to expect an
|
|
iASL compiler error code on the line where this macro was placed. If the
|
|
error code does not exist, an error is generated. This is intended to be
|
|
used for ACPICA's ASL test suite, but can be used by ASL developers as
|
|
well.
|
|
|
|
iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
|
|
IVRS table parsing supported only IVHD type 10h structures. Parsing an
|
|
IVHD type 11h caused the iasl to report unknown subtable type. Add
|
|
necessary structure definition for IVHD type 11h and apply correct
|
|
parsing method based on subtable type. Micha? ?ygowski.
|
|
|
|
iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
|
|
According to AMD IOMMU Specification Revision 3.05 the reserved field
|
|
should be IOMMU Feature Reporting. Change the name of the field to the
|
|
correct one. Micha? ?ygowski.
|
|
|
|
acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
|
|
based on suggestions by David Seifert and Benjamin Berg.
|
|
|
|
iASL: table compiler: removed an unused variable (DtCompilerParserResult)
|
|
causing linking errors. Patch based on suggestions by David Seifert and
|
|
Benjamin Berg.
|
|
|
|
iASL: table compiler: make LexBuffer static to avoid linking errors in
|
|
newer compilers. Patch based on suggestions by David Seifert and Benjamin
|
|
Berg.
|
|
|
|
iASL: fixed type matching between External and Named objects. External
|
|
object types can only be expressed with ACPI object type values that are
|
|
defined in the ACPI spec. However, iASL uses ACPI object type values that
|
|
are local to ACPICA in addition to the values defined in the ACPI spec.
|
|
This change implements type matching to map some object type values
|
|
specific to ACPICA to ones that are defined in the ACPI spec.
|
|
|
|
iASL: Dropped the type mismatch compiler error that can arise from
|
|
External declarations to a warning. This warning can occur when there is
|
|
a type difference between the external declaration and the actual object
|
|
declaration (when compiling multiple files/modules simultaneously).
|
|
|
|
iASL: removed an incorrect error message regarding externals. This change
|
|
removes an incorrect error that is emitted when a duplicate external
|
|
declaration does not contain a type that opens a scope. This is incorrect
|
|
because the duplicate external with conflicting types are already caught
|
|
by iASL and it doesn't make any sense to enforce what this conflicting
|
|
type should be.
|
|
|
|
AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
|
|
surrounded by parens. Otherwise, a logical statement that applies a
|
|
logical not operator to this macro could result in a computation that
|
|
applies the operator to the left side of the logical and but not the
|
|
right. Reported-by: John Levon <john.levon@joyent.com>
|
|
|
|
Fixed a problem with the local version of sprint(): On 32-bit, the
|
|
provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
|
|
String + Size will wrap, meaning End < Start, and
|
|
AcpiUtBoundStringOutput() will never output anything as a result. The
|
|
symptom seen of this was acpixtract failing to output anything -- with a
|
|
custom build that included utprint.c. Signed-off-by: John Levon
|
|
<john.levon@joyent.com>
|
|
|
|
iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
|
|
ACPI specification.
|
|
|
|
|
|
----------------------------------------
|
|
14 February 2020. Summary of changes for version 20200214:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered
|
|
in a guest when it receives a sleep trigger from the hypervisor. When the
|
|
guest resumes from this power state, it does not see the SleepEnabled
|
|
bit. In other words, the sleepHibernation (S4) is triggered in a guest
|
|
when it receives a sleep trigger from the hypervisor. When the guest
|
|
resumes from this power state, it does not see the SleepEnabled bit. In
|
|
other words, the sleep button is not enabled on waking from an S4 state.
|
|
This causes subsequent invocation of sleep state to fail since the
|
|
guest.button is not enabled on waking from an S4 state. This causes
|
|
subsequent invocation of sleep state to fail in the guest. Fix this
|
|
problem by enabling the sleep button in ACPI legacy wake. From Anchal
|
|
Agarwal <anchalag@amazon.com>.
|
|
|
|
Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
|
|
for checking the status bits of all enabled GPEs in one go. It is needed
|
|
to distinguish spurious SCIs from genuine ones when deciding whether or
|
|
not to wake up the system from suspend-to-idle.
|
|
|
|
Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
|
|
using HOST in their environment to represent the host name for their
|
|
machines. Avoid this problem by renaming this variable from HOST to
|
|
ACPI_HOST.
|
|
|
|
MSVC 2017 project files: Enable multiprocessor generation to improve
|
|
build performance.
|
|
|
|
Added a macro to get the byte width of a Generic Address structure. New
|
|
ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
|
|
ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: Implemented full support for the (optional, rarely used) ReturnType
|
|
and ParameterTypesList for the Method, Function, and External operators.
|
|
For Method declarations, the number of individual ParameterTypes must
|
|
match the declaration of the number of arguments (NumArgs). This also
|
|
Fixes a problem with the External operator where extra/extraneous bytes
|
|
were emitted in the AML code if the optional ReturnType/ParameterTypes
|
|
were specified for a MethodObj declaration.
|
|
New error message:
|
|
1) Method NumArgs count does not match length of ParameterTypes list
|
|
|
|
iASL: Implemented detection of type mismatches between External
|
|
declarations and named object declarations. Also, detect type mismatches
|
|
between multiple External declarations of the same Name.
|
|
New error messages:
|
|
1) Type mismatch between external declaration and actual object
|
|
declaration detected
|
|
2) Type mismatch between multiple external declarations detected
|
|
|
|
iASL: Implemented new error messages for External operators that specify
|
|
a ReturnType and/or ParameterTypesList for any object type other than
|
|
control methods (MethodObj).
|
|
New error messages:
|
|
1) Return type is only allowed for Externals declared as MethodObj
|
|
2) Parameter type is only allowed for Externals declared as MethodObj
|
|
|
|
iASL: Implemented two new remark/warning messages for ASL code that
|
|
creates named objects from within a control method. This is very
|
|
inefficient since the named object must be created and deleted each time
|
|
the method is executed.
|
|
New messages:
|
|
1) Creation of named objects within a method is highly inefficient, use
|
|
globals or method local variables instead (remark)
|
|
2) Static OperationRegion should be declared outside control method
|
|
(warning)
|
|
|
|
iASL: Improved illegal forward reference detection by adding support to
|
|
detect forward-reference method invocations.
|
|
|
|
iASL: Detect and issue an error message for NameStrings that contain too
|
|
many individual NameSegs (>255). This is an AML limitation that is
|
|
defined in the ACPI specification.
|
|
New message:
|
|
1) NameString contains too many NameSegs (>255)
|
|
|
|
acpidump: windows: use GetSystemFirmwareTable API for all tables except
|
|
SSDT. By using this API, acpidump is able to get all tables in the XSDT
|
|
|
|
iASL: Removed unused parser file and updated msvc2017 project files.
|
|
Removed the obsolete AslCompiler.y from the repository.
|
|
|
|
iASL: msvc2017: Fixed macros in the file dependency list to prevent
|
|
unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
|
|
|
|
Disassembler: Prevent spilling error messages to the output file. All
|
|
errors are directed to the console instead. These error messages
|
|
prevented re-compilation of the resulting disassembled ASL output file
|
|
(.DSL).
|
|
|
|
|
|
----------------------------------------
|
|
10 January 2020. Summary of changes for version 20200110:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated all copyrights to 2020. This affects all ACPICA source code
|
|
modules.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
ASL test suite (ASLTS): Updated all copyrights to 2020.
|
|
|
|
Tools and utilities: Updated all signon copyrights to 2020.
|
|
|
|
iASL: fix forward reference analysis for field declarations. Fixes
|
|
forward reference analysis for field declarations by searching the
|
|
parent scope for the named object when the object is not present in
|
|
the current scope.
|
|
|
|
iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
|
|
full pathname of the name that already exists is printed.
|
|
|
|
iASL: Enhance duplicate Case() detection for buffers. Add check for
|
|
buffers with no initializer list (these buffers will be filled with
|
|
zeros at runtime.)
|
|
|
|
|
|
----------------------------------------
|
|
13 December 2019. Summary of changes for version 20191213:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Return a Buffer object for all fields created via the CreateField
|
|
operator. Previously, an Integer would be returned if the size of
|
|
the field was less than or equal to the current size of an Integer.
|
|
Although this goes against the ACPI specification, it provides
|
|
compatibility with other ACPI implementations. Also updated the
|
|
ASLTS test suite to reflect this new behavior.
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: Implemented detection of (and throw an error for) duplicate
|
|
values for Case statements within a single Switch statement. Duplicate
|
|
Integers, Strings, and Buffers are supported.
|
|
|
|
iASL: Fix error logging issue during multiple file compilation --
|
|
Switch to the correct input file during error node creation.
|
|
|
|
iASL: For duplicate named object creation, now emit an error instead
|
|
of a warning - since this will cause a runtime error.
|
|
|
|
AcpiSrc: Add unix line-ending support for non-Windows builds.
|
|
|
|
iASL: Add an error condition for an attempt to create a NameString
|
|
with > 255 NameSegs (the max allowable via the AML definition).
|
|
|
|
|
|
----------------------------------------
|
|
18 October 2019. Summary of changes for version 20191018:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Debugger: added a new command: ?Fields [address space ID]?. This command
|
|
dumps the contents of all field units that are defined within the
|
|
namespace with a particular address space ID.
|
|
|
|
Modified the external interface AcpiLoadTable() to return a table index.
|
|
This table index can be used for unloading a table for debugging.
|
|
ACPI_STATUS
|
|
AcpiLoadTable (
|
|
ACPI_TABLE_HEADER *Table,
|
|
UINT32 *TableIndex))
|
|
|
|
Implemented a new external interface: AcpiUnloadTable() This new function
|
|
takes a table index as an argument and unloads the table. Useful for
|
|
debugging only.
|
|
ACPI_STATUS
|
|
AcpiUnloadTable (
|
|
UINT32 TableIndex))
|
|
|
|
Ported the AcpiNames utility to use the new table initialization
|
|
sequence. The utility was broken before this change. Also, it was
|
|
required to include most of the AML interpreter into the utility in order
|
|
to process table initialization (module-level code execution.)
|
|
|
|
Update for results from running Clang V8.0.1. This fixes all "dead
|
|
assignment" warnings. There are still several "Dereference of NULL
|
|
pointer" warnings, but these have been found to be false positive
|
|
warnings.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: numerous table compiler changes to ensure that the usage of
|
|
yacc/bison syntax is POSIX-compliant.
|
|
|
|
iASL/disassembler: several simple bug fixes in the data table
|
|
disassembler.
|
|
|
|
Acpiexec: expanded the initialization file (the -fi option) to initialize
|
|
strings, buffers, packages, and field units.
|
|
|
|
|
|
----------------------------------------
|
|
16 August 2019. Summary of changes for version 20190816:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Modified the OwnerId mechanism to allow for more Owner Ids. The previous
|
|
limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
|
|
exceptions on machines with a large number of initialization threads,
|
|
many CPU cores and nested initialization control methods.
|
|
|
|
Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
|
|
checking if the given GPE (as represented by a GPE device handle and a
|
|
GPE number) is currently active and dispatching it (if that's the case)
|
|
outside of interrupt context.
|
|
|
|
Table load: exit the interpreter before initializing objects within the
|
|
new table This prevents re-acquiring the interpreter lock when loading
|
|
tables
|
|
|
|
Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
|
|
uk Kim
|
|
|
|
Macros: removed pointer math on a null pointer. Causes warnings on some
|
|
compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
|
|
instead of using arithmetic.
|
|
|
|
Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
|
|
across all "printf-like" internal functions. Also, cleanup all calls to
|
|
such functions (both in 32-bit mode and 64-bit mode) now that they are
|
|
analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: implemented a new data table compiler flex/bison front-end. This
|
|
change is internal and is not intended to result in changes to the
|
|
compiled code. This new compiler front-end can be invoked using the -tp
|
|
option for now, until the old mechanism is removed.
|
|
|
|
ASLTS: Implemented a new data table compiler test suite. This test suite
|
|
generates all table templates and compile/disassemble/re-compile/binary-
|
|
compare each file.
|
|
|
|
iASL: return -1 if AML files were not generated due to compiler errors
|
|
|
|
iASL: added a warning on use of the now-legacy ASL Processor () keyword.
|
|
|
|
iASL: added an error on _UID object declaration that returns a String
|
|
within a Processor () declaration. A _UID for a processor must be an
|
|
Integer.
|
|
|
|
iASL: added a null terminator to name strings that consist only of
|
|
multiple parent prefixes (^)
|
|
|
|
iASL: added support to compile both ASL and data table files in a single
|
|
command.
|
|
|
|
Updated the tool generation project files that were recently migrated to
|
|
MSVC 2017 to eliminate all new warnings. The new project files appear in
|
|
the directory \acpica\generate\msvc2017. This change effectively
|
|
deprecates the older project files in \acpica\generate\msvc9.
|
|
|
|
|
|
----------------------------------------
|
|
03 July 2019. Summary of changes for version 20190703:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Remove legacy module-level support code. There were still some remnants
|
|
of the legacy module-level code executions. Since we no longer support
|
|
this option, this is essentially dead code and has been removed from the
|
|
ACPICA source.
|
|
|
|
iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
|
|
scope. If these named objects are declared outside the root scope, they
|
|
will not be invoked by any host Operating System.
|
|
|
|
Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
|
|
one) can be enabled in two situations. First, the GPEs with existing _Lxx
|
|
and _Exx methods are enabled implicitly by ACPICA during system
|
|
initialization. Second, the GPEs without these methods (like GPEs listed
|
|
by _PRW objects for wakeup devices) need to be enabled directly by the
|
|
code that is going to use them (e.g. ACPI power management or device
|
|
drivers).
|
|
|
|
In the former case, if the status of a given GPE is set to start with,
|
|
its handler method (either _Lxx or _Exx) needs to be invoked to take care
|
|
of the events (possibly) signaled before the GPE was enabled. In the
|
|
latter case, however, the first caller of AcpiEnableGpe() for a given GPE
|
|
should not be expected to care about any events that might be signaled
|
|
through it earlier. In that case, it is better to clear the status of
|
|
the GPE before enabling it, to prevent stale events from triggering
|
|
unwanted actions (like spurious system resume, for example).
|
|
|
|
For this reason, modify AcpiEvAddGpeReference() to take an additional
|
|
boolean argument indicating whether or not the GPE status needs to be
|
|
cleared when its reference counter changes from zero to one and make
|
|
AcpiEnableGpe() pass TRUE to it through that new argument.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
The tool generation process has been migrated to MSVC 2017, and all
|
|
project files have been upgraded. The new project files appear in the
|
|
directory \acpica\generate\msvc2017. This change effectively deprecates
|
|
the older project files in \acpica\generate\msvc9.
|
|
|
|
iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
|
|
scope. If these named objects are declared outside the root scope, they
|
|
will not be invoked by any host Operating System
|
|
|
|
----------------------------------------
|
|
09 May 2019. Summary of changes for version 20190509:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling
|
|
them") that causes problems with Thunderbolt controllers to occur if a
|
|
dock device is connected at init time (the xhci_hcd and thunderbolt
|
|
modules crash which prevents peripherals connected through them from
|
|
working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
|
|
Dispatch active GPEs at init time") to get undone, so the problem
|
|
addressed by commit ecc1165b8b74 appears again as a result of it.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
Reverted iASL: Additional forward reference detection. This change
|
|
reverts forward reference detection for field declarations. The feature
|
|
unintentionally emitted AML bytecode with incorrect package lengths for
|
|
some ASL code related to Fields and OperationRegions. This malformed AML
|
|
can cause systems to crash
|
|
during boot. The malformed AML bytecode is emitted in iASL version
|
|
20190329 and 20190405.
|
|
|
|
iASL: improve forward reference detection. This change improves forward
|
|
reference detection for named objects inside of scopes. If a parse object
|
|
has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
|
|
a named object that is declared later in the AML bytecode. This is
|
|
allowed if the reference is inside of a method and the declaration is
|
|
outside of a method like so:
|
|
|
|
DefinitionBlock(...)
|
|
{
|
|
Method (TEST)
|
|
{
|
|
Return (NUM0)
|
|
}
|
|
Name (NUM0,0)
|
|
}
|
|
|
|
However, if the declaration and reference are both in the same method or
|
|
outside any methods, this is a forward reference and should be marked as
|
|
an error because it would result in runtime errors.
|
|
|
|
DefinitionBlock(...)
|
|
{
|
|
Name (BUFF, Buffer (NUM0) {}) // Forward reference
|
|
Name (NUM0, 0x0)
|
|
|
|
Method (TEST)
|
|
{
|
|
Local0 = NUM1
|
|
Name (NUM1, 0x1) // Forward reference
|
|
return (Local0)
|
|
}
|
|
}
|
|
|
|
iASL: Implemented additional buffer overflow analysis for BufferField
|
|
declarations. Check if a buffer index argument to a create buffer field
|
|
operation is beyond the end of the target buffer.
|
|
|
|
This affects these AML operators:
|
|
|
|
AML_CREATE_FIELD_OP
|
|
AML_CREATE_BIT_FIELD_OP
|
|
AML_CREATE_BYTE_FIELD_OP
|
|
AML_CREATE_WORD_FIELD_OP
|
|
AML_CREATE_DWORD_FIELD_OP
|
|
AML_CREATE_QWORD_FIELD_OP
|
|
|
|
There are three conditions that must be satisfied in order to allow this
|
|
validation at compile time:
|
|
|
|
1) The length of the target buffer must be an integer constant
|
|
2) The index specified in the create* must be an integer constant
|
|
3) For CreateField, the bit length argument must be non-zero.
|
|
|
|
Example:
|
|
Name (BUF1, Buffer() {1,2})
|
|
CreateField (BUF1, 7, 9, CF03) // 3: ERR
|
|
|
|
dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR
|
|
Error 6165 - ^ Buffer index beyond end of
|
|
target buffer
|
|
|
|
|
|
----------------------------------------
|
|
05 April 2019. Summary of changes for version 20190405:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
|
|
unconditionally clearing ACPI IRQs during suspend/resume") was added
|
|
earlier to stop clearing of event status bits unconditionally on suspend
|
|
and resume paths. Though this change fixed an issue on suspend path, it
|
|
introduced regressions on several resume paths. In the case of S0ix,
|
|
events are enabled as part of device suspend path. If status bits for the
|
|
events are set when they are enabled, it could result in premature wake
|
|
from S0ix. If status is cleared for any event that is being enabled so
|
|
that any stale events are cleared out. In case of S0ix, events are
|
|
enabled as part of device suspend path. If status bits for the events are
|
|
set when they are enabled, it could result in premature wake from S0ix.
|
|
|
|
This change ensures that status is cleared for any event that is being
|
|
enabled so that any stale events are cleared out.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and ACPICA tools:
|
|
|
|
iASL: Implemented an enhanced multiple file compilation that combines
|
|
named objects from all input files to a single namespace. With this
|
|
feature, any unresolved external declarations as well as duplicate named
|
|
object declarations can be detected during compilation rather than
|
|
generating errors much later at runtime. The following commands are
|
|
examples that utilize this feature:
|
|
iasl dsdt.asl ssdt.asl
|
|
iasl dsdt.asl ssdt1.asl ssdt2.asl
|
|
iasl dsdt.asl ssdt*.asl
|
|
|
|
----------------------------------------
|
|
29 March 2019. Summary of changes for version 20190329:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Namespace support: Remove the address nodes from global list after method
|
|
termination. The global address list contains pointers to namespace nodes
|
|
that represent Operation Regions. This change properly removes Operation
|
|
Region namespace nodes that are declared dynamically during method
|
|
execution.
|
|
|
|
Linux: Use a different debug default than ACPICA. There was a divergence
|
|
between Linux and the ACPICA codebases. In order to resolve this
|
|
divergence, Linux now declares its own debug default in aclinux.h
|
|
|
|
Renamed some internal macros to improve code understanding and
|
|
maintenance. The macros below all operate on single 4-character ACPI
|
|
NameSegs, not generic strings (old -> new):
|
|
ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE
|
|
ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
|
|
ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG
|
|
|
|
Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
|
|
table.
|
|
|
|
Test suite: Update makefiles, add PCC operation region support
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented additional illegal forward reference detection. Now
|
|
detect and emit an error upon detection of a forward reference from a
|
|
Field to an Operation Region. This will fail at runtime if allowed to
|
|
pass the compiler.
|
|
|
|
AcpiExec: Add an address list check for dynamic Operation Regions. This
|
|
feature performs a sanity test for each node the global address list.
|
|
This is done in order to ensure that all dynamic operation regions are
|
|
properly removed from the global address list and no dangling pointers
|
|
are left behind.
|
|
|
|
Disassembler: Improved generation of resource pathnames. This change
|
|
improves the code that generates resource descriptor and resource tag
|
|
pathnames. The original code used a bunch of str* C library functions
|
|
that caused warnings on some compilers.
|
|
|
|
iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
|
|
function can overwrite buffers if the calling code is not very careful.
|
|
In the case of generating a module/table header, use of memmove is a
|
|
better implementation.
|
|
|
|
|
|
3) Status of new features that have not been completed at this time:
|
|
|
|
iASL: Implementing an enhanced multiple file compilation into a single
|
|
namespace feature (Status): This feature will be released soon, and
|
|
allows multiple ASL files to be compiled into the same single namespace.
|
|
By doing so, any unresolved external declarations as well as duplicate
|
|
named object declarations can be detected during compilation (rather than
|
|
later during runtime). The following commands are examples that utilize
|
|
this feature:
|
|
iasl dsdt.asl ssdt.asl
|
|
iasl dsdt.asl ssdt1.asl ssdt2.asl
|
|
iasl dsdt.asl ssdt*.asl
|
|
|
|
ASL tutorial status: Feedback is being gathered internally and the
|
|
current plan is to publish this tutorial on the ACPICA website after a
|
|
final review by a tech writer.
|
|
|
|
----------------------------------------
|
|
15 February 2019. Summary of changes for version 20190215:
|
|
|
|
|
|
0) Support for ACPI specification version 6.3:
|
|
|
|
Add PCC operation region support for the AML interpreter. This adds PCC
|
|
operation region support in the AML interpreter and a default handler for
|
|
acpiexec. The change also renames the PCC region address space keyword to
|
|
PlatformCommChannel.
|
|
|
|
Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
|
|
These methods provide OSPM with health information and device boot
|
|
status.
|
|
|
|
PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
|
|
defines if the trigger needs to be invoked by OSPM before or at the end
|
|
of kernel crash dump processing/handling operation.
|
|
|
|
SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
|
|
is used for describing devices such as heterogeneous processors,
|
|
accelerators, GPUs, and IO devices with integrated compute or DMA
|
|
engines.
|
|
|
|
MADT: Add support for statistical profiling in GICC. Statistical
|
|
profiling extension (SPE) is an architecture-specific feature for ARM.
|
|
|
|
MADT: Add online capable flag. If this bit is set, system hardware
|
|
supports enabling this processor during OS runtime.
|
|
|
|
New Error Disconnect Recover Notification value. There are a number of
|
|
scenarios where system Firmware in collaboration with hardware may
|
|
disconnect one or more devices from the rest of the system for purposes
|
|
of error containment. Firmware can use this new notification value to
|
|
alert OSPM of such a removal.
|
|
|
|
PPTT: New additional fields in Processor Structure Flags. These flags
|
|
provide more information about processor topology.
|
|
|
|
NFIT/Disassembler: Change a field name from "Address Range" to "Region
|
|
Type".
|
|
|
|
HMAT updates: make several existing fields to be reserved as well as
|
|
rename subtable 0 to "memory proximity domain attributes".
|
|
|
|
GTDT: Add support for new GTDT Revision 3. This revision adds information
|
|
for the EL2 timer.
|
|
|
|
iASL: Update the HMAT example template for new fields.
|
|
|
|
iASL: Add support for the new revision of the GTDT (Rev 3).
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
AML Parser: fix the main AML parse loop to correctly skip erroneous
|
|
extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
|
|
byte extended opcodes. If an error occurs during an AML table load, the
|
|
AML parser will continue loading the table by skipping the offending
|
|
opcode. This implements a "load table at any cost" philosophy.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Add checks for illegal object references, such as a reference
|
|
outside of method to an object within a method. Such an object is only
|
|
temporary.
|
|
|
|
iASL: Emit error for creation of a zero-length operation region. Such a
|
|
region is rather pointless. If encountered, a runtime error is also
|
|
implemented in the interpreter.
|
|
|
|
Debugger: Fix a possible fault with the "test objects" command.
|
|
|
|
iASL: Makefile: support parent directory filenames containing embedded
|
|
spaces.
|
|
|
|
iASL: Update the TPM2 template to revision 4.
|
|
|
|
iASL: Add the ability to report specific warnings or remarks as errors.
|
|
|
|
Disassembler: Disassemble OEMx tables as actual AML byte code.
|
|
Previously, these tables were treated as "unknown table".
|
|
|
|
iASL: Add definition and disassembly for TPM2 revision 3.
|
|
|
|
iASL: Add support for TPM2 rev 3 compilation.
|
|
|
|
|
|
----------------------------------------
|
|
08 January 2019. Summary of changes for version 20190108:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated all copyrights to 2019. This affects all source code modules.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
ASL test suite (ASLTS): Updated all copyrights to 2019.
|
|
|
|
Tools: Updated all signon copyrights to 2019.
|
|
|
|
AcpiExec: Added a new option to dump extra information concerning any
|
|
memory leaks detected by the internal object/cache tracking mechanism. -
|
|
va
|
|
|
|
iASL: Updated the table template for the TPM2 table to the newest version
|
|
of the table (Revision 4)
|
|
|
|
|
|
----------------------------------------
|
|
13 December 2018. Summary of changes for version 20181213:
|
|
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Fixed some buffer length issues with the GenericSerialBus, related to two
|
|
of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
|
|
which are rarely seen in the field. For these, the LEN field of the ASL
|
|
buffer is now ignored. Hans de Goede
|
|
|
|
Implemented a new object evaluation trace mechanism for control methods
|
|
and data objects. This includes nested control methods. It is
|
|
particularly useful for examining the ACPI execution during system
|
|
initialization since the output is relatively terse. The flag below
|
|
enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
|
|
#define ACPI_LV_EVALUATION 0x00080000
|
|
|
|
Examples:
|
|
Enter evaluation : _SB.PCI0._INI (Method)
|
|
Exit evaluation : _SB.PCI0._INI
|
|
Enter evaluation : _OSI (Method)
|
|
Exit evaluation : _OSI
|
|
Enter evaluation : _SB.PCI0.TEST (Method)
|
|
Nested method call : _SB.PCI0.NST1
|
|
Exit nested method : _SB.PCI0.NST1
|
|
Exit evaluation : _SB.PCI0.TEST
|
|
|
|
Added two recently-defined _OSI strings. See
|
|
https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
|
|
osi.
|
|
"Windows 2018"
|
|
"Windows 2018.2"
|
|
|
|
Update for buffer-to-string conversions via the ToHexString ASL operator.
|
|
A "0x" is now prepended to each of the hex values in the output string.
|
|
This provides compatibility with other ACPI implementations. The ACPI
|
|
specification is somewhat vague on this issue.
|
|
Example output string after conversion:
|
|
"0x01,0x02,0x03,0x04,0x05,0x06"
|
|
|
|
Return a run-time error for TermArg expressions within individual package
|
|
elements. Although this is technically supported by the ASL grammar,
|
|
other ACPI implementations do not support this either. Also, this fixes a
|
|
fault if this type of construct is ever encountered (it never has been).
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented a new compile option (-ww) that will promote individual
|
|
warnings and remarks to errors. This is intended to enhance the firmware
|
|
build process.
|
|
|
|
AcpiExec: Implemented a new command-line option (-eo) to support the new
|
|
object evaluation trace mechanism described above.
|
|
|
|
Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
|
|
instead of a "unknown table" message.
|
|
|
|
AcpiHelp: Improved support for the "special" predefined names such as
|
|
_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
|
|
used for "xx" and "x".
|
|
|
|
----------------------------------------
|
|
31 October 2018. Summary of changes for version 20181031:
|
|
|
|
|
|
An Operation Region regression was fixed by properly adding address
|
|
ranges to a global list during initialization. This allows OS to
|
|
accurately check for overlapping regions between native devices (such as
|
|
PCI) and Operation regions as well as checking for region conflicts
|
|
between two Operation Regions.
|
|
|
|
Added support for the 2-byte extended opcodes in the code/feature that
|
|
attempts to continue parsing during the table load phase. Skip parsing
|
|
Device declarations (and other extended opcodes) when an error occurs
|
|
during parsing. Previously, only single-byte opcodes were supported.
|
|
|
|
Cleanup: Simplified the module-level code support by eliminating a
|
|
useless global variable (AcpiGbl_GroupModuleLeveCode).
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
|
|
could cause a fault in the preprocessor. This was an inadvertent side-
|
|
effect from moving more allocations/frees to the local cache/memory
|
|
mechanism.
|
|
|
|
iASL: Enhanced error detection by validating that all NameSeg elements
|
|
within a NamePatch actually exist. The previous behavior was spotty at
|
|
best, and such errors could be improperly ignored at compiler time (never
|
|
at runtime, however. There are two new error messages, as shown in the
|
|
examples below:
|
|
|
|
dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1)
|
|
Error 6161 - ^ One or more objects within
|
|
the Pathname do not exist (TTTT.BXXX)
|
|
|
|
dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
|
|
Error 6160 - One or more prefix Scopes do not exist ^
|
|
(BBBB.CBF1)
|
|
|
|
iASL: Disassembler/table-compiler: Added support for the static data
|
|
table TPM2 revision 3 (an older version of TPM2). The support has been
|
|
added for the compiler and the disassembler.
|
|
|
|
Fixed compilation of DOS format data table file on Unix/Linux systems.
|
|
iASL now properly detects line continuations (\) for DOS format data
|
|
table definition language files on when executing on Unix/Linux.
|
|
|
|
----------------------------------------
|
|
03 October 2018. Summary of changes for version 20181003:
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed a regression introduced in version 20180927 that could cause the
|
|
compiler to fault, especially with NamePaths containing one or more
|
|
carats (^). Such as: ^^_SB_PCI0
|
|
|
|
Added a new remark for the Sleep() operator when the sleep time operand
|
|
is larger than one second. This is a very long time for the ASL/BIOS code
|
|
and may not be what was intended by the ASL writer.
|
|
|
|
----------------------------------------
|
|
27 September 2018. Summary of changes for version 20180927:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated the GPE support to clear the status of all ACPI events when
|
|
entering any/all sleep states in order to avoid premature wakeups. In
|
|
theory, this may cause some wakeup events to be missed, but the
|
|
likelihood of this is small. This change restores the original behavior
|
|
of the ACPICA code in order to fix a regression seen from the previous
|
|
"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
|
|
This regression could cause some systems to incorrectly wake immediately.
|
|
|
|
Updated the execution of the _REG methods during initialization and
|
|
namespace loading to bring the behavior into closer conformance to the
|
|
ACPI specification and other ACPI implementations:
|
|
|
|
From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
|
|
"Control methods must assume all operation regions are inaccessible
|
|
until the _REG(RegionSpace, 1) method is executed"
|
|
|
|
"The exceptions to this rule are:
|
|
1. OSPM must guarantee that the following operation regions are always
|
|
accessible:
|
|
SystemIO operation regions.
|
|
SystemMemory operation regions when accessing memory returned by the
|
|
System Address Map reporting interfaces."
|
|
|
|
Since the state of both the SystemIO and SystemMemory address spaces are
|
|
defined by the specification to never change, this ACPICA change ensures
|
|
that now _REG is never called on them. This solves some problems seen in
|
|
the field and provides compatibility with other ACPI implementations. An
|
|
update to the upcoming new version of the ACPI specification will help
|
|
clarify this behavior.
|
|
|
|
Updated the implementation of support for the Generic Serial Bus. For the
|
|
"bidirectional" protocols, the internal implementation now automatically
|
|
creates a return data buffer of the maximum size (255). This handles the
|
|
worst-case for data that is returned from the serial bus handler, and
|
|
fixes some problems seen in the field. This new buffer is directly
|
|
returned to the ASL. As such, there is no true "bidirectional" buffer,
|
|
which matches the ACPI specification. This is the reason for the "double
|
|
store" seen in the example ASL code in the specification, shown below:
|
|
|
|
Word Process Call (AttribProcessCall):
|
|
OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
|
|
Field(TOP1, BufferAcc, NoLock, Preserve)
|
|
{
|
|
FLD1, 8, // Virtual register at command value 1.
|
|
}
|
|
|
|
Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
|
|
// as BUFF
|
|
CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
|
|
|
|
Store(0x5416, DATA) // Save 0x5416 into the data buffer
|
|
Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call
|
|
transaction
|
|
// This is the "double store". The write to
|
|
// FLD1 returns a new buffer, which is stored
|
|
// back into BUFF with the second Store.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented detection of extraneous/redundant uses of the Offset()
|
|
operator within a Field Unit list. A remark is now issued for these. For
|
|
example, the first two of the Offset() operators below are extraneous.
|
|
Because both the compiler and the interpreter track the offsets
|
|
automatically, these Offsets simply refer to the current offset and are
|
|
unnecessary. Note, when optimization is enabled, the iASL compiler will
|
|
in fact remove the redundant Offset operators and will not emit any AML
|
|
code for them.
|
|
|
|
OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
|
|
Field (OPR1)
|
|
{
|
|
Offset (0), // Never needed
|
|
FLD1, 32,
|
|
Offset (4), // Redundant, offset is already 4 (bytes)
|
|
FLD2, 8,
|
|
Offset (64), // OK use of Offset.
|
|
FLD3, 16,
|
|
}
|
|
dsdt.asl 14: Offset (0),
|
|
Remark 2158 - ^ Unnecessary/redundant use of Offset
|
|
operator
|
|
|
|
dsdt.asl 16: Offset (4),
|
|
Remark 2158 - ^ Unnecessary/redundant use of Offset
|
|
operator
|
|
|
|
----------------------------------------
|
|
10 August 2018. Summary of changes for version 20180810:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Initial ACPI table loading: Attempt to continue loading ACPI tables
|
|
regardless of malformed AML. Since migrating table initialization to the
|
|
new module-level code support, the AML interpreter rejected tables upon
|
|
any ACPI error encountered during table load. This is a problem because
|
|
non-serious ACPI errors during table load do not necessarily mean that
|
|
the entire definition block (DSDT or SSDT) is invalid. This change
|
|
improves the table loading by ignoring some types of errors that can be
|
|
generated by incorrect AML. This can range from object type errors, scope
|
|
errors, and index errors.
|
|
|
|
Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
|
|
during suspend/resume. The status of ACPI events is no longer cleared
|
|
when entering the ACPI S5 system state (power off) which caused some
|
|
systems to power up immediately after turning off power in certain
|
|
situations. This was a functional regression. It was fixed by clearing
|
|
the status of all ACPI events again when entering S5 (for system-wide
|
|
suspend or hibernation the clearing of the status of all events is not
|
|
desirable, as it might cause the kernel to miss wakeup events sometimes).
|
|
Rafael Wysocki.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
|
|
elements listed in the initialization file were previously initialized
|
|
after the table load and before executing module-level code blocks.
|
|
Recent changes in the module-level code support means that the table load
|
|
becomes a large control method execution. If fields are used within
|
|
module-level code and we are executing with the -fi option, the
|
|
initialization values were used to initialize the namespace object(s)
|
|
only after the table was finished loading. This change Provides an early
|
|
initialization of objects specified in the initialization file so that
|
|
field unit values are populated during the table load (not after the
|
|
load).
|
|
|
|
AcpiExec: Fixed a small memory leak regression that could result in
|
|
warnings during exit of the utility. These warnings were similar to
|
|
these:
|
|
0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
|
|
0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
|
|
|
|
----------------------------------------
|
|
29 June 2018. Summary of changes for version 20180629:
|
|
|
|
|
|
1) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a regression related to the use of the ASL External
|
|
statement. Error checking for the use of the External() statement has
|
|
been relaxed. Previously, a restriction on the use of External meant that
|
|
the referenced named object was required to be defined in a different
|
|
table (an SSDT). Thus it would be an error to declare an object as an
|
|
external and then define the same named object in the same table. For
|
|
example:
|
|
DefinitionBlock (...)
|
|
{
|
|
External (DEV1)
|
|
Device (DEV1){...} // This was an error
|
|
}
|
|
However, this behavior has caused regressions in some existing ASL code,
|
|
because there is code that depends on named objects and externals (with
|
|
the same name) being declared in the same table. This change will allow
|
|
the ASL code above to compile without errors or warnings.
|
|
|
|
iASL: Implemented ASL language extensions for four operators to make some
|
|
of their arguments optional instead of required:
|
|
1) Field (RegionName, AccessType, LockRule, UpdateRule)
|
|
2) BankField (RegionName, BankName, BankValue,
|
|
AccessType, LockRule, UpdateRule)
|
|
3) IndexField (IndexName, DataName,
|
|
AccessType, LockRule, UpdateRule)
|
|
For the Field operators above, the AccessType, LockRule, and UpdateRule
|
|
are now optional arguments. The default values are:
|
|
AccessType: AnyAcc
|
|
LockRule: NoLock
|
|
UpdateRule: Preserve
|
|
4) Mutex (MutexName, SyncLevel)
|
|
For this operator, the SyncLevel argument is now optional. This argument
|
|
is rarely used in any meaningful way by ASL code, and thus it makes sense
|
|
to make it optional. The default value is:
|
|
SyncLevel: 0
|
|
|
|
iASL: Attempted use of the ASL Unload() operator now results in the
|
|
following warning:
|
|
"Unload is not supported by all operating systems"
|
|
This is in fact very true, and the Unload operator may be completely
|
|
deprecated in the near future.
|
|
|
|
AcpiExec: Fixed a regression for the -fi option (Namespace initialization
|
|
file. Recent changes in the ACPICA module-level code support altered the
|
|
table load/initialization sequence . This means that the table load has
|
|
become a large method execution of the table itself. If Operation Region
|
|
Fields are used within any module-level code and the -fi option was
|
|
specified, the initialization values were populated only after the table
|
|
had completely finished loading (and thus the module-level code had
|
|
already been executed). This change moves the initialization of objects
|
|
listed in the initialization file to before the table is executed as a
|
|
method. Field unit values are now initialized before the table execution
|
|
is performed.
|
|
|
|
----------------------------------------
|
|
31 May 2018. Summary of changes for version 20180531:
|
|
|
|
|
|
1) ACPICA kernel-resident Subsystem:
|
|
|
|
Implemented additional support to help ensure that a DSDT or SSDT is
|
|
fully loaded even if errors are incurred during the load. The majority of
|
|
the problems that are seen is the failure of individual AML operators
|
|
that occur during execution of any module-level code (MLC) existing in
|
|
the table. This support adds a mechanism to abort the current ASL
|
|
statement (AML opcode), emit an error message, and to simply move on to
|
|
the next opcode -- instead of aborting the entire table load. This is
|
|
different than the execution of a control method where the entire method
|
|
is aborted upon any error. The goal is to perform a very "best effort" to
|
|
load the ACPI tables. The most common MLC errors that have been seen in
|
|
the field are direct references to unresolved ASL/AML symbols (referenced
|
|
directly without the use of the CondRefOf operator to validate the
|
|
symbol). This new ACPICA behavior is now compatible with other ACPI
|
|
implementations.
|
|
|
|
Interpreter: The Unload AML operator is no longer supported for the
|
|
reasons below. An AE_NOT_IMPLEMENTED exception is returned.
|
|
1) A correct implementation on at least some hosts may not be possible.
|
|
2) Other ACPI implementations do not correctly/fully support it.
|
|
3) It requires host device driver support which is not known to exist.
|
|
(To properly support namespace unload out from underneath.)
|
|
4) This AML operator has never been seen in the field.
|
|
|
|
Parser: Added a debug option to dump AML parse sub-trees as they are
|
|
being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
|
|
ACPI_DB_PARSE_TREES.
|
|
|
|
Debugger: Reduced the verbosity for errors incurred during table load and
|
|
module-level code execution.
|
|
|
|
Completed an investigation into adding a namespace node "owner list"
|
|
instead of the current "owner ID" associated with namespace nodes. This
|
|
list would link together all nodes that are owned by an individual
|
|
control method. The purpose would be to enhance control method execution
|
|
by speeding up cleanup during method exit (all namespace nodes created by
|
|
a method are deleted upon method termination.) Currently, the entire
|
|
namespace must be searched for matching owner IDs if (and only if) the
|
|
method creates named objects outside of the local scope. However, by far
|
|
the most common case is that methods create objects locally, not outside
|
|
the method scope. There is already an ACPICA optimization in place that
|
|
only searches the entire namespace in the rare case of a method creating
|
|
objects elsewhere in the namespace. Therefore, it is felt that the
|
|
overhead of adding an additional pointer to each namespace node to
|
|
implement the owner list makes this feature unnecessary.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL, Disassembler, and Template generator: Implemented support for
|
|
Revision D of the IORT table. Adds a new subtable that is used to specify
|
|
SMMUv3 PMCGs. rmurphy-arm.
|
|
|
|
Disassembler: Restored correct table header validation for the "special"
|
|
ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
|
|
table header and must be special-cased. This was a regression that has
|
|
been present for apparently a long time.
|
|
|
|
AcpiExec: Reduced verbosity of the local exception handler implemented
|
|
within acpiexec. This handler is invoked by ACPICA upon any exceptions
|
|
generated during control method execution. A new option was added: -vh
|
|
restores the original verbosity level if desired.
|
|
|
|
AcpiExec: Changed the default base from decimal to hex for the -x option
|
|
(set debug level). This simplifies the use of this option and matches the
|
|
behavior of the corresponding iASL -x option.
|
|
|
|
AcpiExec: Restored a force-exit on multiple control-c (sigint)
|
|
interrupts. This allows program termination even if other issues cause
|
|
the control-c to fail.
|
|
|
|
ASL test suite (ASLTS): Added tests for the recently implemented package
|
|
element resolution mechanism that allows forward references to named
|
|
objects from individual package elements (this mechanism provides
|
|
compatibility with other ACPI implementations.)
|
|
|
|
|
|
----------------------------------------
|
|
8 May 2018. Summary of changes for version 20180508:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Completed the new (recently deployed) package resolution mechanism for
|
|
the Load and LoadTable ASL/AML operators. This fixes a regression that
|
|
was introduced in version 20180209 that could result in an
|
|
AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
|
|
(SSDT) that contains package objects.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
|
|
1 MB. This change allows for table offsets within the acpidump file to be
|
|
up to 8 characters. These changes are backwards compatible with existing
|
|
acpidump files.
|
|
|
|
|
|
----------------------------------------
|
|
27 April 2018. Summary of changes for version 20180427:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Debugger: Added support for Package objects in the "Test Objects"
|
|
command. This command walks the entire namespace and evaluates all named
|
|
data objects (Integers, Strings, Buffers, and now Packages).
|
|
|
|
Improved error messages for the namespace root node. Originally, the root
|
|
was referred to by the confusing string "\___". This has been replaced by
|
|
"Namespace Root" for clarification.
|
|
|
|
Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
|
|
Ian King <colin.king@canonical.com>.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented support to detect and flag illegal forward references.
|
|
For compatibility with other ACPI implementations, these references are
|
|
now illegal at the root level of the DSDT or SSDTs. Forward references
|
|
have always been illegal within control methods. This change should not
|
|
affect existing ASL/AML code because of the fact that these references
|
|
have always been illegal in the other ACPI implementation.
|
|
|
|
iASL: Added error messages for the case where a table OEM ID and OEM
|
|
TABLE ID strings are longer than the ACPI-defined length. Previously,
|
|
these strings were simply silently truncated.
|
|
|
|
iASL: Enhanced the -tc option (which creates an AML hex file in C,
|
|
suitable for import into a firmware project):
|
|
1) Create a unique name for the table, to simplify use of multiple
|
|
SSDTs.
|
|
2) Add a protection #ifdef in the file, similar to a .h header file.
|
|
With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
|
|
evan.lloyd@arm.com
|
|
|
|
AcpiExec: Added a new option, -df, to disable the local fault handler.
|
|
This is useful during debugging, where it may be desired to drop into a
|
|
debugger on a fault.
|
|
|
|
----------------------------------------
|
|
13 March 2018. Summary of changes for version 20180313:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented various improvements to the GPE support:
|
|
|
|
1) Dispatch all active GPEs at initialization time so that no GPEs are
|
|
lost.
|
|
2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
|
|
before devices are enumerated.
|
|
3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
|
|
IRQs are not lost.
|
|
4) Add parallel GPE handling to eliminate the possibility of dispatching
|
|
the same GPE twice.
|
|
5) Dispatch any pending GPEs after enabling for the first time.
|
|
|
|
AcpiGetObjectInfo - removed support for the _STA method. This was causing
|
|
problems on some platforms.
|
|
|
|
Added a new _OSI string, "Windows 2017.2".
|
|
|
|
Cleaned up and simplified the module-level code support. These changes
|
|
are in preparation for the eventual removal of the legacy MLC support
|
|
(deferred execution), replaced by the new MLC architecture which executes
|
|
the MLC as a table is loaded (DSDT/SSDTs).
|
|
|
|
Changed a compile-time option to a runtime option. Changes the option to
|
|
ignore ACPI table load-time package resolution errors into a runtime
|
|
option. Used only for platforms that generate many AE_NOT_FOUND errors
|
|
during boot. AcpiGbl_IgnorePackageResolutionErrors.
|
|
|
|
Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
|
|
ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
|
|
compilation errors from unused variables (seen with some compilers).
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
ASLTS: parallelized execution in order to achieve an (approximately) 2X
|
|
performance increase.
|
|
|
|
ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
|
|
error reporting.
|
|
|
|
----------------------------------------
|
|
09 February 2018. Summary of changes for version 20180209:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Completed the final integration of the recent changes to Package Object
|
|
handling and the module-level AML code support. This allows forward
|
|
references from individual package elements when the package object is
|
|
declared from within module-level code blocks. Provides compatibility
|
|
with other ACPI implementations.
|
|
|
|
The new architecture for the AML module-level code has been completed and
|
|
is now the default for the ACPICA code. This new architecture executes
|
|
the module-level code in-line as the ACPI table is loaded/parsed instead
|
|
of the previous architecture which deferred this code until after the
|
|
table was fully loaded. This solves some ASL code ordering issues and
|
|
provides compatibility with other ACPI implementations. At this time,
|
|
there is an option to fallback to the earlier architecture, but this
|
|
support is deprecated and is planned to be completely removed later this
|
|
year.
|
|
|
|
Added a compile-time option to ignore AE_NOT_FOUND exceptions during
|
|
resolution of named reference elements within Package objects. Although
|
|
this is potentially a serious problem, it can generate a lot of
|
|
noise/errors on platforms whose firmware carries around a bunch of unused
|
|
Package objects. To disable these errors, define
|
|
ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
|
|
errors are always reported for ACPICA applications such as AcpiExec.
|
|
|
|
Fixed a regression related to the explicit type-conversion AML operators
|
|
(ToXXXX). The regression was introduced early in 2017 but was not seen
|
|
until recently because these operators are not fully supported by other
|
|
ACPI implementations and are thus rarely used by firmware developers. The
|
|
operators are defined by the ACPI specification to not implement the
|
|
"implicit result object conversion". The regression incorrectly
|
|
introduced this object conversion for the following explicit conversion
|
|
operators:
|
|
ToInteger
|
|
ToString
|
|
ToBuffer
|
|
ToDecimalString
|
|
ToHexString
|
|
ToBCD
|
|
FromBCD
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a problem with the compiler constant folding feature as
|
|
related to the ToXXXX explicit conversion operators. These operators do
|
|
not support the "implicit result object conversion" by definition. Thus,
|
|
ASL expressions that use these operators cannot be folded to a simple
|
|
Store operator because Store implements the implicit conversion. This
|
|
change uses the CopyObject operator for the ToXXXX operator folding
|
|
instead. CopyObject is defined to not implement implicit result
|
|
conversions and is thus appropriate for folding the ToXXXX operators.
|
|
|
|
iASL: Changed the severity of an error condition to a simple warning for
|
|
the case where a symbol is declared both locally and as an external
|
|
symbol. This accommodates existing ASL code.
|
|
|
|
AcpiExec: The -ep option to enable the new architecture for module-level
|
|
code has been removed. It is replaced by the -dp option which instead has
|
|
the opposite effect: it disables the new architecture (the default) and
|
|
enables the legacy architecture. When the legacy code is removed in the
|
|
future, the -dp option will be removed also.
|
|
|
|
----------------------------------------
|
|
05 January 2018. Summary of changes for version 20180105:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated all copyrights to 2018. This affects all source code modules.
|
|
|
|
Fixed a possible build error caused by an unresolved reference to the
|
|
AcpiUtSafeStrncpy function.
|
|
|
|
Removed NULL pointer arithmetic in the various pointer manipulation
|
|
macros. All "(void *) NULL" constructs are converted to "(void *) 0".
|
|
This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
|
|
|
|
Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
|
|
Mittal.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
ASLTS: Updated all copyrights to 2018.
|
|
|
|
Tools: Updated all signon copyrights to 2018.
|
|
|
|
AcpiXtract: Fixed a regression related to ACPI table signatures where the
|
|
signature was truncated to 3 characters (instead of 4).
|
|
|
|
AcpiExec: Restore the original terminal mode after the use of the -v and
|
|
-vd options.
|
|
|
|
ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
|
|
|
|
----------------------------------------
|
|
14 December 2017. Summary of changes for version 20171214:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a regression in the external (public) AcpiEvaluateObjectTyped
|
|
interface where the optional "pathname" argument had inadvertently become
|
|
a required argument returning an error if omitted (NULL pointer
|
|
argument).
|
|
|
|
Fixed two possible memory leaks related to the recently developed "late
|
|
resolution" of reference objects within ASL Package Object definitions.
|
|
|
|
Added two recently defined _OSI strings: "Windows 2016" and "Windows
|
|
2017". Mario Limonciello.
|
|
|
|
Implemented and deployed a safer version of the C library function
|
|
strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the
|
|
creation of unterminated strings as a possible result of a standard
|
|
strncpy.
|
|
|
|
Cleaned up and restructured the global variable file (acglobal.h). There
|
|
are many changes, but no functional changes.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
|
|
optional OemData field at the end of the table was incorrectly required
|
|
for proper compilation. It is now correctly an optional field.
|
|
|
|
ASLTS: The entire suite was converted from standard ASL to the ASL+
|
|
language, using the ASL-to-ASL+ converter which is integrated into the
|
|
iASL compiler. A binary compare of all output files has verified the
|
|
correctness of the conversion.
|
|
|
|
iASL: Fixed the source code build for platforms where "char" is unsigned.
|
|
This affected the iASL lexer only. Jung-uk Kim.
|
|
|
|
----------------------------------------
|
|
10 November 2017. Summary of changes for version 20171110:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
This release implements full support for ACPI 6.2A:
|
|
NFIT - Added a new subtable, "Platform Capabilities Structure"
|
|
No other changes to ACPICA were required, since ACPI 6.2A is primarily an
|
|
errata release of the specification.
|
|
|
|
Other ACPI table changes:
|
|
IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
|
|
PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
|
|
Linton
|
|
|
|
Utilities: Modified the string/integer conversion functions to use
|
|
internal 64-bit divide support instead of a native divide. On 32-bit
|
|
platforms, a 64-bit divide typically requires a library function which
|
|
may not be present in the build (kernel or otherwise).
|
|
|
|
Implemented a targeted error message for timeouts returned from the
|
|
Embedded Controller device driver. This is seen frequently enough to
|
|
special-case an AE_TIME returned from an EC operation region access:
|
|
"Timeout from EC hardware or EC device driver"
|
|
|
|
Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
|
|
runtime error messages have the identical prefix.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiXtract: Fixed a problem with table header detection within the
|
|
acpidump file. Processing a table could be ended early if a 0x40 (@)
|
|
appears in the original binary table, resulting in the @ symbol appearing
|
|
in the decoded ASCII field at the end of the acpidump text line. The
|
|
symbol caused acpixtract to incorrectly think it had reached the end of
|
|
the current table and the beginning of a new table.
|
|
|
|
AcpiXtract: Added an option (-f) to ignore some errors during table
|
|
extraction. This initial implementation ignores non-ASCII and non-
|
|
printable characters found in the acpidump text file.
|
|
|
|
TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
|
|
for ASLTS. This feature is used to track memory allocations from
|
|
different memory caches within the ACPICA code. At the end of an ASLTS
|
|
run, these memory statistics are recorded and stored in a log file.
|
|
|
|
Debugger (user-space version): Implemented a simple "Background" command.
|
|
Creates a new thread to execute a control method in the background, while
|
|
control returns to the debugger prompt to allow additional commands.
|
|
Syntax: Background <Namepath> [Arguments]
|
|
|
|
----------------------------------------
|
|
29 September 2017. Summary of changes for version 20170929:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Redesigned and implemented an improved ASL While() loop timeout
|
|
mechanism. This mechanism is used to prevent infinite loops in the kernel
|
|
AML interpreter caused by either non-responsive hardware or incorrect AML
|
|
code. The new implementation uses AcpiOsGetTimer instead of a simple
|
|
maximum loop count, and is thus more accurate and constant across
|
|
different machines. The default timeout is currently 30 seconds, but this
|
|
may be adjusted later.
|
|
|
|
Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
|
|
better reflect the new implementation of the loop timeout mechanism.
|
|
|
|
Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
|
|
and to fix an off-by-one error. Jung-uk Kim.
|
|
|
|
Fixed an EFI build problem by updating the makefiles to for a new file
|
|
that was added, utstrsuppt.c
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
|
|
includes support in the table disassembler, compiler, and template
|
|
generator.
|
|
|
|
iASL: Added an exception for an illegal type of recursive method
|
|
invocation. If a method creates named objects, the first recursive call
|
|
will fail at runtime. This change adds an error detection at compile time
|
|
to catch the problem up front. Note: Marking such a method as
|
|
"serialized" will not help with this problem, because the same thread can
|
|
acquire the method mutex more than once. Example compiler and runtime
|
|
output:
|
|
|
|
Method (MTH1)
|
|
{
|
|
Name (INT1, 1)
|
|
MTH1 ()
|
|
}
|
|
|
|
dsdt.asl 22: MTH1 ()
|
|
Error 6152 - ^ Illegal recursive call to method
|
|
that creates named objects (MTH1)
|
|
|
|
Previous runtime exception:
|
|
ACPI Error: [INT1] Namespace lookup failure,
|
|
AE_ALREADY_EXISTS (20170831/dswload2-465)
|
|
|
|
iASL: Updated support for External() opcodes to improve namespace
|
|
management and error detection. These changes are related to issues seen
|
|
with multiple-segment namespace pathnames within External declarations,
|
|
such as below:
|
|
|
|
External(\_SB.PCI0.GFX0, DeviceObj)
|
|
External(\_SB.PCI0.GFX0.ALSI)
|
|
|
|
iASL: Implemented support for multi-line error/warning messages. This
|
|
enables more detailed and helpful error messages as below, from the
|
|
initial deployment for the duplicate names error:
|
|
|
|
DSDT.iiii 1692: Device(PEG2) {
|
|
Error 6074 - ^ Name already exists in scope
|
|
(PEG2)
|
|
|
|
Original name creation/declaration below:
|
|
DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj)
|
|
|
|
AcpiXtract: Added additional flexibility to support differing input hex
|
|
dump formats. Specifically, hex dumps that contain partial disassembly
|
|
and/or comments within the ACPI table data definition. There exist some
|
|
dump utilities seen in the field that create this type of hex dump (such
|
|
as Simics). For example:
|
|
|
|
DSDT @ 0xdfffd0c0 (10999 bytes)
|
|
Signature DSDT
|
|
Length 10999
|
|
Revision 1
|
|
Checksum 0xf3 (Ok)
|
|
OEM_ID BXPC
|
|
OEM_table_id BXDSDT
|
|
OEM_revision 1
|
|
Creator_id 1280593481
|
|
Creator_revision 537399345
|
|
0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
|
|
...
|
|
2af0: 5f 4c 30 46 00 a4 01
|
|
|
|
Test suite: Miscellaneous changes/fixes:
|
|
More cleanup and simplification of makefiles
|
|
Continue compilation of test cases after a compile failure
|
|
Do not perform binary compare unless both files actually exist
|
|
|
|
iASL: Performed some code/module restructuring. Moved all memory
|
|
allocation functions to new modules. Two new files, aslallocate.c and
|
|
aslcache.c
|
|
|
|
----------------------------------------
|
|
31 August 2017. Summary of changes for version 20170831:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented internal support for full 64-bit addresses that appear in all
|
|
Generic Address Structure (GAS) structures. Previously, only the lower 32
|
|
bits were used. Affects the use of GAS structures in the FADT and other
|
|
tables, as well as the GAS structures passed to the AcpiRead and
|
|
AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
|
|
|
|
Added header support for the PDTT ACPI table (Processor Debug Trigger
|
|
Table). Full support in the iASL Data Table Compiler and disassembler is
|
|
forthcoming.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
|
|
Properties Topology Table) where a flag bit was specified in the wrong
|
|
bit position ("Line Size Valid", bit 6).
|
|
|
|
iASL: Implemented support for Octal integer constants as defined by the
|
|
ASL language grammar, per the ACPI specification. Any integer constant
|
|
that starts with a zero is an octal constant. For example,
|
|
Store (037777, Local0) /* Octal constant */
|
|
Store (0x3FFF, Local0) /* Hex equivalent */
|
|
Store (16383, Local0) /* Decimal equivalent */
|
|
|
|
iASL: Improved overflow detection for 64-bit string conversions during
|
|
compilation of integer constants. "Overflow" in this case means a string
|
|
that represents an integer that is too large to fit into a 64-bit value.
|
|
Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
|
|
the low-order 32 bits with a warning, as previously implemented. Several
|
|
new exceptions are defined that indicate a 64-bit overflow, as well as
|
|
the base (radix) that was used during the attempted conversion. Examples:
|
|
Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW
|
|
Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW
|
|
Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW
|
|
|
|
iASL: Added a warning for the case where a ResourceTemplate is declared
|
|
with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
|
|
this case, the resulting template is created with a single END_TAG
|
|
descriptor, which is essentially useless.
|
|
|
|
iASL: Expanded the -vw option (ignore specific warnings/remarks) to
|
|
include compilation error codes as well.
|
|
|
|
----------------------------------------
|
|
28 July 2017. Summary of changes for version 20170728:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a regression seen with small resource descriptors that could cause
|
|
an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
|
|
|
|
AML interpreter: Implemented a new feature that allows forward references
|
|
from individual named references within package objects that are
|
|
contained within blocks of "module-level code". This provides
|
|
compatibility with other ACPI implementations and supports existing
|
|
firmware that depends on this feature. Example:
|
|
|
|
Name (ABCD, 1)
|
|
If (ABCD) /* An If() at module-level */
|
|
{
|
|
Name (PKG1, Package()
|
|
{
|
|
INT1 /* Forward reference to object INT1
|
|
*/
|
|
})
|
|
Name (INT1, 0x1234)
|
|
}
|
|
|
|
AML Interpreter: Fixed a problem with the Alias() operator where aliases
|
|
to some ASL objects were not handled properly. Objects affected are:
|
|
Mutex, Event, and OperationRegion.
|
|
|
|
AML Debugger: Enhanced to properly handle AML Alias objects. These
|
|
objects have one level of indirection which was not fully supported by
|
|
the debugger.
|
|
|
|
Table Manager: Added support to detect and ignore duplicate SSDTs within
|
|
the XSDT/RSDT. This error in the XSDT has been seen in the field.
|
|
|
|
EFI and EDK2 support:
|
|
Enabled /WX flag for MSVC builds
|
|
Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
|
|
Added local support for 64-bit multiply and shift operations
|
|
Added support to compile acpidump.efi on Windows
|
|
Added OSL function stubs for interfaces not used under EFI
|
|
|
|
Added additional support for the _DMA predefined name. _DMA returns a
|
|
buffer containing a resource template. This change add support within the
|
|
resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
|
|
resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a problem where the internal input line buffer(s) could
|
|
overflow if there are very long lines in the input ASL source code file.
|
|
Implemented buffer management that automatically increases the size of
|
|
the buffers as necessary.
|
|
|
|
iASL: Added an option (-vx) to "expect" particular remarks, warnings and
|
|
errors. If the specified exception is not raised during compilation, the
|
|
compiler emits an error. This is intended to support the ASL test suite,
|
|
but may be useful in other contexts.
|
|
|
|
iASL: Implemented a new predefined macro, __METHOD__, which returns a
|
|
string containing the name of the current control method that is being
|
|
compiled.
|
|
|
|
iASL: Implemented debugger and table compiler support for the SDEI ACPI
|
|
table (Software Delegated Exception Interface). James Morse
|
|
<james.morse@arm.com>
|
|
|
|
Unix/Linux makefiles: Added an option to disable compile optimizations.
|
|
The disable occurs when the NOOPT flag is set to TRUE.
|
|
theracermaster@gmail.com
|
|
|
|
Acpidump: Added support for multiple DSDT and FACS tables. This can occur
|
|
when there are different tables for 32-bit versus 64-bit.
|
|
|
|
Enhanced error reporting for the ASL test suite (ASLTS) by removing
|
|
unnecessary/verbose text, and emit the actual line number where an error
|
|
has occurred. These changes are intended to improve the usefulness of the
|
|
test suite.
|
|
|
|
----------------------------------------
|
|
29 June 2017. Summary of changes for version 20170629:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Tables: Implemented a deferred ACPI table verification. This is useful
|
|
for operating systems where the tables cannot be verified in the early
|
|
initialization stage due to early memory mapping limitations on some
|
|
architectures. Lv Zheng.
|
|
|
|
Tables: Removed the signature validation for dynamically loaded tables.
|
|
Provides compatibility with other ACPI implementations. Previously, only
|
|
SSDT tables were allowed, as per the ACPI specification. Now, any table
|
|
signature can be used via the Load() operator. Lv Zheng.
|
|
|
|
Tables: Fixed several mutex issues that could cause errors during table
|
|
acquisition. Lv Zheng.
|
|
|
|
Tables: Fixed a problem where an ACPI warning could be generated if a
|
|
null pointer was passed to the AcpiPutTable interface. Lv Zheng.
|
|
|
|
Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
|
|
AcpiPutTable interfaces. This applies to the "late stage" table loading
|
|
when the use of AcpiPutTable is no longer required (since the system
|
|
memory manager is fully running and available). Lv Zheng.
|
|
|
|
Fixed/Reverted a regression during processing of resource descriptors
|
|
that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
|
|
exception in this case.
|
|
|
|
Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
|
|
I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
|
|
|
|
Interpreter: Fixed a possible fault if an Alias operator with an invalid
|
|
or duplicate target is encountered during Alias creation in
|
|
AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
|
|
|
|
Added an option to use designated initializers for function pointers.
|
|
Kees Cook <keescook@google.com>
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Allow compilation of External declarations with target pathnames
|
|
that refer to existing named objects within the table. Erik Schmauss.
|
|
|
|
iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
|
|
FieldUnit name also is declared via External in the same table. Erik
|
|
Schmauss.
|
|
|
|
iASL: Allow existing scope names within pathnames used in External
|
|
statements. For example:
|
|
External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
|
|
Device (ABCD)
|
|
|
|
iASL: IORT ACPI table: Implemented changes required to decode the new
|
|
Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
|
|
compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
|
|
|
|
Disassembler: Don't abort disassembly on errors from External()
|
|
statements. Erik Schmauss.
|
|
|
|
Disassembler: fixed a possible fault when one of the Create*Field
|
|
operators references a Resource Template. ACPICA Bugzilla 1396.
|
|
|
|
iASL: In the source code, resolved some naming inconsistences across the
|
|
parsing support. Fixes confusion between "Parse Op" and "Parse Node".
|
|
Adds a new file, aslparseop.c
|
|
|
|
----------------------------------------
|
|
31 May 2017. Summary of changes for version 20170531:
|
|
|
|
|
|
0) ACPI 6.2 support:
|
|
|
|
The ACPI specification version 6.2 has been released and is available at
|
|
http://uefi.org/specifications
|
|
|
|
This version of ACPICA fully supports the ACPI 6.2 specification. Changes
|
|
are summarized below.
|
|
|
|
New ACPI tables (Table Compiler/Disassembler/Templates):
|
|
HMAT (Heterogeneous Memory Attributes Table)
|
|
WSMT (Windows SMM Security Mitigation Table)
|
|
PPTT (Processor Properties Topology Table)
|
|
|
|
New subtables for existing ACPI tables:
|
|
HEST (New subtable, Arch-deferred machine check)
|
|
SRAT (New subtable, Arch-specific affinity structure)
|
|
PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
|
|
|
|
Simple updates for existing ACPI tables:
|
|
BGRT (two new flag bits)
|
|
HEST (New bit defined for several subtables, GHES_ASSIST)
|
|
|
|
New Resource Descriptors and Resource macros (Compiler/Disassembler):
|
|
PinConfig()
|
|
PinFunction()
|
|
PinGroup()
|
|
PinGroupConfig()
|
|
PinGroupFunction()
|
|
New type for hardware error notification (section 18.3.2.9)
|
|
|
|
New predefined names/methods (Compiler/Interpreter):
|
|
_HMA (Heterogeneous Memory Attributes)
|
|
_LSI (Label Storage Information)
|
|
_LSR (Label Storage Read)
|
|
_LSW (Label Storage Write)
|
|
|
|
ASL grammar/macro changes (Compiler):
|
|
For() ASL macro, implemented with the AML while operator
|
|
Extensions to Concatenate operator
|
|
Support for multiple definition blocks in same ASL file
|
|
Clarification for Buffer operator
|
|
Allow executable AML code underneath all scopes (Devices, etc.)
|
|
Clarification/change for the _OSI return value
|
|
ASL grammar update for reference operators
|
|
Allow a zero-length string for AML filename in DefinitionBlock
|
|
|
|
Miscellaneous:
|
|
New device object notification value
|
|
Remove a notify value (0x0C) for graceful shutdown
|
|
New UUIDs for processor/cache properties and
|
|
physical package property
|
|
New _HID, ACPI0014 (Wireless Power Calibration Device)
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Added support to disable ACPI events on hardware-reduced platforms.
|
|
Eliminates error messages of the form "Could not enable fixed event". Lv
|
|
Zheng
|
|
|
|
Fixed a problem using Device/Thermal objects with the ObjectType and
|
|
DerefOf ASL operators. This support had not been fully/properly
|
|
implemented.
|
|
|
|
Fixed a problem where if a Buffer object containing a resource template
|
|
was longer than the actual resource template, an error was generated --
|
|
even though the AML is legal. This case has been seen in the field.
|
|
|
|
Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
|
|
The values for DUAL_PIC and MULTIPLE_APIC were reversed.
|
|
|
|
Added header file changes for the TPM2 ACPI table. Update to new version
|
|
of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
|
|
|
|
Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
|
|
These interfaces are intended to be used only in conjunction with the
|
|
predefined _DLM method (Device Lock Method). "This object appears in a
|
|
device scope when AML access to the device must be synchronized with the
|
|
OS environment".
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
|
|
Debug Version: 204.0K Code, 84.3K Data, 288.3K Total
|
|
Previous Release:
|
|
Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
|
|
Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a problem where an External() declaration could not refer to
|
|
a Field Unit. Erik Schmauss.
|
|
|
|
Disassembler: Improved support for the Switch/Case operators. This
|
|
feature will disassemble AML code back to the original Switch operators
|
|
when possible, instead of an If..Else sequence. David Box
|
|
|
|
iASL and disassembler: Improved the handling of multiple extraneous
|
|
parentheses for both ASL input and disassembled ASL output.
|
|
|
|
Improved the behavior of the iASL compiler and disassembler to detect
|
|
improper use of external declarations
|
|
|
|
Disassembler: Now aborts immediately upon detection of an unknown AML
|
|
opcode. The AML parser has no real way to recover from this, and can
|
|
result in the creation of an ill-formed parse tree that causes errors
|
|
later during the disassembly.
|
|
|
|
All tools: Fixed a problem where the Unix application OSL did not handle
|
|
control-c correctly. For example, a control-c could incorrectly wake the
|
|
debugger.
|
|
|
|
AcpiExec: Improved the Control-C handling and added a handler for
|
|
segmentation faults (SIGSEGV). Supports both Windows and Unix-like
|
|
environments.
|
|
|
|
Reduced the verbosity of the generic unix makefiles. Previously, each
|
|
compilation displayed the full set of compiler options. This has been
|
|
eliminated as the options are easily inspected within the makefiles. Each
|
|
compilation now results in a single line of output.
|
|
|
|
----------------------------------------
|
|
03 March 2017. Summary of changes for version 20170303:
|
|
|
|
|
|
0) ACPICA licensing:
|
|
|
|
The licensing information at the start of each source code module has
|
|
been updated. In addition to the Intel license, the dual GPLv2/BSD
|
|
license has been added for completeness. Now, a single version of the
|
|
source code should be suitable for all ACPICA customers. This is the
|
|
major change for this release since it affects all source code modules.
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed two issues with the common asltypes.h header that could cause
|
|
problems in some environments: (Kim Jung-uk)
|
|
Removed typedef for YY_BUFFER_STATE ?
|
|
Fixes an error with earlier versions of Flex.
|
|
Removed use of FILE typedef (which is only defined in stdio.h)
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: fixed a regression introduced in 20170224. A fix for a
|
|
memory leak related to resource descriptor tags (names) could fault when
|
|
the disassembler was generated with 64-bit compilers.
|
|
|
|
The ASLTS test suite has been updated to implement a new testing
|
|
architecture. During generation of the suite from ASL source, both the
|
|
ASL and ASL+ compilers are now validated, as well as the disassembler
|
|
itself (Erik Schmauss). The architecture executes as follows:
|
|
|
|
For every ASL source module:
|
|
Compile (legacy ASL compilation)
|
|
Disassemble the resulting AML to ASL+ source code
|
|
Compile the new ASL+ module
|
|
Perform a binary compare on the legacy AML and the new ASL+ AML
|
|
The ASLTS suite then executes normally using the AML binaries.
|
|
|
|
----------------------------------------
|
|
24 February 2017. Summary of changes for version 20170224:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Interpreter: Fixed two issues with the control method return value auto-
|
|
repair feature, where an attempt to double-delete an internal object
|
|
could result in an ACPICA warning (for _CID repair and others). No fault
|
|
occurs, however, because the attempted deletion (actually a release to an
|
|
internal cache) is detected and ignored via object poisoning.
|
|
|
|
Debugger: Fixed an AML interpreter mutex issue during the single stepping
|
|
of control methods. If certain debugger commands are executed during
|
|
stepping, a mutex acquire/release error could occur. Lv Zheng.
|
|
|
|
Fixed some issues generating ACPICA with the Intel C compiler by
|
|
restoring the original behavior and compiler-specific include file in
|
|
acenv.h. Lv Zheng.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
|
|
Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
|
|
Previous Release:
|
|
Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
|
|
Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
|
|
tool has been designed, implemented, and included in this release. The
|
|
key feature of this utility is that the original comments within the
|
|
input ASL file are preserved during the conversion process, and included
|
|
within the converted ASL+ file -- thus creating a transparent conversion
|
|
of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
|
|
|
|
Usage: iasl -ca <ASL-filename> // Output is a .dsl file with
|
|
converted code
|
|
|
|
iASL/Disassembler: Improved the detection and correct disassembly of
|
|
Switch/Case operators. This feature detects sequences of if/elseif/else
|
|
operators that originated from ASL Switch/Case/Default operators and
|
|
emits the original operators. David Box.
|
|
|
|
iASL: Improved the IORT ACPI table support in the following areas. Lv
|
|
Zheng:
|
|
Clear MappingOffset if the MappingCount is zero.
|
|
Fix the disassembly of the SMMU GSU interrupt offset.
|
|
Update the template file for the IORT table.
|
|
|
|
Disassembler: Enhanced the detection and disassembly of resource
|
|
template/descriptor within a Buffer object. An EndTag descriptor is now
|
|
required to have a zero second byte, since all known ASL compilers emit
|
|
this. This helps eliminate incorrect decisions when a buffer is
|
|
disassembled (false positives on resource templates).
|
|
|
|
----------------------------------------
|
|
19 January 2017. Summary of changes for version 20170119:
|
|
|
|
|
|
1) General ACPICA software:
|
|
|
|
Entire source code base: Added the 2017 copyright to all source code
|
|
legal/licensing module headers and utility/tool signons. This includes
|
|
the standard Linux dual-license header. This affects virtually every file
|
|
in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
|
|
the ACPICA test suite.
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Removed/fixed an inadvertent remark when a method argument
|
|
containing a reference is used as a target operand within the method (and
|
|
never used as a simple argument), as in the example below. Jeffrey Hugo.
|
|
|
|
dsdt.asl 1507: Store(0x1, Arg0)
|
|
Remark 2146 - ^ Method Argument is never used (Arg0)
|
|
|
|
All tools: Removed the bit width of the compiler that generated the tool
|
|
from the common signon for all user space tools. This proved to be
|
|
confusing and unnecessary. This includes similar removal of HARDWARE_NAME
|
|
from the generic makefiles (Thomas Petazzoni). Example below.
|
|
|
|
Old:
|
|
ASL+ Optimizing Compiler version 20170119-32
|
|
ASL+ Optimizing Compiler version 20170119-64
|
|
|
|
New:
|
|
ASL+ Optimizing Compiler version 20170119
|
|
|
|
----------------------------------------
|
|
22 December 2016. Summary of changes for version 20161222:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
AML Debugger: Implemented a new mechanism to simplify and enhance
|
|
debugger integration into all environments, including kernel debuggers
|
|
and user-space utilities, as well as remote debug services. This
|
|
mechanism essentially consists of new OSL interfaces to support debugger
|
|
initialization/termination, as well as wait/notify interfaces to perform
|
|
the debugger handshake with the host. Lv Zheng.
|
|
|
|
New OSL interfaces:
|
|
AcpiOsInitializeDebugger (void)
|
|
AcpiOsTerminateDebugger (void)
|
|
AcpiOsWaitCommandReady (void)
|
|
AcpiOsNotifyCommandComplete (void)
|
|
|
|
New OS services layer:
|
|
osgendbg.c -- Example implementation, and used for AcpiExec
|
|
|
|
Update for Generic Address Space (GAS) support: Although the AccessWidth
|
|
and/or BitOffset fields of the GAS are not often used, this change now
|
|
fully supports these fields. This affects the internal support for FADT
|
|
registers, registers in other ACPI data tables, and the AcpiRead and
|
|
AcpiWrite public interfaces. Lv Zheng.
|
|
|
|
Sleep support: In order to simplify integration of ACPI sleep for the
|
|
various host operating systems, a new OSL interface has been introduced.
|
|
AcpiOsEnterSleep allows the host to perform any required operations
|
|
before the final write to the sleep control register(s) is performed by
|
|
ACPICA. Lv Zheng.
|
|
|
|
New OSL interface:
|
|
AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
|
|
|
|
Called from these internal interfaces:
|
|
AcpiHwLegacySleep
|
|
AcpiHwExtendedSleep
|
|
|
|
EFI support: Added a very small EFI/ACPICA example application. Provides
|
|
a simple demo for EFI integration, as well as assisting with resolution
|
|
of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
|
|
|
|
source/tools/efihello/efihello.c
|
|
|
|
Local C library: Implemented several new functions to enhance ACPICA
|
|
portability, for environments where these clib functions are not
|
|
available (such as EFI). Lv Zheng:
|
|
putchar
|
|
getchar
|
|
strpbrk
|
|
strtok
|
|
memmove
|
|
|
|
Fixed a regression where occasionally a valid resource descriptor was
|
|
incorrectly detected as invalid at runtime, and a
|
|
AE_AML_NO_RESOURCE_END_TAG was returned.
|
|
|
|
Fixed a problem with the recently implemented support that enables
|
|
control method invocations as Target operands to many ASL operators.
|
|
Warnings of this form: "Needed type [Reference], found [Processor]" were
|
|
seen at runtime for some method invocations.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
|
|
Debug Version: 201.7K Code, 82.7K Data, 284.4K Total
|
|
Previous Release:
|
|
Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
|
|
Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Enhanced output by adding the capability to detect and
|
|
disassemble ASL Switch/Case statements back to the original ASL source
|
|
code instead of if/else blocks. David Box.
|
|
|
|
AcpiHelp: Split a large file into separate files based upon
|
|
functionality/purpose. New files are:
|
|
ahaml.c
|
|
ahasl.c
|
|
|
|
----------------------------------------
|
|
17 November 2016. Summary of changes for version 20161117:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Table Manager: Fixed a regression introduced in 20160729, "FADT support
|
|
cleanup". This was an attempt to remove all references in the source to
|
|
the FADT version 2, which never was a legal version number. It was
|
|
skipped because it was an early version of 64-bit support that was
|
|
eventually abandoned for the current 64-bit support.
|
|
|
|
Interpreter: Fixed a problem where runtime implicit conversion was
|
|
incorrectly disabled for the ASL operators below. This brings the
|
|
behavior into compliance with the ACPI specification:
|
|
FromBCD
|
|
ToBCD
|
|
ToDecimalString
|
|
ToHexString
|
|
ToInteger
|
|
ToBuffer
|
|
|
|
Table Manager: Added a new public interface, AcpiPutTable, used to
|
|
release and free an ACPI table returned by AcpiGetTable and related
|
|
interfaces. Lv Zheng.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
|
|
Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
|
|
Previous Release:
|
|
Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
|
|
Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Fixed a regression for disassembly of Resource Template.
|
|
Detection of templates in the AML stream missed some types of templates.
|
|
|
|
iASL: Fixed a problem where an Access Size error was returned for the PCC
|
|
address space when the AccessSize of the GAS register is greater than a
|
|
DWORD. Hoan Tran.
|
|
|
|
iASL: Implemented several grammar changes for the operators below. These
|
|
changes are slated for the next version of the ACPI specification:
|
|
RefOf - Disallow method invocation as an operand
|
|
CondRefOf - Disallow method invocation as an operand
|
|
DerefOf - Disallow operands that use the result from operators
|
|
that
|
|
do not return a reference (Changed TermArg to
|
|
SuperName).
|
|
|
|
iASL: Control method invocations are now allowed for Target operands, as
|
|
per the ACPI specification. Removed error for using a control method
|
|
invocation as a Target operand.
|
|
|
|
Disassembler: Improved detection of Resource Templates, Unicode, and
|
|
Strings within Buffer objects. These subtypes do not contain a specific
|
|
opcode to indicate the originating ASL code, and they must be detected by
|
|
other means within the disassembler.
|
|
|
|
iASL: Implemented an optimization improvement for 32-bit ACPI tables
|
|
(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
|
|
only after 64-bit to 32-bit truncation. A truncation warning message is
|
|
still emitted, however.
|
|
|
|
AcpiXtract: Implemented handling for both types of line terminators (LF
|
|
or CR/LF) so that it can accept AcpiDump output files from any system.
|
|
Peter Wu.
|
|
|
|
AcpiBin: Added two new options for comparing AML files:
|
|
-a: compare and display ALL mismatches
|
|
-o: start compare at this offset into the second file
|
|
|
|
----------------------------------------
|
|
30 September 2016. Summary of changes for version 20160930:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a regression in the internal AcpiTbFindTable function where a non
|
|
AE_OK exception could inadvertently be returned even if the function did
|
|
not fail. This problem affects the following operators:
|
|
DataTableRegion
|
|
LoadTable
|
|
|
|
Fixed a regression in the LoadTable operator where a load to any
|
|
namespace location other than the root no longer worked properly.
|
|
|
|
Increased the maximum loop count value that will result in the
|
|
AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
|
|
prevent infinite loops within the AML interpreter and thus the host OS
|
|
kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
|
|
1,048,575).
|
|
|
|
Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
|
|
acpixf.h file. This allows hosts to easily configure the maximum loop
|
|
count at runtime.
|
|
|
|
Removed an illegal character in the strtoul64.c file. This character
|
|
caused errors with some C compilers.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
|
|
Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
|
|
Previous Release:
|
|
Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
|
|
Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
|
|
the simpler ASL ElseIf keyword. During the conversion, a trailing If
|
|
block could be lost and missing from the disassembled output.
|
|
|
|
iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
|
|
the missing rule caused a parse error when using the Index operator as an
|
|
operand to ObjectType. This construct now compiles properly. Example:
|
|
ObjectType(PKG1[4]).
|
|
|
|
iASL: Correctly handle unresolved symbols in the hardware map file (-lm
|
|
option). Previously, unresolved symbols could cause a protection fault.
|
|
Such symbols are now marked as unresolved in the map file.
|
|
|
|
iASL: Implemented support to allow control method invocations as an
|
|
operand to the ASL DeRefOf operator. Example:
|
|
DeRefOf(MTH1(Local0))
|
|
|
|
Disassembler: Improved support for the ToPLD ASL macro. Detection of a
|
|
possible _PLD buffer now includes examination of both the normal buffer
|
|
length (16 or 20) as well as the surrounding AML package length.
|
|
|
|
Disassembler: Fixed a problem with the decoding of complex expressions
|
|
within the Divide operator for ASL+. For the case where both the quotient
|
|
and remainder targets are specified, the entire statement cannot be
|
|
disassembled. Previously, the output incorrectly contained a mix of ASL-
|
|
and ASL+ operators. This mixed statement causes a syntax error when
|
|
compiled. Example:
|
|
Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly
|
|
disassembled to:
|
|
Divide (INT1 + 6, 128, RSLT, QUOT)
|
|
|
|
iASL/Tools: Added support to process AML and non-AML ACPI tables
|
|
consistently. For the disassembler and AcpiExec, allow all types of ACPI
|
|
tables (AML and data tables). For the iASL -e option, allow only AML
|
|
tables (DSDT/SSDT).
|
|
|
|
----------------------------------------
|
|
31 August 2016. Summary of changes for version 20160831:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Improve support for the so-called "module-level code", which is defined
|
|
to be math, logical and control AML opcodes that appear outside of any
|
|
control method. This change improves the support by adding more opcodes
|
|
that can be executed in the manner. Some other issues have been solved,
|
|
and the ASL grammar changes to support such code under all scope
|
|
operators (Device, etc.) are complete. Lv Zheng.
|
|
|
|
UEFI support: these OSL functions have been implemented. This is an
|
|
additional step toward supporting the AcpiExec utility natively (with
|
|
full hardware access) under UEFI. Marcelo Ferreira.
|
|
AcpiOsReadPciConfiguration
|
|
AcpiOsWritePciConfiguration
|
|
|
|
Fixed a possible mutex error during control method auto-serialization. Lv
|
|
Zheng.
|
|
|
|
Updated support for the Generic Address Structure by fully implementing
|
|
all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
|
|
Zheng.
|
|
|
|
Updated the return value for the internal _OSI method. Instead of
|
|
0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
|
|
for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
|
|
implementations, and will be reflected and clarified in the next version
|
|
of the ACPI specification.
|
|
|
|
Implemented two new table events that can be passed to an ACPICA table
|
|
handler. These events are used to indicate a table installation or
|
|
uninstallation. These events are used in addition to existed table load
|
|
and unload events. Lv Zheng.
|
|
|
|
Implemented a cleanup for all internal string-to-integer conversions.
|
|
Consolidate multiple versions of this functionality and limit possible
|
|
bases to either 10 or 16 to simplify the code. Adds a new file,
|
|
utstrtoul64.
|
|
|
|
Cleanup the inclusion order of the various compiler-specific headers.
|
|
This simplifies build configuration management. The compiler-specific
|
|
headers are now split out from the host-specific headers. Lv Zheng.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
|
|
Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/AcpiExec: Added a command line option to display the build date/time
|
|
of the tool (-vd). This can be useful to verify that the correct version
|
|
of the tools are being used.
|
|
|
|
AML Debugger: Implemented a new subcommand ("execute predef") to execute
|
|
all predefined control methods and names within the current namespace.
|
|
This can be useful for debugging problems with ACPI tables and the ACPI
|
|
namespace.
|
|
|
|
----------------------------------------
|
|
29 July 2016. Summary of changes for version 20160729:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented basic UEFI support for the various ACPICA tools. This
|
|
includes:
|
|
1) An OSL to implement the various AcpiOs* interfaces on UEFI.
|
|
2) Support to obtain the ACPI tables on UEFI.
|
|
3) Local implementation of required C library functions not available on
|
|
UEFI.
|
|
4) A front-end (main) function for the tools for UEFI-related
|
|
initialization.
|
|
|
|
The initial deployment of this support is the AcpiDump utility executing
|
|
as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
|
|
Current environments supported are Linux/Unix. MSVC generation is not
|
|
supported at this time. See the generate/efi/README file for build
|
|
instructions. Lv Zheng.
|
|
|
|
Future plans include porting the AcpiExec utility to execute natively on
|
|
the platform with I/O and memory access. This will allow viewing/dump of
|
|
the platform namespace and native execution of ACPI control methods that
|
|
access the actual hardware. To fully implement this support, the OSL
|
|
functions below must be implemented with UEFI interfaces. Any community
|
|
help in the implementation of these functions would be appreciated:
|
|
AcpiOsReadPort
|
|
AcpiOsWritePort
|
|
AcpiOsReadMemory
|
|
AcpiOsWriteMemory
|
|
AcpiOsReadPciConfiguration
|
|
AcpiOsWritePciConfiguration
|
|
|
|
Restructured and standardized the C library configuration for ACPICA,
|
|
resulting in the various configuration options below. This includes a
|
|
global restructuring of the compiler-dependent and platform-dependent
|
|
include files. These changes may affect the existing platform-dependent
|
|
configuration files on some hosts. Lv Zheng.
|
|
|
|
The current C library configuration options appear below. For any issues,
|
|
it may be helpful to examine the existing compiler-dependent and
|
|
platform-dependent files as examples. Lv Zheng.
|
|
|
|
1) Linux kernel:
|
|
ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
|
|
library.
|
|
ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
|
|
2) Unix/Windows/BSD applications:
|
|
ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
|
|
library.
|
|
ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
|
|
3) UEFI applications:
|
|
ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
|
|
library.
|
|
ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
|
|
4) UEFI applications (EDK2/StdLib):
|
|
ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
|
|
ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
|
|
|
|
|
|
AML interpreter: "module-level code" support. Allows for execution of so-
|
|
called "executable" AML code (math/logical operations, etc.) outside of
|
|
control methods not just at the module level (top level) but also within
|
|
any scope declared outside of a control method - Scope{}, Device{},
|
|
Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
|
|
|
|
Simplified the configuration of the "maximum AML loops" global option by
|
|
adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
|
|
modified at runtime.
|
|
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
|
|
Debug Version: 199.0K Code, 81.8K Data, 280.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Add full support for the RASF ACPI table (RAS Features Table).
|
|
Includes disassembler, data table compiler, and header support.
|
|
|
|
iASL Expand "module-level code" support. Allows for
|
|
compilation/disassembly of so-called "executable" AML code (math/logical
|
|
operations, etc.) outside of control methods not just at the module level
|
|
(top level) but also within any scope declared outside of a control
|
|
method - Scope{}, Device{}, Processor{}, PowerResource{}, and
|
|
ThermalZone{}.
|
|
|
|
AcpiDump: Added support for dumping all SSDTs on newer versions of
|
|
Windows. These tables are now easily available -- SSDTs are not available
|
|
through the registry on older versions.
|
|
|
|
----------------------------------------
|
|
27 May 2016. Summary of changes for version 20160527:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Temporarily reverted the new arbitrary bit length/alignment support in
|
|
AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
|
|
a number of regressions with the new code that need to be fully resolved
|
|
and tested before this support can be finally integrated into ACPICA.
|
|
Apologies for any inconveniences these issues may have caused.
|
|
|
|
The ACPI message macros are not configurable (ACPI_MSG_ERROR,
|
|
ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
|
|
and ACPI_MSG_BIOS_WARNING). Lv Zheng.
|
|
|
|
Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
|
|
option. Adds a new return macro, return_STR. Junk-uk Kim.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
|
|
Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
|
|
Previous Release:
|
|
Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
|
|
Debug Version: 200.9K Code, 82.2K Data, 283.1K Total
|
|
|
|
----------------------------------------
|
|
22 April 2016. Summary of changes for version 20160422:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a regression in the GAS (generic address structure) arbitrary bit
|
|
support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
|
|
and incorrect return values. Lv Zheng. ACPICA BZ 1270.
|
|
|
|
ACPI 6.0: Added support for new/renamed resource macros. One new argument
|
|
was added to each of these macros, and the original name has been
|
|
deprecated. The AML disassembler will always disassemble to the new
|
|
names. Support for the new macros was added to iASL, disassembler,
|
|
resource manager, and the acpihelp utility. ACPICA BZ 1274.
|
|
|
|
I2cSerialBus -> I2cSerialBusV2
|
|
SpiSerialBus -> SpiSerialBusV2
|
|
UartSerialBus -> UartSerialBusV2
|
|
|
|
ACPI 6.0: Added support for a new integer field that was appended to the
|
|
package object returned by the _BIX method. This adds iASL compile-time
|
|
and AML runtime error checking. ACPICA BZ 1273.
|
|
|
|
ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
|
|
Subspace Type2" (Headers, Disassembler, and data table compiler).
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
|
|
Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
|
|
Previous Release:
|
|
Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
|
|
Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented an ASL grammar extension to allow/enable executable
|
|
"module-level code" to be created and executed under the various
|
|
operators that create new scopes. This type of AML code is already
|
|
supported in all known AML interpreters, and the grammar change will
|
|
appear in the next version of the ACPI specification. Simplifies the
|
|
conditional runtime creation of named objects under these object types:
|
|
|
|
Device
|
|
PowerResource
|
|
Processor
|
|
Scope
|
|
ThermalZone
|
|
|
|
iASL: Implemented a new ASL extension, a "For" loop macro to add greater
|
|
ease-of-use to the ASL language. The syntax is similar to the
|
|
corresponding C operator, and is implemented with the existing AML While
|
|
opcode -- thus requiring no changes to existing AML interpreters.
|
|
|
|
For (Initialize, Predicate, Update) {TermList}
|
|
|
|
Grammar:
|
|
ForTerm :=
|
|
For (
|
|
Initializer // Nothing | TermArg => ComputationalData
|
|
Predicate // Nothing | TermArg => ComputationalData
|
|
Update // Nothing | TermArg => ComputationalData
|
|
) {TermList}
|
|
|
|
|
|
iASL: The _HID/_ADR detection and validation has been enhanced to search
|
|
under conditionals in order to allow these objects to be conditionally
|
|
created at runtime.
|
|
|
|
iASL: Fixed several issues with the constant folding feature. The
|
|
improvement allows better detection and resolution of statements that can
|
|
be folded at compile time. ACPICA BZ 1266.
|
|
|
|
iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
|
|
conversion to the ASL ElseIf operator where incorrect ASL code could be
|
|
generated.
|
|
|
|
iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
|
|
sometimes an extra (and extraneous) set of parentheses were emitted for
|
|
some combinations of operators. Although this did not cause any problems
|
|
with recompilation of the disassembled code, it made the code more
|
|
difficult to read. David Box. ACPICA BZ 1231.
|
|
|
|
iASL: Changed to ignore the unreferenced detection for predefined names
|
|
of resource descriptor elements, when the resource descriptor is
|
|
created/defined within a control method.
|
|
|
|
iASL: Disassembler: Fix a possible fault with externally declared Buffer
|
|
objects.
|
|
|
|
----------------------------------------
|
|
18 March 2016. Summary of changes for version 20160318:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Added support for arbitrary bit lengths and bit offsets for registers
|
|
defined by the Generic Address Structure. Previously, only aligned bit
|
|
lengths of 8/16/32/64 were supported. This was sufficient for many years,
|
|
but recently some machines have been seen that require arbitrary bit-
|
|
level support. ACPICA BZ 1240. Lv Zheng.
|
|
|
|
Fixed an issue where the \_SB._INI method sometimes must be evaluated
|
|
before any _REG methods are evaluated. Lv Zheng.
|
|
|
|
Implemented several changes related to ACPI table support
|
|
(Headers/Disassembler/TableCompiler):
|
|
NFIT: For ACPI 6.1, updated to add some additional new fields and
|
|
constants.
|
|
FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
|
|
6).
|
|
DMAR: Added new constants per the 10/2014 DMAR spec.
|
|
IORT: Added new subtable per the 10/2015 IORT spec.
|
|
HEST: For ACPI 6.1, added new constants and new subtable.
|
|
DBG2: Added new constants per the 12/2015 DBG2 spec.
|
|
FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
|
|
ACPICA BZ 1249.
|
|
ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
|
|
|
|
Updated header support for the DMAR table to match the current version of
|
|
the related spec.
|
|
|
|
Added extensions to the ASL Concatenate operator to allow any ACPI object
|
|
to be passed as an operand. Any object other than Integer/String/Buffer
|
|
simply returns a string containing the object type. This extends the
|
|
usefulness of the Printf macros. Previously, Concatenate would abort the
|
|
control method if a non-data object was encountered.
|
|
|
|
ACPICA source code: Deployed the C "const" keyword across the source code
|
|
where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
|
|
Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
|
|
Previous Release:
|
|
Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
|
|
Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/Disassembler: Improved the heuristic used to determine the number of
|
|
arguments for an externally defined control method (a method in another
|
|
table). Although this is an improvement, there is no deterministic way to
|
|
"guess" the number of method arguments. Only the ACPI 6.0 External opcode
|
|
will completely solve this problem as it is deployed (automatically) in
|
|
newer BIOS code.
|
|
|
|
iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
|
|
statements that could cause errors when the disassembled file is
|
|
compiled. ACPICA BZ 1243. David Box.
|
|
|
|
iASL: Fixed a regression caused by the merger of the two versions of the
|
|
local strtoul64. Because of a dependency on a global variable, strtoul64
|
|
could return an error for integers greater than a 32-bit value. ACPICA BZ
|
|
1260.
|
|
|
|
iASL: Fixed a regression where a fault could occur for an ASL Return
|
|
statement if it invokes a control method that is not resolved. ACPICA BZ
|
|
1264.
|
|
|
|
AcpiXtract: Improved input file validation: detection of binary files and
|
|
non-acpidump text files.
|
|
|
|
----------------------------------------
|
|
12 February 2016. Summary of changes for version 20160212:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented full support for the ACPI 6.1 specification (released in
|
|
January). This version of the specification is available at:
|
|
http://www.uefi.org/specifications
|
|
|
|
Only a relatively small number of changes were required in ACPICA to
|
|
support ACPI 6.1, in these areas:
|
|
- New predefined names
|
|
- New _HID values
|
|
- A new subtable for HEST
|
|
- A few other header changes for new values
|
|
|
|
Ensure \_SB_._INI is executed before any _REG methods are executed. There
|
|
appears to be existing BIOS code that relies on this behavior. Lv Zheng.
|
|
|
|
Reverted a change made in version 20151218 which enabled method
|
|
invocations to be targets of various ASL operators (SuperName and Target
|
|
grammar elements). While the new behavior is supported by the ACPI
|
|
specification, other AML interpreters do not support this behavior and
|
|
never will. The ACPI specification will be updated for ACPI 6.2 to remove
|
|
this support. Therefore, the change was reverted to the original ACPICA
|
|
behavior.
|
|
|
|
ACPICA now supports the GCC 6 compiler.
|
|
|
|
Current Release: (Note: build changes increased sizes)
|
|
Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
|
|
Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
|
|
Previous Release:
|
|
Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
|
|
Debug Version: 200.4K Code, 81.9K Data, 282.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Completed full support for the ACPI 6.0 External() AML opcode. The
|
|
compiler emits an external AML opcode for each ASL External statement.
|
|
This opcode is used by the disassembler to assist with the disassembly of
|
|
external control methods by specifying the required number of arguments
|
|
for the method. AML interpreters do not use this opcode. To ensure that
|
|
interpreters do not even see the opcode, a block of one or more external
|
|
opcodes is surrounded by an "If(0)" construct. As this feature becomes
|
|
commonly deployed in BIOS code, the ability of disassemblers to correctly
|
|
disassemble AML code will be greatly improved. David Box.
|
|
|
|
iASL: Implemented support for an optional cross-reference output file.
|
|
The -lx option will create a the cross-reference file with the suffix
|
|
"xrf". Three different types of cross-reference are created in this file:
|
|
- List of object references made from within each control method
|
|
- Invocation (caller) list for each user-defined control method
|
|
- List of references to each non-method object in the namespace
|
|
|
|
iASL: Method invocations as ASL Target operands are now disallowed and
|
|
flagged as errors in preparation for ACPI 6.2 (see the description of the
|
|
problem above).
|
|
|
|
----------------------------------------
|
|
8 January 2016. Summary of changes for version 20160108:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated all ACPICA copyrights and signons to 2016: Added the 2016
|
|
copyright to all source code module headers and utility/tool signons.
|
|
This includes the standard Linux dual-license header. This affects
|
|
virtually every file in the ACPICA core subsystem, iASL compiler, all
|
|
ACPICA utilities, and the ACPICA test suite.
|
|
|
|
Fixed a regression introduced in version 20151218 concerning the
|
|
execution of so-called module-level ASL/AML code. Namespace objects
|
|
created under a module-level If() construct were not properly/fully
|
|
entered into the namespace and could cause an interpreter fault when
|
|
accessed.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
|
|
Debug Version: 200.4K Code, 81.9K Data, 282.4K Total
|
|
Previous Release:
|
|
Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
|
|
Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed a problem with the compilation of the GpioIo and GpioInt resource
|
|
descriptors. The _PIN field name was incorrectly defined to be an array
|
|
of 32-bit values, but the _PIN values are in fact 16 bits each. This
|
|
would cause incorrect bit width warnings when using Word (16-bit) fields
|
|
to access the descriptors.
|
|
|
|
|
|
----------------------------------------
|
|
18 December 2015. Summary of changes for version 20151218:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented per-AML-table execution of "module-level code" as individual
|
|
ACPI tables are loaded into the namespace during ACPICA initialization.
|
|
In other words, any module-level code within an AML table is executed
|
|
immediately after the table is loaded, instead of batched and executed
|
|
after all of the tables have been loaded. This provides compatibility
|
|
with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
|
|
David Box.
|
|
|
|
To fully support the feature above, the default operation region handlers
|
|
for the SystemMemory, SystemIO, and PCI_Config address spaces are now
|
|
installed before any ACPI tables are loaded. This enables module-level
|
|
code to access these address spaces during the table load and module-
|
|
level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
|
|
Box.
|
|
|
|
Implemented several changes to the internal _REG support in conjunction
|
|
with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
|
|
utilities for the changes above. Although these tools were changed, host
|
|
operating systems that simply use the default handlers for SystemMemory,
|
|
SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
|
|
|
|
For example, in the code below, DEV1 is conditionally added to the
|
|
namespace by the DSDT via module-level code that accesses an operation
|
|
region. The SSDT references DEV1 via the Scope operator. DEV1 must be
|
|
created immediately after the DSDT is loaded in order for the SSDT to
|
|
successfully reference DEV1. Previously, this code would cause an
|
|
AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
|
|
fully supported by ACPICA.
|
|
|
|
DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
|
|
{
|
|
OperationRegion (OPR1, SystemMemory, 0x400, 32)
|
|
Field (OPR1, AnyAcc, NoLock, Preserve)
|
|
{
|
|
FLD1, 1
|
|
}
|
|
If (FLD1)
|
|
{
|
|
Device (\DEV1)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
|
|
{
|
|
External (\DEV1, DeviceObj)
|
|
Scope (\DEV1)
|
|
{
|
|
}
|
|
}
|
|
|
|
Fixed an AML interpreter problem where control method invocations were
|
|
not handled correctly when the invocation was itself a SuperName argument
|
|
to another ASL operator. In these cases, the method was not invoked.
|
|
ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
|
|
argument:
|
|
Store
|
|
Acquire, Wait
|
|
CondRefOf, RefOf
|
|
Decrement, Increment
|
|
Load, Unload
|
|
Notify
|
|
Signal, Release, Reset
|
|
SizeOf
|
|
|
|
Implemented automatic String-to-ObjectReference conversion support for
|
|
packages returned by predefined names (such as _DEP). A common BIOS error
|
|
is to add double quotes around an ObjectReference namepath, which turns
|
|
the reference into an unexpected string object. This support detects the
|
|
problem and corrects it before the package is returned to the caller that
|
|
invoked the method. Lv Zheng.
|
|
|
|
Implemented extensions to the Concatenate operator. Concatenate now
|
|
accepts any type of object, it is not restricted to simply
|
|
Integer/String/Buffer. For objects other than these 3 basic data types,
|
|
the argument is treated as a string containing the name of the object
|
|
type. This expands the utility of Concatenate and the Printf/Fprintf
|
|
macros. ACPICA BZ 1222.
|
|
|
|
Cleaned up the output of the ASL Debug object. The timer() value is now
|
|
optional and no longer emitted by default. Also, the basic data types of
|
|
Integer/String/Buffer are simply emitted as their values, without a data
|
|
type string -- since the data type is obvious from the output. ACPICA BZ
|
|
1221.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
|
|
Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
|
|
Previous Release:
|
|
Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
|
|
Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed some issues with the ASL Include() operator. This operator
|
|
was incorrectly defined in the iASL parser rules, causing a new scope to
|
|
be opened for the code within the include file. This could lead to
|
|
several issues, including allowing ASL code that is technically illegal
|
|
and not supported by AML interpreters. Note, this does not affect the
|
|
related #include preprocessor operator. ACPICA BZ 1212.
|
|
|
|
iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
|
|
operator is essentially an ASL macro since there is no AML opcode
|
|
associated with it. The code emitted by the iASL compiler for ElseIf is
|
|
an Else opcode followed immediately by an If opcode. The disassembler
|
|
will now emit an ElseIf if it finds an Else immediately followed by an
|
|
If. This simplifies the decoded ASL, especially for deeply nested
|
|
If..Else and large Switch constructs. Thus, the disassembled code more
|
|
closely follows the original source ASL. ACPICA BZ 1211. Example:
|
|
|
|
Old disassembly:
|
|
Else
|
|
{
|
|
If (Arg0 == 0x02)
|
|
{
|
|
Local0 = 0x05
|
|
}
|
|
}
|
|
|
|
New disassembly:
|
|
ElseIf (Arg0 == 0x02)
|
|
{
|
|
Local0 = 0x05
|
|
}
|
|
|
|
AcpiExec: Added support for the new module level code behavior and the
|
|
early region installation. This required a small change to the
|
|
initialization, since AcpiExec must install its own operation region
|
|
handlers.
|
|
|
|
AcpiExec: Added support to make the debug object timer optional. Default
|
|
is timer disabled. This cleans up the debug object output -- the timer
|
|
data is rarely used.
|
|
|
|
AcpiExec: Multiple ACPI tables are now loaded in the order that they
|
|
appear on the command line. This can be important when there are
|
|
interdependencies/references between the tables.
|
|
|
|
iASL/Templates. Add support to generate template files with multiple
|
|
SSDTs within a single output file. Also added ommand line support to
|
|
specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
|
|
1223, 1225.
|
|
|
|
|
|
----------------------------------------
|
|
24 November 2015. Summary of changes for version 20151124:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a possible regression for a previous update to FADT handling. The
|
|
FADT no longer has a fixed table ID, causing some issues with code that
|
|
was hardwired to a specific ID. Lv Zheng.
|
|
|
|
Fixed a problem where the method auto-serialization could interfere with
|
|
the current SyncLevel. This change makes the auto-serialization support
|
|
transparent to the SyncLevel support and management.
|
|
|
|
Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
|
|
interface is intended for early access to the namespace during the
|
|
initial namespace device discovery walk. The _SUB method has been seen to
|
|
access operation regions in some cases, causing errors because the
|
|
operation regions are not fully initialized.
|
|
|
|
AML Debugger: Fixed some issues with the terminate/quit/exit commands
|
|
that can cause faults. Lv Zheng.
|
|
|
|
AML Debugger: Add thread ID support so that single-step mode only applies
|
|
to the AML Debugger thread. This prevents runtime errors within some
|
|
kernels. Lv Zheng.
|
|
|
|
Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
|
|
methods that are invoked by this interface are optional, removed warnings
|
|
emitted for the case where one or more of these methods do not exist.
|
|
ACPICA BZ 1208, original change by Prarit Bhargava.
|
|
|
|
Made a major pass through the entire ACPICA source code base to
|
|
standardize formatting that has diverged a bit over time. There are no
|
|
functional changes, but this will of course cause quite a few code
|
|
differences from the previous ACPICA release.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
|
|
Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
|
|
Previous Release:
|
|
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
|
|
Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
|
|
definition blocks within a single ASL file and the resulting AML file.
|
|
Support for this type of file was also added to the various tools that
|
|
use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
|
|
example code below shows two definition blocks within the same file:
|
|
|
|
DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
|
|
0x12345678)
|
|
{
|
|
}
|
|
DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
|
|
{
|
|
}
|
|
|
|
iASL: Enhanced typechecking for the Name() operator. All expressions for
|
|
the value of the named object must be reduced/folded to a single constant
|
|
at compile time, as per the ACPI specification (the AML definition of
|
|
Name()).
|
|
|
|
iASL: Fixed some code indentation issues for the -ic and -ia options (C
|
|
and assembly headers). Now all emitted code correctly begins in column 1.
|
|
|
|
iASL: Added an error message for an attempt to open a Scope() on an
|
|
object defined in an SSDT. The DSDT is always loaded into the namespace
|
|
first, so any attempt to open a Scope on an SSDT object will fail at
|
|
runtime.
|
|
|
|
|
|
----------------------------------------
|
|
30 September 2015. Summary of changes for version 20150930:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Debugger: Implemented several changes and bug fixes to assist support for
|
|
the in-kernel version of the AML debugger. Lv Zheng.
|
|
- Fix the "predefined" command for in-kernel debugger.
|
|
- Do not enter debug command loop for the help and version commands.
|
|
- Disallow "execute" command during execution/single-step of a method.
|
|
|
|
Interpreter: Updated runtime typechecking for all operators that have
|
|
target operands. The operand is resolved and validated that it is legal.
|
|
For example, the target cannot be a non-data object such as a Device,
|
|
Mutex, ThermalZone, etc., as per the ACPI specification.
|
|
|
|
Debugger: Fixed the double-mutex user I/O handshake to work when local
|
|
deadlock detection is enabled.
|
|
|
|
Debugger: limited display of method locals and arguments (LocalX and
|
|
ArgX) to only those that have actually been initialized. This prevents
|
|
lines of extraneous output.
|
|
|
|
Updated the definition of the NFIT table to correct the bit polarity of
|
|
one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
|
|
Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
|
|
Previous Release:
|
|
Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
|
|
Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Improved the compile-time typechecking for operands of many of the
|
|
ASL operators:
|
|
|
|
-- Added an option to disable compiler operand/operator typechecking (-
|
|
ot).
|
|
|
|
-- For the following operators, the TermArg operands are now validated
|
|
when possible to be Integer data objects: BankField, OperationRegion,
|
|
DataTableRegion, Buffer, and Package.
|
|
|
|
-- Store (Source, Target): Both the source and target operands are
|
|
resolved and checked that the operands are both legal. For example,
|
|
neither operand can be a non-data object such as a Device, Mutex,
|
|
ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
|
|
operator can be used to store an object to any type of target object.
|
|
|
|
-- Store (Source, Target): If the source is a Package object, the target
|
|
must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
|
|
is a Package, the source must also be a Package.
|
|
|
|
-- Store (Source, Target): A warning is issued if the source and target
|
|
resolve to the identical named object.
|
|
|
|
-- Store (Source, <method invocation>): An error is generated for the
|
|
target method invocation, as this construct is not supported by the AML
|
|
interpreter.
|
|
|
|
-- For all ASL math and logic operators, the target operand must be a
|
|
data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
|
|
includes the function return value also.
|
|
|
|
-- External declarations are also included in the typechecking where
|
|
possible. External objects defined using the UnknownObj keyword cannot be
|
|
typechecked, however.
|
|
|
|
iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
|
|
operator:
|
|
- Legacy code: Index(PKG1, 3)
|
|
- New ASL+ code: PKG1[3]
|
|
This completes the ACPI 6.0 ASL+ support as it was the only operator not
|
|
supported.
|
|
|
|
iASL: Fixed the file suffix for the preprocessor output file (.i). Two
|
|
spaces were inadvertently appended to the filename, causing file access
|
|
and deletion problems on some systems.
|
|
|
|
ASL Test Suite (ASLTS): Updated the master makefile to generate all
|
|
possible compiler output files when building the test suite -- thus
|
|
exercising these features of the compiler. These files are automatically
|
|
deleted when the test suite exits.
|
|
|
|
|
|
----------------------------------------
|
|
18 August 2015. Summary of changes for version 20150818:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
|
|
Zheng. ACPICA BZ 1186.
|
|
|
|
Completed development to ensure that the ACPICA Disassembler and Debugger
|
|
are fully standalone components of ACPICA. Removed cross-component
|
|
dependences. Lv Zheng.
|
|
|
|
The max-number-of-AML-loops is now runtime configurable (previously was
|
|
compile-time only). This is essentially a loop timeout to force-abort
|
|
infinite AML loops. ACPCIA BZ 1192.
|
|
|
|
Debugger: Cleanup output to dump ACPI names and namepaths without any
|
|
trailing underscores. Lv Zheng. ACPICA BZ 1135.
|
|
|
|
Removed unnecessary conditional compilations across the Debugger and
|
|
Disassembler components where entire modules could be left uncompiled.
|
|
|
|
The aapits test is deprecated and has been removed from the ACPICA git
|
|
tree. The test has never been completed and has not been maintained, thus
|
|
becoming rather useless. ACPICA BZ 1015, 794.
|
|
|
|
A batch of small changes to close bugzilla and other reports:
|
|
- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
|
|
- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
|
|
- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
|
|
- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
|
|
Moore.
|
|
- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
|
|
ACPICA BZ 1184.
|
|
- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
|
|
operators.
|
|
- Debugger: Split debugger initialization/termination interfaces. Lv
|
|
Zheng.
|
|
- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
|
|
identification.
|
|
- AcpiExec: Add debug message during _REG method phase during table
|
|
load/init.
|
|
- AcpiNames: Fix a regression where some output was missing and no longer
|
|
emitted.
|
|
- Debugger: General cleanup and simplification. Lv Zheng.
|
|
- Disassembler: Cleanup use of several global option variables. Lv Zheng.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
|
|
Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
|
|
Previous Release:
|
|
Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
|
|
Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
|
|
were not handled properly and caused load errors. Now, properly invoke
|
|
and use the ACPICA auto-reallocate mechanism for ACPI table data
|
|
structures. ACPICA BZ 1188
|
|
|
|
AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
|
|
BZ 1190.
|
|
|
|
AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
|
|
AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
|
|
executed during initialization. ACPICA BZ 1187, 1189.
|
|
|
|
iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
|
|
that corresponds to each disassembled ASL statement, to simplify
|
|
debugging. ACPICA BZ 1191.
|
|
|
|
Debugger: Add option to the "objects" command to display a summary of the
|
|
current namespace objects (Object type and count). This is displayed if
|
|
the command is entered with no arguments.
|
|
|
|
AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
|
|
|
|
|
|
----------------------------------------
|
|
17 July 2015. Summary of changes for version 20150717:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Improved the partitioning between the Debugger and Disassembler
|
|
components. This allows the Debugger to be used standalone within kernel
|
|
code without the Disassembler (which is used for single stepping also).
|
|
This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
|
|
|
|
Debugger: Implemented a new command to trace the execution of control
|
|
methods (Trace). This is especially useful for the in-kernel version of
|
|
the debugger when file I/O may not be available for method trace output.
|
|
See the ACPICA reference for more information. Lv Zheng.
|
|
|
|
Moved all C library prototypes (used for the local versions of these
|
|
functions when requested) to a new header, acclib.h
|
|
Cleaned up the use of non-ANSI C library functions. These functions are
|
|
implemented locally in ACPICA. Moved all such functions to a common
|
|
source file, utnonansi.c
|
|
|
|
Debugger: Fixed a problem with the "!!" command (get last command
|
|
executed) where the debugger could enter an infinite loop and eventually
|
|
crash.
|
|
|
|
Removed the use of local macros that were used for some of the standard C
|
|
library functions to automatically cast input parameters. This mostly
|
|
affected the is* functions where the input parameter is defined to be an
|
|
int. This required a few modifications to the main ACPICA source code to
|
|
provide casting for these functions and eliminate possible compiler
|
|
warnings for these parameters.
|
|
|
|
Across the source code, added additional status/error checking to resolve
|
|
issues discovered by static source code analysis tools such as Coverity.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
|
|
Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
|
|
Previous Release:
|
|
Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
|
|
Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a regression where the device map file feature no longer
|
|
worked properly when used in conjunction with the disassembler. It only
|
|
worked properly with the compiler itself.
|
|
|
|
iASL: Implemented a new warning for method LocalX variables that are set
|
|
but never used (similar to a C compiler such as gcc). This also applies
|
|
to ArgX variables that are not defined by the parent method, and are
|
|
instead (legally) used as local variables.
|
|
|
|
iASL/Preprocessor: Finished the pass-through of line numbers from the
|
|
preprocessor to the compiler. This ensures that compiler errors/warnings
|
|
have the correct original line numbers and filenames, regardless of any
|
|
#include files.
|
|
|
|
iASL/Preprocessor: Fixed a couple of issues with comment handling and the
|
|
pass-through of comments to the preprocessor output file (which becomes
|
|
the compiler input file). Also fixed a problem with // comments that
|
|
appear after a math expression.
|
|
|
|
iASL: Added support for the TCPA server table to the table compiler and
|
|
template generator. (The client table was already previously supported)
|
|
|
|
iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
|
|
identify the iASL compiler.
|
|
|
|
Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
|
|
multiple times. The new names are ACPI_SIGN_NEGATIVE and
|
|
ACPI_SIGN_POSITIVE.
|
|
|
|
AcpiHelp: Update to expand help messages for the iASL preprocessor
|
|
directives.
|
|
|
|
|
|
----------------------------------------
|
|
19 June 2015. Summary of changes for version 20150619:
|
|
|
|
Two regressions in version 20150616 have been addressed:
|
|
|
|
Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
|
|
etc.) This update changes ACPICA to only use the standard headers for
|
|
functions, or the prototypes for the local versions of the C library
|
|
functions. Across the source code, this required some additional casts
|
|
for some Clib invocations for portability. Moved all local prototypes to
|
|
a new file, acclib.h
|
|
|
|
Fixes several problems with recent changes to the handling of the FACS
|
|
table that could cause some systems not to boot.
|
|
|
|
|
|
----------------------------------------
|
|
16 June 2015. Summary of changes for version 20150616:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Across the entire ACPICA source code base, the various macros for the C
|
|
library functions (such as ACPI_STRLEN, etc.) have been removed and
|
|
replaced by the standard C library names (strlen, etc.) The original
|
|
purpose for these macros is no longer applicable. This simplification
|
|
reduces the number of macros used in the ACPICA source code
|
|
significantly, improving readability and maintainability.
|
|
|
|
Implemented support for a new ACPI table, the OSDT. This table, the
|
|
"override" SDT, can be loaded directly by the host OS at boot time. It
|
|
enables the replacement of existing namespace objects that were installed
|
|
via the DSDT and/or SSDTs. The primary purpose for this is to replace
|
|
buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
|
|
for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
|
|
Moore.
|
|
|
|
Added support for systems with (improperly) two FACS tables -- a "32-bit"
|
|
table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
|
|
X field). This change will support both automatically. There continues to
|
|
be systems found with this issue. This support requires a change to the
|
|
AcpiSetFirmwareWakingVector interface. Also, a public global variable has
|
|
been added to allow the host to select which FACS is desired
|
|
(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
|
|
details Lv Zheng.
|
|
|
|
Added a new feature to allow for systems that do not contain an FACS.
|
|
Although this is already supported on hardware-reduced platforms, the
|
|
feature has been extended for all platforms. The reasoning is that we do
|
|
not want to abort the entire ACPICA initialization just because the
|
|
system is seriously buggy and has no FACS.
|
|
|
|
Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
|
|
not correctly transcribed from the ACPI specification in ACPICA version
|
|
20150515.
|
|
|
|
Implemented support for the _CLS object in the AcpiGetObjectInfo external
|
|
interface.
|
|
|
|
Updated the definitions of the TCPA and TPM2 ACPI tables to the more
|
|
recent TCG ACPI Specification, December 14, 2014. Table disassembler and
|
|
compiler also updated. Note: The TCPA "server" table is not supported by
|
|
the disassembler/table-compiler at this time.
|
|
|
|
ACPI 6.0: Added definitions for the new GIC version field in the MADT.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
|
|
Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
|
|
Previous Release:
|
|
Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
|
|
Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Fixed a problem with the new symbolic operator disassembler
|
|
where incorrect ASL code could be emitted in some cases for the "non-
|
|
commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
|
|
ShiftRight. The actual problem cases seem to be rather unusual in common
|
|
ASL code, however. David Box.
|
|
|
|
Modified the linux version of acpidump to obtain ACPI tables from not
|
|
just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
|
|
Zheng.
|
|
|
|
iASL: Fixed a problem where the user preprocessor output file (.i)
|
|
contained extra data that was not expected. The compiler was using this
|
|
file as a temporary file and passed through #line directives in order to
|
|
keep compiler error messages in sync with the input file and line number
|
|
across multiple include files. The (.i) is no longer a temporary file as
|
|
the compiler uses a new, different file for the original purpose.
|
|
|
|
iASL: Fixed a problem where comments within the original ASL source code
|
|
file were not passed through to the preprocessor output file, nor any
|
|
listing files.
|
|
|
|
iASL: Fixed some issues for the handling of the "#include" preprocessor
|
|
directive and the similar (but not the same) "Include" ASL operator.
|
|
|
|
iASL: Add support for the new OSDT in both the disassembler and compiler.
|
|
|
|
iASL: Fixed a problem with the constant folding support where a Buffer
|
|
object could be incorrectly generated (incorrectly formed) during a
|
|
conversion to a Store() operator.
|
|
|
|
AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
|
|
description text for the _REV predefined name. _REV now permanently
|
|
returns 2, as per the ACPI 6.0 specification.
|
|
|
|
Debugger: Enhanced the output of the Debug ASL object for references
|
|
produced by the Index operator. For Buffers and strings, only output the
|
|
actual byte pointed to by the index. For packages, only print the single
|
|
package element decoded by the index. Previously, the entire
|
|
buffer/string/package was emitted.
|
|
|
|
iASL/Table-compiler: Fixed a regression where the "generic" data types
|
|
were no longer recognized, causing errors.
|
|
|
|
|
|
----------------------------------------
|
|
15 May 2015. Summary of changes for version 20150515:
|
|
|
|
This release implements most of ACPI 6.0 as described below.
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented runtime argument checking and return value checking for all
|
|
new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
|
|
_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
|
|
Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
|
|
Previous Release:
|
|
Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
|
|
Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
|
|
names (argument count validation and return value typechecking.)
|
|
|
|
iASL disassembler and table compiler: implemented support for all new
|
|
ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
|
|
|
|
iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
|
|
tables: FADT, MADT.
|
|
|
|
iASL preprocessor: Added a new directive to enable inclusion of binary
|
|
blobs into ASL code. The new directive is #includebuffer. It takes a
|
|
binary file as input and emits a named ascii buffer object into the ASL
|
|
code.
|
|
|
|
AcpiHelp: Added support for all new ACPI 6.0 predefined names.
|
|
|
|
AcpiHelp: Added a new option, -d, to display all iASL preprocessor
|
|
directives.
|
|
|
|
AcpiHelp: Added a new option, -t, to display all known/supported ACPI
|
|
tables.
|
|
|
|
|
|
----------------------------------------
|
|
10 April 2015. Summary of changes for version 20150410:
|
|
|
|
Reverted a change introduced in version 20150408 that caused
|
|
a regression in the disassembler where incorrect operator
|
|
symbols could be emitted.
|
|
|
|
|
|
----------------------------------------
|
|
08 April 2015. Summary of changes for version 20150408:
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Permanently set the return value for the _REV predefined name. It now
|
|
returns 2 (was 5). This matches other ACPI implementations. _REV will be
|
|
deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
|
|
for ACPI 2.0 and later. It should never be used to differentiate or
|
|
identify operating systems.
|
|
|
|
Added the "Windows 2015" string to the _OSI support. ACPICA will now
|
|
return TRUE to a query with this string.
|
|
|
|
Fixed several issues with the local version of the printf function.
|
|
|
|
Added the C99 compiler option (-std=c99) to the Unix makefiles.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
|
|
Debug Version: 195.2K Code, 80.7K Data, 275.9K Total
|
|
Previous Release:
|
|
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
|
|
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented an enhancement to the constant folding feature to
|
|
transform the parse tree to a simple Store operation whenever possible:
|
|
Add (2, 3, X) ==> is converted to: Store (5, X)
|
|
X = 2 + 3 ==> is converted to: Store (5, X)
|
|
|
|
Updated support for the SLIC table (Software Licensing Description Table)
|
|
in both the Data Table compiler and the disassembler. The SLIC table
|
|
support now conforms to "Microsoft Software Licensing Tables (SLIC and
|
|
MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
|
|
following the ACPI header is now defined to be "Proprietary Data", and as
|
|
such, can only be entered or displayed as a hex data block.
|
|
|
|
Implemented full support for the MSDM table as described in the document
|
|
above. Note: The format of MSDM is similar to SLIC. Any MSDM data
|
|
following the ACPI header is defined to be "Proprietary Data", and can
|
|
only be entered or displayed as a hex data block.
|
|
|
|
Implemented the -Pn option for the iASL Table Compiler (was only
|
|
implemented for the ASL compiler). This option disables the iASL
|
|
preprocessor.
|
|
|
|
Disassembler: For disassembly of Data Tables, added a comment field
|
|
around the Ascii equivalent data that is emitted as part of the "Raw
|
|
Table Data" block. This prevents the iASL Preprocessor from possible
|
|
confusion if/when the table is compiled.
|
|
|
|
Disassembler: Added an option (-df) to force the disassembler to assume
|
|
that the table being disassembled contains valid AML. This feature is
|
|
useful for disassembling AML files that contain ACPI signatures other
|
|
than DSDT or SSDT (such as OEMx or other signatures).
|
|
|
|
Changes for the EFI version of the tools:
|
|
1) Fixed a build error/issue
|
|
2) Fixed a cast warning
|
|
|
|
iASL: Fixed a path issue with the __FILE__ operator by making the
|
|
directory prefix optional within the internal SplitInputFilename
|
|
function.
|
|
|
|
Debugger: Removed some unused global variables.
|
|
|
|
Tests: Updated the makefile for proper generation of the AAPITS suite.
|
|
|
|
|
|
----------------------------------------
|
|
04 February 2015. Summary of changes for version 20150204:
|
|
|
|
ACPICA kernel-resident subsystem:
|
|
|
|
Updated all ACPICA copyrights and signons to 2014. Added the 2014
|
|
copyright to all module headers and signons, including the standard Linux
|
|
header. This affects virtually every file in the ACPICA core subsystem,
|
|
iASL compiler, all ACPICA utilities, and the test suites.
|
|
|
|
Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
|
|
A raw gpe handling mechanism was created to allow better handling of GPE
|
|
storms that aren't easily managed by the normal handler. The raw handler
|
|
allows disabling/renabling of the GPE so that interrupt storms can be
|
|
avoided in cases where events cannot be timely serviced. In this
|
|
scenario, handlers should use the AcpiSetGpe() API to disable/enable the
|
|
GPE. This API will leave the reference counts undisturbed, thereby
|
|
preventing unintentional clearing of the GPE when the intent in only to
|
|
temporarily disable it. Raw handlers allow enabling and disabling of a
|
|
GPE by removing GPE register locking. As such, raw handlers much provide
|
|
their own locks while using GPE API's to protect access to GPE data
|
|
structures.
|
|
Lv Zheng
|
|
|
|
Events: Always modify GPE registers under the GPE lock.
|
|
Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
|
|
values. Reported as bug by joe.liu@apple.com.
|
|
|
|
Unix makefiles: Separate option to disable optimizations and
|
|
_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
|
|
NOOPT disable option and creates a separate flag (NOFORTIFY) for this
|
|
purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
|
|
errors when building ACPICA. This allows disabling the option without
|
|
also having to disable optimazations.
|
|
David Box
|
|
|
|
Current Release:
|
|
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
|
|
Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
|
|
|
|
--
|
|
--------------------------------------
|
|
07 November 2014. Summary of changes for version 20141107:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
This release introduces and implements language extensions to ASL that
|
|
provide support for symbolic ("C-style") operators and expressions. These
|
|
language extensions are known collectively as ASL+.
|
|
|
|
|
|
1) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Fixed a problem with disassembly of the UartSerialBus
|
|
macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
|
|
Box.
|
|
|
|
Disassembler: Fixed the Unicode macro support to add escape sequences.
|
|
All non-printable ASCII values are emitted as escape sequences, as well
|
|
as the standard escapes for quote and backslash. Ensures that the
|
|
disassembled macro can be correctly recompiled.
|
|
|
|
iASL: Added Printf/Fprintf macros for formatted output. These macros are
|
|
translated to existing AML Concatenate and Store operations. Printf
|
|
writes to the ASL Debug object. Fprintf allows the specification of an
|
|
ASL name as the target. Only a single format specifier is required, %o,
|
|
since the AML interpreter dynamically converts objects to the required
|
|
type. David E. Box.
|
|
|
|
(old) Store (Concatenate (Concatenate (Concatenate (Concatenate
|
|
(Concatenate (Concatenate (Concatenate ("", Arg0),
|
|
": Unexpected value for "), Arg1), ", "), Arg2),
|
|
" at line "), Arg3), Debug)
|
|
|
|
(new) Printf ("%o: Unexpected value for %o, %o at line %o",
|
|
Arg0, Arg1, Arg2, Arg3)
|
|
|
|
(old) Store (Concatenate (Concatenate (Concatenate (Concatenate
|
|
("", Arg1), ": "), Arg0), " Successful"), STR1)
|
|
|
|
(new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
|
|
|
|
iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
|
|
ASL parse tree before the AML code is generated. This allows blocks of
|
|
ASL code to be removed in order to help locate and identify problem
|
|
devices and/or code. David E. Box.
|
|
|
|
AcpiExec: Added support (-fi) for an optional namespace object
|
|
initialization file. This file specifies initial values for namespace
|
|
objects as necessary for debugging and testing different ASL code paths
|
|
that may be taken as a result of BIOS options.
|
|
|
|
|
|
2) Overview of symbolic operator support for ASL (ASL+)
|
|
-------------------------------------------------------
|
|
|
|
As an extension to the ASL language, iASL implements support for symbolic
|
|
(C-style) operators for math and logical expressions. This can greatly
|
|
simplify ASL code as well as improve both readability and
|
|
maintainability. These language extensions can exist concurrently with
|
|
all legacy ASL code and expressions.
|
|
|
|
The symbolic extensions are 100% compatible with existing AML
|
|
interpreters, since no new AML opcodes are created. To implement the
|
|
extensions, the iASL compiler transforms the symbolic expressions into
|
|
the legacy ASL/AML equivalents at compile time.
|
|
|
|
Full symbolic expressions are supported, along with the standard C
|
|
precedence and associativity rules.
|
|
|
|
Full disassembler support for the symbolic expressions is provided, and
|
|
creates an automatic migration path for existing ASL code to ASL+ code
|
|
via the disassembly process. By default, the disassembler now emits ASL+
|
|
code with symbolic expressions. An option (-dl) is provided to force the
|
|
disassembler to emit legacy ASL code if desired.
|
|
|
|
Below is the complete list of the currently supported symbolic operators
|
|
with examples. See the iASL User Guide for additional information.
|
|
|
|
|
|
ASL+ Syntax Legacy ASL Equivalent
|
|
----------- ---------------------
|
|
|
|
// Math operators
|
|
|
|
Z = X + Y Add (X, Y, Z)
|
|
Z = X - Y Subtract (X, Y, Z)
|
|
Z = X * Y Multiply (X, Y, Z)
|
|
Z = X / Y Divide (X, Y, , Z)
|
|
Z = X % Y Mod (X, Y, Z)
|
|
Z = X << Y ShiftLeft (X, Y, Z)
|
|
Z = X >> Y ShiftRight (X, Y, Z)
|
|
Z = X & Y And (X, Y, Z)
|
|
Z = X | Y Or (X, Y, Z)
|
|
Z = X ^ Y Xor (X, Y, Z)
|
|
Z = ~X Not (X, Z)
|
|
X++ Increment (X)
|
|
X-- Decrement (X)
|
|
|
|
// Logical operators
|
|
|
|
(X == Y) LEqual (X, Y)
|
|
(X != Y) LNotEqual (X, Y)
|
|
(X < Y) LLess (X, Y)
|
|
(X > Y) LGreater (X, Y)
|
|
(X <= Y) LLessEqual (X, Y)
|
|
(X >= Y) LGreaterEqual (X, Y)
|
|
(X && Y) LAnd (X, Y)
|
|
(X || Y) LOr (X, Y)
|
|
(!X) LNot (X)
|
|
|
|
// Assignment and compound assignment operations
|
|
|
|
X = Y Store (Y, X)
|
|
X += Y Add (X, Y, X)
|
|
X -= Y Subtract (X, Y, X)
|
|
X *= Y Multiply (X, Y, X)
|
|
X /= Y Divide (X, Y, , X)
|
|
X %= Y Mod (X, Y, X)
|
|
X <<= Y ShiftLeft (X, Y, X)
|
|
X >>= Y ShiftRight (X, Y, X)
|
|
X &= Y And (X, Y, X)
|
|
X |= Y Or (X, Y, X)
|
|
X ^= Y Xor (X, Y, X)
|
|
|
|
|
|
3) ASL+ Examples:
|
|
-----------------
|
|
|
|
Legacy ASL:
|
|
If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
|
|
And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
|
|
0x03FB),
|
|
0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
|
|
{
|
|
And (MEMB, 0xFFFFFFF0, SRMB)
|
|
Store (MEMB, Local2)
|
|
Store (PDBM, Local1)
|
|
And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
|
|
Store (SRMB, MEMB)
|
|
Or (PDBM, 0x02, PDBM)
|
|
}
|
|
|
|
ASL+ version:
|
|
If (((R510 & 0x03FB) == 0x02E0) ||
|
|
((R520 & 0x03FB) == 0x02E0) ||
|
|
((R530 & 0x03FB) == 0x02E0) ||
|
|
((R540 & 0x03FB) == 0x02E0))
|
|
{
|
|
SRMB = (MEMB & 0xFFFFFFF0)
|
|
Local2 = MEMB
|
|
Local1 = PDBM
|
|
PDBM &= 0xFFFFFFFFFFFFFFF9
|
|
MEMB = SRMB
|
|
PDBM |= 0x02
|
|
}
|
|
|
|
Legacy ASL:
|
|
Store (0x1234, Local1)
|
|
Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
|
|
Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
|
|
Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
|
|
Store (Index (PKG1, 0x03), Local6)
|
|
Store (Add (Local3, Local2), Debug)
|
|
Add (Local1, 0x0F, Local2)
|
|
Add (Local1, Multiply (Local2, Local3), Local2)
|
|
Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
|
|
|
|
ASL+ version:
|
|
Local1 = 0x1234
|
|
Local3 = (((Local1 + TEST) + 0x20) * Local2)
|
|
Local3 = (Local2 * ((Local1 + TEST) + 0x20))
|
|
Local3 = (Local1 + (TEST + (0x20 * Local2)))
|
|
Local6 = Index (PKG1, 0x03)
|
|
Debug = (Local3 + Local2)
|
|
Local2 = (Local1 + 0x0F)
|
|
Local2 = (Local1 + (Local2 * Local3))
|
|
Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
|
|
|
|
|
|
----------------------------------------
|
|
26 September 2014. Summary of changes for version 20140926:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated the GPIO operation region handler interface (GeneralPurposeIo).
|
|
In order to support GPIO Connection objects with multiple pins, along
|
|
with the related Field objects, the following changes to the interface
|
|
have been made: The Address is now defined to be the offset in bits of
|
|
the field unit from the previous invocation of a Connection. It can be
|
|
viewed as a "Pin Number Index" into the connection resource descriptor.
|
|
The BitWidth is the exact bit width of the field. It is usually one bit,
|
|
but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
|
|
additional information and examples.
|
|
|
|
GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
|
|
corresponding _Lxx/_Exx methods are disabled (they may have been enabled
|
|
by the firmware), so that they cannot fire until they are enabled via
|
|
AcpiUpdateAllGpes. Rafael J. Wysocki.
|
|
|
|
Added a new return flag for the Event/GPE status interfaces --
|
|
AcpiGetEventStatus and AcpiGetGpeStatus. The new
|
|
ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
|
|
GPE currently has a handler associated with it, and can thus actually
|
|
affect the system. Lv Zheng.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
|
|
Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
|
|
Previous Release:
|
|
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
|
|
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a memory allocation/free regression introduced in 20140828
|
|
that could cause the compiler to crash. This was introduced inadvertently
|
|
during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
|
|
1113.
|
|
|
|
iASL: Removed two error messages that have been found to create false
|
|
positives, until they can be fixed and fully validated (ACPICA BZ 1112):
|
|
1) Illegal forward reference within a method
|
|
2) Illegal reference across two methods
|
|
|
|
iASL: Implemented a new option (-lm) to create a hardware mapping file
|
|
that summarizes all GPIO, I2C, SPI, and UART connections. This option
|
|
works for both the compiler and disassembler. See the iASL compiler user
|
|
guide for additional information and examples (section 6.4.6).
|
|
|
|
AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
|
|
version 2. This corrects the AE_BAD_HEADER exception seen on systems with
|
|
a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
|
|
|
|
AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
|
|
unless STDIN is actually a terminal. Assists with batch-mode processing.
|
|
ACPICA BZ 1114.
|
|
|
|
Disassembler/AcpiHelp: Added another large group of recognized _HID
|
|
values.
|
|
|
|
|
|
----------------------------------------
|
|
28 August 2014. Summary of changes for version 20140828:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a problem related to the internal use of the Timer() operator where
|
|
a 64-bit divide could cause an attempted link to a double-precision math
|
|
library. This divide is not actually necessary, so the code was
|
|
restructured to eliminate it. Lv Zheng.
|
|
|
|
ACPI 5.1: Added support for the runtime validation of the _DSD package
|
|
(similar to the iASL support).
|
|
|
|
ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
|
|
SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
|
|
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
|
|
Previous Release:
|
|
Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1
|
|
Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiExec: Fixed a problem on unix systems where the original terminal
|
|
state was not always properly restored upon exit. Seen when using the -v
|
|
option. ACPICA BZ 1104.
|
|
|
|
iASL: Fixed a problem with the validation of the ranges/length within the
|
|
Memory24 resource descriptor. There was a boundary condition when the
|
|
range was equal to the (length -1) caused by the fact that these values
|
|
are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
|
|
|
|
Disassembler: Fixed a problem with the GpioInt descriptor interrupt
|
|
polarity
|
|
flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
|
|
is
|
|
now supported properly.
|
|
|
|
ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
|
|
in the disassembler, data table compiler, and table template generator.
|
|
|
|
iASL: Added a requirement for Device() objects that one of either a _HID
|
|
or _ADR must exist within the scope of a Device, as per the ACPI
|
|
specification. Remove a similar requirement that was incorrectly in place
|
|
for the _DSD object.
|
|
|
|
iASL: Added error detection for illegal named references within control
|
|
methods that would cause runtime failures. Now trapped as errors are: 1)
|
|
References to objects within a non-parent control method. 2) Forward
|
|
references (within a method) -- for control methods, AML interpreters use
|
|
a one-pass parse of control methods. ACPICA BZ 1008.
|
|
|
|
iASL: Added error checking for dependencies related to the _PSx power
|
|
methods. ACPICA BZ 1029.
|
|
1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
|
|
_PS3.
|
|
2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
|
|
scope.
|
|
|
|
iASL and table compiler: Cleanup miscellaneous memory leaks by fully
|
|
deploying the existing object and string caches and adding new caches for
|
|
the table compiler.
|
|
|
|
iASL: Split the huge parser source file into multiple subfiles to improve
|
|
manageability. Generation now requires the M4 macro preprocessor, which
|
|
is part of the Bison distribution on both unix and windows platforms.
|
|
|
|
AcpiSrc: Fixed and removed all extraneous warnings generated during
|
|
entire ACPICA source code scan and/or conversion.
|
|
|
|
|
|
----------------------------------------
|
|
|
|
24 July 2014. Summary of changes for version 20140724:
|
|
|
|
The ACPI 5.1 specification has been released and is available at:
|
|
http://uefi.org/specs/access
|
|
|
|
|
|
0) ACPI 5.1 support in ACPICA:
|
|
|
|
ACPI 5.1 is fully supported in ACPICA as of this release.
|
|
|
|
New predefined names. Support includes iASL and runtime ACPICA
|
|
validation.
|
|
_CCA (Cache Coherency Attribute).
|
|
_DSD (Device-Specific Data). David Box.
|
|
|
|
Modifications to existing ACPI tables. Support includes headers, iASL
|
|
Data Table compiler, disassembler, and the template generator.
|
|
FADT - New fields and flags. Graeme Gregory.
|
|
GTDT - One new subtable and new fields. Tomasz Nowicki.
|
|
MADT - Two new subtables. Tomasz Nowicki.
|
|
PCCT - One new subtable.
|
|
|
|
Miscellaneous.
|
|
New notification type for System Resource Affinity change events.
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a regression introduced in 20140627 where a fault can happen during
|
|
the deletion of Alias AML namespace objects. The problem affected both
|
|
the core ACPICA and the ACPICA tools including iASL and AcpiExec.
|
|
|
|
Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
|
|
simple mechanism to enable wake GPEs that have no associated handler or
|
|
control method. Rafael Wysocki.
|
|
|
|
Updated the AcpiEnableGpe interface to disallow the enable if there is no
|
|
handler or control method associated with the particular GPE. This will
|
|
help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
|
|
|
|
Updated GPE handling and dispatch by disabling the GPE before clearing
|
|
the status bit for edge-triggered GPEs. Lv Zheng.
|
|
|
|
Added Timer() support to the AML Debug object. The current timer value is
|
|
now displayed with each invocation of (Store to) the debug object to
|
|
enable simple generation of execution times for AML code (method
|
|
execution for example.) ACPICA BZ 1093.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total
|
|
Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
|
|
Previous Release:
|
|
Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
|
|
Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed an issue with the recently added local printf implementation,
|
|
concerning width/precision specifiers that could cause incorrect output.
|
|
Lv Zheng. ACPICA BZ 1094.
|
|
|
|
Disassembler: Added support to detect buffers that contain UUIDs and
|
|
disassemble them to an invocation of the ToUUID operator. Also emit
|
|
commented descriptions of known ACPI-related UUIDs.
|
|
|
|
AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
|
|
-u. Adds three new files.
|
|
|
|
iASL: Update table compiler and disassembler for DMAR table changes that
|
|
were introduced in September 2013. With assistance by David Woodhouse.
|
|
|
|
----------------------------------------
|
|
27 June 2014. Summary of changes for version 20140627:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Formatted Output: Implemented local versions of standard formatted output
|
|
utilities such as printf, etc. Over time, it has been discovered that
|
|
there are in fact many portability issues with printf, and the addition
|
|
of this feature will fix/prevent these issues once and for all. Some
|
|
known issues are summarized below:
|
|
|
|
1) Output of 64-bit values is not portable. For example, UINT64 is %ull
|
|
for the Linux kernel and is %uI64 for some MSVC versions.
|
|
2) Invoking printf consistently in a manner that is portable across both
|
|
32-bit and 64-bit platforms is difficult at best in many situations.
|
|
3) The output format for pointers varies from system to system (leading
|
|
zeros especially), and leads to inconsistent output from ACPICA across
|
|
platforms.
|
|
4) Certain platform-specific printf formats may conflict with ACPICA use.
|
|
5) If there is no local C library available, ACPICA now has local support
|
|
for printf.
|
|
|
|
-- To address these printf issues in a complete manner, ACPICA now
|
|
directly implements a small subset of printf format specifiers, only
|
|
those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
|
|
|
|
Implemented support for ACPICA generation within the EFI environment.
|
|
Initially, the AcpiDump utility is supported in the UEFI shell
|
|
environment. Lv Zheng.
|
|
|
|
Added a new external interface, AcpiLogError, to improve ACPICA
|
|
portability. This allows the host to redirect error messages from the
|
|
ACPICA utilities. Lv Zheng.
|
|
|
|
Added and deployed new OSL file I/O interfaces to improve ACPICA
|
|
portability:
|
|
AcpiOsOpenFile
|
|
AcpiOsCloseFile
|
|
AcpiOsReadFile
|
|
AcpiOsWriteFile
|
|
AcpiOsGetFileOffset
|
|
AcpiOsSetFileOffset
|
|
There are C library implementations of these functions in the new file
|
|
service_layers/oslibcfs.c -- however, the functions can be implemented by
|
|
the local host in any way necessary. Lv Zheng.
|
|
|
|
Implemented a mechanism to disable/enable ACPI table checksum validation
|
|
at runtime. This can be useful when loading tables very early during OS
|
|
initialization when it may not be possible to map the entire table in
|
|
order to compute the checksum. Lv Zheng.
|
|
|
|
Fixed a buffer allocation issue for the Generic Serial Bus support.
|
|
Originally, a fixed buffer length was used. This change allows for
|
|
variable-length buffers based upon the protocol indicated by the field
|
|
access attributes. Reported by Lan Tianyu. Lv Zheng.
|
|
|
|
Fixed a problem where an object detached from a namespace node was not
|
|
properly terminated/cleared and could cause a circular list problem if
|
|
reattached. ACPICA BZ 1063. David Box.
|
|
|
|
Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
|
|
|
|
Fixed a possible memory leak in an error return path within the function
|
|
AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
|
|
Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
|
|
Previous Release:
|
|
Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
|
|
Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Add dump of ASCII equivalent text within a comment at the
|
|
end of each line of the output for the Buffer() ASL operator.
|
|
|
|
AcpiDump: Miscellaneous changes:
|
|
Fixed repetitive table dump in -n mode.
|
|
For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
|
|
the ACPI 2.0 GUID fails.
|
|
|
|
iASL: Fixed a problem where the compiler could fault if incorrectly given
|
|
an acpidump output file as input. ACPICA BZ 1088. David Box.
|
|
|
|
AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
|
|
they are invoked without any arguments.
|
|
|
|
Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
|
|
1086. Colin Ian King.
|
|
|
|
Disassembler: Cleaned up a block of code that extracts a parent Op
|
|
object. Added a comment that explains that the parent is guaranteed to be
|
|
valid in this case. ACPICA BZ 1069.
|
|
|
|
|
|
----------------------------------------
|
|
24 April 2014. Summary of changes for version 20140424:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
|
|
Some of these tables are known to contain a trailing NULL entry. Lv
|
|
Zheng.
|
|
|
|
Removed an extraneous error message for the case where there are a large
|
|
number of system GPEs (> 124). This was the "32-bit FADT register is too
|
|
long to convert to GAS struct" message, which is irrelevant for GPEs
|
|
since the GPEx_BLK_LEN fields of the FADT are always used instead of the
|
|
(limited capacity) GAS bit length. Also, several changes to ensure proper
|
|
support for GPE numbers > 255, where some "GPE number" fields were 8-bits
|
|
internally.
|
|
|
|
Implemented and deployed additional configuration support for the public
|
|
ACPICA external interfaces. Entire classes of interfaces can now be
|
|
easily modified or configured out, replaced by stubbed inline functions
|
|
by default. Lv Zheng.
|
|
|
|
Moved all public ACPICA runtime configuration globals to the public
|
|
ACPICA external interface file for convenience. Also, removed some
|
|
obsolete/unused globals. See the file acpixf.h. Lv Zheng.
|
|
|
|
Documentation: Added a new section to the ACPICA reference describing the
|
|
maximum number of GPEs that can be supported by the FADT-defined GPEs in
|
|
block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
|
|
reference.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
|
|
Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
|
|
Previous Release:
|
|
Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
|
|
Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL and disassembler: Add full support for the LPIT table (Low Power
|
|
Idle Table). Includes support in the disassembler, data table compiler,
|
|
and template generator.
|
|
|
|
AcpiDump utility:
|
|
1) Add option to force the use of the RSDT (over the XSDT).
|
|
2) Improve validation of the RSDP signature (use 8 chars instead of 4).
|
|
|
|
iASL: Add check for predefined packages that are too large. For
|
|
predefined names that contain subpackages, check if each subpackage is
|
|
too large. (Check for too small already exists.)
|
|
|
|
Debugger: Updated the GPE command (which simulates a GPE by executing the
|
|
GPE code paths in ACPICA). The GPE device is now optional, and defaults
|
|
to the GPE 0/1 FADT-defined blocks.
|
|
|
|
Unix application OSL: Update line-editing support. Add additional error
|
|
checking and take care not to reset terminal attributes on exit if they
|
|
were never set. This should help guarantee that the terminal is always
|
|
left in the previous state on program exit.
|
|
|
|
|
|
----------------------------------------
|
|
25 March 2014. Summary of changes for version 20140325:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated the auto-serialize feature for control methods. This feature
|
|
automatically serializes all methods that create named objects in order
|
|
to prevent runtime errors. The update adds support to ignore the
|
|
currently executing AML SyncLevel when invoking such a method, in order
|
|
to prevent disruption of any existing SyncLevel priorities that may exist
|
|
in the AML code. Although the use of SyncLevels is relatively rare, this
|
|
change fixes a regression where an AE_AML_MUTEX_ORDER exception can
|
|
appear on some machines starting with the 20140214 release.
|
|
|
|
Added a new external interface to allow the host to install ACPI tables
|
|
very early, before the namespace is even created. AcpiInstallTable gives
|
|
the host additional flexibility for ACPI table management. Tables can be
|
|
installed directly by the host as if they had originally appeared in the
|
|
XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
|
|
(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
|
|
with additional internal restructuring and cleanup. See the ACPICA
|
|
Reference for interface details. Lv Zheng.
|
|
|
|
Added validation of the checksum for all incoming dynamically loaded
|
|
tables (via external interfaces or via AML Load/LoadTable operators). Lv
|
|
Zheng.
|
|
|
|
Updated the use of the AcpiOsWaitEventsComplete interface during Notify
|
|
and GPE handler removal. Restructured calls to eliminate possible race
|
|
conditions. Lv Zheng.
|
|
|
|
Added a warning for the use/execution of the ASL/AML Unload (table)
|
|
operator. This will help detect and identify machines that use this
|
|
operator if and when it is ever used. This operator has never been seen
|
|
in the field and the usage model and possible side-effects of the drastic
|
|
runtime action of a full table removal are unknown.
|
|
|
|
Reverted the use of #pragma push/pop which was introduced in the 20140214
|
|
release. It appears that push and pop are not implemented by enough
|
|
compilers to make the use of this feature feasible for ACPICA at this
|
|
time. However, these operators may be deployed in a future ACPICA
|
|
release.
|
|
|
|
Added the missing EXPORT_SYMBOL macros for the install and remove SCI
|
|
handler interfaces.
|
|
|
|
Source code generation:
|
|
1) Disabled the use of the "strchr" macro for the gcc-specific
|
|
generation. For some versions of gcc, this macro can periodically expose
|
|
a compiler bug which in turn causes compile-time error(s).
|
|
2) Added support for PPC64 compilation. Colin Ian King.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
|
|
Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
|
|
Previous Release:
|
|
Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
|
|
Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Added several new features to improve the readability of
|
|
the resulting ASL code. Extra information is emitted within comment
|
|
fields in the ASL code:
|
|
1) Known _HID/_CID values are decoded to descriptive text.
|
|
2) Standard values for the Notify() operator are decoded to descriptive
|
|
text.
|
|
3) Target operands are expanded to full pathnames (in a comment) when
|
|
possible.
|
|
|
|
Disassembler: Miscellaneous updates for extern() handling:
|
|
1) Abort compiler if file specified by -fe option does not exist.
|
|
2) Silence unnecessary warnings about argument count mismatches.
|
|
3) Update warning messages concerning unresolved method externals.
|
|
4) Emit "UnknownObj" keyword for externals whose type cannot be
|
|
determined.
|
|
|
|
AcpiHelp utility:
|
|
1) Added the -a option to display both the ASL syntax and the AML
|
|
encoding for an input ASL operator. This effectively displays all known
|
|
information about an ASL operator with one AcpiHelp invocation.
|
|
2) Added substring match support (similar to a wildcard) for the -i
|
|
(_HID/PNP IDs) option.
|
|
|
|
iASL/Disassembler: Since this tool does not yet support execution on big-
|
|
endian machines, added detection of endianness and an error message if
|
|
execution is attempted on big-endian. Support for big-endian within iASL
|
|
is a feature that is on the ACPICA to-be-done list.
|
|
|
|
AcpiBin utility:
|
|
1) Remove option to extract binary files from an acpidump; this function
|
|
is made obsolete by the AcpiXtract utility.
|
|
2) General cleanup of open files and allocated buffers.
|
|
|
|
|
|
----------------------------------------
|
|
14 February 2014. Summary of changes for version 20140214:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented a new mechanism to proactively prevent problems with ill-
|
|
behaved reentrant control methods that create named ACPI objects. This
|
|
behavior is illegal as per the ACPI specification, but is nonetheless
|
|
frequently seen in the field. Previously, this could lead to an
|
|
AE_ALREADY_EXISTS exception if the method was actually entered by more
|
|
than one thread. This new mechanism detects such methods at table load
|
|
time and marks them "serialized" to prevent reentrancy. A new global
|
|
option, AcpiGbl_AutoSerializeMethods, has been added to disable this
|
|
feature if desired. This mechanism and global option obsoletes and
|
|
supersedes the previous AcpiGbl_SerializeAllMethods option.
|
|
|
|
Added the "Windows 2013" string to the _OSI support. ACPICA will now
|
|
respond TRUE to _OSI queries with this string. It is the stated policy of
|
|
ACPICA to add new strings to the _OSI support as soon as possible after
|
|
they are defined. See the full ACPICA _OSI policy which has been added to
|
|
the utilities/utosi.c file.
|
|
|
|
Hardened/updated the _PRT return value auto-repair code:
|
|
1) Do not abort the repair on a single subpackage failure, continue to
|
|
check all subpackages.
|
|
2) Add check for the minimum subpackage length (4).
|
|
3) Properly handle extraneous NULL package elements.
|
|
|
|
Added support to avoid the possibility of infinite loops when traversing
|
|
object linked lists. Never allow an infinite loop, even in the face of
|
|
corrupted object lists.
|
|
|
|
ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
|
|
pack(pop) directives to ensure that the ACPICA headers are independent of
|
|
compiler settings or other host headers.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
|
|
Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
|
|
Previous Release:
|
|
Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
|
|
Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
|
|
first reserved field was incorrectly forced to have a value of zero. This
|
|
change correctly forces the field to have a value of one. ACPICA BZ 1081.
|
|
|
|
Debugger: Added missing support for the "Extra" and "Data" subobjects
|
|
when displaying object data.
|
|
|
|
Debugger: Added support to display entire object linked lists when
|
|
displaying object data.
|
|
|
|
iASL: Removed the obsolete -g option to obtain ACPI tables from the
|
|
Windows registry. This feature has been superseded by the acpidump
|
|
utility.
|
|
|
|
|
|
----------------------------------------
|
|
14 January 2014. Summary of changes for version 20140114:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Updated all ACPICA copyrights and signons to 2014. Added the 2014
|
|
copyright to all module headers and signons, including the standard Linux
|
|
header. This affects virtually every file in the ACPICA core subsystem,
|
|
iASL compiler, all ACPICA utilities, and the test suites.
|
|
|
|
Improved parameter validation for AcpiInstallGpeBlock. Added the
|
|
following checks:
|
|
1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
|
|
2) There is not already a GPE block attached to the device.
|
|
Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
|
|
device.
|
|
|
|
Correctly support "references" in the ACPI_OBJECT. This change fixes the
|
|
support to allow references (namespace nodes) to be passed as arguments
|
|
to control methods via the evaluate object interface. This is probably
|
|
most useful for testing purposes, however.
|
|
|
|
Improved support for 32/64 bit physical addresses in printf()-like
|
|
output. This change improves the support for physical addresses in printf
|
|
debug statements and other output on both 32-bit and 64-bit hosts. It
|
|
consistently outputs the appropriate number of bytes for each host. The
|
|
%p specifier is unsatisfactory since it does not emit uniform output on
|
|
all hosts/clib implementations (on some, leading zeros are not supported,
|
|
leading to difficult-to-read output).
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
|
|
Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
|
|
Previous Release:
|
|
Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
|
|
Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fix a possible fault when using the Connection() operator. Fixes a
|
|
problem if the parent Field definition for the Connection operator refers
|
|
to an operation region that does not exist. ACPICA BZ 1064.
|
|
|
|
AcpiExec: Load of local test tables is now optional. The utility has the
|
|
capability to load some various tables to test features of ACPICA.
|
|
However, there are enough of them that the output of the utility became
|
|
confusing. With this change, only the required local tables are displayed
|
|
(RSDP, XSDT, etc.) along with the actual tables loaded via the command
|
|
line specification. This makes the default output simler and easier to
|
|
understand. The -el command line option restores the original behavior
|
|
for testing purposes.
|
|
|
|
AcpiExec: Added support for overlapping operation regions. This change
|
|
expands the simulation of operation regions by supporting regions that
|
|
overlap within the given address space. Supports SystemMemory and
|
|
SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
|
|
|
|
AcpiExec: Added region handler support for PCI_Config and EC spaces. This
|
|
allows AcpiExec to simulate these address spaces, similar to the current
|
|
support for SystemMemory and SystemIO.
|
|
|
|
Debugger: Added new command to read/write/compare all namespace objects.
|
|
The command "test objects" will exercise the entire namespace by writing
|
|
new values to each data object, and ensuring that the write was
|
|
successful. The original value is then restored and verified.
|
|
|
|
Debugger: Added the "test predefined" command. This change makes this
|
|
test public and puts it under the new "test" command. The test executes
|
|
each and every predefined name within the current namespace.
|
|
|
|
|
|
----------------------------------------
|
|
18 December 2013. Summary of changes for version 20131218:
|
|
|
|
Global note: The ACPI 5.0A specification was released this month. There
|
|
are no changes needed for ACPICA since this release of ACPI is an
|
|
errata/clarification release. The specification is available at
|
|
acpi.info.
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Added validation of the XSDT root table if it is present. Some older
|
|
platforms contain an XSDT that is ill-formed or otherwise invalid (such
|
|
as containing some or all entries that are NULL pointers). This change
|
|
adds a new function to validate the XSDT before actually using it. If the
|
|
XSDT is found to be invalid, ACPICA will now automatically fall back to
|
|
using the RSDT instead. Original implementation by Zhao Yakui. Ported to
|
|
ACPICA and enhanced by Lv Zheng and Bob Moore.
|
|
|
|
Added a runtime option to ignore the XSDT and force the use of the RSDT.
|
|
This change adds a runtime option that will force ACPICA to use the RSDT
|
|
instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
|
|
requires that an XSDT be used instead of the RSDT, the XSDT has been
|
|
found to be corrupt or ill-formed on some machines. Lv Zheng.
|
|
|
|
Added a runtime option to favor 32-bit FADT register addresses over the
|
|
64-bit addresses. This change adds an option to favor 32-bit FADT
|
|
addresses when there is a conflict between the 32-bit and 64-bit versions
|
|
of the same register. The default behavior is to use the 64-bit version
|
|
in accordance with the ACPI specification. This can now be overridden via
|
|
the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
|
|
|
|
During the change above, the internal "Convert FADT" and "Verify FADT"
|
|
functions have been merged to simplify the code, making it easier to
|
|
understand and maintain. ACPICA BZ 933.
|
|
|
|
Improve exception reporting and handling for GPE block installation.
|
|
Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
|
|
status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
|
|
|
|
Added helper macros to extract bus/segment numbers from the HEST table.
|
|
This change adds two macros to extract the encoded bus and segment
|
|
numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
|
|
Betty Dall <betty.dall@hp.com>
|
|
|
|
Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
|
|
by ACPICA. It is not a public macro, so it should have no effect on
|
|
existing OSV code. Lv Zheng.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
|
|
Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
|
|
Previous Release:
|
|
Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
|
|
Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Improved pathname support for emitted External()
|
|
statements. This change adds full pathname support for external names
|
|
that have been resolved internally by the inclusion of additional ACPI
|
|
tables (via the iASL -e option). Without this change, the disassembler
|
|
can emit multiple externals for the same object, or it become confused
|
|
when the Scope() operator is used on an external object. Overall, greatly
|
|
improves the ability to actually recompile the emitted ASL code when
|
|
objects a referenced across multiple ACPI tables. Reported by Michael
|
|
Tsirkin (mst@redhat.com).
|
|
|
|
Tests/ASLTS: Updated functional control suite to execute with no errors.
|
|
David Box. Fixed several errors related to the testing of the interpreter
|
|
slack mode. Lv Zheng.
|
|
|
|
iASL: Added support to detect names that are declared within a control
|
|
method, but are unused (these are temporary names that are only valid
|
|
during the time the method is executing). A remark is issued for these
|
|
cases. ACPICA BZ 1022.
|
|
|
|
iASL: Added full support for the DBG2 table. Adds full disassembler,
|
|
table compiler, and template generator support for the DBG2 table (Debug
|
|
Port 2 table).
|
|
|
|
iASL: Added full support for the PCCT table, update the table definition.
|
|
Updates the PCCT table definition in the actbl3.h header and adds table
|
|
compiler and template generator support.
|
|
|
|
iASL: Added an option to emit only error messages (no warnings/remarks).
|
|
The -ve option will enable only error messages, warnings and remarks are
|
|
suppressed. This can simplify debugging when only the errors are
|
|
important, such as when an ACPI table is disassembled and there are many
|
|
warnings and remarks -- but only the actual errors are of real interest.
|
|
|
|
Example ACPICA code (source/tools/examples): Updated the example code so
|
|
that it builds to an actual working program, not just example code. Added
|
|
ACPI tables and execution of an example control method in the DSDT. Added
|
|
makefile support for Unix generation.
|
|
|
|
|
|
----------------------------------------
|
|
15 November 2013. Summary of changes for version 20131115:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Resource Manager: Fixed loop termination for the "get AML length"
|
|
function. The loop previously had an error termination on a NULL resource
|
|
pointer, which can never happen since the loop simply increments a valid
|
|
resource pointer. This fix changes the loop to terminate with an error on
|
|
an invalid end-of-buffer condition. The problem can be seen as an
|
|
infinite loop by callers to AcpiSetCurrentResources with an invalid or
|
|
corrupted resource descriptor, or a resource descriptor that is missing
|
|
an END_TAG descriptor. Reported by Dan Carpenter
|
|
<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
|
|
|
|
Table unload and ACPICA termination: Delete all attached data objects
|
|
during namespace node deletion. This fix updates namespace node deletion
|
|
to delete the entire list of attached objects (attached via
|
|
AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
|
|
1024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
|
|
|
|
ACPICA termination: Added support to delete all objects attached to the
|
|
root namespace node. This fix deletes any and all objects that have been
|
|
attached to the root node via AcpiAttachData. Previously, none of these
|
|
objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
|
|
|
|
Debug output: Do not emit the function nesting level for the in-kernel
|
|
build. The nesting level is really only useful during a single-thread
|
|
execution. Therefore, only enable this output for the AcpiExec utility.
|
|
Also, only emit the thread ID when executing under AcpiExec (Context
|
|
switches are still always detected and a message is emitted). ACPICA BZ
|
|
972.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
|
|
Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
|
|
Previous Release:
|
|
Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
|
|
Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
|
|
correct portable POSIX header for terminal control functions.
|
|
|
|
Disassembler: Fixed control method invocation issues related to the use
|
|
of the CondRefOf() operator. The problem is seen in the disassembly where
|
|
control method invocations may not be disassembled properly if the
|
|
control method name has been used previously as an argument to CondRefOf.
|
|
The solution is to not attempt to emit an external declaration for the
|
|
CondRefOf target (it is not necessary in the first place). This prevents
|
|
disassembler object type confusion. ACPICA BZ 988.
|
|
|
|
Unix Makefiles: Added an option to disable compiler optimizations and the
|
|
_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
|
|
with optimizations (reportedly, gcc 4.4 for example). This change adds a
|
|
command line option for make (NOOPT) that disables all compiler
|
|
optimizations and the _FORTIFY_SOURCE compiler flag. The default
|
|
optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
|
|
1034. Lv Zheng, Bob Moore.
|
|
|
|
Tests/ASLTS: Added options to specify individual test cases and modes.
|
|
This allows testers running aslts.sh to optionally specify individual
|
|
test modes and test cases. Also added an option to disable the forced
|
|
generation of the ACPICA tools from source if desired. Lv Zheng.
|
|
|
|
----------------------------------------
|
|
27 September 2013. Summary of changes for version 20130927:
|
|
|
|
This release is available at https://acpica.org/downloads
|
|
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a problem with store operations to reference objects. This change
|
|
fixes a problem where a Store operation to an ArgX object that contained
|
|
a
|
|
reference to a field object did not complete the automatic dereference
|
|
and
|
|
then write to the actual field object. Instead, the object type of the
|
|
field object was inadvertently changed to match the type of the source
|
|
operand. The new behavior will actually write to the field object (buffer
|
|
field or field unit), thus matching the correct ACPI-defined behavior.
|
|
|
|
Implemented support to allow the host to redefine individual OSL
|
|
prototypes. This change enables the host to redefine OSL prototypes found
|
|
in the acpiosxf.h file. This allows the host to implement OSL interfaces
|
|
with a macro or inlined function. Further, it allows the host to add any
|
|
additional required modifiers such as __iomem, __init, __exit, etc., as
|
|
necessary on a per-interface basis. Enables maximum flexibility for the
|
|
OSL interfaces. Lv Zheng.
|
|
|
|
Hardcoded the access width for the FADT-defined reset register. The ACPI
|
|
specification requires the reset register width to be 8 bits. ACPICA now
|
|
hardcodes the width to 8 and ignores the FADT width value. This provides
|
|
compatibility with other ACPI implementations that have allowed BIOS code
|
|
with bad register width values to go unnoticed. Matthew Garett, Bob
|
|
Moore,
|
|
Lv Zheng.
|
|
|
|
Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
|
|
used
|
|
in the OSL header (acpiosxf). The change modifies the position of this
|
|
macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
|
|
build issues if the OSL defines the implementation of the interface to be
|
|
an inline stub function. Lv Zheng.
|
|
|
|
Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
|
|
initialization interfaces. This change adds a new macro for the main init
|
|
and terminate external interfaces in order to support hosts that require
|
|
additional or different processing for these functions. Changed from
|
|
ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
|
|
Zheng, Bob Moore.
|
|
|
|
Cleaned up the memory allocation macros for configurability. In the
|
|
common
|
|
case, the ACPI_ALLOCATE and related macros now resolve directly to their
|
|
respective AcpiOs* OSL interfaces. Two options:
|
|
1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
|
|
default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
|
|
2) For AcpiExec (and for debugging), the macros can optionally be
|
|
resolved
|
|
to the local ACPICA interfaces that track each allocation (local tracking
|
|
is used to immediately detect memory leaks).
|
|
Lv Zheng.
|
|
|
|
Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
|
|
to predefine this macro to either TRUE or FALSE during the system build.
|
|
|
|
Replaced __FUNCTION_ with __func__ in the gcc-specific header.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
|
|
Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
|
|
Previous Release:
|
|
Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
|
|
Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented wildcard support for the -e option. This simplifies use
|
|
when there are many SSDTs that must be included to resolve external
|
|
method
|
|
declarations. ACPICA BZ 1041. Example:
|
|
iasl -e ssdt*.dat -d dsdt.dat
|
|
|
|
AcpiExec: Add history/line-editing for Unix/Linux systems. This change
|
|
adds a portable module that implements full history and limited line
|
|
editing for Unix and Linux systems. It does not use readline() due to
|
|
portability issues. Instead it uses the POSIX termio interface to put the
|
|
terminal in raw input mode so that the various special keys can be
|
|
trapped
|
|
(such as up/down-arrow for history support and left/right-arrow for line
|
|
editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
|
|
|
|
AcpiXtract: Add support to handle (ignore) "empty" lines containing only
|
|
one or more spaces. This provides compatible with early or different
|
|
versions of the AcpiDump utility. ACPICA BZ 1044.
|
|
|
|
AcpiDump: Do not ignore tables that contain only an ACPI table header.
|
|
Apparently, some BIOSs create SSDTs that contain an ACPI table header but
|
|
no other data. This change adds support to dump these tables. Any tables
|
|
shorter than the length of an ACPI table header remain in error (an error
|
|
message is emitted). Reported by Yi Li.
|
|
|
|
Debugger: Echo actual command along with the "unknown command" message.
|
|
|
|
----------------------------------------
|
|
23 August 2013. Summary of changes for version 20130823:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Implemented support for host-installed System Control Interrupt (SCI)
|
|
handlers. Certain ACPI functionality requires the host to handle raw
|
|
SCIs. For example, the "SCI Doorbell" that is defined for memory power
|
|
state support requires the host device driver to handle SCIs to examine
|
|
if the doorbell has been activated. Multiple SCI handlers can be
|
|
installed to allow for future expansion. New external interfaces are
|
|
AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
|
|
details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
|
|
|
|
Operation region support: Never locally free the handler "context"
|
|
pointer. This change removes some dangerous code that attempts to free
|
|
the handler context pointer in some (rare) circumstances. The owner of
|
|
the handler owns this pointer and the ACPICA code should never touch it.
|
|
Although not seen to be an issue in any kernel, it did show up as a
|
|
problem (fault) under AcpiExec. Also, set the internal storage field for
|
|
the context pointer to zero when the region is deactivated, simply for
|
|
sanity. David Box. ACPICA BZ 1039.
|
|
|
|
AcpiRead: On error, do not modify the return value target location. If an
|
|
error happens in the middle of a split 32/32 64-bit I/O operation, do not
|
|
modify the target of the return value pointer. Makes the code consistent
|
|
with the rest of ACPICA. Bjorn Helgaas.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
|
|
Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
|
|
Previous Release:
|
|
Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
|
|
Debug Version: 185.4K Code, 77.1K Data, 262.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiDump: Implemented several new features and fixed some problems:
|
|
1) Added support to dump the RSDP, RSDT, and XSDT tables.
|
|
2) Added support for multiple table instances (SSDT, UEFI).
|
|
3) Added option to dump "customized" (overridden) tables (-c).
|
|
4) Fixed a problem where some table filenames were improperly
|
|
constructed.
|
|
5) Improved some error messages, removed some unnecessary messages.
|
|
|
|
iASL: Implemented additional support for disassembly of ACPI tables that
|
|
contain invocations of external control methods. The -fe<file> option
|
|
allows the import of a file that specifies the external methods along
|
|
with the required number of arguments for each -- allowing for the
|
|
correct disassembly of the table. This is a workaround for a limitation
|
|
of AML code where the disassembler often cannot determine the number of
|
|
arguments required for an external control method and generates incorrect
|
|
ASL code. See the iASL reference for details. ACPICA BZ 1030.
|
|
|
|
Debugger: Implemented a new command (paths) that displays the full
|
|
pathnames (namepaths) and object types of all objects in the namespace.
|
|
This is an alternative to the namespace command.
|
|
|
|
Debugger: Implemented a new command (sci) that invokes the SCI dispatch
|
|
mechanism and any installed handlers.
|
|
|
|
iASL: Fixed a possible segfault for "too many parent prefixes" condition.
|
|
This can occur if there are too many parent prefixes in a namepath (for
|
|
example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
|
|
|
|
Application OSLs: Set the return value for the PCI read functions. These
|
|
functions simply return AE_OK, but should set the return value to zero
|
|
also. This change implements this. ACPICA BZ 1038.
|
|
|
|
Debugger: Prevent possible command line buffer overflow. Increase the
|
|
size of a couple of the debugger line buffers, and ensure that overflow
|
|
cannot happen. ACPICA BZ 1037.
|
|
|
|
iASL: Changed to abort immediately on serious errors during the parsing
|
|
phase. Due to the nature of ASL, there is no point in attempting to
|
|
compile these types of errors, and they typically end up causing a
|
|
cascade of hundreds of errors which obscure the original problem.
|
|
|
|
----------------------------------------
|
|
25 July 2013. Summary of changes for version 20130725:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a problem with the DerefOf operator where references to FieldUnits
|
|
and BufferFields incorrectly returned the parent object, not the actual
|
|
value of the object. After this change, a dereference of a FieldUnit
|
|
reference results in a read operation on the field to get the value, and
|
|
likewise, the appropriate BufferField value is extracted from the target
|
|
buffer.
|
|
|
|
Fixed a problem where the _WAK method could cause a fault under these
|
|
circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
|
|
method returned no value. The problem is rarely seen because most kernels
|
|
run ACPICA in slack mode.
|
|
|
|
For the DerefOf operator, a fatal error now results if an attempt is made
|
|
to dereference a reference (created by the Index operator) to a NULL
|
|
package element. Provides compatibility with other ACPI implementations,
|
|
and this behavior will be added to a future version of the ACPI
|
|
specification.
|
|
|
|
The ACPI Power Management Timer (defined in the FADT) is now optional.
|
|
This provides compatibility with other ACPI implementations and will
|
|
appear in the next version of the ACPI specification. If there is no PM
|
|
Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
|
|
zero in the FADT indicates no PM timer.
|
|
|
|
Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
|
|
allows the host to globally enable/disable all vendor strings, all
|
|
feature strings, or both. Intended to be primarily used for debugging
|
|
purposes only. Lv Zheng.
|
|
|
|
Expose the collected _OSI data to the host via a global variable. This
|
|
data tracks the highest level vendor ID that has been invoked by the BIOS
|
|
so that the host (and potentially ACPICA itself) can change behaviors
|
|
based upon the age of the BIOS.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
|
|
Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
|
|
Previous Release:
|
|
Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
|
|
Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Created the following enhancements for the -so option (create
|
|
offset table):
|
|
1)Add offsets for the last nameseg in each namepath for every supported
|
|
object type
|
|
2)Add support for Processor, Device, Thermal Zone, and Scope objects
|
|
3)Add the actual AML opcode for the parent object of every supported
|
|
object type
|
|
4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
|
|
|
|
Disassembler: Emit all unresolved external symbols in a single block.
|
|
These are external references to control methods that could not be
|
|
resolved, and thus, the disassembler had to make a guess at the number of
|
|
arguments to parse.
|
|
|
|
iASL: The argument to the -T option (create table template) is now
|
|
optional. If not specified, the default table is a DSDT, typically the
|
|
most common case.
|
|
|
|
----------------------------------------
|
|
26 June 2013. Summary of changes for version 20130626:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed an issue with runtime repair of the _CST object. Null or invalid
|
|
elements were not always removed properly. Lv Zheng.
|
|
|
|
Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
|
|
FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
|
|
the maximum number of GPEs is 1016. Use of multiple GPE block devices
|
|
makes the system-wide number of GPEs essentially unlimited.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
|
|
Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
|
|
Previous Release:
|
|
Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
|
|
Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Portable AcpiDump: Implemented full support for the Linux and FreeBSD
|
|
hosts. Now supports Linux, FreeBSD, and Windows.
|
|
|
|
Disassembler: Added some missing types for the HEST and EINJ tables: "Set
|
|
Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
|
|
|
|
iASL/Preprocessor: Implemented full support for nested
|
|
#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
|
|
|
|
Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
|
|
max. The original purpose of this constraint was to limit the amount of
|
|
debug output. However, the string function in question (UtPrintString) is
|
|
now used for the disassembler also, where 256 bytes is insufficient.
|
|
Reported by RehabMan@GitHub.
|
|
|
|
iASL/DataTables: Fixed some problems and issues with compilation of DMAR
|
|
tables. ACPICA BZ 999. Lv Zheng.
|
|
|
|
iASL: Fixed a couple of error exit issues that could result in a "Could
|
|
not delete <file>" message during ASL compilation.
|
|
|
|
AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
|
|
the actual signatures for these tables are "FACP" and "APIC",
|
|
respectively.
|
|
|
|
AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
|
|
tables are allowed to have multiple instances.
|
|
|
|
----------------------------------------
|
|
17 May 2013. Summary of changes for version 20130517:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a regression introduced in version 20130328 for _INI methods. This
|
|
change fixes a problem introduced in 20130328 where _INI methods are no
|
|
longer executed properly because of a memory block that was not
|
|
initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
|
|
<tomasz.nowicki@linaro.org>.
|
|
|
|
Fixed a possible problem with the new extended sleep registers in the
|
|
ACPI
|
|
5.0 FADT. Do not use these registers (even if populated) unless the HW-
|
|
reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
|
|
1020. Lv Zheng.
|
|
|
|
Implemented return value repair code for _CST predefined objects: Sort
|
|
the
|
|
list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
|
|
|
|
Implemented a debug-only option to disable loading of SSDTs from the
|
|
RSDT/XSDT during ACPICA initialization. This can be useful for debugging
|
|
ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
|
|
acglobal.h - ACPICA BZ 1005. Lv Zheng.
|
|
|
|
Fixed some issues in the ACPICA initialization and termination code:
|
|
Tomasz Nowicki <tomasz.nowicki@linaro.org>
|
|
1) Clear events initialized flag upon event component termination. ACPICA
|
|
BZ 1013.
|
|
2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
|
|
3) Delete global lock pending lock during termination. ACPICA BZ 1012.
|
|
4) Clear debug buffer global on termination to prevent possible multiple
|
|
delete. ACPICA BZ 1010.
|
|
|
|
Standardized all switch() blocks across the entire source base. After
|
|
many
|
|
years, different formatting for switch() had crept in. This change makes
|
|
the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
|
|
|
|
Split some files to enhance ACPICA modularity and configurability:
|
|
1) Split buffer dump routines into utilities/utbuffer.c
|
|
2) Split internal error message routines into utilities/uterror.c
|
|
3) Split table print utilities into tables/tbprint.c
|
|
4) Split iASL command-line option processing into asloptions.c
|
|
|
|
Makefile enhancements:
|
|
1) Support for all new files above.
|
|
2) Abort make on errors from any subcomponent. Chao Guan.
|
|
3) Add build support for Apple Mac OS X. Liang Qi.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
|
|
Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
|
|
Previous Release:
|
|
Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
|
|
Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
New utility: Implemented an easily portable version of the acpidump
|
|
utility to extract ACPI tables from the system (or a file) in an ASCII
|
|
hex
|
|
dump format. The top-level code implements the various command line
|
|
options, file I/O, and table dump routines. To port to a new host, only
|
|
three functions need to be implemented to get tables -- since this
|
|
functionality is OS-dependent. See the tools/acpidump/apmain.c module and
|
|
the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
|
|
1) The Windows version obtains the ACPI tables from the Registry.
|
|
2) The Linux version is under development.
|
|
3) Other hosts - If an OS-dependent module is submitted, it will be
|
|
distributed with ACPICA.
|
|
|
|
iASL: Fixed a regression for -D preprocessor option (define symbol). A
|
|
restructuring/change to the initialization sequence caused this option to
|
|
no longer work properly.
|
|
|
|
iASL: Implemented a mechanism to disable specific warnings and remarks.
|
|
Adds a new command line option, "-vw <messageid> as well as "#pragma
|
|
disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
|
|
|
|
iASL: Fix for too-strict package object validation. The package object
|
|
validation for return values from the predefined names is a bit too
|
|
strict, it does not allow names references within the package (which will
|
|
be resolved at runtime.) These types of references cannot be validated at
|
|
compile time. This change ignores named references within package objects
|
|
for names that return or define static packages.
|
|
|
|
Debugger: Fixed the 80-character command line limitation for the History
|
|
command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
|
|
|
|
iASL: Added control method and package support for the -so option
|
|
(generates AML offset table for BIOS support.)
|
|
|
|
iASL: issue a remark if a non-serialized method creates named objects. If
|
|
a thread blocks within the method for any reason, and another thread
|
|
enters the method, the method will fail because an attempt will be made
|
|
to
|
|
create the same (named) object twice. In this case, issue a remark that
|
|
the method should be marked serialized. NOTE: may become a warning later.
|
|
ACPICA BZ 909.
|
|
|
|
----------------------------------------
|
|
18 April 2013. Summary of changes for version 20130418:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed a possible buffer overrun during some rare but specific field unit
|
|
read operations. This overrun can only happen if the DSDT version is 1 --
|
|
meaning that all AML integers are 32 bits -- and the field length is
|
|
between 33 and 55 bits long. During the read, an internal buffer object
|
|
is
|
|
created for the field unit because the field is larger than an integer
|
|
(32
|
|
bits). However, in this case, the buffer will be incorrectly written
|
|
beyond the end because the buffer length is less than the internal
|
|
minimum
|
|
of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
|
|
long, but a full 8 bytes will be written.
|
|
|
|
Updated the Embedded Controller "orphan" _REG method support. This refers
|
|
to _REG methods under the EC device that have no corresponding operation
|
|
region. This is allowed by the ACPI specification. This update removes a
|
|
dependency on the existence an ECDT table. It will execute an orphan _REG
|
|
method as long as the operation region handler for the EC is installed at
|
|
the EC device node and not the namespace root. Rui Zhang (original
|
|
update), Bob Moore (update/integrate).
|
|
|
|
Implemented run-time argument typechecking for all predefined ACPI names
|
|
(_STA, _BIF, etc.) This change performs object typechecking on all
|
|
incoming arguments for all predefined names executed via
|
|
AcpiEvaluateObject. This ensures that ACPI-related device drivers are
|
|
passing correct object types as well as the correct number of arguments
|
|
(therefore identifying any issues immediately). Also, the ASL/namespace
|
|
definition of the predefined name is checked against the ACPI
|
|
specification for the proper argument count. Adds one new file,
|
|
nsarguments.c
|
|
|
|
Changed an exception code for the ASL UnLoad() operator. Changed the
|
|
exception code for the case where the input DdbHandle is invalid, from
|
|
AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
|
|
|
|
Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
|
|
global makefile. The use of this flag causes compiler errors on earlier
|
|
versions of GCC, so it has been removed for compatibility.
|
|
|
|
Miscellaneous cleanup:
|
|
1) Removed some unused/obsolete macros
|
|
2) Fixed a possible memory leak in the _OSI support
|
|
3) Removed an unused variable in the predefined name support
|
|
4) Windows OSL: remove obsolete reference to a memory list field
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Current Release:
|
|
Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
|
|
Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
|
|
Previous Release:
|
|
Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
|
|
Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiExec: Added installation of a handler for the SystemCMOS address
|
|
space. This prevents control method abort if a method accesses this
|
|
space.
|
|
|
|
AcpiExec: Added support for multiple EC devices, and now install EC
|
|
operation region handler(s) at the actual EC device instead of the
|
|
namespace root. This reflects the typical behavior of host operating
|
|
systems.
|
|
|
|
AcpiExec: Updated to ensure that all operation region handlers are
|
|
installed before the _REG methods are executed. This prevents a _REG
|
|
method from aborting if it accesses an address space has no handler.
|
|
AcpiExec installs a handler for every possible address space.
|
|
|
|
Debugger: Enhanced the "handlers" command to display non-root handlers.
|
|
This change enhances the handlers command to display handlers associated
|
|
with individual devices throughout the namespace, in addition to the
|
|
currently supported display of handlers associated with the root
|
|
namespace
|
|
node.
|
|
|
|
ASL Test Suite: Several test suite errors have been identified and
|
|
resolved, reducing the total error count during execution. Chao Guan.
|
|
|
|
----------------------------------------
|
|
28 March 2013. Summary of changes for version 20130328:
|
|
|
|
1) ACPICA kernel-resident subsystem:
|
|
|
|
Fixed several possible race conditions with the internal object reference
|
|
counting mechanism. Some of the external ACPICA interfaces update object
|
|
reference counts without holding the interpreter or namespace lock. This
|
|
change adds a spinlock to protect reference count updates on the internal
|
|
ACPICA objects. Reported by and with assistance from Andriy Gapon
|
|
(avg@FreeBSD.org).
|
|
|
|
FADT support: Removed an extraneous warning for very large GPE register
|
|
sets. This change removes a size mismatch warning if the legacy length
|
|
field for a GPE register set is larger than the 64-bit GAS structure can
|
|
accommodate. GPE register sets can be larger than the 255-bit width
|
|
limitation of the GAS structure. Linn Crosetto (linn@hp.com).
|
|
|
|
_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
|
|
return from this interface. Handles a possible timeout case if
|
|
ACPI_WAIT_FOREVER is modified by the host to be a value less than
|
|
"forever". Jung-uk Kim.
|
|
|
|
Predefined name support: Add allowed/required argument type information
|
|
to
|
|
the master predefined info table. This change adds the infrastructure to
|
|
enable typechecking on incoming arguments for all predefined
|
|
methods/objects. It does not actually contain the code that will fully
|
|
utilize this information, this is still under development. Also condenses
|
|
some duplicate code for the predefined names into a new module,
|
|
utilities/utpredef.c
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
|
|
Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
|
|
Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented a new option to simplify the development of ACPI-
|
|
related
|
|
BIOS code. Adds support for a new "offset table" output file. The -so
|
|
option will create a C table containing the AML table offsets of various
|
|
named objects in the namespace so that BIOS code can modify them easily
|
|
at
|
|
boot time. This can simplify BIOS runtime code by eliminating expensive
|
|
searches for "magic values", enhancing boot times and adding greater
|
|
reliability. With assistance from Lee Hamel.
|
|
|
|
iASL: Allow additional predefined names to return zero-length packages.
|
|
Now, all predefined names that are defined by the ACPI specification to
|
|
return a "variable-length package of packages" are allowed to return a
|
|
zero length top-level package. This allows the BIOS to tell the host that
|
|
the requested feature is not supported, and supports existing BIOS/ASL
|
|
code and practices.
|
|
|
|
iASL: Changed the "result not used" warning to an error. This is the case
|
|
where an ASL operator is effectively a NOOP because the result of the
|
|
operation is not stored anywhere. For example:
|
|
Add (4, Local0)
|
|
There is no target (missing 3rd argument), nor is the function return
|
|
value used. This is potentially a very serious problem -- since the code
|
|
was probably intended to do something, but for whatever reason, the value
|
|
was not stored. Therefore, this issue has been upgraded from a warning to
|
|
an error.
|
|
|
|
AcpiHelp: Added allowable/required argument types to the predefined names
|
|
info display. This feature utilizes the recent update to the predefined
|
|
names table (above).
|
|
|
|
----------------------------------------
|
|
14 February 2013. Summary of changes for version 20130214:
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Fixed a possible regression on some hosts: Reinstated the safe return
|
|
macros (return_ACPI_STATUS, etc.) that ensure that the argument is
|
|
evaluated only once. Although these macros are not needed for the ACPICA
|
|
code itself, they are often used by ACPI-related host device drivers
|
|
where
|
|
the safe feature may be necessary.
|
|
|
|
Fixed several issues related to the ACPI 5.0 reduced hardware support
|
|
(SOC): Now ensure that if the platform declares itself as hardware-
|
|
reduced
|
|
via the FADT, the following functions become NOOPs (and always return
|
|
AE_OK) because ACPI is always enabled by definition on these machines:
|
|
AcpiEnable
|
|
AcpiDisable
|
|
AcpiHwGetMode
|
|
AcpiHwSetMode
|
|
|
|
Dynamic Object Repair: Implemented additional runtime repairs for
|
|
predefined name return values. Both of these repairs can simplify code in
|
|
the related device drivers that invoke these methods:
|
|
1) For the _STR and _MLS names, automatically repair/convert an ASCII
|
|
string to a Unicode buffer.
|
|
2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
|
|
a
|
|
lone end tag descriptor in the following cases: A Return(0) was executed,
|
|
a null buffer was returned, or no object at all was returned (non-slack
|
|
mode only). Adds a new file, nsconvert.c
|
|
ACPICA BZ 998. Bob Moore, Lv Zheng.
|
|
|
|
Resource Manager: Added additional code to prevent possible infinite
|
|
loops
|
|
while traversing corrupted or ill-formed resource template buffers. Check
|
|
for zero-length resource descriptors in all code that loops through
|
|
resource templates (the length field is used to index through the
|
|
template). This change also hardens the external AcpiWalkResources and
|
|
AcpiWalkResourceBuffer interfaces.
|
|
|
|
Local Cache Manager: Enhanced the main data structure to eliminate an
|
|
unnecessary mechanism to access the next object in the list. Actually
|
|
provides a small performance enhancement for hosts that use the local
|
|
ACPICA cache manager. Jung-uk Kim.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
|
|
Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
|
|
Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/Disassembler: Fixed several issues with the definition of the ACPI
|
|
5.0 RASF table (RAS Feature Table). This change incorporates late changes
|
|
that were made to the ACPI 5.0 specification.
|
|
|
|
iASL/Disassembler: Added full support for the following new ACPI tables:
|
|
1) The MTMR table (MID Timer Table)
|
|
2) The VRTC table (Virtual Real Time Clock Table).
|
|
Includes header file, disassembler, table compiler, and template support
|
|
for both tables.
|
|
|
|
iASL: Implemented compile-time validation of package objects returned by
|
|
predefined names. This new feature validates static package objects
|
|
returned by the various predefined names defined to return packages. Both
|
|
object types and package lengths are validated, for both parent packages
|
|
and sub-packages, if any. The code is similar in structure and behavior
|
|
to
|
|
the runtime repair mechanism within the AML interpreter and uses the
|
|
existing predefined name information table. Adds a new file, aslprepkg.c.
|
|
ACPICA BZ 938.
|
|
|
|
iASL: Implemented auto-detection of binary ACPI tables for disassembly.
|
|
This feature detects a binary file with a valid ACPI table header and
|
|
invokes the disassembler automatically. Eliminates the need to
|
|
specifically invoke the disassembler with the -d option. ACPICA BZ 862.
|
|
|
|
iASL/Disassembler: Added several warnings for the case where there are
|
|
unresolved control methods during the disassembly. This can potentially
|
|
cause errors when the output file is compiled, because the disassembler
|
|
assumes zero method arguments in these cases (it cannot determine the
|
|
actual number of arguments without resolution/definition of the method).
|
|
|
|
Debugger: Added support to display all resources with a single command.
|
|
Invocation of the resources command with no arguments will now display
|
|
all
|
|
resources within the current namespace.
|
|
|
|
AcpiHelp: Added descriptive text for each ACPICA exception code displayed
|
|
via the -e option.
|
|
|
|
----------------------------------------
|
|
17 January 2013. Summary of changes for version 20130117:
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
|
|
return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
|
|
objects to return a package containing one integer, most BIOS code
|
|
returns
|
|
two integers and the previous code reflects that. However, we also need
|
|
to
|
|
support BIOS code that actually implements to the ACPI spec, and this
|
|
change reflects this.
|
|
|
|
Fixed two issues with the ACPI_DEBUG_PRINT macros:
|
|
1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
|
|
C compilers that require this support.
|
|
2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
|
|
ACPI_DEBUG is already used by many of the various hosts.
|
|
|
|
Updated all ACPICA copyrights and signons to 2013. Added the 2013
|
|
copyright to all module headers and signons, including the standard Linux
|
|
header. This affects virtually every file in the ACPICA core subsystem,
|
|
iASL compiler, all ACPICA utilities, and the test suites.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
|
|
Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
|
|
Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
|
|
prevent a possible fault on some hosts. Some C libraries modify the arg
|
|
pointer parameter to vfprintf making it difficult to call it twice in the
|
|
AcpiOsVprintf function. Use a local buffer to workaround this issue. This
|
|
does not affect the Windows OSL since the Win C library does not modify
|
|
the arg pointer. Chao Guan, Bob Moore.
|
|
|
|
iASL: Fixed a possible infinite loop when the maximum error count is
|
|
reached. If an output file other than the .AML file is specified (such as
|
|
a listing file), and the maximum number of errors is reached, do not
|
|
attempt to flush data to the output file(s) as the compiler is aborting.
|
|
This can cause an infinite loop as the max error count code essentially
|
|
keeps calling itself.
|
|
|
|
iASL/Disassembler: Added an option (-in) to ignore NOOP
|
|
opcodes/operators.
|
|
Implemented for both the compiler and the disassembler. Often, the NOOP
|
|
opcode is used as padding for packages that are changed dynamically by
|
|
the
|
|
BIOS. When disassembled and recompiled, these NOOPs will cause syntax
|
|
errors. This option causes the disassembler to ignore all NOOP opcodes
|
|
(0xA3), and it also causes the compiler to ignore all ASL source code
|
|
NOOP
|
|
statements as well.
|
|
|
|
Debugger: Enhanced the Sleep command to execute all sleep states. This
|
|
change allows Sleep to be invoked with no arguments and causes the
|
|
debugger to execute all of the sleep states, 0-5, automatically.
|
|
|
|
----------------------------------------
|
|
20 December 2012. Summary of changes for version 20121220:
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
|
|
alternate entry point for AcpiWalkResources and improves the usability of
|
|
the resource manager by accepting as input a buffer containing the output
|
|
of either a _CRS, _PRS, or _AEI method. The key functionality is that the
|
|
input buffer is not deleted by this interface so that it can be used by
|
|
the host later. See the ACPICA reference for details.
|
|
|
|
Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
|
|
(DSDT version < 2). The constant will be truncated and this warning
|
|
reflects that behavior.
|
|
|
|
Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
|
|
ExtendedInterrupt, and GpioInt descriptors. This change adds support to
|
|
both get and set the new wake bit in these descriptors, separately from
|
|
the existing share bit. Reported by Aaron Lu.
|
|
|
|
Interpreter: Fix Store() when an implicit conversion is not possible. For
|
|
example, in the cases such as a store of a string to an existing package
|
|
object, implement the store as a CopyObject(). This is a small departure
|
|
from the ACPI specification which states that the control method should
|
|
be
|
|
aborted in this case. However, the ASLTS suite depends on this behavior.
|
|
|
|
Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
|
|
macros: check if debug output is currently enabled as soon as possible to
|
|
minimize performance impact if debug is in fact not enabled.
|
|
|
|
Source code restructuring: Cleanup to improve modularity. The following
|
|
new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
|
|
psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
|
|
Associated makefiles and project files have been updated.
|
|
|
|
Changed an exception code for LoadTable operator. For the case where one
|
|
of the input strings is too long, change the returned exception code from
|
|
AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
|
|
|
|
Fixed a possible memory leak in dispatcher error path. On error, delete
|
|
the mutex object created during method mutex creation. Reported by
|
|
tim.gardner@canonical.com.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
|
|
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
|
|
Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Disallow a method call as argument to the ObjectType ASL operator.
|
|
This change tracks an errata to the ACPI 5.0 document. The AML grammar
|
|
will not allow the interpreter to differentiate between a method and a
|
|
method invocation when these are used as an argument to the ObjectType
|
|
operator. The ACPI specification change is to disallow a method
|
|
invocation
|
|
(UserTerm) for the ObjectType operator.
|
|
|
|
Finish support for the TPM2 and CSRT tables in the headers, table
|
|
compiler, and disassembler.
|
|
|
|
Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
|
|
always expires immediately if the semaphore is not available. The
|
|
original
|
|
code was using a relative-time timeout, but sem_timedwait requires the
|
|
use
|
|
of an absolute time.
|
|
|
|
iASL: Added a remark if the Timer() operator is used within a 32-bit
|
|
table. This operator returns a 64-bit time value that will be truncated
|
|
within a 32-bit table.
|
|
|
|
iASL Source code restructuring: Cleanup to improve modularity. The
|
|
following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
|
|
aslmethod.c, and aslfileio.c. Associated makefiles and project files have
|
|
been updated.
|
|
|
|
|
|
----------------------------------------
|
|
14 November 2012. Summary of changes for version 20121114:
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Implemented a performance enhancement for ACPI/AML Package objects. This
|
|
change greatly increases the performance of Package objects within the
|
|
interpreter. It changes the processing of reference counts for packages
|
|
by
|
|
optimizing for the most common case where the package sub-objects are
|
|
either Integers, Strings, or Buffers. Increases the overall performance
|
|
of
|
|
the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
|
|
2X.)
|
|
Chao Guan. ACPICA BZ 943.
|
|
|
|
Implemented and deployed common macros to extract flag bits from resource
|
|
descriptors. Improves readability and maintainability of the code. Fixes
|
|
a
|
|
problem with the UART serial bus descriptor for the number of data bits
|
|
flags (was incorrectly 2 bits, should be 3).
|
|
|
|
Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
|
|
of the macros and changed the SETx macros to the style of (destination,
|
|
source). Also added ACPI_CASTx companion macros. Lv Zheng.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
|
|
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
|
|
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
|
|
adds the ShareAndWake and ExclusiveAndWake flags which were added to the
|
|
Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
|
|
|
|
Disassembler: Fixed a problem with external declaration generation. Fixes
|
|
a problem where an incorrect pathname could be generated for an external
|
|
declaration if the original reference to the object includes leading
|
|
carats (^). ACPICA BZ 984.
|
|
|
|
Debugger: Completed a major update for the Disassemble<method> command.
|
|
This command was out-of-date and did not properly disassemble control
|
|
methods that had any reasonable complexity. This fix brings the command
|
|
up
|
|
to the same level as the rest of the disassembler. Adds one new file,
|
|
dmdeferred.c, which is existing code that is now common with the main
|
|
disassembler and the debugger disassemble command. ACPICA MZ 978.
|
|
|
|
iASL: Moved the parser entry prototype to avoid a duplicate declaration.
|
|
Newer versions of Bison emit this prototype, so moved the prototype out
|
|
of
|
|
the iASL header to where it is actually used in order to avoid a
|
|
duplicate
|
|
declaration.
|
|
|
|
iASL/Tools: Standardized use of the stream I/O functions:
|
|
1) Ensure check for I/O error after every fopen/fread/fwrite
|
|
2) Ensure proper order of size/count arguments for fread/fwrite
|
|
3) Use test of (Actual != Requested) after all fwrite, and most fread
|
|
4) Standardize I/O error messages
|
|
Improves reliability and maintainability of the code. Bob Moore, Lv
|
|
Zheng.
|
|
ACPICA BZ 981.
|
|
|
|
Disassembler: Prevent duplicate External() statements. During generation
|
|
of external statements, detect similar pathnames that are actually
|
|
duplicates such as these:
|
|
External (\ABCD)
|
|
External (ABCD)
|
|
Remove all leading '\' characters from pathnames during the external
|
|
statement generation so that duplicates will be detected and tossed.
|
|
ACPICA BZ 985.
|
|
|
|
Tools: Replace low-level I/O with stream I/O functions. Replace
|
|
open/read/write/close with the stream I/O equivalents
|
|
fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
|
|
Moore.
|
|
|
|
AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
|
|
name header so that AcpiXtract recognizes the output file/table.
|
|
|
|
iASL: Remove obsolete -2 option flag. Originally intended to force the
|
|
compiler/disassembler into an ACPI 2.0 mode, this was never implemented
|
|
and the entire concept is now obsolete.
|
|
|
|
----------------------------------------
|
|
18 October 2012. Summary of changes for version 20121018:
|
|
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Updated support for the ACPI 5.0 MPST table. Fixes some problems
|
|
introduced by late changes to the table as it was added to the ACPI 5.0
|
|
specification. Includes header, disassembler, and data table compiler
|
|
support as well as a new version of the MPST template.
|
|
|
|
AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
|
|
5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
|
|
methods: _HID, _CID, and _UID.
|
|
|
|
Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
|
|
ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
|
|
name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
|
|
names for their various drivers. Affects the AcpiGetObjectInfo external
|
|
interface, and other internal interfaces as well.
|
|
|
|
Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
|
|
This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
|
|
on machines that support non-aligned transfers. Optimizes for this case
|
|
rather than using a strncpy. With assistance from Zheng Lv.
|
|
|
|
Resource Manager: Small fix for buffer size calculation. Fixed a one byte
|
|
error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
|
|
|
|
Added a new debug print message for AML mutex objects that are force-
|
|
released. At control method termination, any currently acquired mutex
|
|
objects are force-released. Adds a new debug-only message for each one
|
|
that is released.
|
|
|
|
Audited/updated all ACPICA return macros and the function debug depth
|
|
counter: 1) Ensure that all functions that use the various TRACE macros
|
|
also use the appropriate ACPICA return macros. 2) Ensure that all normal
|
|
return statements surround the return expression (value) with parens to
|
|
ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
|
|
Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
|
|
|
|
Global source code changes/maintenance: All extra lines at the start and
|
|
end of each source file have been removed for consistency. Also, within
|
|
comments, all new sentences start with a single space instead of a double
|
|
space, again for consistency across the code base.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
|
|
Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
|
|
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiExec: Improved the algorithm used for memory leak/corruption
|
|
detection. Added some intelligence to the code that maintains the global
|
|
list of allocated memory. The list is now ordered by allocated memory
|
|
address, significantly improving performance. When running AcpiExec on
|
|
the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
|
|
on the platform and/or the environment. Note, this performance
|
|
enhancement affects the AcpiExec utility only, not the kernel-resident
|
|
ACPICA code.
|
|
|
|
Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
|
|
the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
|
|
incorrect table offset reported for invalid opcodes. Report the original
|
|
32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
|
|
|
|
Disassembler: Enhanced the -vt option to emit the binary table data in
|
|
hex format to assist with debugging.
|
|
|
|
Fixed a potential filename buffer overflow in osunixdir.c. Increased the
|
|
size of file structure. Colin Ian King.
|
|
|
|
----------------------------------------
|
|
13 September 2012. Summary of changes for version 20120913:
|
|
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
ACPI 5.0: Added two new notify types for the Hardware Error Notification
|
|
Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
|
|
and
|
|
MCE(6).
|
|
|
|
Table Manager: Merged/removed duplicate code in the root table resize
|
|
functions. One function is external, the other is internal. Lv Zheng,
|
|
ACPICA
|
|
BZ 846.
|
|
|
|
Makefiles: Completely removed the obsolete "Linux" makefiles under
|
|
acpica/generate/linux. These makefiles are obsolete and have been
|
|
replaced
|
|
by
|
|
the generic unix makefiles under acpica/generate/unix.
|
|
|
|
Makefiles: Ensure that binary files always copied properly. Minor rule
|
|
change
|
|
to ensure that the final binary output files are always copied up to the
|
|
appropriate binary directory (bin32 or bin64.)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
|
|
Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
|
|
Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Fixed a possible fault during the disassembly of resource
|
|
descriptors when a second parse is required because of the invocation of
|
|
external control methods within the table. With assistance from
|
|
adq@lidskialf.net. ACPICA BZ 976.
|
|
|
|
iASL: Fixed a namepath optimization problem. An error can occur if the
|
|
parse
|
|
node that contains the namepath to be optimized does not have a parent
|
|
node
|
|
that is a named object. This change fixes the problem.
|
|
|
|
iASL: Fixed a regression where the AML file is not deleted on errors. The
|
|
AML
|
|
output file should be deleted if there are any errors during the
|
|
compiler.
|
|
The
|
|
only exception is if the -f (force output) option is used. ACPICA BZ 974.
|
|
|
|
iASL: Added a feature to automatically increase internal line buffer
|
|
sizes.
|
|
Via realloc(), automatically increase the internal line buffer sizes as
|
|
necessary to support very long source code lines. The current version of
|
|
the
|
|
preprocessor requires a buffer long enough to contain full source code
|
|
lines.
|
|
This change increases the line buffer(s) if the input lines go beyond the
|
|
current buffer size. This eliminates errors that occurred when a source
|
|
code
|
|
line was longer than the buffer.
|
|
|
|
iASL: Fixed a problem with constant folding in method declarations. The
|
|
SyncLevel term is a ByteConstExpr, and incorrect code would be generated
|
|
if a
|
|
Type3 opcode was used.
|
|
|
|
Debugger: Improved command help support. For incorrect argument count,
|
|
display
|
|
full help for the command. For help command itself, allow an argument to
|
|
specify a command.
|
|
|
|
Test Suites: Several bug fixes for the ASLTS suite reduces the number of
|
|
errors during execution of the suite. Guan Chao.
|
|
|
|
----------------------------------------
|
|
16 August 2012. Summary of changes for version 20120816:
|
|
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Removed all use of the deprecated _GTS and _BFS predefined methods. The
|
|
_GTS
|
|
(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
|
|
deprecated and will probably be removed from the ACPI specification.
|
|
Windows
|
|
does not invoke them, and reportedly never will. The final nail in the
|
|
coffin
|
|
is that the ACPI specification states that these methods must be run with
|
|
interrupts off, which is not going to happen in a kernel interpreter.
|
|
Note:
|
|
Linux has removed all use of the methods also. It was discovered that
|
|
invoking these functions caused failures on some machines, probably
|
|
because
|
|
they were never tested since Windows does not call them. Affects two
|
|
external
|
|
interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
|
|
ACPICA BZ 969.
|
|
|
|
Implemented support for complex bit-packed buffers returned from the _PLD
|
|
(Physical Location of Device) predefined method. Adds a new external
|
|
interface, AcpiDecodePldBuffer that parses the buffer into a more usable
|
|
C
|
|
structure. Note: C Bitfields cannot be used for this type of predefined
|
|
structure since the memory layout of individual bitfields is not defined
|
|
by
|
|
the C language. In addition, there are endian concerns where a compiler
|
|
will
|
|
change the bitfield ordering based on the machine type. The new ACPICA
|
|
interface eliminates these issues, and should be called after _PLD is
|
|
executed. ACPICA BZ 954.
|
|
|
|
Implemented a change to allow a scope change to root (via "Scope (\)")
|
|
during
|
|
execution of module-level ASL code (code that is executed at table load
|
|
time.) Lin Ming.
|
|
|
|
Added the Windows8/Server2012 string for the _OSI method. This change
|
|
adds
|
|
a
|
|
new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
|
|
2012.
|
|
|
|
Added header support for the new ACPI tables DBG2 (Debug Port Table Type
|
|
2)
|
|
and CSRT (Core System Resource Table).
|
|
|
|
Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
|
|
names. This simplifies access to the buffers returned by these predefined
|
|
names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
|
|
|
|
GPE support: Removed an extraneous parameter from the various low-level
|
|
internal GPE functions. Tang Feng.
|
|
|
|
Removed the linux makefiles from the unix packages. The generate/linux
|
|
makefiles are obsolete and have been removed from the unix tarball
|
|
release
|
|
packages. The replacement makefiles are under generate/unix, and there is
|
|
a
|
|
top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
|
|
|
|
Updates for Unix makefiles:
|
|
1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
|
|
2) Update linker flags (move to end of command line) for AcpiExec
|
|
utility.
|
|
Guan Chao.
|
|
|
|
Split ACPICA initialization functions to new file, utxfinit.c. Split from
|
|
utxface.c to improve modularity and reduce file size.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
|
|
Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
|
|
Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a problem with constant folding for fixed-length constant
|
|
expressions. The constant-folding code was not being invoked for constant
|
|
expressions that allow the use of type 3/4/5 opcodes to generate
|
|
constants
|
|
for expressions such as ByteConstExpr, WordConstExpr, etc. This could
|
|
result
|
|
in the generation of invalid AML bytecode. ACPICA BZ 970.
|
|
|
|
iASL: Fixed a generation issue on newer versions of Bison. Newer versions
|
|
apparently automatically emit some of the necessary externals. This
|
|
change
|
|
handles these versions in order to eliminate generation warnings.
|
|
|
|
Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
|
|
|
|
Disassembler: Add support to decode _PLD buffers. The decoded buffer
|
|
appears
|
|
within comments in the output file.
|
|
|
|
Debugger: Fixed a regression with the "Threads" command where
|
|
AE_BAD_PARAMETER was always returned.
|
|
|
|
----------------------------------------
|
|
11 July 2012. Summary of changes for version 20120711:
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Fixed a possible fault in the return package object repair code. Fixes a
|
|
problem that can occur when a lone package object is wrapped with an
|
|
outer
|
|
package object in order to force conformance to the ACPI specification.
|
|
Can
|
|
affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
|
|
_DLM,
|
|
_CSD, _PSD, _TSD.
|
|
|
|
Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
|
|
PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
|
|
ARB_DIS bit must be implemented in the host-dependent C3 processor power
|
|
state
|
|
support. Note, ARB_DIS is obsolete and only applies to older chipsets,
|
|
both
|
|
Intel and other vendors. (for Intel: ICH4-M and earlier)
|
|
|
|
This change removes the code to disable/enable bus master arbitration
|
|
during
|
|
suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
|
|
causes
|
|
resume problems on some machines. The change has been in use for over
|
|
seven
|
|
years within Linux.
|
|
|
|
Implemented two new external interfaces to support host-directed dynamic
|
|
ACPI
|
|
table load and unload. They are intended to simplify the host
|
|
implementation
|
|
of hot-plug support:
|
|
AcpiLoadTable: Load an SSDT from a buffer into the namespace.
|
|
AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
|
|
table.
|
|
See the ACPICA reference for additional details. Adds one new file,
|
|
components/tables/tbxfload.c
|
|
|
|
Implemented and deployed two new interfaces for errors and warnings that
|
|
are
|
|
known to be caused by BIOS/firmware issues:
|
|
AcpiBiosError: Prints "ACPI Firmware Error" message.
|
|
AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
|
|
Deployed these new interfaces in the ACPICA Table Manager code for ACPI
|
|
table
|
|
and FADT errors. Additional deployment to be completed as appropriate in
|
|
the
|
|
future. The associated conditional macros are ACPI_BIOS_ERROR and
|
|
ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
|
|
ACPICA
|
|
BZ
|
|
843.
|
|
|
|
Implicit notify support: ensure that no memory allocation occurs within a
|
|
critical region. This fix moves a memory allocation outside of the time
|
|
that a
|
|
spinlock is held. Fixes issues on systems that do not allow this
|
|
behavior.
|
|
Jung-uk Kim.
|
|
|
|
Split exception code utilities and tables into a new file,
|
|
utilities/utexcep.c
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
|
|
Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
|
|
Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
|
|
of
|
|
0. Jung-uk Kim.
|
|
|
|
Debugger: Enhanced the "tables" command to emit additional information
|
|
about
|
|
the current set of ACPI tables, including the owner ID and flags decode.
|
|
|
|
Debugger: Reimplemented the "unload" command to use the new
|
|
AcpiUnloadParentTable external interface. This command was disable
|
|
previously
|
|
due to need for an unload interface.
|
|
|
|
AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
|
|
option
|
|
will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
|
|
|
|
----------------------------------------
|
|
20 June 2012. Summary of changes for version 20120620:
|
|
|
|
|
|
1) ACPICA Kernel-resident Subsystem:
|
|
|
|
Implemented support to expand the "implicit notify" feature to allow
|
|
multiple
|
|
devices to be notified by a single GPE. This feature automatically
|
|
generates a
|
|
runtime device notification in the absence of a BIOS-provided GPE control
|
|
method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
|
|
notify is
|
|
provided by ACPICA for Windows compatibility, and is a workaround for
|
|
BIOS
|
|
AML
|
|
code errors. See the description of the AcpiSetupGpeForWake interface in
|
|
the
|
|
APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
|
|
|
|
Changed some comments and internal function names to simplify and ensure
|
|
correctness of the Linux code translation. No functional changes.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
|
|
Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
|
|
Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Added support to emit short, commented descriptions for the
|
|
ACPI
|
|
predefined names in order to improve the readability of the disassembled
|
|
output. ACPICA BZ 959. Changes include:
|
|
1) Emit descriptions for all standard predefined names (_INI, _STA,
|
|
_PRW,
|
|
etc.)
|
|
2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
|
|
3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
|
|
etc.)
|
|
|
|
AcpiSrc: Fixed several long-standing Linux code translation issues.
|
|
Argument
|
|
descriptions in function headers are now translated properly to lower
|
|
case
|
|
and
|
|
underscores. ACPICA BZ 961. Also fixes translation problems such as
|
|
these:
|
|
(old -> new)
|
|
i_aSL -> iASL
|
|
00-7_f -> 00-7F
|
|
16_k -> 16K
|
|
local_fADT -> local_FADT
|
|
execute_oSI -> execute_OSI
|
|
|
|
iASL: Fixed a problem where null bytes were inadvertently emitted into
|
|
some
|
|
listing files.
|
|
|
|
iASL: Added the existing debug options to the standard help screen. There
|
|
are
|
|
no longer two different help screens. ACPICA BZ 957.
|
|
|
|
AcpiHelp: Fixed some typos in the various predefined name descriptions.
|
|
Also
|
|
expand some of the descriptions where appropriate.
|
|
|
|
iASL: Fixed the -ot option (display compile times/statistics). Was not
|
|
working
|
|
properly for standard output; only worked for the debug file case.
|
|
|
|
----------------------------------------
|
|
18 May 2012. Summary of changes for version 20120518:
|
|
|
|
|
|
1) ACPICA Core Subsystem:
|
|
|
|
Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
|
|
defined
|
|
to block until asynchronous events such as notifies and GPEs have
|
|
completed.
|
|
Within ACPICA, it is only called before a notify or GPE handler is
|
|
removed/uninstalled. It also may be useful for the host OS within related
|
|
drivers such as the Embedded Controller driver. See the ACPICA reference
|
|
for
|
|
additional information. ACPICA BZ 868.
|
|
|
|
ACPI Tables: Added a new error message for a possible overflow failure
|
|
during
|
|
the conversion of FADT 32-bit legacy register addresses to internal
|
|
common
|
|
64-
|
|
bit GAS structure representation. The GAS has a one-byte "bit length"
|
|
field,
|
|
thus limiting the register length to 255 bits. ACPICA BZ 953.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
|
|
Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
|
|
Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
|
|
macro.
|
|
This keyword was added late in the ACPI 5.0 release cycle and was not
|
|
implemented until now.
|
|
|
|
Disassembler: Added support for Operation Region externals. Adds missing
|
|
support for operation regions that are defined in another table, and
|
|
referenced locally via a Field or BankField ASL operator. Now generates
|
|
the
|
|
correct External statement.
|
|
|
|
Disassembler: Several additional fixes for the External() statement
|
|
generation
|
|
related to some ASL operators. Also, order the External() statements
|
|
alphabetically in the disassembler output. Fixes the External()
|
|
generation
|
|
for
|
|
the Create* field, Alias, and Scope operators:
|
|
1) Create* buffer field operators - fix type mismatch warning on
|
|
disassembly
|
|
2) Alias - implement missing External support
|
|
3) Scope - fix to make sure all necessary externals are emitted.
|
|
|
|
iASL: Improved pathname support. For include files, merge the prefix
|
|
pathname
|
|
with the file pathname and eliminate unnecessary components. Convert
|
|
backslashes in all pathnames to forward slashes, for readability. Include
|
|
file
|
|
pathname changes affect both #include and Include() type operators.
|
|
|
|
iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
|
|
end
|
|
of a valid line by inserting a newline and then returning the EOF during
|
|
the
|
|
next call to GetNextLine. Prevents the line from being ignored due to EOF
|
|
condition.
|
|
|
|
iASL: Implemented some changes to enhance the IDE support (-vi option.)
|
|
Error
|
|
and Warning messages are now correctly recognized for both the source
|
|
code
|
|
browser and the global error and warning counts.
|
|
|
|
----------------------------------------
|
|
20 April 2012. Summary of changes for version 20120420:
|
|
|
|
|
|
1) ACPICA Core Subsystem:
|
|
|
|
Implemented support for multiple notify handlers. This change adds
|
|
support
|
|
to
|
|
allow multiple system and device notify handlers on Device, Thermal Zone,
|
|
and
|
|
Processor objects. This can simplify the host OS notification
|
|
implementation.
|
|
Also re-worked and restructured the entire notify support code to
|
|
simplify
|
|
handler installation, handler removal, notify event queuing, and notify
|
|
dispatch to handler(s). Note: there can still only be two global notify
|
|
handlers - one for system notifies and one for device notifies. There are
|
|
no
|
|
changes to the existing handler install/remove interfaces. Lin Ming, Bob
|
|
Moore, Rafael Wysocki.
|
|
|
|
Fixed a regression in the package repair code where the object reference
|
|
count was calculated incorrectly. Regression was introduced in the commit
|
|
"Support to add Package wrappers".
|
|
|
|
Fixed a couple possible memory leaks in the AML parser, in the error
|
|
recovery
|
|
path. Jesper Juhl, Lin Ming.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
|
|
Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
|
|
Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a problem with the resource descriptor support where the
|
|
length
|
|
of the StartDependentFn and StartDependentFnNoPrio descriptors were not
|
|
included in cumulative descriptor offset, resulting in incorrect values
|
|
for
|
|
resource tags within resource descriptors appearing after a
|
|
StartDependent*
|
|
descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
|
|
|
|
iASL and Preprocessor: Implemented full support for the #line directive
|
|
to
|
|
correctly track original source file line numbers through the .i
|
|
preprocessor
|
|
output file - for error and warning messages.
|
|
|
|
iASL: Expand the allowable byte constants for address space IDs.
|
|
Previously,
|
|
the allowable range was 0x80-0xFF (user-defined spaces), now the range is
|
|
0x0A-0xFF to allow for custom and new IDs without changing the compiler.
|
|
|
|
iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
|
|
|
|
iASL: Add option to completely disable the preprocessor (-Pn).
|
|
|
|
iASL: Now emit all error/warning messages to standard error (stderr) by
|
|
default (instead of the previous stdout).
|
|
|
|
ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
|
|
Update
|
|
for resource descriptor offset fix above. Update/cleanup error output
|
|
routines. Enable and send iASL errors/warnings to an error logfile
|
|
(error.txt). Send all other iASL output to a logfile (compiler.txt).
|
|
Fixed
|
|
several extraneous "unrecognized operator" messages.
|
|
|
|
----------------------------------------
|
|
20 March 2012. Summary of changes for version 20120320:
|
|
|
|
|
|
1) ACPICA Core Subsystem:
|
|
|
|
Enhanced the sleep/wake interfaces to optionally execute the _GTS method
|
|
(Going To Sleep) and the _BFS method (Back From Sleep). Windows
|
|
apparently
|
|
does not execute these methods, and therefore these methods are often
|
|
untested. It has been seen on some systems where the execution of these
|
|
methods causes errors and also prevents the machine from entering S5. It
|
|
is
|
|
therefore suggested that host operating systems do not execute these
|
|
methods
|
|
by default. In the future, perhaps these methods can be optionally
|
|
executed
|
|
based on the age of the system and/or what is the newest version of
|
|
Windows
|
|
that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
|
|
and
|
|
AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
|
|
Ming.
|
|
|
|
Fixed a problem where the length of the local/common FADT was set too
|
|
early.
|
|
The local FADT table length cannot be set to the common length until the
|
|
original length has been examined. There is code that checks the table
|
|
length
|
|
and sets various fields appropriately. This can affect older machines
|
|
with
|
|
early FADT versions. For example, this can cause inadvertent writes to
|
|
the
|
|
CST_CNT register. Julian Anastasov.
|
|
|
|
Fixed a mapping issue related to a physical table override. Use the
|
|
deferred
|
|
mapping mechanism for tables loaded via the physical override OSL
|
|
interface.
|
|
This allows for early mapping before the virtual memory manager is
|
|
available.
|
|
Thomas Renninger, Bob Moore.
|
|
|
|
Enhanced the automatic return-object repair code: Repair a common problem
|
|
with
|
|
predefined methods that are defined to return a variable-length Package
|
|
of
|
|
sub-objects. If there is only one sub-object, some BIOS ASL code
|
|
mistakenly
|
|
simply returns the single object instead of a Package with one sub-
|
|
object.
|
|
This new support will repair this error by wrapping a Package object
|
|
around
|
|
the original object, creating the correct and expected Package with one
|
|
sub-
|
|
object. Names that can be repaired in this manner include: _ALR, _CSD,
|
|
_HPX,
|
|
_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
|
|
939.
|
|
|
|
Changed the exception code returned for invalid ACPI paths passed as
|
|
parameters to external interfaces such as AcpiEvaluateObject. Was
|
|
AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
|
|
Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
|
|
Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Added the infrastructure and initial implementation of a integrated
|
|
C-
|
|
like preprocessor. This will simplify BIOS development process by
|
|
eliminating
|
|
the need for a separate preprocessing step during builds. On Windows, it
|
|
also
|
|
eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
|
|
features including full #define() macro support are still under
|
|
development.
|
|
These preprocessor directives are supported:
|
|
#define
|
|
#elif
|
|
#else
|
|
#endif
|
|
#error
|
|
#if
|
|
#ifdef
|
|
#ifndef
|
|
#include
|
|
#pragma message
|
|
#undef
|
|
#warning
|
|
In addition, these new command line options are supported:
|
|
-D <symbol> Define symbol for preprocessor use
|
|
-li Create preprocessed output file (*.i)
|
|
-P Preprocess only and create preprocessor output file (*.i)
|
|
|
|
Table Compiler: Fixed a problem where the equals operator within an
|
|
expression
|
|
did not work properly.
|
|
|
|
Updated iASL to use the current versions of Bison/Flex. Updated the
|
|
Windows
|
|
project file to invoke these tools from the standard location. ACPICA BZ
|
|
904.
|
|
Versions supported:
|
|
Flex for Windows: V2.5.4
|
|
Bison for Windows: V2.4.1
|
|
|
|
----------------------------------------
|
|
15 February 2012. Summary of changes for version 20120215:
|
|
|
|
|
|
1) ACPICA Core Subsystem:
|
|
|
|
There have been some major changes to the sleep/wake support code, as
|
|
described below (a - e).
|
|
|
|
a) The AcpiLeaveSleepState has been split into two interfaces, similar to
|
|
AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
|
|
AcpiLeaveSleepStatePrep. This allows the host to perform actions between
|
|
the
|
|
time the _BFS method is called and the _WAK method is called. NOTE: all
|
|
hosts
|
|
must update their wake/resume code or else sleep/wake will not work
|
|
properly.
|
|
Rafael Wysocki.
|
|
|
|
b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
|
|
_WAK
|
|
method. Some machines require that the GPEs are enabled before the _WAK
|
|
method
|
|
is executed. Thomas Renninger.
|
|
|
|
c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
|
|
bit.
|
|
Some BIOS code assumes that WAK_STS will be cleared on resume and use it
|
|
to
|
|
determine whether the system is rebooting or resuming. Matthew Garrett.
|
|
|
|
d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
|
|
Sleep) to
|
|
match the ACPI specification requirement. Rafael Wysocki.
|
|
|
|
e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
|
|
registers within the V5 FADT. This support adds two new files:
|
|
hardware/hwesleep.c implements the support for the new registers. Moved
|
|
all
|
|
sleep/wake external interfaces to hardware/hwxfsleep.c.
|
|
|
|
|
|
Added a new OSL interface for ACPI table overrides,
|
|
AcpiOsPhysicalTableOverride. This interface allows the host to override a
|
|
table via a physical address, instead of the logical address required by
|
|
AcpiOsTableOverride. This simplifies the host implementation. Initial
|
|
implementation by Thomas Renninger. The ACPICA implementation creates a
|
|
single
|
|
shared function for table overrides that attempts both a logical and a
|
|
physical override.
|
|
|
|
Expanded the OSL memory read/write interfaces to 64-bit data
|
|
(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
|
|
transfer support for GAS register structures passed to AcpiRead and
|
|
AcpiWrite.
|
|
|
|
Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
|
|
custom
|
|
build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
|
|
model.
|
|
See the ACPICA reference for details. ACPICA BZ 942. This option removes
|
|
about
|
|
10% of the code and 5% of the static data, and the following hardware
|
|
ACPI
|
|
features become unavailable:
|
|
PM Event and Control registers
|
|
SCI interrupt (and handler)
|
|
Fixed Events
|
|
General Purpose Events (GPEs)
|
|
Global Lock
|
|
ACPI PM timer
|
|
FACS table (Waking vectors and Global Lock)
|
|
|
|
Updated the unix tarball directory structure to match the ACPICA git
|
|
source
|
|
tree. This ensures that the generic unix makefiles work properly (in
|
|
generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
|
|
867.
|
|
|
|
Updated the return value of the _REV predefined method to integer value 5
|
|
to
|
|
reflect ACPI 5.0 support.
|
|
|
|
Moved the external ACPI PM timer interface prototypes to the public
|
|
acpixf.h
|
|
file where they belong.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
|
|
Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
|
|
Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
|
|
descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
|
|
incorrectly displayed.
|
|
|
|
AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
|
|
specification.
|
|
|
|
----------------------------------------
|
|
11 January 2012. Summary of changes for version 20120111:
|
|
|
|
|
|
1) ACPICA Core Subsystem:
|
|
|
|
Implemented a new mechanism to allow host device drivers to check for
|
|
address
|
|
range conflicts with ACPI Operation Regions. Both SystemMemory and
|
|
SystemIO
|
|
address spaces are supported. A new external interface,
|
|
AcpiCheckAddressRange,
|
|
allows drivers to check an address range against the ACPI namespace. See
|
|
the
|
|
ACPICA reference for additional details. Adds one new file,
|
|
utilities/utaddress.c. Lin Ming, Bob Moore.
|
|
|
|
Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
|
|
Control
|
|
and
|
|
Status registers, update the ACPI 5.0 flags, and update internal data
|
|
structures to handle an FADT larger than 256 bytes. The size of the ACPI
|
|
5.0
|
|
FADT is 268 bytes.
|
|
|
|
Updated all ACPICA copyrights and signons to 2012. Added the 2012
|
|
copyright to
|
|
all module headers and signons, including the standard Linux header. This
|
|
affects virtually every file in the ACPICA core subsystem, iASL compiler,
|
|
and
|
|
all ACPICA utilities.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
|
|
Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
|
|
Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: fixed a problem with the automatic resource tag generation
|
|
support. Fixes a problem where the resource tags are inadvertently not
|
|
constructed if the table being disassembled contains external references
|
|
to
|
|
control methods. Moved the actual construction of the tags to after the
|
|
final
|
|
namespace is constructed (after 2nd parse is invoked due to external
|
|
control
|
|
method references.) ACPICA BZ 941.
|
|
|
|
Table Compiler: Make all "generic" operators caseless. These are the
|
|
operators
|
|
like UINT8, String, etc. Making these caseless improves ease-of-use.
|
|
ACPICA BZ
|
|
934.
|
|
|
|
----------------------------------------
|
|
23 November 2011. Summary of changes for version 20111123:
|
|
|
|
0) ACPI 5.0 Support:
|
|
|
|
This release contains full support for the ACPI 5.0 specification, as
|
|
summarized below.
|
|
|
|
Reduced Hardware Support:
|
|
-------------------------
|
|
|
|
This support allows for ACPI systems without the usual ACPI hardware.
|
|
This
|
|
support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
|
|
will
|
|
not attempt to initialize or use any of the usual ACPI hardware. Note,
|
|
when
|
|
this flag is set, all of the following ACPI hardware is assumed to be not
|
|
present and is not initialized or accessed:
|
|
|
|
General Purpose Events (GPEs)
|
|
Fixed Events (PM1a/PM1b and PM Control)
|
|
Power Management Timer and Console Buttons (power/sleep)
|
|
Real-time Clock Alarm
|
|
Global Lock
|
|
System Control Interrupt (SCI)
|
|
The FACS is assumed to be non-existent
|
|
|
|
ACPI Tables:
|
|
------------
|
|
|
|
All new tables and updates to existing tables are fully supported in the
|
|
ACPICA headers (for use by device drivers), the disassembler, and the
|
|
iASL
|
|
Data Table Compiler. ACPI 5.0 defines these new tables:
|
|
|
|
BGRT /* Boot Graphics Resource Table */
|
|
DRTM /* Dynamic Root of Trust for Measurement table */
|
|
FPDT /* Firmware Performance Data Table */
|
|
GTDT /* Generic Timer Description Table */
|
|
MPST /* Memory Power State Table */
|
|
PCCT /* Platform Communications Channel Table */
|
|
PMTT /* Platform Memory Topology Table */
|
|
RASF /* RAS Feature table */
|
|
|
|
Operation Regions/SpaceIDs:
|
|
---------------------------
|
|
|
|
All new operation regions are fully supported by the iASL compiler, the
|
|
disassembler, and the ACPICA runtime code (for dispatch to region
|
|
handlers.)
|
|
The new operation region Space IDs are:
|
|
|
|
GeneralPurposeIo
|
|
GenericSerialBus
|
|
|
|
Resource Descriptors:
|
|
---------------------
|
|
|
|
All new ASL resource descriptors are fully supported by the iASL
|
|
compiler,
|
|
the
|
|
ASL/AML disassembler, and the ACPICA runtime Resource Manager code
|
|
(including
|
|
all new predefined resource tags). New descriptors are:
|
|
|
|
FixedDma
|
|
GpioIo
|
|
GpioInt
|
|
I2cSerialBus
|
|
SpiSerialBus
|
|
UartSerialBus
|
|
|
|
ASL/AML Operators, New and Modified:
|
|
------------------------------------
|
|
|
|
One new operator is added, the Connection operator, which is used to
|
|
associate
|
|
a GeneralPurposeIo or GenericSerialBus resource descriptor with
|
|
individual
|
|
field objects within an operation region. Several new protocols are
|
|
associated
|
|
with the AccessAs operator. All are fully supported by the iASL compiler,
|
|
disassembler, and runtime ACPICA AML interpreter:
|
|
|
|
Connection // Declare Field Connection
|
|
attributes
|
|
AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
|
|
AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
|
|
Protocol
|
|
AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
|
|
RawDataBuffer // Data type for Vendor Data
|
|
fields
|
|
|
|
Predefined ASL/AML Objects:
|
|
---------------------------
|
|
|
|
All new predefined objects/control-methods are supported by the iASL
|
|
compiler
|
|
and the ACPICA runtime validation/repair (arguments and return values.)
|
|
New
|
|
predefined names include the following:
|
|
|
|
Standard Predefined Names (Objects or Control Methods):
|
|
_AEI, _CLS, _CPC, _CWS, _DEP,
|
|
_DLM, _EVT, _GCP, _CRT, _GWS,
|
|
_HRV, _PRE, _PSE, _SRT, _SUB.
|
|
|
|
Resource Tags (Names used to access individual fields within resource
|
|
descriptors):
|
|
_DBT, _DPL, _DRS, _END, _FLC,
|
|
_IOR, _LIN, _MOD, _PAR, _PHA,
|
|
_PIN, _PPI, _POL, _RXL, _SLV,
|
|
_SPE, _STB, _TXL, _VEN.
|
|
|
|
ACPICA External Interfaces:
|
|
---------------------------
|
|
|
|
Several new interfaces have been defined for use by ACPI-related device
|
|
drivers and other host OS services:
|
|
|
|
AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
|
|
to
|
|
acquire and release AML mutexes that are defined in the DSDT/SSDT tables
|
|
provided by the BIOS. They are intended to be used in conjunction with
|
|
the
|
|
ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
|
|
mutual exclusion with the AML code/interpreter.
|
|
|
|
AcpiGetEventResources: Returns the (formatted) resource descriptors as
|
|
defined
|
|
by the ACPI 5.0 _AEI object (ACPI Event Information). This object
|
|
provides
|
|
resource descriptors associated with hardware-reduced platform events,
|
|
similar
|
|
to the AcpiGetCurrentResources interface.
|
|
|
|
Operation Region Handlers: For General Purpose IO and Generic Serial Bus
|
|
operation regions, information about the Connection() object and any
|
|
optional
|
|
length information is passed to the region handler within the Context
|
|
parameter.
|
|
|
|
AcpiBufferToResource: This interface converts a raw AML buffer containing
|
|
a
|
|
resource template or resource descriptor to the ACPI_RESOURCE internal
|
|
format
|
|
suitable for use by device drivers. Can be used by an operation region
|
|
handler
|
|
to convert the Connection() buffer object into a ACPI_RESOURCE.
|
|
|
|
Miscellaneous/Tools/TestSuites:
|
|
-------------------------------
|
|
|
|
Support for extended _HID names (Four alpha characters instead of three).
|
|
Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
|
|
Support for ACPI 5.0 features in the ASLTS test suite.
|
|
Fully updated documentation (ACPICA and iASL reference documents.)
|
|
|
|
ACPI Table Definition Language:
|
|
-------------------------------
|
|
|
|
Support for this language was implemented and released as a subsystem of
|
|
the
|
|
iASL compiler in 2010. (See the iASL compiler User Guide.)
|
|
|
|
|
|
Non-ACPI 5.0 changes for this release:
|
|
--------------------------------------
|
|
|
|
1) ACPICA Core Subsystem:
|
|
|
|
Fix a problem with operation region declarations where a failure can
|
|
occur
|
|
if
|
|
the region name and an argument that evaluates to an object (such as the
|
|
region address) are in different namespace scopes. Lin Ming, ACPICA BZ
|
|
937.
|
|
|
|
Do not abort an ACPI table load if an invalid space ID is found within.
|
|
This
|
|
will be caught later if the offending method is executed. ACPICA BZ 925.
|
|
|
|
Fixed an issue with the FFixedHW space ID where the ID was not always
|
|
recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
|
|
|
|
Fixed a problem with the 32-bit generation of the unix-specific OSL
|
|
(osunixxf.c). Lin Ming, ACPICA BZ 936.
|
|
|
|
Several changes made to enable generation with the GCC 4.6 compiler.
|
|
ACPICA BZ
|
|
935.
|
|
|
|
New error messages: Unsupported I/O requests (not 8/16/32 bit), and
|
|
Index/Bank
|
|
field registers out-of-range.
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented the __PATH__ operator, which returns the full pathname
|
|
of
|
|
the current source file.
|
|
|
|
AcpiHelp: Automatically display expanded keyword information for all ASL
|
|
operators.
|
|
|
|
Debugger: Add "Template" command to disassemble/dump resource template
|
|
buffers.
|
|
|
|
Added a new master script to generate and execute the ASLTS test suite.
|
|
Automatically handles 32- and 64-bit generation. See tests/aslts.sh
|
|
|
|
iASL: Fix problem with listing generation during processing of the
|
|
Switch()
|
|
operator where AML listing was disabled until the entire Switch block was
|
|
completed.
|
|
|
|
iASL: Improve support for semicolon statement terminators. Fix "invalid
|
|
character" message for some cases when the semicolon is used. Semicolons
|
|
are
|
|
now allowed after every <Term> grammar element. ACPICA BZ 927.
|
|
|
|
iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
|
|
923.
|
|
|
|
Disassembler: Fix problem with disassembly of the DataTableRegion
|
|
operator
|
|
where an inadvertent "Unhandled deferred opcode" message could be
|
|
generated.
|
|
|
|
3) Example Code and Data Size
|
|
|
|
These are the sizes for the OS-independent acpica.lib produced by the
|
|
Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
|
|
includes the debug output trace mechanism and has a much larger code and
|
|
data
|
|
size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
|
|
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
|
|
Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
|
|
|
|
----------------------------------------
|
|
22 September 2011. Summary of changes for version 20110922:
|
|
|
|
0) ACPI 5.0 News:
|
|
|
|
Support for ACPI 5.0 in ACPICA has been underway for several months and
|
|
will
|
|
be released at the same time that ACPI 5.0 is officially released.
|
|
|
|
The ACPI 5.0 specification is on track for release in the next few
|
|
months.
|
|
|
|
1) ACPICA Core Subsystem:
|
|
|
|
Fixed a problem where the maximum sleep time for the Sleep() operator was
|
|
intended to be limited to two seconds, but was inadvertently limited to
|
|
20
|
|
seconds instead.
|
|
|
|
Linux and Unix makefiles: Added header file dependencies to ensure
|
|
correct
|
|
generation of ACPICA core code and utilities. Also simplified the
|
|
makefiles
|
|
considerably through the use of the vpath variable to specify search
|
|
paths.
|
|
ACPICA BZ 924.
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented support to check the access length for all fields
|
|
created to
|
|
access named Resource Descriptor fields. For example, if a resource field
|
|
is
|
|
defined to be two bits, a warning is issued if a CreateXxxxField() is
|
|
used
|
|
with an incorrect bit length. This is implemented for all current
|
|
resource
|
|
descriptor names. ACPICA BZ 930.
|
|
|
|
Disassembler: Fixed a byte ordering problem with the output of 24-bit and
|
|
56-
|
|
bit integers.
|
|
|
|
iASL: Fixed a couple of issues associated with variable-length package
|
|
objects. 1) properly handle constants like One, Ones, Zero -- do not make
|
|
a
|
|
VAR_PACKAGE when these are used as a package length. 2) Allow the
|
|
VAR_PACKAGE
|
|
opcode (in addition to PACKAGE) when validating object types for
|
|
predefined
|
|
names.
|
|
|
|
iASL: Emit statistics for all output files (instead of just the ASL input
|
|
and
|
|
AML output). Includes listings, hex files, etc.
|
|
|
|
iASL: Added -G option to the table compiler to allow the compilation of
|
|
custom
|
|
ACPI tables. The only part of a table that is required is the standard
|
|
36-
|
|
byte
|
|
ACPI header.
|
|
|
|
AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
|
|
headers),
|
|
which also adds correct 64-bit support. Also, now all output filenames
|
|
are
|
|
completely lower case.
|
|
|
|
AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
|
|
loading table files. A warning is issued for any such tables. The only
|
|
exception is an FADT. This also fixes a possible fault when attempting to
|
|
load
|
|
non-AML tables. ACPICA BZ 932.
|
|
|
|
AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
|
|
a
|
|
missing table terminator could cause a fault when using the -p option.
|
|
|
|
AcpiSrc: Fixed a possible divide-by-zero fault when generating file
|
|
statistics.
|
|
|
|
3) Example Code and Data Size
|
|
|
|
These are the sizes for the OS-independent acpica.lib produced by the
|
|
Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
|
|
includes the debug output trace mechanism and has a much larger code and
|
|
data
|
|
size.
|
|
|
|
Previous Release (VC 9.0):
|
|
Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
|
|
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
|
|
Current Release (VC 9.0):
|
|
Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
|
|
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
|
|
|
|
|
|
----------------------------------------
|
|
23 June 2011. Summary of changes for version 20110623:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Updated the predefined name repair mechanism to not attempt repair of a
|
|
_TSS
|
|
return object if a _PSS object is present. We can only sort the _TSS
|
|
return
|
|
package if there is no _PSS within the same scope. This is because if
|
|
_PSS
|
|
is
|
|
present, the ACPI specification dictates that the _TSS Power Dissipation
|
|
field
|
|
is to be ignored, and therefore some BIOSs leave garbage values in the
|
|
_TSS
|
|
Power field(s). In this case, it is best to just return the _TSS package
|
|
as-
|
|
is. Reported by, and fixed with assistance from Fenghua Yu.
|
|
|
|
Added an option to globally disable the control method return value
|
|
validation
|
|
and repair. This runtime option can be used to disable return value
|
|
repair
|
|
if
|
|
this is causing a problem on a particular machine. Also added an option
|
|
to
|
|
AcpiExec (-dr) to set this disable flag.
|
|
|
|
All makefiles and project files: Major changes to improve generation of
|
|
ACPICA
|
|
tools. ACPICA BZ 912:
|
|
Reduce default optimization levels to improve compatibility
|
|
For Linux, add strict-aliasing=0 for gcc 4
|
|
Cleanup and simplify use of command line defines
|
|
Cleanup multithread library support
|
|
Improve usage messages
|
|
|
|
Linux-specific header: update handling of THREAD_ID and pthread. For the
|
|
32-
|
|
bit case, improve casting to eliminate possible warnings, especially with
|
|
the
|
|
acpica tools.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release (VC 9.0):
|
|
Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
|
|
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
|
|
Current Release (VC 9.0):
|
|
Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
|
|
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
With this release, a new utility named "acpihelp" has been added to the
|
|
ACPICA
|
|
package. This utility summarizes the ACPI specification chapters for the
|
|
ASL
|
|
and AML languages. It generates under Linux/Unix as well as Windows, and
|
|
provides the following functionality:
|
|
Find/display ASL operator(s) -- with description and syntax.
|
|
Find/display ASL keyword(s) -- with exact spelling and descriptions.
|
|
Find/display ACPI predefined name(s) -- with description, number
|
|
of arguments, and the return value data type.
|
|
Find/display AML opcode name(s) -- with opcode, arguments, and
|
|
grammar.
|
|
Decode/display AML opcode -- with opcode name, arguments, and
|
|
grammar.
|
|
|
|
Service Layers: Make multi-thread support configurable. Conditionally
|
|
compile
|
|
the multi-thread support so that threading libraries will not be linked
|
|
if
|
|
not
|
|
necessary. The only tool that requires multi-thread support is AcpiExec.
|
|
|
|
iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
|
|
of
|
|
Bison appear to want the interface to yyerror to be a const char * (or at
|
|
least this is a problem when generating iASL on some systems.) ACPICA BZ
|
|
923
|
|
Pierre Lejeune.
|
|
|
|
Tools: Fix for systems where O_BINARY is not defined. Only used for
|
|
Windows
|
|
versions of the tools.
|
|
|
|
----------------------------------------
|
|
27 May 2011. Summary of changes for version 20110527:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
ASL Load() operator: Reinstate most restrictions on the incoming ACPI
|
|
table
|
|
signature. Now, only allow SSDT, OEMx, and a null signature. History:
|
|
1) Originally, we checked the table signature for "SSDT" or "PSDT".
|
|
(PSDT is now obsolete.)
|
|
2) We added support for OEMx tables, signature "OEM" plus a fourth
|
|
"don't care" character.
|
|
3) Valid tables were encountered with a null signature, so we just
|
|
gave up on validating the signature, (05/2008).
|
|
4) We encountered non-AML tables such as the MADT, which caused
|
|
interpreter errors and kernel faults. So now, we once again allow
|
|
only SSDT, OEMx, and now, also a null signature. (05/2011).
|
|
|
|
Added the missing _TDL predefined name to the global name list in order
|
|
to
|
|
enable validation. Affects both the core ACPICA code and the iASL
|
|
compiler.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug
|
|
version of the code includes the debug output trace mechanism and has a
|
|
much
|
|
larger code and data size.
|
|
|
|
Previous Release (VC 9.0):
|
|
Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
|
|
Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
|
|
Current Release (VC 9.0):
|
|
Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
|
|
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Debugger/AcpiExec: Implemented support for "complex" method arguments on
|
|
the
|
|
debugger command line. This adds support beyond simple integers --
|
|
including
|
|
Strings, Buffers, and Packages. Includes support for nested packages.
|
|
Increased the default command line buffer size to accommodate these
|
|
arguments.
|
|
See the ACPICA reference for details and syntax. ACPICA BZ 917.
|
|
|
|
Debugger/AcpiExec: Implemented support for "default" method arguments for
|
|
the
|
|
Execute/Debug command. Now, the debugger will always invoke a control
|
|
method
|
|
with the required number of arguments -- even if the command line
|
|
specifies
|
|
none or insufficient arguments. It uses default integer values for any
|
|
missing
|
|
arguments. Also fixes a bug where only six method arguments maximum were
|
|
supported instead of the required seven.
|
|
|
|
Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
|
|
and
|
|
also return status in order to prevent buffer overruns. See the ACPICA
|
|
reference for details and syntax. ACPICA BZ 921
|
|
|
|
iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
|
|
makefiles to simplify support for the two different but similar parser
|
|
generators, bison and yacc.
|
|
|
|
Updated the generic unix makefile for gcc 4. The default gcc version is
|
|
now
|
|
expected to be 4 or greater, since options specific to gcc 4 are used.
|
|
|
|
----------------------------------------
|
|
13 April 2011. Summary of changes for version 20110413:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support to execute a so-called "orphan" _REG method under the
|
|
EC
|
|
device. This change will force the execution of a _REG method underneath
|
|
the
|
|
EC
|
|
device even if there is no corresponding operation region of type
|
|
EmbeddedControl. Fixes a problem seen on some machines and apparently is
|
|
compatible with Windows behavior. ACPICA BZ 875.
|
|
|
|
Added more predefined methods that are eligible for automatic NULL
|
|
package
|
|
element removal. This change adds another group of predefined names to
|
|
the
|
|
list
|
|
of names that can be repaired by having NULL package elements dynamically
|
|
removed. This group are those methods that return a single variable-
|
|
length
|
|
package containing simple data types such as integers, buffers, strings.
|
|
This
|
|
includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
|
|
_PSL,
|
|
_Sx,
|
|
and _TZD. ACPICA BZ 914.
|
|
|
|
Split and segregated all internal global lock functions to a new file,
|
|
evglock.c.
|
|
|
|
Updated internal address SpaceID for DataTable regions. Moved this
|
|
internal
|
|
space
|
|
id in preparation for ACPI 5.0 changes that will include some new space
|
|
IDs.
|
|
This
|
|
change should not affect user/host code.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib
|
|
produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
|
|
version of
|
|
the code includes the debug output trace mechanism and has a much larger
|
|
code
|
|
and
|
|
data size.
|
|
|
|
Previous Release (VC 9.0):
|
|
Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
|
|
Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
|
|
Current Release (VC 9.0):
|
|
Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
|
|
Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/DTC: Major update for new grammar features. Allow generic data types
|
|
in
|
|
custom ACPI tables. Field names are now optional. Any line can be split
|
|
to
|
|
multiple lines using the continuation char (\). Large buffers now use
|
|
line-
|
|
continuation character(s) and no colon on the continuation lines. See the
|
|
grammar
|
|
update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
|
|
Moore.
|
|
|
|
iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
|
|
statements.
|
|
Since the parser stuffs a "zero" as the return value for these statements
|
|
(due
|
|
to
|
|
the underlying AML grammar), they were seen as "return with value" by the
|
|
iASL
|
|
semantic checking. They are now seen correctly as "null" return
|
|
statements.
|
|
|
|
iASL: Check if a_REG declaration has a corresponding Operation Region.
|
|
Adds a
|
|
check for each _REG to ensure that there is in fact a corresponding
|
|
operation
|
|
region declaration in the same scope. If not, the _REG method is not very
|
|
useful
|
|
since it probably won't be executed. ACPICA BZ 915.
|
|
|
|
iASL/DTC: Finish support for expression evaluation. Added a new
|
|
expression
|
|
parser
|
|
that implements c-style operator precedence and parenthesization. ACPICA
|
|
bugzilla
|
|
908.
|
|
|
|
Disassembler/DTC: Remove support for () and <> style comments in data
|
|
tables.
|
|
Now
|
|
that DTC has full expression support, we don't want to have comment
|
|
strings
|
|
that
|
|
start with a parentheses or a less-than symbol. Now, only the standard /*
|
|
and
|
|
//
|
|
comments are supported, as well as the bracket [] comments.
|
|
|
|
AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
|
|
"unusual"
|
|
headers in the acpidump file. Update the header validation to support
|
|
these
|
|
tables. Problem introduced in previous AcpiXtract version in the change
|
|
to
|
|
support "wrong checksum" error messages emitted by acpidump utility.
|
|
|
|
iASL: Add a * option to generate all template files (as a synonym for
|
|
ALL)
|
|
as
|
|
in
|
|
"iasl -T *" or "iasl -T ALL".
|
|
|
|
iASL/DTC: Do not abort compiler on fatal errors. We do not want to
|
|
completely
|
|
abort the compiler on "fatal" errors, simply should abort the current
|
|
compile.
|
|
This allows multiple compiles with a single (possibly wildcard) compiler
|
|
invocation.
|
|
|
|
----------------------------------------
|
|
16 March 2011. Summary of changes for version 20110316:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem caused by a _PRW method appearing at the namespace root
|
|
scope
|
|
during the setup of wake GPEs. A fault could occur if a _PRW directly
|
|
under
|
|
the
|
|
root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
|
|
|
|
Implemented support for "spurious" Global Lock interrupts. On some
|
|
systems, a
|
|
global lock interrupt can occur without the pending flag being set. Upon
|
|
a
|
|
GL
|
|
interrupt, we now ensure that a thread is actually waiting for the lock
|
|
before
|
|
signaling GL availability. Rafael Wysocki, Bob Moore.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib
|
|
produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
|
|
version of
|
|
the code includes the debug output trace mechanism and has a much larger
|
|
code
|
|
and
|
|
data size.
|
|
|
|
Previous Release (VC 9.0):
|
|
Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
|
|
Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
|
|
Current Release (VC 9.0):
|
|
Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
|
|
Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Implemented full support for the "SLIC" ACPI table. Includes support in
|
|
the
|
|
header files, disassembler, table compiler, and template generator. Bob
|
|
Moore,
|
|
Lin Ming.
|
|
|
|
AcpiXtract: Correctly handle embedded comments and messages from
|
|
AcpiDump.
|
|
Apparently some or all versions of acpidump will occasionally emit a
|
|
comment
|
|
like
|
|
"Wrong checksum", etc., into the dump file. This was causing problems for
|
|
AcpiXtract. ACPICA BZ 905.
|
|
|
|
iASL: Fix the Linux makefile by removing an inadvertent double file
|
|
inclusion.
|
|
ACPICA BZ 913.
|
|
|
|
AcpiExec: Update installation of operation region handlers. Install one
|
|
handler
|
|
for a user-defined address space. This is used by the ASL test suite
|
|
(ASLTS).
|
|
|
|
----------------------------------------
|
|
11 February 2011. Summary of changes for version 20110211:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added a mechanism to defer _REG methods for some early-installed
|
|
handlers.
|
|
Most user handlers should be installed before call to
|
|
AcpiEnableSubsystem.
|
|
However, Event handlers and region handlers should be installed after
|
|
AcpiInitializeObjects. Override handlers for the "default" regions should
|
|
be
|
|
installed early, however. This change executes all _REG methods for the
|
|
default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
|
|
chicken/egg issues between them. ACPICA BZ 848.
|
|
|
|
Implemented an optimization for GPE detection. This optimization will
|
|
simply
|
|
ignore GPE registers that contain no enabled GPEs -- there is no need to
|
|
read the register since this information is available internally. This
|
|
becomes more important on machines with a large GPE space. ACPICA
|
|
bugzilla
|
|
884. Lin Ming. Suggestion from Joe Liu.
|
|
|
|
Removed all use of the highly unreliable FADT revision field. The
|
|
revision
|
|
number in the FADT has been found to be completely unreliable and cannot
|
|
be
|
|
trusted. Only the actual table length can be used to infer the version.
|
|
This
|
|
change updates the ACPICA core and the disassembler so that both no
|
|
longer
|
|
even look at the FADT version and instead depend solely upon the FADT
|
|
length.
|
|
|
|
Fix an unresolved name issue for the no-debug and no-error-message source
|
|
generation cases. The _AcpiModuleName was left undefined in these cases,
|
|
but
|
|
it is actually needed as a parameter to some interfaces. Define
|
|
_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
|
|
|
|
Split several large files (makefiles and project files updated)
|
|
utglobal.c -> utdecode.c
|
|
dbcomds.c -> dbmethod.c dbnames.c
|
|
dsopcode.c -> dsargs.c dscontrol.c
|
|
dsload.c -> dsload2.c
|
|
aslanalyze.c -> aslbtypes.c aslwalks.c
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release (VC 9.0):
|
|
Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
|
|
Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
|
|
Current Release (VC 9.0):
|
|
Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
|
|
Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
|
|
These are useful C-style macros with the standard definitions. ACPICA
|
|
bugzilla 898.
|
|
|
|
iASL/DTC: Added support for integer expressions and labels. Support for
|
|
full
|
|
expressions for all integer fields in all ACPI tables. Support for labels
|
|
in
|
|
"generic" portions of tables such as UEFI. See the iASL reference manual.
|
|
|
|
Debugger: Added a command to display the status of global handlers. The
|
|
"handlers" command will display op region, fixed event, and miscellaneous
|
|
global handlers. installation status -- and for op regions, whether
|
|
default
|
|
or user-installed handler will be used.
|
|
|
|
iASL: Warn if reserved method incorrectly returns a value. Many
|
|
predefined
|
|
names are defined such that they do not return a value. If implemented as
|
|
a
|
|
method, issue a warning if such a name explicitly returns a value. ACPICA
|
|
Bugzilla 855.
|
|
|
|
iASL: Added detection of GPE method name conflicts. Detects a conflict
|
|
where
|
|
there are two GPE methods of the form _Lxy and _Exy in the same scope.
|
|
(For
|
|
example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
|
|
|
|
iASL/DTC: Fixed a couple input scanner issues with comments and line
|
|
numbers. Comment remover could get confused and miss a comment ending.
|
|
Fixed
|
|
a problem with line counter maintenance.
|
|
|
|
iASL/DTC: Reduced the severity of some errors from fatal to error. There
|
|
is
|
|
no need to abort on simple errors within a field definition.
|
|
|
|
Debugger: Simplified the output of the help command. All help output now
|
|
in
|
|
a single screen, instead of help subcommands. ACPICA Bugzilla 897.
|
|
|
|
----------------------------------------
|
|
12 January 2011. Summary of changes for version 20110112:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a race condition between method execution and namespace walks that
|
|
can
|
|
possibly cause a fault. The problem was apparently introduced in version
|
|
20100528 as a result of a performance optimization that reduces the
|
|
number
|
|
of
|
|
namespace walks upon method exit by using the delete_namespace_subtree
|
|
function instead of the delete_namespace_by_owner function used
|
|
previously.
|
|
Bug is a missing namespace lock in the delete_namespace_subtree function.
|
|
dana.myers@oracle.com
|
|
|
|
Fixed several issues and a possible fault with the automatic "serialized"
|
|
method support. History: This support changes a method to "serialized" on
|
|
the
|
|
fly if the method generates an AE_ALREADY_EXISTS error, indicating the
|
|
possibility that it cannot handle reentrancy. This fix repairs a couple
|
|
of
|
|
issues seen in the field, especially on machines with many cores:
|
|
|
|
1) Delete method children only upon the exit of the last thread,
|
|
so as to not delete objects out from under other running threads
|
|
(and possibly causing a fault.)
|
|
2) Set the "serialized" bit for the method only upon the exit of the
|
|
Last thread, so as to not cause deadlock when running threads
|
|
attempt to exit.
|
|
3) Cleanup the use of the AML "MethodFlags" and internal method flags
|
|
so that there is no longer any confusion between the two.
|
|
|
|
Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
|
|
|
|
Debugger: Now lock the namespace for duration of a namespace dump.
|
|
Prevents
|
|
issues if the namespace is changing dynamically underneath the debugger.
|
|
Especially affects temporary namespace nodes, since the debugger displays
|
|
these also.
|
|
|
|
Updated the ordering of include files. The ACPICA headers should appear
|
|
before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
|
|
set
|
|
any necessary compiler-specific defines, etc. Affects the ACPI-related
|
|
tools
|
|
and utilities.
|
|
|
|
Updated all ACPICA copyrights and signons to 2011. Added the 2011
|
|
copyright
|
|
to all module headers and signons, including the Linux header. This
|
|
affects
|
|
virtually every file in the ACPICA core subsystem, iASL compiler, and all
|
|
utilities.
|
|
|
|
Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
|
|
project files for VC++ 6.0 are now obsolete. New project files can be
|
|
found
|
|
under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
|
|
details.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release (VC 6.0):
|
|
Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
|
|
Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
|
|
Current Release (VC 9.0):
|
|
Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
|
|
Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Added generic data types to the Data Table compiler. Add "generic"
|
|
data
|
|
types such as UINT32, String, Unicode, etc., to simplify the generation
|
|
of
|
|
platform-defined tables such as UEFI. Lin Ming.
|
|
|
|
iASL: Added listing support for the Data Table Compiler. Adds listing
|
|
support
|
|
(-l) to display actual binary output for each line of input code.
|
|
|
|
----------------------------------------
|
|
09 December 2010. Summary of changes for version 20101209:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Completed the major overhaul of the GPE support code that was begun in
|
|
July
|
|
2010. Major features include: removal of _PRW execution in ACPICA (host
|
|
executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
|
|
changes to existing interfaces, simplification of GPE handler operation,
|
|
and
|
|
a handful of new interfaces:
|
|
|
|
AcpiUpdateAllGpes
|
|
AcpiFinishGpe
|
|
AcpiSetupGpeForWake
|
|
AcpiSetGpeWakeMask
|
|
One new file, evxfgpe.c to consolidate all external GPE interfaces.
|
|
|
|
See the ACPICA Programmer Reference for full details and programming
|
|
information. See the new section 4.4 "General Purpose Event (GPE)
|
|
Support"
|
|
for a full overview, and section 8.7 "ACPI General Purpose Event
|
|
Management"
|
|
for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
|
|
Ming,
|
|
Bob Moore, Rafael Wysocki.
|
|
|
|
Implemented a new GPE feature for Windows compatibility, the "Implicit
|
|
Wake
|
|
GPE Notify". This feature will automatically issue a Notify(2) on a
|
|
device
|
|
when a Wake GPE is received if there is no corresponding GPE method or
|
|
handler. ACPICA BZ 870.
|
|
|
|
Fixed a problem with the Scope() operator during table parse and load
|
|
phase.
|
|
During load phase (table load or method execution), the scope operator
|
|
should
|
|
not enter the target into the namespace. Instead, it should open a new
|
|
scope
|
|
at the target location. Linux BZ 19462, ACPICA BZ 882.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
|
|
Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
|
|
Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Relax the alphanumeric restriction on _CID strings. These strings
|
|
are
|
|
"bus-specific" per the ACPI specification, and therefore any characters
|
|
are
|
|
acceptable. The only checks that can be performed are for a null string
|
|
and
|
|
perhaps for a leading asterisk. ACPICA BZ 886.
|
|
|
|
iASL: Fixed a problem where a syntax error that caused a premature EOF
|
|
condition on the source file emitted a very confusing error message. The
|
|
premature EOF is now detected correctly. ACPICA BZ 891.
|
|
|
|
Disassembler: Decode the AccessSize within a Generic Address Structure
|
|
(byte
|
|
access, word access, etc.) Note, this field does not allow arbitrary bit
|
|
access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
|
|
|
|
New: AcpiNames utility - Example namespace dump utility. Shows an example
|
|
of
|
|
ACPICA configuration for a minimal namespace dump utility. Uses table and
|
|
namespace managers, but no AML interpreter. Does not add any
|
|
functionality
|
|
over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
|
|
partition and configure ACPICA. ACPICA BZ 883.
|
|
|
|
AML Debugger: Increased the debugger buffer size for method return
|
|
objects.
|
|
Was 4K, increased to 16K. Also enhanced error messages for debugger
|
|
method
|
|
execution, including the buffer overflow case.
|
|
|
|
----------------------------------------
|
|
13 October 2010. Summary of changes for version 20101013:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
|
|
now
|
|
clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
|
|
HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
|
|
|
|
Changed the type of the predefined namespace object _TZ from ThermalZone
|
|
to
|
|
Device. This was found to be confusing to the host software that
|
|
processes
|
|
the various thermal zones, since _TZ is not really a ThermalZone.
|
|
However,
|
|
a
|
|
Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
|
|
Zhang.
|
|
|
|
Added Windows Vista SP2 to the list of supported _OSI strings. The actual
|
|
string is "Windows 2006 SP2".
|
|
|
|
Eliminated duplicate code in AcpiUtExecute* functions. Now that the
|
|
nsrepair
|
|
code automatically repairs _HID-related strings, this type of code is no
|
|
longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
|
|
878.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
|
|
Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
|
|
Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented additional compile-time validation for _HID strings.
|
|
The
|
|
non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
|
|
length
|
|
of
|
|
the string must be exactly seven or eight characters. For both _HID and
|
|
_CID
|
|
strings, all characters must be alphanumeric. ACPICA BZ 874.
|
|
|
|
iASL: Allow certain "null" resource descriptors. Some BIOS code creates
|
|
descriptors that are mostly or all zeros, with the expectation that they
|
|
will
|
|
be filled in at runtime. iASL now allows this as long as there is a
|
|
"resource
|
|
tag" (name) associated with the descriptor, which gives the ASL a handle
|
|
needed to modify the descriptor. ACPICA BZ 873.
|
|
|
|
Added single-thread support to the generic Unix application OSL.
|
|
Primarily
|
|
for iASL support, this change removes the use of semaphores in the
|
|
single-
|
|
threaded ACPICA tools/applications - increasing performance. The
|
|
_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
|
|
option. ACPICA BZ 879.
|
|
|
|
AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
|
|
support
|
|
for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
|
|
|
|
iASL: Moved all compiler messages to a new file, aslmessages.h.
|
|
|
|
----------------------------------------
|
|
15 September 2010. Summary of changes for version 20100915:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Removed the AcpiOsDerivePciId OSL interface. The various host
|
|
implementations
|
|
of this function were not OS-dependent and are now obsolete and can be
|
|
removed from all host OSLs. This function has been replaced by
|
|
AcpiHwDerivePciId, which is now part of the ACPICA core code.
|
|
AcpiHwDerivePciId has been implemented without recursion. Adds one new
|
|
module, hwpci.c. ACPICA BZ 857.
|
|
|
|
Implemented a dynamic repair for _HID and _CID strings. The following
|
|
problems are now repaired at runtime: 1) Remove a leading asterisk in the
|
|
string, and 2) the entire string is uppercased. Both repairs are in
|
|
accordance with the ACPI specification and will simplify host driver
|
|
code.
|
|
ACPICA BZ 871.
|
|
|
|
The ACPI_THREAD_ID type is no longer configurable, internally it is now
|
|
always UINT64. This simplifies the ACPICA code, especially any printf
|
|
output.
|
|
UINT64 is the only common data type for all thread_id types across all
|
|
operating systems. It is now up to the host OSL to cast the native
|
|
thread_id
|
|
type to UINT64 before returning the value to ACPICA (via
|
|
AcpiOsGetThreadId).
|
|
Lin Ming, Bob Moore.
|
|
|
|
Added the ACPI_INLINE type to enhance the ACPICA configuration. The
|
|
"inline"
|
|
keyword is not standard across compilers, and this type allows inline to
|
|
be
|
|
configured on a per-compiler basis. Lin Ming.
|
|
|
|
Made the system global AcpiGbl_SystemAwakeAndRunning publicly
|
|
available.
|
|
Added an extern for this boolean in acpixf.h. Some hosts utilize this
|
|
value
|
|
during suspend/restore operations. ACPICA BZ 869.
|
|
|
|
All code that implements error/warning messages with the "ACPI:" prefix
|
|
has
|
|
been moved to a new module, utxferror.c.
|
|
|
|
The UINT64_OVERLAY was moved to utmath.c, which is the only module where
|
|
it
|
|
is used. ACPICA BZ 829. Lin Ming, Bob Moore.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
|
|
Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
|
|
Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/Disassembler: Write ACPI errors to stderr instead of the output
|
|
file.
|
|
This keeps the output files free of random error messages that may
|
|
originate
|
|
from within the namespace/interpreter code. Used this opportunity to
|
|
merge
|
|
all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
|
|
866. Lin Ming, Bob Moore.
|
|
|
|
Tools: update some printfs for ansi warnings on size_t. Handle width
|
|
change
|
|
of size_t on 32-bit versus 64-bit generations. Lin Ming.
|
|
|
|
----------------------------------------
|
|
06 August 2010. Summary of changes for version 20100806:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Designed and implemented a new host interface to the _OSI support code.
|
|
This
|
|
will allow the host to dynamically add or remove multiple _OSI strings,
|
|
as
|
|
well as install an optional handler that is called for each _OSI
|
|
invocation.
|
|
Also added a new AML debugger command, 'osi' to display and modify the
|
|
global
|
|
_OSI string table, and test support in the AcpiExec utility. See the
|
|
ACPICA
|
|
reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
|
|
New Functions:
|
|
AcpiInstallInterface - Add an _OSI string.
|
|
AcpiRemoveInterface - Delete an _OSI string.
|
|
AcpiInstallInterfaceHandler - Install optional _OSI handler.
|
|
Obsolete Functions:
|
|
AcpiOsValidateInterface - no longer used.
|
|
New Files:
|
|
source/components/utilities/utosi.c
|
|
|
|
Re-introduced the support to enable multi-byte transfers for Embedded
|
|
Controller (EC) operation regions. A reported problem was found to be a
|
|
bug
|
|
in the host OS, not in the multi-byte support. Previously, the maximum
|
|
data
|
|
size passed to the EC operation region handler was a single byte. There
|
|
are
|
|
often EC Fields larger than one byte that need to be transferred, and it
|
|
is
|
|
useful for the EC driver to lock these as a single transaction. This
|
|
change
|
|
enables single transfers larger than 8 bits. This effectively changes the
|
|
access to the EC space from ByteAcc to AnyAcc, and will probably require
|
|
changes to the host OS Embedded Controller driver to enable 16/32/64/256-
|
|
bit
|
|
transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
|
|
|
|
Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
|
|
prototype in acpiosxf.h had the output value pointer as a (void *).
|
|
It should be a (UINT64 *). This may affect some host OSL code.
|
|
|
|
Fixed a couple problems with the recently modified Linux makefiles for
|
|
iASL
|
|
and AcpiExec. These new makefiles place the generated object files in the
|
|
local directory so that there can be no collisions between the files that
|
|
are
|
|
shared between them that are compiled with different options.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
|
|
Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
|
|
Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL/Disassembler: Added a new option (-da, "disassemble all") to load
|
|
the
|
|
namespace from and disassemble an entire group of AML files. Useful for
|
|
loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
|
|
and
|
|
disassembling with one simple command. ACPICA BZ 865. Lin Ming.
|
|
|
|
iASL: Allow multiple invocations of -e option. This change allows
|
|
multiple
|
|
uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
|
|
834.
|
|
Lin Ming.
|
|
|
|
----------------------------------------
|
|
02 July 2010. Summary of changes for version 20100702:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented several updates to the recently added GPE reference count
|
|
support. The model for "wake" GPEs is changing to give the host OS
|
|
complete
|
|
control of these GPEs. Eventually, the ACPICA core will not execute any
|
|
_PRW
|
|
methods, since the host already must execute them. Also, additional
|
|
changes
|
|
were made to help ensure that the reference counts are kept in proper
|
|
synchronization with reality. Rafael J. Wysocki.
|
|
|
|
1) Ensure that GPEs are not enabled twice during initialization.
|
|
2) Ensure that GPE enable masks stay in sync with the reference count.
|
|
3) Do not inadvertently enable GPEs when writing GPE registers.
|
|
4) Remove the internal wake reference counter and add new AcpiGpeWakeup
|
|
interface. This interface will set or clear individual GPEs for wakeup.
|
|
5) Remove GpeType argument from AcpiEnable and AcpiDisable. These
|
|
interfaces
|
|
are now used for "runtime" GPEs only.
|
|
|
|
Changed the behavior of the GPE install/remove handler interfaces. The
|
|
GPE
|
|
is
|
|
no longer disabled during this process, as it was found to cause problems
|
|
on
|
|
some machines. Rafael J. Wysocki.
|
|
|
|
Reverted a change introduced in version 20100528 to enable Embedded
|
|
Controller multi-byte transfers. This change was found to cause problems
|
|
with
|
|
Index Fields and possibly Bank Fields. It will be reintroduced when these
|
|
problems have been resolved.
|
|
|
|
Fixed a problem with references to Alias objects within Package Objects.
|
|
A
|
|
reference to an Alias within the definition of a Package was not always
|
|
resolved properly. Aliases to objects like Processors, Thermal zones,
|
|
etc.
|
|
were resolved to the actual object instead of a reference to the object
|
|
as
|
|
it
|
|
should be. Package objects are only allowed to contain integer, string,
|
|
buffer, package, and reference objects. Redhat bugzilla 608648.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
|
|
Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
|
|
Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented a new compiler subsystem to allow definition and
|
|
compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
|
|
These
|
|
are called "ACPI Data Tables", and the new compiler is the "Data Table
|
|
Compiler". This compiler is intended to simplify the existing error-prone
|
|
process of creating these tables for the BIOS, as well as allowing the
|
|
disassembly, modification, recompilation, and override of existing ACPI
|
|
data
|
|
tables. See the iASL User Guide for detailed information.
|
|
|
|
iASL: Implemented a new Template Generator option in support of the new
|
|
Data
|
|
Table Compiler. This option will create examples of all known ACPI tables
|
|
that can be used as the basis for table development. See the iASL
|
|
documentation and the -T option.
|
|
|
|
Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
|
|
Descriptor Table).
|
|
|
|
Updated the Linux makefiles for iASL and AcpiExec to place the generated
|
|
object files in the local directory so that there can be no collisions
|
|
between the shared files between them that are generated with different
|
|
options.
|
|
|
|
Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
|
|
Use
|
|
the #define __APPLE__ to enable this support.
|
|
|
|
----------------------------------------
|
|
28 May 2010. Summary of changes for version 20100528:
|
|
|
|
Note: The ACPI 4.0a specification was released on April 5, 2010 and is
|
|
available at www.acpi.info. This is primarily an errata release.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Undefined ACPI tables: We are looking for the definitions for the
|
|
following
|
|
ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
|
|
|
|
Implemented support to enable multi-byte transfers for Embedded
|
|
Controller
|
|
(EC) operation regions. Previously, the maximum data size passed to the
|
|
EC
|
|
operation region handler was a single byte. There are often EC Fields
|
|
larger
|
|
than one byte that need to be transferred, and it is useful for the EC
|
|
driver
|
|
to lock these as a single transaction. This change enables single
|
|
transfers
|
|
larger than 8 bits. This effectively changes the access to the EC space
|
|
from
|
|
ByteAcc to AnyAcc, and will probably require changes to the host OS
|
|
Embedded
|
|
Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
|
|
bit
|
|
transfers. Alexey Starikovskiy, Lin Ming
|
|
|
|
Implemented a performance enhancement for namespace search and access.
|
|
This
|
|
change enhances the performance of namespace searches and walks by adding
|
|
a
|
|
backpointer to the parent in each namespace node. On large namespaces,
|
|
this
|
|
change can improve overall ACPI performance by up to 9X. Adding a pointer
|
|
to
|
|
each namespace node increases the overall size of the internal namespace
|
|
by
|
|
about 5%, since each namespace entry usually consists of both a namespace
|
|
node and an ACPI operand object. However, this is the first growth of the
|
|
namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
|
|
|
|
Implemented a performance optimization that reduces the number of
|
|
namespace
|
|
walks. On control method exit, only walk the namespace if the method is
|
|
known
|
|
to have created namespace objects outside of its local scope. Previously,
|
|
the
|
|
entire namespace was traversed on each control method exit. This change
|
|
can
|
|
improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
|
|
Moore.
|
|
|
|
Added support to truncate I/O addresses to 16 bits for Windows
|
|
compatibility.
|
|
Some ASL code has been seen in the field that inadvertently has bits set
|
|
above bit 15. This feature is optional and is enabled if the BIOS
|
|
requests
|
|
any Windows OSI strings. It can also be enabled by the host OS. Matthew
|
|
Garrett, Bob Moore.
|
|
|
|
Added support to limit the maximum time for the ASL Sleep() operator. To
|
|
prevent accidental deep sleeps, limit the maximum time that Sleep() will
|
|
actually sleep. Configurable, the default maximum is two seconds. ACPICA
|
|
bugzilla 854.
|
|
|
|
Added run-time validation support for the _WDG and_WED Microsoft
|
|
predefined
|
|
methods. These objects are defined by "Windows Instrumentation", and are
|
|
not
|
|
part of the ACPI spec. ACPICA BZ 860.
|
|
|
|
Expanded all statistic counters used during namespace and device
|
|
initialization from 16 to 32 bits in order to support very large
|
|
namespaces.
|
|
|
|
Replaced all instances of %d in printf format specifiers with %u since
|
|
nearly
|
|
all integers in ACPICA are unsigned.
|
|
|
|
Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
|
|
returned
|
|
as AE_NO_HANDLER.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
|
|
Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
|
|
Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Added compiler support for the _WDG and_WED Microsoft predefined
|
|
methods. These objects are defined by "Windows Instrumentation", and are
|
|
not
|
|
part of the ACPI spec. ACPICA BZ 860.
|
|
|
|
AcpiExec: added option to disable the memory tracking mechanism. The -dt
|
|
option will disable the tracking mechanism, which improves performance
|
|
considerably.
|
|
|
|
AcpiExec: Restructured the command line options into -d (disable) and -e
|
|
(enable) options.
|
|
|
|
----------------------------------------
|
|
28 April 2010. Summary of changes for version 20100428:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
|
|
including FADT-based and GPE Block Devices, execute any _PRW methods in
|
|
the
|
|
new table, and process any _Lxx/_Exx GPE methods in the new table. Any
|
|
runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
|
|
immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
|
|
Devices. Provides compatibility with other ACPI implementations. Two new
|
|
files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
|
|
Moore.
|
|
|
|
Fixed a regression introduced in version 20100331 within the table
|
|
manager
|
|
where initial table loading could fail. This was introduced in the fix
|
|
for
|
|
AcpiReallocateRootTable. Also, renamed some of fields in the table
|
|
manager
|
|
data structures to clarify their meaning and use.
|
|
|
|
Fixed a possible allocation overrun during internal object copy in
|
|
AcpiUtCopySimpleObject. The original code did not correctly handle the
|
|
case
|
|
where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
|
|
847.
|
|
|
|
Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
|
|
possible access beyond end-of-allocation. Also, now fully validate
|
|
descriptor
|
|
(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
|
|
Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
|
|
Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented Min/Max/Len/Gran validation for address resource
|
|
descriptors. This change implements validation for the address fields
|
|
that
|
|
are common to all address-type resource descriptors. These checks are
|
|
implemented: Checks for valid Min/Max, length within the Min/Max window,
|
|
valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
|
|
per
|
|
table 6-40 in the ACPI 4.0a specification. Also split the large
|
|
aslrestype1.c
|
|
and aslrestype2.c files into five new files. ACPICA BZ 840.
|
|
|
|
iASL: Added support for the _Wxx predefined names. This support was
|
|
missing
|
|
and these names were not recognized by the compiler as valid predefined
|
|
names. ACPICA BZ 851.
|
|
|
|
iASL: Added an error for all predefined names that are defined to return
|
|
no
|
|
value and thus must be implemented as Control Methods. These include all
|
|
of
|
|
the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
|
|
names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
|
|
|
|
iASL: Implemented the -ts option to emit hex AML data in ASL format, as
|
|
an
|
|
ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
|
|
be
|
|
dynamically loaded via the Load() operator. Also cleaned up output for
|
|
the
|
|
-
|
|
ta and -tc options. ACPICA BZ 853.
|
|
|
|
Tests: Added a new file with examples of extended iASL error checking.
|
|
Demonstrates the advanced error checking ability of the iASL compiler.
|
|
Available at tests/misc/badcode.asl.
|
|
|
|
----------------------------------------
|
|
31 March 2010. Summary of changes for version 20100331:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Completed a major update for the GPE support in order to improve support
|
|
for
|
|
shared GPEs and to simplify both host OS and ACPICA code. Added a
|
|
reference
|
|
count mechanism to support shared GPEs that require multiple device
|
|
drivers.
|
|
Several external interfaces have changed. One external interface has been
|
|
removed. One new external interface was added. Most of the GPE external
|
|
interfaces now use the GPE spinlock instead of the events mutex (and the
|
|
Flags parameter for many GPE interfaces has been removed.) See the
|
|
updated
|
|
ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
|
|
Rafael
|
|
Wysocki. ACPICA BZ 831.
|
|
|
|
Changed:
|
|
AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
|
|
Removed:
|
|
AcpiSetGpeType
|
|
New:
|
|
AcpiSetGpe
|
|
|
|
Implemented write support for DataTable operation regions. These regions
|
|
are
|
|
defined via the DataTableRegion() operator. Previously, only read support
|
|
was
|
|
implemented. The ACPI specification allows DataTableRegions to be
|
|
read/write,
|
|
however.
|
|
|
|
Implemented a new subsystem option to force a copy of the DSDT to local
|
|
memory. Optionally copy the entire DSDT to local memory (instead of
|
|
simply
|
|
mapping it.) There are some (albeit very rare) BIOSs that corrupt or
|
|
replace
|
|
the original DSDT, creating the need for this option. Default is FALSE,
|
|
do
|
|
not copy the DSDT.
|
|
|
|
Implemented detection of a corrupted or replaced DSDT. This change adds
|
|
support to detect a DSDT that has been corrupted and/or replaced from
|
|
outside
|
|
the OS (by firmware). This is typically catastrophic for the system, but
|
|
has
|
|
been seen on some machines. Once this problem has been detected, the DSDT
|
|
copy option can be enabled via system configuration. Lin Ming, Bob Moore.
|
|
|
|
Fixed two problems with AcpiReallocateRootTable during the root table
|
|
copy.
|
|
When copying the root table to the new allocation, the length used was
|
|
incorrect. The new size was used instead of the current table size,
|
|
meaning
|
|
too much data was copied. Also, the count of available slots for ACPI
|
|
tables
|
|
was not set correctly. Alexey Starikovskiy, Bob Moore.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
|
|
Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
|
|
Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implement limited typechecking for values returned from predefined
|
|
control methods. The type of any returned static (unnamed) object is now
|
|
validated. For example, Return(1). ACPICA BZ 786.
|
|
|
|
iASL: Fixed a predefined name object verification regression. Fixes a
|
|
problem
|
|
introduced in version 20100304. An error is incorrectly generated if a
|
|
predefined name is declared as a static named object with a value defined
|
|
using the keywords "Zero", "One", or "Ones". Lin Ming.
|
|
|
|
iASL: Added Windows 7 support for the -g option (get local ACPI tables)
|
|
by
|
|
reducing the requested registry access rights. ACPICA BZ 842.
|
|
|
|
Disassembler: fixed a possible fault when generating External()
|
|
statements.
|
|
Introduced in commit ae7d6fd: Properly handle externals with parent-
|
|
prefix
|
|
(carat). Fixes a string length allocation calculation. Lin Ming.
|
|
|
|
----------------------------------------
|
|
04 March 2010. Summary of changes for version 20100304:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a possible problem with the AML Mutex handling function
|
|
AcpiExReleaseMutex where the function could fault under the very rare
|
|
condition when the interpreter has blocked, the interpreter lock is
|
|
released,
|
|
the interpreter is then reentered via the same thread, and attempts to
|
|
acquire an AML mutex that was previously acquired. FreeBSD report 140979.
|
|
Lin
|
|
Ming.
|
|
|
|
Implemented additional configuration support for the AML "Debug Object".
|
|
Output from the debug object can now be enabled via a global variable,
|
|
AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
|
|
debugging.
|
|
This debug output is now available in the release version of ACPICA
|
|
instead
|
|
of just the debug version. Also, the entire debug output module can now
|
|
be
|
|
configured out of the ACPICA build if desired. One new file added,
|
|
executer/exdebug.c. Lin Ming, Bob Moore.
|
|
|
|
Added header support for the ACPI MCHI table (Management Controller Host
|
|
Interface Table). This table was added in ACPI 4.0, but the defining
|
|
document
|
|
has only recently become available.
|
|
|
|
Standardized output of integer values for ACPICA warnings/errors. Always
|
|
use
|
|
0x prefix for hex output, always use %u for unsigned integer decimal
|
|
output.
|
|
Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
|
|
400
|
|
invocations.) These invocations were converted from the original
|
|
ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
|
|
Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
|
|
Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented typechecking support for static (non-control method)
|
|
predefined named objects that are declared with the Name() operator. For
|
|
example, the type of this object is now validated to be of type Integer:
|
|
Name(_BBN, 1). This change migrates the compiler to using the core
|
|
predefined
|
|
name table instead of maintaining a local version. Added a new file,
|
|
aslpredef.c. ACPICA BZ 832.
|
|
|
|
Disassembler: Added support for the ACPI 4.0 MCHI table.
|
|
|
|
----------------------------------------
|
|
21 January 2010. Summary of changes for version 20100121:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added the 2010 copyright to all module headers and signons. This affects
|
|
virtually every file in the ACPICA core subsystem, the iASL compiler, the
|
|
tools/utilities, and the test suites.
|
|
|
|
Implemented a change to the AcpiGetDevices interface to eliminate
|
|
unnecessary
|
|
invocations of the _STA method. In the case where a specific _HID is
|
|
requested, do not run _STA until a _HID match is found. This eliminates
|
|
potentially dozens of _STA calls during a search for a particular
|
|
device/HID,
|
|
which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
|
|
|
|
Implemented an additional repair for predefined method return values.
|
|
Attempt
|
|
to repair unexpected NULL elements within returned Package objects.
|
|
Create
|
|
an
|
|
Integer of value zero, a NULL String, or a zero-length Buffer as
|
|
appropriate.
|
|
ACPICA BZ 818. Lin Ming, Bob Moore.
|
|
|
|
Removed the obsolete ACPI_INTEGER data type. This type was introduced as
|
|
the
|
|
code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
|
|
(with
|
|
64-bit AML integers). It is now obsolete and this change removes it from
|
|
the
|
|
ACPICA code base, replaced by UINT64. The original typedef has been
|
|
retained
|
|
for now for compatibility with existing device driver code. ACPICA BZ
|
|
824.
|
|
|
|
Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
|
|
in
|
|
the parse tree object.
|
|
|
|
Added additional warning options for the gcc-4 generation. Updated the
|
|
source
|
|
accordingly. This includes some code restructuring to eliminate
|
|
unreachable
|
|
code, elimination of some gotos, elimination of unused return values,
|
|
some
|
|
additional casting, and removal of redundant declarations.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
|
|
Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
|
|
Current Release:
|
|
Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
|
|
Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
No functional changes for this release.
|
|
|
|
----------------------------------------
|
|
14 December 2009. Summary of changes for version 20091214:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Enhanced automatic data type conversions for predefined name repairs.
|
|
This
|
|
change expands the automatic repairs/conversions for predefined name
|
|
return
|
|
values to make Integers, Strings, and Buffers fully interchangeable.
|
|
Also,
|
|
a
|
|
Buffer can be converted to a Package of Integers if necessary. The
|
|
nsrepair.c
|
|
module was completely restructured. Lin Ming, Bob Moore.
|
|
|
|
Implemented automatic removal of null package elements during predefined
|
|
name
|
|
repairs. This change will automatically remove embedded and trailing NULL
|
|
package elements from returned package objects that are defined to
|
|
contain
|
|
a
|
|
variable number of sub-packages. The driver is then presented with a
|
|
package
|
|
with no null elements to deal with. ACPICA BZ 819.
|
|
|
|
Implemented a repair for the predefined _FDE and _GTM names. The expected
|
|
return value for both names is a Buffer of 5 DWORDs. This repair fixes
|
|
two
|
|
possible problems (both seen in the field), where a package of integers
|
|
is
|
|
returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
|
|
Kim.
|
|
|
|
Implemented additional module-level code support. This change will
|
|
properly
|
|
execute module-level code that is not at the root of the namespace (under
|
|
a
|
|
Device object, etc.). Now executes the code within the current scope
|
|
instead
|
|
of the root. ACPICA BZ 762. Lin Ming.
|
|
|
|
Fixed possible mutex acquisition errors when running _REG methods. Fixes
|
|
a
|
|
problem where mutex errors can occur when running a _REG method that is
|
|
in
|
|
the same scope as a method-defined operation region or an operation
|
|
region
|
|
under a module-level IF block. This type of code is rare, so the problem
|
|
has
|
|
not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
|
|
|
|
Fixed a possible memory leak during module-level code execution. An
|
|
object
|
|
could be leaked for each block of executed module-level code if the
|
|
interpreter slack mode is enabled This change deletes any implicitly
|
|
returned
|
|
object from the module-level code block. Lin Ming.
|
|
|
|
Removed messages for successful predefined repair(s). The repair
|
|
mechanism
|
|
was considered too wordy. Now, messages are only unconditionally emitted
|
|
if
|
|
the return object cannot be repaired. Existing messages for successful
|
|
repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
|
|
827.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
|
|
Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
|
|
Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
|
|
files
|
|
were no longer automatically removed at the termination of the compile.
|
|
|
|
acpiexec: Implemented the -f option to specify default region fill value.
|
|
This option specifies the value used to initialize buffers that simulate
|
|
operation regions. Default value is zero. Useful for debugging problems
|
|
that
|
|
depend on a specific initial value for a region or field.
|
|
|
|
----------------------------------------
|
|
12 November 2009. Summary of changes for version 20091112:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a post-order callback to AcpiWalkNamespace. The existing
|
|
interface only has a pre-order callback. This change adds an additional
|
|
parameter for a post-order callback which will be more useful for bus
|
|
scans.
|
|
ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
|
|
|
|
Modified the behavior of the operation region memory mapping cache for
|
|
SystemMemory. Ensure that the memory mappings created for operation
|
|
regions
|
|
do not cross 4K page boundaries. Crossing a page boundary while mapping
|
|
regions can cause kernel warnings on some hosts if the pages have
|
|
different
|
|
attributes. Such regions are probably BIOS bugs, and this is the
|
|
workaround.
|
|
Linux BZ 14445. Lin Ming.
|
|
|
|
Implemented an automatic repair for predefined methods that must return
|
|
sorted lists. This change will repair (by sorting) packages returned by
|
|
_ALR,
|
|
_PSS, and _TSS. Drivers can now assume that the packages are correctly
|
|
sorted
|
|
and do not contain NULL package elements. Adds one new file,
|
|
namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
|
|
|
|
Fixed a possible fault during predefined name validation if a return
|
|
Package
|
|
object contains NULL elements. Also adds a warning if a NULL element is
|
|
followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
|
|
may
|
|
include repair or removal of all such NULL elements where possible.
|
|
|
|
Implemented additional module-level executable AML code support. This
|
|
change
|
|
will execute module-level code that is not at the root of the namespace
|
|
(under a Device object, etc.) at table load time. Module-level executable
|
|
AML
|
|
code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
|
|
|
|
Implemented a new internal function to create Integer objects. This
|
|
function
|
|
simplifies miscellaneous object creation code. ACPICA BZ 823.
|
|
|
|
Reduced the severity of predefined repair messages, Warning to Info.
|
|
Since
|
|
the object was successfully repaired, a warning is too severe. Reduced to
|
|
an
|
|
info message for now. These messages may eventually be changed to debug-
|
|
only.
|
|
ACPICA BZ 812.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
|
|
Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
|
|
Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Implemented Switch() with While(1) so that Break works correctly.
|
|
This
|
|
change correctly implements the Switch operator with a surrounding
|
|
While(1)
|
|
so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
|
|
|
|
iASL: Added a message if a package initializer list is shorter than
|
|
package
|
|
length. Adds a new remark for a Package() declaration if an initializer
|
|
list
|
|
exists, but is shorter than the declared length of the package. Although
|
|
technically legal, this is probably a coding error and it is seen in the
|
|
field. ACPICA BZ 815. Lin Ming, Bob Moore.
|
|
|
|
iASL: Fixed a problem where the compiler could fault after the maximum
|
|
number
|
|
of errors was reached (200).
|
|
|
|
acpixtract: Fixed a possible warning for pointer cast if the compiler
|
|
warning
|
|
level set very high.
|
|
|
|
----------------------------------------
|
|
13 October 2009. Summary of changes for version 20091013:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where an Operation Region _REG method could be executed
|
|
more
|
|
than once. If a custom address space handler is installed by the host
|
|
before
|
|
the "initialize operation regions" phase of the ACPICA initialization,
|
|
any
|
|
_REG methods for that address space could be executed twice. This change
|
|
fixes the problem. ACPICA BZ 427. Lin Ming.
|
|
|
|
Fixed a possible memory leak for the Scope() ASL operator. When the exact
|
|
invocation of "Scope(\)" is executed (change scope to root), one internal
|
|
operand object was leaked. Lin Ming.
|
|
|
|
Implemented a run-time repair for the _MAT predefined method. If the _MAT
|
|
return value is defined as a Field object in the AML, and the field
|
|
size is less than or equal to the default width of an integer (32 or
|
|
64),_MAT
|
|
can incorrectly return an Integer instead of a Buffer. ACPICA now
|
|
automatically repairs this problem. ACPICA BZ 810.
|
|
|
|
Implemented a run-time repair for the _BIF and _BIX predefined methods.
|
|
The
|
|
"OEM Information" field is often incorrectly returned as an Integer with
|
|
value zero if the field is not supported by the platform. This is due to
|
|
an
|
|
ambiguity in the ACPI specification. The field should always be a string.
|
|
ACPICA now automatically repairs this problem by returning a NULL string
|
|
within the returned Package. ACPICA BZ 807.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
|
|
Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
|
|
Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Fixed a problem where references to external symbols that
|
|
contained one or more parent-prefixes (carats) were not handled
|
|
correctly,
|
|
possibly causing a fault. ACPICA BZ 806. Lin Ming.
|
|
|
|
Disassembler: Restructured the code so that all functions that handle
|
|
external symbols are in a single module. One new file is added,
|
|
common/dmextern.c.
|
|
|
|
AML Debugger: Added a max count argument for the Batch command (which
|
|
executes multiple predefined methods within the namespace.)
|
|
|
|
iASL: Updated the compiler documentation (User Reference.) Available at
|
|
http://www.acpica.org/documentation/. ACPICA BZ 750.
|
|
|
|
AcpiXtract: Updated for Lint and other formatting changes. Close all open
|
|
files.
|
|
|
|
----------------------------------------
|
|
03 September 2009. Summary of changes for version 20090903:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
For Windows Vista compatibility, added the automatic execution of an _INI
|
|
method located at the namespace root (\_INI). This method is executed at
|
|
table load time. This support is in addition to the automatic execution
|
|
of
|
|
\_SB._INI. Lin Ming.
|
|
|
|
Fixed a possible memory leak in the interpreter for AML package objects
|
|
if
|
|
the package initializer list is longer than the defined size of the
|
|
package.
|
|
This apparently can only happen if the BIOS changes the package size on
|
|
the
|
|
fly (seen in a _PSS object), as ASL compilers do not allow this. The
|
|
interpreter will truncate the package to the defined size (and issue an
|
|
error
|
|
message), but previously could leave the extra objects undeleted if they
|
|
were
|
|
pre-created during the argument processing (such is the case if the
|
|
package
|
|
consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
|
|
|
|
Fixed a problem seen when a Buffer or String is stored to itself via ASL.
|
|
This has been reported in the field. Previously, ACPICA would zero out
|
|
the
|
|
buffer/string. Now, the operation is treated as a noop. Provides Windows
|
|
compatibility. ACPICA BZ 803. Lin Ming.
|
|
|
|
Removed an extraneous error message for ASL constructs of the form
|
|
Store(LocalX,LocalX) when LocalX is uninitialized. These curious
|
|
statements
|
|
are seen in many BIOSs and are once again treated as NOOPs and no error
|
|
is
|
|
emitted when they are encountered. ACPICA BZ 785.
|
|
|
|
Fixed an extraneous warning message if a _DSM reserved method returns a
|
|
Package object. _DSM can return any type of object, so validation on the
|
|
return type cannot be performed. ACPICA BZ 802.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
|
|
Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
|
|
Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a problem with the use of the Alias operator and Resource
|
|
Templates. The correct alias is now constructed and no error is emitted.
|
|
ACPICA BZ 738.
|
|
|
|
iASL: Implemented the -I option to specify additional search directories
|
|
for
|
|
include files. Allows multiple additional search paths for include files.
|
|
Directories are searched in the order specified on the command line
|
|
(after
|
|
the local directory is searched.) ACPICA BZ 800.
|
|
|
|
iASL: Fixed a problem where the full pathname for include files was not
|
|
emitted for warnings/errors. This caused the IDE support to not work
|
|
properly. ACPICA BZ 765.
|
|
|
|
iASL: Implemented the -@ option to specify a Windows-style response file
|
|
containing additional command line options. ACPICA BZ 801.
|
|
|
|
AcpiExec: Added support to load multiple AML files simultaneously (such
|
|
as
|
|
a
|
|
DSDT and multiple SSDTs). Also added support for wildcards within the AML
|
|
pathname. These features allow all machine tables to be easily loaded and
|
|
debugged together. ACPICA BZ 804.
|
|
|
|
Disassembler: Added missing support for disassembly of HEST table Error
|
|
Bank
|
|
subtables.
|
|
|
|
----------------------------------------
|
|
30 July 2009. Summary of changes for version 20090730:
|
|
|
|
The ACPI 4.0 implementation for ACPICA is complete with this release.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
ACPI 4.0: Added header file support for all new and changed ACPI tables.
|
|
Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
|
|
new
|
|
for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
|
|
BERT,
|
|
EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
|
|
There
|
|
have been some ACPI 4.0 changes to other existing tables. Split the large
|
|
actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
|
|
|
|
ACPI 4.0: Implemented predefined name validation for all new names. There
|
|
are
|
|
31 new names in ACPI 4.0. The predefined validation module was split into
|
|
two
|
|
files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
|
|
|
|
Implemented support for so-called "module-level executable code". This is
|
|
executable AML code that exists outside of any control method and is
|
|
intended
|
|
to be executed at table load time. Although illegal since ACPI 2.0, this
|
|
type
|
|
of code still exists and is apparently still being created. Blocks of
|
|
this
|
|
code are now detected and executed as intended. Currently, the code
|
|
blocks
|
|
must exist under either an If, Else, or While construct; these are the
|
|
typical cases seen in the field. ACPICA BZ 762. Lin Ming.
|
|
|
|
Implemented an automatic dynamic repair for predefined names that return
|
|
nested Package objects. This applies to predefined names that are defined
|
|
to
|
|
return a variable-length Package of sub-packages. If the number of sub-
|
|
packages is one, BIOS code is occasionally seen that creates a simple
|
|
single
|
|
package with no sub-packages. This code attempts to fix the problem by
|
|
wrapping a new package object around the existing package. These methods
|
|
can
|
|
be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
|
|
BZ
|
|
790.
|
|
|
|
Fixed a regression introduced in 20090625 for the AcpiGetDevices
|
|
interface.
|
|
The _HID/_CID matching was broken and no longer matched IDs correctly.
|
|
ACPICA
|
|
BZ 793.
|
|
|
|
Fixed a problem with AcpiReset where the reset would silently fail if the
|
|
register was one of the protected I/O ports. AcpiReset now bypasses the
|
|
port
|
|
validation mechanism. This may eventually be driven into the
|
|
AcpiRead/Write
|
|
interfaces.
|
|
|
|
Fixed a regression related to the recent update of the AcpiRead/Write
|
|
interfaces. A sleep/suspend could fail if the optional PM2 Control
|
|
register
|
|
does not exist during an attempt to write the Bus Master Arbitration bit.
|
|
(However, some hosts already delete the code that writes this bit, and
|
|
the
|
|
code may in fact be obsolete at this date.) ACPICA BZ 799.
|
|
|
|
Fixed a problem where AcpiTerminate could fault if inadvertently called
|
|
twice
|
|
in succession. ACPICA BZ 795.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
|
|
Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
|
|
Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
ACPI 4.0: Implemented disassembler support for all new ACPI tables and
|
|
changes to existing tables. ACPICA BZ 775.
|
|
|
|
----------------------------------------
|
|
25 June 2009. Summary of changes for version 20090625:
|
|
|
|
The ACPI 4.0 Specification was released on June 16 and is available at
|
|
www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
|
|
continue for the next few releases.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
ACPI 4.0: Implemented interpreter support for the IPMI operation region
|
|
address space. Includes support for bi-directional data buffers and an
|
|
IPMI
|
|
address space handler (to be installed by an IPMI device driver.) ACPICA
|
|
BZ
|
|
773. Lin Ming.
|
|
|
|
ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
|
|
Includes
|
|
support in both the header files and the disassembler.
|
|
|
|
Completed a major update for the AcpiGetObjectInfo external interface.
|
|
Changes include:
|
|
- Support for variable, unlimited length HID, UID, and CID strings.
|
|
- Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
|
|
etc.)
|
|
- Call the _SxW power methods on behalf of a device object.
|
|
- Determine if a device is a PCI root bridge.
|
|
- Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
|
|
These changes will require an update to all callers of this interface.
|
|
See
|
|
the updated ACPICA Programmer Reference for details. One new source file
|
|
has
|
|
been added - utilities/utids.c. ACPICA BZ 368, 780.
|
|
|
|
Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
|
|
transfers. The Value parameter has been extended from 32 bits to 64 bits
|
|
in
|
|
order to support new ACPI 4.0 tables. These changes will require an
|
|
update
|
|
to
|
|
all callers of these interfaces. See the ACPICA Programmer Reference for
|
|
details. ACPICA BZ 768.
|
|
|
|
Fixed several problems with AcpiAttachData. The handler was not invoked
|
|
when
|
|
the host node was deleted. The data sub-object was not automatically
|
|
deleted
|
|
when the host node was deleted. The interface to the handler had an
|
|
unused
|
|
parameter, this was removed. ACPICA BZ 778.
|
|
|
|
Enhanced the function that dumps ACPI table headers. All non-printable
|
|
characters in the string fields are now replaced with '?' (Signature,
|
|
OemId,
|
|
OemTableId, and CompilerId.) ACPI tables with non-printable characters in
|
|
these fields are occasionally seen in the field. ACPICA BZ 788.
|
|
|
|
Fixed a problem with predefined method repair code where the code that
|
|
attempts to repair/convert an object of incorrect type is only executed
|
|
on
|
|
the first time the predefined method is called. The mechanism that
|
|
disables
|
|
warnings on subsequent calls was interfering with the repair mechanism.
|
|
ACPICA BZ 781.
|
|
|
|
Fixed a possible memory leak in the predefined validation/repair code
|
|
when
|
|
a
|
|
buffer is automatically converted to an expected string object.
|
|
|
|
Removed obsolete 16-bit files from the distribution and from the current
|
|
git
|
|
tree head. ACPICA BZ 776.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
|
|
Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
|
|
Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
|
|
operation region keyword. ACPICA BZ 771, 772. Lin Ming.
|
|
|
|
ACPI 4.0: iASL - implemented compile-time validation support for all new
|
|
predefined names and control methods (31 total). ACPICA BZ 769.
|
|
|
|
----------------------------------------
|
|
21 May 2009. Summary of changes for version 20090521:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Disabled the preservation of the SCI enable bit in the PM1 control
|
|
register.
|
|
The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
|
|
to
|
|
be
|
|
a "preserved" bit - "OSPM always preserves this bit position", section
|
|
4.7.3.2.1. However, some machines fail if this bit is in fact preserved
|
|
because the bit needs to be explicitly set by the OS as a workaround. No
|
|
machines fail if the bit is not preserved. Therefore, ACPICA no longer
|
|
attempts to preserve this bit.
|
|
|
|
Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
|
|
incorrectly formed _PRT package could cause a fault. Added validation to
|
|
ensure that each package element is actually a sub-package.
|
|
|
|
Implemented a new interface to install or override a single control
|
|
method,
|
|
AcpiInstallMethod. This interface is useful when debugging in order to
|
|
repair
|
|
an existing method or to install a missing method without having to
|
|
override
|
|
the entire ACPI table. See the ACPICA Programmer Reference for use and
|
|
examples. Lin Ming, Bob Moore.
|
|
|
|
Fixed several reference count issues with the DdbHandle object that is
|
|
created from a Load or LoadTable operator. Prevent premature deletion of
|
|
the
|
|
object. Also, mark the object as invalid once the table has been
|
|
unloaded.
|
|
This is needed because the handle itself may not be deleted after the
|
|
table
|
|
unload, depending on whether it has been stored in a named object by the
|
|
caller. Lin Ming.
|
|
|
|
Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
|
|
mutexes of the same sync level are acquired but then not released in
|
|
strict
|
|
opposite order, the internally maintained Current Sync Level becomes
|
|
confused
|
|
and can cause subsequent execution errors. ACPICA BZ 471.
|
|
|
|
Changed the allowable release order for ASL mutex objects. The ACPI 4.0
|
|
specification has been changed to make the SyncLevel for mutex objects
|
|
more
|
|
useful. When releasing a mutex, the SyncLevel of the mutex must now be
|
|
the
|
|
same as the current sync level. This makes more sense than the previous
|
|
rule
|
|
(SyncLevel less than or equal). This change updates the code to match the
|
|
specification.
|
|
|
|
Fixed a problem with the local version of the AcpiOsPurgeCache function.
|
|
The
|
|
(local) cache must be locked during all cache object deletions. Andrew
|
|
Baumann.
|
|
|
|
Updated the Load operator to use operation region interfaces. This
|
|
replaces
|
|
direct memory mapping with region access calls. Now, all region accesses
|
|
go
|
|
through the installed region handler as they should.
|
|
|
|
Simplified and optimized the NsGetNextNode function. Reduced parameter
|
|
count
|
|
and reduced code for this frequently used function.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
|
|
Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
|
|
Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
|
|
problems
|
|
with sub-table disassembly and handling invalid sub-tables. Attempt
|
|
recovery
|
|
after an invalid sub-table ID.
|
|
|
|
----------------------------------------
|
|
22 April 2009. Summary of changes for version 20090422:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a compatibility issue with the recently released I/O port
|
|
protection
|
|
mechanism. For windows compatibility, 1) On a port protection violation,
|
|
simply ignore the request and do not return an exception (allow the
|
|
control
|
|
method to continue execution.) 2) If only part of the request overlaps a
|
|
protected port, read/write the individual ports that are not protected.
|
|
Linux
|
|
BZ 13036. Lin Ming
|
|
|
|
Enhanced the execution of the ASL/AML BreakPoint operator so that it
|
|
actually
|
|
breaks into the AML debugger if the debugger is present. This matches the
|
|
ACPI-defined behavior.
|
|
|
|
Fixed several possible warnings related to the use of the configurable
|
|
ACPI_THREAD_ID. This type can now be configured as either an integer or a
|
|
pointer with no warnings. Also fixes several warnings in printf-like
|
|
statements for the 64-bit build when the type is configured as a pointer.
|
|
ACPICA BZ 766, 767.
|
|
|
|
Fixed a number of possible warnings when compiling with gcc 4+ (depending
|
|
on
|
|
warning options.) Examples include printf formats, aliasing, unused
|
|
globals,
|
|
missing prototypes, missing switch default statements, use of non-ANSI
|
|
library functions, use of non-ANSI constructs. See generate/unix/Makefile
|
|
for
|
|
a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
|
|
Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
|
|
Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Fixed a generation warning from Bison 2.3 and fixed several
|
|
warnings
|
|
on
|
|
the 64-bit build.
|
|
|
|
iASL: Fixed a problem where the Unix/Linux versions of the compiler could
|
|
not
|
|
correctly digest Windows/DOS formatted files (with CR/LF).
|
|
|
|
iASL: Added a new option for "quiet mode" (-va) that produces only the
|
|
compilation summary, not individual errors and warnings. Useful for large
|
|
batch compilations.
|
|
|
|
AcpiExec: Implemented a new option (-z) to enable a forced
|
|
semaphore/mutex
|
|
timeout that can be used to detect hang conditions during execution of
|
|
AML
|
|
code (includes both internal semaphores and AML-defined mutexes and
|
|
events.)
|
|
|
|
Added new makefiles for the generation of acpica in a generic unix-like
|
|
environment. These makefiles are intended to generate the acpica tools
|
|
and
|
|
utilities from the original acpica git source tree structure.
|
|
|
|
Test Suites: Updated and cleaned up the documentation files. Updated the
|
|
copyrights to 2009, affecting all source files. Use the new version of
|
|
iASL
|
|
with quiet mode. Increased the number of available semaphores in the
|
|
Windows
|
|
OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
|
|
added
|
|
an alternate implementation of the semaphore timeout to allow aslts to
|
|
execute fully on Cygwin.
|
|
|
|
----------------------------------------
|
|
20 March 2009. Summary of changes for version 20090320:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a possible race condition between AcpiWalkNamespace and dynamic
|
|
table
|
|
unloads. Added a reader/writer locking mechanism to allow multiple
|
|
concurrent
|
|
namespace walks (readers), but block a dynamic table unload until it can
|
|
gain
|
|
exclusive write access to the namespace. This fixes a problem where a
|
|
table
|
|
unload could (possibly catastrophically) delete the portion of the
|
|
namespace
|
|
that is currently being examined by a walk. Adds a new file, utlock.c,
|
|
that
|
|
implements the reader/writer lock mechanism. ACPICA BZ 749.
|
|
|
|
Fixed a regression introduced in version 20090220 where a change to the
|
|
FADT
|
|
handling could cause the ACPICA subsystem to access non-existent I/O
|
|
ports.
|
|
|
|
Modified the handling of FADT register and table (FACS/DSDT) addresses.
|
|
The
|
|
FADT can contain both 32-bit and 64-bit versions of these addresses.
|
|
Previously, the 64-bit versions were favored, meaning that if both 32 and
|
|
64
|
|
versions were valid, but not equal, the 64-bit version was used. This was
|
|
found to cause some machines to fail. Now, in this case, the 32-bit
|
|
version
|
|
is used instead. This now matches the Windows behavior.
|
|
|
|
Implemented a new mechanism to protect certain I/O ports. Provides
|
|
Microsoft
|
|
compatibility and protects the standard PC I/O ports from access via AML
|
|
code. Adds a new file, hwvalid.c
|
|
|
|
Fixed a possible extraneous warning message from the FADT support. The
|
|
message warns of a 32/64 length mismatch between the legacy and GAS
|
|
definitions for a register.
|
|
|
|
Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
|
|
is
|
|
made obsolete by the port protection mechanism above. It was previously
|
|
used
|
|
to validate the entire address range of an operation region, which could
|
|
be
|
|
incorrect if the range included illegal ports, but fields within the
|
|
operation region did not actually access those ports. Validation is now
|
|
performed on a per-field basis instead of the entire region.
|
|
|
|
Modified the handling of the PM1 Status Register ignored bit (bit 11.)
|
|
Ignored bits must be "preserved" according to the ACPI spec. Usually,
|
|
this
|
|
means a read/modify/write when writing to the register. However, for
|
|
status
|
|
registers, writing a one means clear the event. Writing a zero means
|
|
preserve
|
|
the event (do not clear.) This behavior is clarified in the ACPI 4.0
|
|
spec,
|
|
and the ACPICA code now simply always writes a zero to the ignored bit.
|
|
|
|
Modified the handling of ignored bits for the PM1 A/B Control Registers.
|
|
As
|
|
per the ACPI specification, for the control registers, preserve
|
|
(read/modify/write) all bits that are defined as either reserved or
|
|
ignored.
|
|
|
|
Updated the handling of write-only bits in the PM1 A/B Control Registers.
|
|
When reading the register, zero the write-only bits as per the ACPI spec.
|
|
ACPICA BZ 443. Lin Ming.
|
|
|
|
Removed "Linux" from the list of supported _OSI strings. Linux no longer
|
|
wants to reply true to this request. The Windows strings are the only
|
|
paths
|
|
through the AML that are tested and known to work properly.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
|
|
Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
|
|
Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
|
|
and
|
|
aetables.c
|
|
|
|
----------------------------------------
|
|
20 February 2009. Summary of changes for version 20090220:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Optimized the ACPI register locking. Removed locking for reads from the
|
|
ACPI
|
|
bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
|
|
is
|
|
not required when reading the single-bit registers. The
|
|
AcpiGetRegisterUnlocked function is no longer needed and has been
|
|
removed.
|
|
This will improve performance for reads on these registers. ACPICA BZ
|
|
760.
|
|
|
|
Fixed the parameter validation for AcpiRead/Write. Now return
|
|
AE_BAD_PARAMETER if the input register pointer is null, and
|
|
AE_BAD_ADDRESS
|
|
if
|
|
the register has an address of zero. Previously, these cases simply
|
|
returned
|
|
AE_OK. For optional registers such as PM1B status/enable/control, the
|
|
caller
|
|
should check for a valid register address before calling. ACPICA BZ 748.
|
|
|
|
Renamed the external ACPI bit register access functions. Renamed
|
|
AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
|
|
functions. The new names are AcpiReadBitRegister and
|
|
AcpiWriteBitRegister.
|
|
Also, restructured the code for these functions by simplifying the code
|
|
path
|
|
and condensing duplicate code to reduce code size.
|
|
|
|
Added new functions to transparently handle the possibly split PM1 A/B
|
|
registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
|
|
functions
|
|
now handle the split registers for PM1 Status, Enable, and Control.
|
|
ACPICA
|
|
BZ
|
|
746.
|
|
|
|
Added a function to handle the PM1 control registers,
|
|
AcpiHwWritePm1Control.
|
|
This function writes both of the PM1 control registers (A/B). These
|
|
registers
|
|
are different than the PM1 A/B status and enable registers in that
|
|
different
|
|
values can be written to the A/B registers. Most notably, the SLP_TYP
|
|
bits
|
|
can be different, as per the values returned from the _Sx predefined
|
|
methods.
|
|
|
|
Removed an extra register write within AcpiHwClearAcpiStatus. This
|
|
function
|
|
was writing an optional PM1B status register twice. The existing call to
|
|
the
|
|
low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
|
|
A/B
|
|
register. ACPICA BZ 751.
|
|
|
|
Split out the PM1 Status registers from the FADT. Added new globals for
|
|
these
|
|
registers (A/B), similar to the way the PM1 Enable registers are handled.
|
|
Instead of overloading the FADT Event Register blocks. This makes the
|
|
code
|
|
clearer and less prone to error.
|
|
|
|
Fixed the warning message for when the platform contains too many ACPI
|
|
tables
|
|
for the default size of the global root table data structure. The
|
|
calculation
|
|
for the truncation value was incorrect.
|
|
|
|
Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
|
|
obsolete macro, since it is now a simple reference to ->common.type.
|
|
There
|
|
were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
|
|
|
|
Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
|
|
TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
|
|
simply SLEEP_TYPE. ACPICA BZ 754.
|
|
|
|
Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
|
|
function is only needed on 64-bit host operating systems and is thus not
|
|
included for 32-bit hosts.
|
|
|
|
Debug output: print the input and result for invocations of the _OSI
|
|
reserved
|
|
control method via the ACPI_LV_INFO debug level. Also, reduced some of
|
|
the
|
|
verbosity of this debug level. Len Brown.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
|
|
Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
|
|
Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
|
|
various legal performance profiles.
|
|
|
|
----------------------------------------
|
|
23 January 2009. Summary of changes for version 20090123:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added the 2009 copyright to all module headers and signons. This affects
|
|
virtually every file in the ACPICA core subsystem, the iASL compiler, and
|
|
the tools/utilities.
|
|
|
|
Implemented a change to allow the host to override any ACPI table,
|
|
including
|
|
dynamically loaded tables. Previously, only the DSDT could be replaced by
|
|
the
|
|
host. With this change, the AcpiOsTableOverride interface is called for
|
|
each
|
|
table found in the RSDT/XSDT during ACPICA initialization, and also
|
|
whenever
|
|
a table is dynamically loaded via the AML Load operator.
|
|
|
|
Updated FADT flag definitions, especially the Boot Architecture flags.
|
|
|
|
Debugger: For the Find command, automatically pad the input ACPI name
|
|
with
|
|
underscores if the name is shorter than 4 characters. This enables a
|
|
match
|
|
with the actual namespace entry which is itself padded with underscores.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
|
|
Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
|
|
Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fix build error under Bison-2.4.
|
|
|
|
Disassembler: Enhanced FADT support. Added decoding of the Boot
|
|
Architecture
|
|
flags. Now decode all flags, regardless of the FADT version. Flag output
|
|
includes the FADT version which first defined each flag.
|
|
|
|
The iASL -g option now dumps the RSDT to a file (in addition to the FADT
|
|
and
|
|
DSDT). Windows only.
|
|
|
|
----------------------------------------
|
|
04 December 2008. Summary of changes for version 20081204:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The ACPICA Programmer Reference has been completely updated and revamped
|
|
for
|
|
this release. This includes updates to the external interfaces, OSL
|
|
interfaces, the overview sections, and the debugger reference.
|
|
|
|
Several new ACPICA interfaces have been implemented and documented in the
|
|
programmer reference:
|
|
AcpiReset - Writes the reset value to the FADT-defined reset register.
|
|
AcpiDisableAllGpes - Disable all available GPEs.
|
|
AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
|
|
AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
|
|
AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
|
|
AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
|
|
AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
|
|
|
|
Most of the public ACPI hardware-related interfaces have been moved to a
|
|
new
|
|
file, components/hardware/hwxface.c
|
|
|
|
Enhanced the FADT parsing and low-level ACPI register access: The ACPI
|
|
register lengths within the FADT are now used, and the low level ACPI
|
|
register access no longer hardcodes the ACPI register lengths. Given that
|
|
there may be some risk in actually trusting the FADT register lengths, a
|
|
run-
|
|
time option was added to fall back to the default hardcoded lengths if
|
|
the
|
|
FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
|
|
option is set to true for now, and a warning is issued if a suspicious
|
|
FADT
|
|
register length is overridden with the default value.
|
|
|
|
Fixed a reference count issue in NsRepairObject. This problem was
|
|
introduced
|
|
in version 20081031 as part of a fix to repair Buffer objects within
|
|
Packages. Lin Ming.
|
|
|
|
Added semaphore support to the Linux/Unix application OS-services layer
|
|
(OSL). ACPICA BZ 448. Lin Ming.
|
|
|
|
Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
|
|
will
|
|
be implemented in the OSL, or will binary semaphores be used instead.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
|
|
Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
|
|
Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Completed the '-e' option to include additional ACPI tables in
|
|
order
|
|
to
|
|
aid with disassembly and External statement generation. ACPICA BZ 742.
|
|
Lin
|
|
Ming.
|
|
|
|
iASL: Removed the "named object in while loop" error. The compiler cannot
|
|
determine how many times a loop will execute. ACPICA BZ 730.
|
|
|
|
Disassembler: Implemented support for FADT revision 2 (MS extension).
|
|
ACPICA
|
|
BZ 743.
|
|
|
|
Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
|
|
MCFG).
|
|
|
|
----------------------------------------
|
|
31 October 2008. Summary of changes for version 20081031:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Restructured the ACPICA header files into public/private. acpi.h now
|
|
includes
|
|
only the "public" acpica headers. All other acpica headers are "private"
|
|
and
|
|
should not be included by acpica users. One new file, accommon.h is used
|
|
to
|
|
include the commonly used private headers for acpica code generation.
|
|
Future
|
|
plans include moving all private headers to a new subdirectory.
|
|
|
|
Implemented an automatic Buffer->String return value conversion for
|
|
predefined ACPI methods. For these methods (such as _BIF), added
|
|
automatic
|
|
conversion for return objects that are required to be a String, but a
|
|
Buffer
|
|
was found instead. This can happen when reading string battery data from
|
|
an
|
|
operation region, because it used to be difficult to convert the data
|
|
from
|
|
buffer to string from within the ASL. Ensures that the host OS is
|
|
provided
|
|
with a valid null-terminated string. Linux BZ 11822.
|
|
|
|
Updated the FACS waking vector interfaces. Split
|
|
AcpiSetFirmwareWakingVector
|
|
into two: one for the 32-bit vector, another for the 64-bit vector. This
|
|
is
|
|
required because the host OS must setup the wake much differently for
|
|
each
|
|
vector (real vs. protected mode, etc.) and the interface itself should
|
|
not
|
|
be
|
|
deciding which vector to use. Also, eliminated the
|
|
GetFirmwareWakingVector
|
|
interface, as it served no purpose (only the firmware reads the vector,
|
|
OS
|
|
only writes the vector.) ACPICA BZ 731.
|
|
|
|
Implemented a mechanism to escape infinite AML While() loops. Added a
|
|
loop
|
|
counter to force exit from AML While loops if the count becomes too
|
|
large.
|
|
This can occur in poorly written AML when the hardware does not respond
|
|
within a while loop and the loop does not implement a timeout. The
|
|
maximum
|
|
loop count is configurable. A new exception code is returned when a loop
|
|
is
|
|
broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
|
|
|
|
Optimized the execution of AML While loops. Previously, a control state
|
|
object was allocated and freed for each execution of the loop. The
|
|
optimization is to simply reuse the control state for each iteration.
|
|
This
|
|
speeds up the raw loop execution time by about 5%.
|
|
|
|
Enhanced the implicit return mechanism. For Windows compatibility, return
|
|
an
|
|
implicit integer of value zero for methods that contain no executable
|
|
code.
|
|
Such methods are seen in the field as stubs (presumably), and can cause
|
|
drivers to fail if they expect a return value. Lin Ming.
|
|
|
|
Allow multiple backslashes as root prefixes in namepaths. In a fully
|
|
qualified namepath, allow multiple backslash prefixes. This can happen
|
|
(and
|
|
is seen in the field) because of the use of a double-backslash in strings
|
|
(since backslash is the escape character) causing confusion. ACPICA BZ
|
|
739
|
|
Lin Ming.
|
|
|
|
Emit a warning if two different FACS or DSDT tables are discovered in the
|
|
FADT. Checks if there are two valid but different addresses for the FACS
|
|
and
|
|
DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
|
|
|
|
Consolidated the method argument count validation code. Merged the code
|
|
that
|
|
validates control method argument counts into the predefined validation
|
|
module. Eliminates possible multiple warnings for incorrect argument
|
|
counts.
|
|
|
|
Implemented ACPICA example code. Includes code for ACPICA initialization,
|
|
handler installation, and calling a control method. Available at
|
|
source/tools/examples.
|
|
|
|
Added a global pointer for FACS table to simplify internal FACS access.
|
|
Use
|
|
the global pointer instead of using AcpiGetTableByIndex for each FACS
|
|
access.
|
|
This simplifies the code for the Global Lock and the Firmware Waking
|
|
Vector(s).
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
|
|
Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
|
|
Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Improved disassembly of external method calls. Added the -e option
|
|
to
|
|
allow the inclusion of additional ACPI tables to help with the
|
|
disassembly
|
|
of
|
|
method invocations and the generation of external declarations during the
|
|
disassembly. Certain external method invocations cannot be disassembled
|
|
properly without the actual declaration of the method. Use the -e option
|
|
to
|
|
include the table where the external method(s) are actually declared.
|
|
Most
|
|
useful for disassembling SSDTs that make method calls back to the master
|
|
DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl
|
|
-d
|
|
-e dsdt.aml ssdt1.aml
|
|
|
|
iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
|
|
problem where the use of an alias within a namepath would result in a not
|
|
found error or cause the compiler to fault. Also now allows forward
|
|
references from the Alias operator itself. ACPICA BZ 738.
|
|
|
|
----------------------------------------
|
|
26 September 2008. Summary of changes for version 20080926:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Designed and implemented a mechanism to validate predefined ACPI methods
|
|
and
|
|
objects. This code validates the predefined ACPI objects (objects whose
|
|
names
|
|
start with underscore) that appear in the namespace, at the time they are
|
|
evaluated. The argument count and the type of the returned object are
|
|
validated against the ACPI specification. The purpose of this validation
|
|
is
|
|
to detect problems with the BIOS-implemented predefined ACPI objects
|
|
before
|
|
the results are returned to the ACPI-related drivers. Future enhancements
|
|
may
|
|
include actual repair of incorrect return objects where possible. Two new
|
|
files are nspredef.c and acpredef.h.
|
|
|
|
Fixed a fault in the AML parser if a memory allocation fails during the
|
|
Op
|
|
completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
|
|
|
|
Fixed an issue with implicit return compatibility. This change improves
|
|
the
|
|
implicit return mechanism to be more compatible with the MS interpreter.
|
|
Lin
|
|
Ming, ACPICA BZ 349.
|
|
|
|
Implemented support for zero-length buffer-to-string conversions. Allow
|
|
zero
|
|
length strings during interpreter buffer-to-string conversions. For
|
|
example,
|
|
during the ToDecimalString and ToHexString operators, as well as implicit
|
|
conversions. Fiodor Suietov, ACPICA BZ 585.
|
|
|
|
Fixed two possible memory leaks in the error exit paths of
|
|
AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
|
|
are
|
|
similar in that they use a stack of state objects in order to eliminate
|
|
recursion. The stack must be fully unwound and deallocated if an error
|
|
occurs. Lin Ming. ACPICA BZ 383.
|
|
|
|
Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
|
|
global
|
|
ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
|
|
Moore ACPICA BZ 442.
|
|
|
|
Removed the obsolete version number in module headers. Removed the
|
|
"$Revision" number that appeared in each module header. This version
|
|
number
|
|
was useful under SourceSafe and CVS, but has no meaning under git. It is
|
|
not
|
|
only incorrect, it could also be misleading.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
|
|
Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
|
|
Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
|
|
|
|
----------------------------------------
|
|
29 August 2008. Summary of changes for version 20080829:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
|
|
Reference. Changes include the elimination of cheating on the Object
|
|
field
|
|
for the DdbHandle subtype, addition of a reference class field to
|
|
differentiate the various reference types (instead of an AML opcode), and
|
|
the
|
|
cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
|
|
|
|
Reduce an error to a warning for an incorrect method argument count.
|
|
Previously aborted with an error if too few arguments were passed to a
|
|
control method via the external ACPICA interface. Now issue a warning
|
|
instead
|
|
and continue. Handles the case where the method inadvertently declares
|
|
too
|
|
many arguments, but does not actually use the extra ones. Applies mainly
|
|
to
|
|
the predefined methods. Lin Ming. Linux BZ 11032.
|
|
|
|
Disallow the evaluation of named object types with no intrinsic value.
|
|
Return
|
|
AE_TYPE for objects that have no value and therefore evaluation is
|
|
undefined:
|
|
Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
|
|
of
|
|
these types were allowed, but an exception would be generated at some
|
|
point
|
|
during the evaluation. Now, the error is generated up front.
|
|
|
|
Fixed a possible memory leak in the AcpiNsGetExternalPathname function
|
|
(nsnames.c). Fixes a leak in the error exit path.
|
|
|
|
Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
|
|
debug
|
|
levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
|
|
ACPI_EXCEPTION
|
|
interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
|
|
ACPI_LV_EVENTS.
|
|
|
|
Removed obsolete and/or unused exception codes from the acexcep.h header.
|
|
There is the possibility that certain device drivers may be affected if
|
|
they
|
|
use any of these exceptions.
|
|
|
|
The ACPICA documentation has been added to the public git source tree,
|
|
under
|
|
acpica/documents. Included are the ACPICA programmer reference, the iASL
|
|
compiler reference, and the changes.txt release logfile.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
|
|
Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
|
|
Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
|
|
defines _SCP with 3 arguments. Previous versions defined it with only 1
|
|
argument. iASL now allows both definitions.
|
|
|
|
iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
|
|
zero-
|
|
length subtables when disassembling ACPI tables. Also fixed a couple of
|
|
errors where a full 16-bit table type field was not extracted from the
|
|
input
|
|
properly.
|
|
|
|
acpisrc: Improve comment counting mechanism for generating source code
|
|
statistics. Count first and last lines of multi-line comments as
|
|
whitespace,
|
|
not comment lines. Handle Linux legal header in addition to standard
|
|
acpica
|
|
header.
|
|
|
|
----------------------------------------
|
|
|
|
29 July 2008. Summary of changes for version 20080729:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fix a possible deadlock in the GPE dispatch. Remove call to
|
|
AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
|
|
attempt
|
|
to acquire the GPE lock but can deadlock since the GPE lock is already
|
|
held
|
|
at dispatch time. This code was introduced in version 20060831 as a
|
|
response
|
|
to Linux BZ 6881 and has since been removed from Linux.
|
|
|
|
Add a function to dereference returned reference objects. Examines the
|
|
return
|
|
object from a call to AcpiEvaluateObject. Any Index or RefOf references
|
|
are
|
|
automatically dereferenced in an attempt to return something useful
|
|
(these
|
|
reference types cannot be converted into an external ACPI_OBJECT.)
|
|
Provides
|
|
MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
|
|
|
|
x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
|
|
subtables for the MADT and one new subtable for the SRAT. Includes
|
|
disassembler and AcpiSrc support. Data from the Intel 64 Architecture
|
|
x2APIC
|
|
Specification, June 2008.
|
|
|
|
Additional error checking for pathname utilities. Add error check after
|
|
all
|
|
calls to AcpiNsGetPathnameLength. Add status return from
|
|
AcpiNsBuildExternalPath and check after all calls. Add parameter
|
|
validation
|
|
to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
|
|
|
|
Return status from the global init function AcpiUtGlobalInitialize. This
|
|
is
|
|
used by both the kernel subsystem and the utilities such as iASL
|
|
compiler.
|
|
The function could possibly fail when the caches are initialized. Yang
|
|
Yi.
|
|
|
|
Add a function to decode reference object types to strings. Created for
|
|
improved error messages.
|
|
|
|
Improve object conversion error messages. Better error messages during
|
|
object
|
|
conversion from internal to the external ACPI_OBJECT. Used for external
|
|
calls
|
|
to AcpiEvaluateObject.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
|
|
Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
|
|
Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Debugger: fix a possible hang when evaluating non-methods. Fixes a
|
|
problem
|
|
introduced in version 20080701. If the object being evaluated (via
|
|
execute
|
|
command) is not a method, the debugger can hang while trying to obtain
|
|
non-
|
|
existent parameters.
|
|
|
|
iASL: relax error for using reserved "_T_x" identifiers. These names can
|
|
appear in a disassembled ASL file if they were emitted by the original
|
|
compiler. Instead of issuing an error or warning and forcing the user to
|
|
manually change these names, issue a remark instead.
|
|
|
|
iASL: error if named object created in while loop. Emit an error if any
|
|
named
|
|
object is created within a While loop. If allowed, this code will
|
|
generate
|
|
a
|
|
run-time error on the second iteration of the loop when an attempt is
|
|
made
|
|
to
|
|
create the same named object twice. ACPICA bugzilla 730.
|
|
|
|
iASL: Support absolute pathnames for include files. Add support for
|
|
absolute
|
|
pathnames within the Include operator. previously, only relative
|
|
pathnames
|
|
were supported.
|
|
|
|
iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
|
|
Descriptor.
|
|
The ACPI spec requires one interrupt minimum. BZ 423
|
|
|
|
iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
|
|
Handles the case for the Interrupt Resource Descriptor where
|
|
the ResourceSource argument is omitted but ResourceSourceIndex
|
|
is present. Now leave room for the Index. BZ 426
|
|
|
|
iASL: Prevent error message if CondRefOf target does not exist. Fixes
|
|
cases
|
|
where an error message is emitted if the target does not exist. BZ 516
|
|
|
|
iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
|
|
(get ACPI tables on Windows). This was apparently broken in version
|
|
20070919.
|
|
|
|
AcpiXtract: Handle EOF while extracting data. Correctly handle the case
|
|
where
|
|
the EOF happens immediately after the last table in the input file. Print
|
|
completion message. Previously, no message was displayed in this case.
|
|
|
|
----------------------------------------
|
|
01 July 2008. Summary of changes for version 20080701:
|
|
|
|
0) Git source tree / acpica.org
|
|
|
|
Fixed a problem where a git-clone from http would not transfer the entire
|
|
source tree.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
|
|
enable bit. Now performs a read-change-write of the enable register
|
|
instead
|
|
of simply writing out the cached enable mask. This will prevent
|
|
inadvertent
|
|
enabling of GPEs if a rogue GPE is received during initialization (before
|
|
GPE
|
|
handlers are installed.)
|
|
|
|
Implemented a copy for dynamically loaded tables. Previously, dynamically
|
|
loaded tables were simply mapped - but on some machines this memory is
|
|
corrupted after suspend. Now copy the table to a local buffer. For the
|
|
OpRegion case, added checksum verify. Use the table length from the table
|
|
header, not the region length. For the Buffer case, use the table length
|
|
also. Dennis Noordsij, Bob Moore. BZ 10734
|
|
|
|
Fixed a problem where the same ACPI table could not be dynamically loaded
|
|
and
|
|
unloaded more than once. Without this change, a table cannot be loaded
|
|
again
|
|
once it has been loaded/unloaded one time. The current mechanism does not
|
|
unregister a table upon an unload. During a load, if the same table is
|
|
found,
|
|
this no longer returns an exception. BZ 722
|
|
|
|
Fixed a problem where the wrong descriptor length was calculated for the
|
|
EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
|
|
EndTag
|
|
are calculated as 12 bytes long, but the actual length in the internal
|
|
descriptor is 16 because of the round-up to 8 on the 64-bit build.
|
|
Reported
|
|
by Linn Crosetto. BZ 728
|
|
|
|
Fixed a possible memory leak in the Unload operator. The DdbHandle
|
|
returned
|
|
by Load() did not have its reference count decremented during unload,
|
|
leading
|
|
to a memory leak. Lin Ming. BZ 727
|
|
|
|
Fixed a possible memory leak when deleting thermal/processor objects. Any
|
|
associated notify handlers (and objects) were not being deleted. Fiodor
|
|
Suietov. BZ 506
|
|
|
|
Fixed the ordering of the ASCII names in the global mutex table to match
|
|
the
|
|
actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
|
|
only.
|
|
Vegard Nossum. BZ 726
|
|
|
|
Enhanced the AcpiGetObjectInfo interface to return the number of required
|
|
arguments if the object is a control method. Added this call to the
|
|
debugger
|
|
so the proper number of default arguments are passed to a method. This
|
|
prevents a warning when executing methods from AcpiExec.
|
|
|
|
Added a check for an invalid handle in AcpiGetObjectInfo. Return
|
|
AE_BAD_PARAMETER if input handle is invalid. BZ 474
|
|
|
|
Fixed an extraneous warning from exconfig.c on the 64-bit build.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
|
|
Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
|
|
Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
|
|
resource descriptor names.
|
|
|
|
iASL: Detect invalid ASCII characters in input (windows version). Removed
|
|
the
|
|
"-CF" flag from the flex compile, enables correct detection of non-ASCII
|
|
characters in the input. BZ 441
|
|
|
|
iASL: Eliminate warning when result of LoadTable is not used. Eliminate
|
|
the
|
|
"result of operation not used" warning when the DDB handle returned from
|
|
LoadTable is not used. The warning is not needed. BZ 590
|
|
|
|
AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
|
|
method
|
|
to
|
|
pass address of table to the AML. Added option to disable OpRegion
|
|
simulation
|
|
to allow creation of an OpRegion with a real address that was passed to
|
|
_CFG.
|
|
All of this allows testing of the Load and Unload operators from
|
|
AcpiExec.
|
|
|
|
Debugger: update tables command for unloaded tables. Handle unloaded
|
|
tables
|
|
and use the standard table header output routine.
|
|
|
|
----------------------------------------
|
|
09 June 2008. Summary of changes for version 20080609:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a workaround for reversed _PRT entries. A significant number
|
|
of
|
|
BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
|
|
change dynamically detects and repairs this problem. Provides
|
|
compatibility
|
|
with MS ACPI. BZ 6859
|
|
|
|
Simplified the internal ACPI hardware interfaces to eliminate the locking
|
|
flag parameter from Register Read/Write. Added a new external interface,
|
|
AcpiGetRegisterUnlocked.
|
|
|
|
Fixed a problem where the invocation of a GPE control method could hang.
|
|
This
|
|
was a regression introduced in 20080514. The new method argument count
|
|
validation mechanism can enter an infinite loop when a GPE method is
|
|
dispatched. Problem fixed by removing the obsolete code that passed GPE
|
|
block
|
|
information to the notify handler via the control method parameter
|
|
pointer.
|
|
|
|
Fixed a problem where the _SST execution status was incorrectly returned
|
|
to
|
|
the caller of AcpiEnterSleepStatePrep. This was a regression introduced
|
|
in
|
|
20080514. _SST is optional and a NOT_FOUND exception should never be
|
|
returned. BZ 716
|
|
|
|
Fixed a problem where a deleted object could be accessed from within the
|
|
AML
|
|
parser. This was a regression introduced in version 20080123 as a fix for
|
|
the
|
|
Unload operator. Lin Ming. BZ 10669
|
|
|
|
Cleaned up the debug operand dump mechanism. Eliminated unnecessary
|
|
operands
|
|
and eliminated the use of a negative index in a loop. Operands are now
|
|
displayed in the correct order, not backwards. This also fixes a
|
|
regression
|
|
introduced in 20080514 on 64-bit systems where the elimination of
|
|
ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
|
|
715
|
|
|
|
Fixed a possible memory leak in EvPciConfigRegionSetup where the error
|
|
exit
|
|
path did not delete a locally allocated structure.
|
|
|
|
Updated definitions for the DMAR and SRAT tables to synchronize with the
|
|
current specifications. Includes disassembler support.
|
|
|
|
Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
|
|
loop termination value was used. Loop terminated on iteration early,
|
|
missing
|
|
one mutex. Linn Crosetto
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
|
|
Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
|
|
Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Implemented support for EisaId() within _CID objects. Now
|
|
disassemble integer _CID objects back to EisaId invocations, including
|
|
multiple integers within _CID packages. Includes single-step support for
|
|
debugger also.
|
|
|
|
Disassembler: Added support for DMAR and SRAT table definition changes.
|
|
|
|
----------------------------------------
|
|
14 May 2008. Summary of changes for version 20080514:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where GPEs were enabled too early during the ACPICA
|
|
initialization. This could lead to "handler not installed" errors on some
|
|
machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
|
|
This
|
|
ensures that all operation regions and devices throughout the namespace
|
|
have
|
|
been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
|
|
|
|
Implemented a change to the enter sleep code. Moved execution of the _GTS
|
|
method to just before setting sleep enable bit. The execution was moved
|
|
from
|
|
AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
|
|
immediately before the SLP_EN bit is set, as per the ACPI specification.
|
|
Luming Yu, BZ 1653.
|
|
|
|
Implemented a fix to disable unknown GPEs (2nd version). Now always
|
|
disable
|
|
the GPE, even if ACPICA thinks that that it is already disabled. It is
|
|
possible that the AML or some other code has enabled the GPE unbeknownst
|
|
to
|
|
the ACPICA code.
|
|
|
|
Fixed a problem with the Field operator where zero-length fields would
|
|
return
|
|
an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
|
|
ASL
|
|
field declarations in Field(), BankField(), and IndexField(). BZ 10606.
|
|
|
|
Implemented a fix for the Load operator, now load the table at the
|
|
namespace
|
|
root. This reverts a change introduced in version 20071019. The table is
|
|
now
|
|
loaded at the namespace root even though this goes against the ACPI
|
|
specification. This provides compatibility with other ACPI
|
|
implementations.
|
|
The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
|
|
Ming.
|
|
|
|
Fixed a problem where ACPICA would not Load() tables with unusual
|
|
signatures.
|
|
Now ignore ACPI table signature for Load() operator. Only "SSDT" is
|
|
acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
|
|
Therefore, signature validation is worthless. Apparently MS ACPI accepts
|
|
such
|
|
signatures, ACPICA must be compatible. BZ 10454.
|
|
|
|
Fixed a possible negative array index in AcpiUtValidateException. Added
|
|
NULL
|
|
fields to the exception string arrays to eliminate a -1 subtraction on
|
|
the
|
|
SubStatus field.
|
|
|
|
Updated the debug tracking macros to reduce overall code and data size.
|
|
Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
|
|
instead of pointers to static strings. Jan Beulich and Bob Moore.
|
|
|
|
Implemented argument count checking in control method invocation via
|
|
AcpiEvaluateObject. Now emit an error if too few arguments, warning if
|
|
too
|
|
many. This applies only to extern programmatic control method execution,
|
|
not
|
|
method-to-method calls within the AML. Lin Ming.
|
|
|
|
Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
|
|
no
|
|
longer needed, especially with the removal of 16-bit support. It was
|
|
replaced
|
|
mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
|
|
bit
|
|
on
|
|
32/64-bit platforms is required.
|
|
|
|
Added the C const qualifier for appropriate string constants -- mostly
|
|
MODULE_NAME and printf format strings. Jan Beulich.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has a
|
|
much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
|
|
Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
|
|
Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Implemented ACPI table revision ID validation in the disassembler. Zero
|
|
is
|
|
always invalid. For DSDTs, the ID controls the interpreter integer width.
|
|
1
|
|
means 32-bit and this is unusual. 2 or greater is 64-bit.
|
|
|
|
----------------------------------------
|
|
21 March 2008. Summary of changes for version 20080321:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented an additional change to the GPE support in order to suppress
|
|
spurious or stray GPEs. The AcpiEvDisableGpe function will now
|
|
permanently
|
|
disable incoming GPEs that are neither enabled nor disabled -- meaning
|
|
that
|
|
the GPE is unknown to the system. This should prevent future interrupt
|
|
floods
|
|
from that GPE. BZ 6217 (Zhang Rui)
|
|
|
|
Fixed a problem where NULL package elements were not returned to the
|
|
AcpiEvaluateObject interface correctly. The element was simply ignored
|
|
instead of returning a NULL ACPI_OBJECT package element, potentially
|
|
causing
|
|
a buffer overflow and/or confusing the caller who expected a fixed number
|
|
of
|
|
elements. BZ 10132 (Lin Ming, Bob Moore)
|
|
|
|
Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
|
|
Dword,
|
|
Qword), Field, BankField, and IndexField operators when invoked from
|
|
inside
|
|
an executing control method. In this case, these operators created
|
|
namespace
|
|
nodes that were incorrectly left marked as permanent nodes instead of
|
|
temporary nodes. This could cause a problem if there is race condition
|
|
between an exiting control method and a running namespace walk. (Reported
|
|
by
|
|
Linn Crosetto)
|
|
|
|
Fixed a problem where the CreateField and CreateXXXField operators would
|
|
incorrectly allow duplicate names (the name of the field) with no
|
|
exception
|
|
generated.
|
|
|
|
Implemented several changes for Notify handling. Added support for new
|
|
Notify
|
|
values (ACPI 2.0+) and improved the Notify debug output. Notify on
|
|
PowerResource objects is no longer allowed, as per the ACPI
|
|
specification.
|
|
(Bob Moore, Zhang Rui)
|
|
|
|
All Reference Objects returned via the AcpiEvaluateObject interface are
|
|
now
|
|
marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
|
|
for
|
|
NULL objects - either NULL package elements or unresolved named
|
|
references.
|
|
|
|
Fixed a problem where an extraneous debug message was produced for
|
|
package
|
|
objects (when debugging enabled). The message "Package List length larger
|
|
than NumElements count" is now produced in the correct case, and is now
|
|
an
|
|
error message rather than a debug message. Added a debug message for the
|
|
opposite case, where NumElements is larger than the Package List (the
|
|
package
|
|
will be padded out with NULL elements as per the ACPI spec.)
|
|
|
|
Implemented several improvements for the output of the ASL "Debug" object
|
|
to
|
|
clarify and keep all data for a given object on one output line.
|
|
|
|
Fixed two size calculation issues with the variable-length Start
|
|
Dependent
|
|
resource descriptor.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
|
|
Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
|
|
Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed a problem with the use of the Switch operator where execution of
|
|
the
|
|
containing method by multiple concurrent threads could cause an
|
|
AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
|
|
actual Switch opcode, it must be simulated with local named temporary
|
|
variables and if/else pairs. The solution chosen was to mark any method
|
|
that
|
|
uses Switch as Serialized, thus preventing multiple thread entries. BZ
|
|
469.
|
|
|
|
----------------------------------------
|
|
13 February 2008. Summary of changes for version 20080213:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented another MS compatibility design change for GPE/Notify
|
|
handling.
|
|
GPEs are now cleared/enabled asynchronously to allow all pending notifies
|
|
to
|
|
complete first. It is expected that the OSL will queue the enable request
|
|
behind all pending notify requests (may require changes to the local host
|
|
OSL
|
|
in AcpiOsExecute). Alexey Starikovskiy.
|
|
|
|
Fixed a problem where buffer and package objects passed as arguments to a
|
|
control method via the external AcpiEvaluateObject interface could cause
|
|
an
|
|
AE_AML_INTERNAL exception depending on the order and type of operators
|
|
executed by the target control method.
|
|
|
|
Fixed a problem where resource descriptor size optimization could cause a
|
|
problem when a _CRS resource template is passed to a _SRS method. The
|
|
_SRS
|
|
resource template must use the same descriptors (with the same size) as
|
|
returned from _CRS. This change affects the following resource
|
|
descriptors:
|
|
IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
|
|
9487)
|
|
|
|
Fixed a problem where a CopyObject to RegionField, BankField, and
|
|
IndexField
|
|
objects did not perform an implicit conversion as it should. These types
|
|
must
|
|
retain their initial type permanently as per the ACPI specification.
|
|
However,
|
|
a CopyObject to all other object types should not perform an implicit
|
|
conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
|
|
|
|
Fixed a problem with the AcpiGetDevices interface where the mechanism to
|
|
match device CIDs did not examine the entire list of available CIDs, but
|
|
instead aborted on the first non-matching CID. Andrew Patterson.
|
|
|
|
Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
|
|
was
|
|
inadvertently changed to return a 16-bit value instead of a 32-bit value,
|
|
truncating the upper dword of a 64-bit value. This macro is only used to
|
|
display debug output, so no incorrect calculations were made. Also,
|
|
reimplemented the macro so that a 64-bit shift is not performed by
|
|
inefficient compilers.
|
|
|
|
Added missing va_end statements that should correspond with each va_start
|
|
statement.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
|
|
Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
|
|
Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Implemented full disassembler support for the following new ACPI tables:
|
|
BERT, EINJ, and ERST. Implemented partial disassembler support for the
|
|
complicated HEST table. These tables support the Windows Hardware Error
|
|
Architecture (WHEA).
|
|
|
|
----------------------------------------
|
|
23 January 2008. Summary of changes for version 20080123:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added the 2008 copyright to all module headers and signons. This affects
|
|
virtually every file in the ACPICA core subsystem, the iASL compiler, and
|
|
the tools/utilities.
|
|
|
|
Fixed a problem with the SizeOf operator when used with Package and
|
|
Buffer
|
|
objects. These objects have deferred execution for some arguments, and
|
|
the
|
|
execution is now completed before the SizeOf is executed. This problem
|
|
caused
|
|
unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
|
|
BZ
|
|
9558
|
|
|
|
Implemented an enhancement to the interpreter "slack mode". In the
|
|
absence
|
|
of
|
|
an explicit return or an implicitly returned object from the last
|
|
executed
|
|
opcode, a control method will now implicitly return an integer of value 0
|
|
for
|
|
Microsoft compatibility. (Lin Ming) BZ 392
|
|
|
|
Fixed a problem with the Load operator where an exception was not
|
|
returned
|
|
in
|
|
the case where the table is already loaded. (Lin Ming) BZ 463
|
|
|
|
Implemented support for the use of DDBHandles as an Indexed Reference, as
|
|
per
|
|
the ACPI spec. (Lin Ming) BZ 486
|
|
|
|
Implemented support for UserTerm (Method invocation) for the Unload
|
|
operator
|
|
as per the ACPI spec. (Lin Ming) BZ 580
|
|
|
|
Fixed a problem with the LoadTable operator where the OemId and
|
|
OemTableId
|
|
input strings could cause unexpected failures if they were shorter than
|
|
the
|
|
maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
|
|
|
|
Implemented support for UserTerm (Method invocation) for the Unload
|
|
operator
|
|
as per the ACPI spec. (Lin Ming) BZ 580
|
|
|
|
Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
|
|
HEST,
|
|
IBFT, UEFI, WDAT. Disassembler support is forthcoming.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
|
|
Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
|
|
Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Implemented support in the disassembler for checksum validation on
|
|
incoming
|
|
binary DSDTs and SSDTs. If incorrect, a message is displayed within the
|
|
table
|
|
header dump at the start of the disassembly.
|
|
|
|
Implemented additional debugging information in the namespace listing
|
|
file
|
|
created during compilation. In addition to the namespace hierarchy, the
|
|
full
|
|
pathname to each namespace object is displayed.
|
|
|
|
Fixed a problem with the disassembler where invalid ACPI tables could
|
|
cause
|
|
faults or infinite loops.
|
|
|
|
Fixed an unexpected parse error when using the optional "parameter types"
|
|
list in a control method declaration. (Lin Ming) BZ 397
|
|
|
|
Fixed a problem where two External declarations with the same name did
|
|
not
|
|
cause an error (Lin Ming) BZ 509
|
|
|
|
Implemented support for full TermArgs (adding Argx, Localx and method
|
|
invocation) for the ParameterData parameter to the LoadTable operator.
|
|
(Lin
|
|
Ming) BZ 583,587
|
|
|
|
----------------------------------------
|
|
19 December 2007. Summary of changes for version 20071219:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented full support for deferred execution for the TermArg string
|
|
arguments for DataTableRegion. This enables forward references and full
|
|
operand resolution for the three string arguments. Similar to
|
|
OperationRegion
|
|
deferred argument execution.) Lin Ming. BZ 430
|
|
|
|
Implemented full argument resolution support for the BankValue argument
|
|
to
|
|
BankField. Previously, only constants were supported, now any TermArg may
|
|
be
|
|
used. Lin Ming BZ 387, 393
|
|
|
|
Fixed a problem with AcpiGetDevices where the search of a branch of the
|
|
device tree could be terminated prematurely. In accordance with the ACPI
|
|
specification, the search down the current branch is terminated if a
|
|
device
|
|
is both not present and not functional (instead of just not present.)
|
|
Yakui
|
|
Zhao.
|
|
|
|
Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
|
|
if
|
|
the underlying AML code changed the GPE enable registers. Now, any
|
|
unknown
|
|
incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
|
|
disabled
|
|
instead of simply ignored. Rui Zhang.
|
|
|
|
Fixed a problem with Index Fields where the Index register was
|
|
incorrectly
|
|
limited to a maximum of 32 bits. Now any size may be used.
|
|
|
|
Fixed a couple memory leaks associated with "implicit return" objects
|
|
when
|
|
the AML Interpreter slack mode is enabled. Lin Ming BZ 349
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
|
|
Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
|
|
Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
|
|
|
|
----------------------------------------
|
|
14 November 2007. Summary of changes for version 20071114:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented event counters for each of the Fixed Events, the ACPI SCI
|
|
(interrupt) itself, and control methods executed. Named
|
|
AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
|
|
These
|
|
should be useful for debugging and statistics.
|
|
|
|
Implemented a new external interface, AcpiGetStatistics, to retrieve the
|
|
contents of the various event counters. Returns the current values for
|
|
AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
|
|
AcpiMethodCount. The interface can be expanded in the future if new
|
|
counters
|
|
are added. Device drivers should use this interface rather than access
|
|
the
|
|
counters directly.
|
|
|
|
Fixed a problem with the FromBCD and ToBCD operators. With some
|
|
compilers,
|
|
the ShortDivide function worked incorrectly, causing problems with the
|
|
BCD
|
|
functions with large input values. A truncation from 64-bit to 32-bit
|
|
inadvertently occurred. Internal BZ 435. Lin Ming
|
|
|
|
Fixed a problem with Index references passed as method arguments.
|
|
References
|
|
passed as arguments to control methods were dereferenced immediately
|
|
(before
|
|
control was passed to the called method). The references are now
|
|
correctly
|
|
passed directly to the called method. BZ 5389. Lin Ming
|
|
|
|
Fixed a problem with CopyObject used in conjunction with the Index
|
|
operator.
|
|
The reference was incorrectly dereferenced before the copy. The reference
|
|
is
|
|
now correctly copied. BZ 5391. Lin Ming
|
|
|
|
Fixed a problem with Control Method references within Package objects.
|
|
These
|
|
references are now correctly generated. This completes the package
|
|
construction overhaul that began in version 20071019.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
|
|
Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
|
|
Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
The AcpiExec utility now installs handlers for all of the predefined
|
|
Operation Region types. New types supported are: PCI_Config, CMOS, and
|
|
PCIBARTarget.
|
|
|
|
Fixed a problem with the 64-bit version of AcpiExec where the extended
|
|
(64-
|
|
bit) address fields for the DSDT and FACS within the FADT were not being
|
|
used, causing truncation of the upper 32-bits of these addresses. Lin
|
|
Ming
|
|
and Bob Moore
|
|
|
|
----------------------------------------
|
|
19 October 2007. Summary of changes for version 20071019:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem with the Alias operator when the target of the alias is a
|
|
named ASL operator that opens a new scope -- Scope, Device,
|
|
PowerResource,
|
|
Processor, and ThermalZone. In these cases, any children of the original
|
|
operator could not be accessed via the alias, potentially causing
|
|
unexpected
|
|
AE_NOT_FOUND exceptions. (BZ 9067)
|
|
|
|
Fixed a problem with the Package operator where all named references were
|
|
created as object references and left otherwise unresolved. According to
|
|
the
|
|
ACPI specification, a Package can only contain Data Objects or references
|
|
to
|
|
control methods. The implication is that named references to Data Objects
|
|
(Integer, Buffer, String, Package, BufferField, Field) should be resolved
|
|
immediately upon package creation. This is the approach taken with this
|
|
change. References to all other named objects (Methods, Devices, Scopes,
|
|
etc.) are all now properly created as reference objects. (BZ 5328)
|
|
|
|
Reverted a change to Notify handling that was introduced in version
|
|
20070508. This version changed the Notify handling from asynchronous to
|
|
fully synchronous (Device driver Notify handling with respect to the
|
|
Notify
|
|
ASL operator). It was found that this change caused more problems than it
|
|
solved and was removed by most users.
|
|
|
|
Fixed a problem with the Increment and Decrement operators where the type
|
|
of
|
|
the target object could be unexpectedly and incorrectly changed. (BZ 353)
|
|
Lin Ming.
|
|
|
|
Fixed a problem with the Load and LoadTable operators where the table
|
|
location within the namespace was ignored. Instead, the table was always
|
|
loaded into the root or current scope. Lin Ming.
|
|
|
|
Fixed a problem with the Load operator when loading a table from a buffer
|
|
object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
|
|
|
|
Fixed a problem with the Debug object where a store of a DdbHandle
|
|
reference
|
|
object to the Debug object could cause a fault.
|
|
|
|
Added a table checksum verification for the Load operator, in the case
|
|
where
|
|
the load is from a buffer. (BZ 578).
|
|
|
|
Implemented additional parameter validation for the LoadTable operator.
|
|
The
|
|
length of the input strings SignatureString, OemIdString, and OemTableId
|
|
are
|
|
now checked for maximum lengths. (BZ 582) Lin Ming.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
|
|
Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
|
|
Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem where if a single file was specified and the file did not
|
|
exist, no error message was emitted. (Introduced with wildcard support in
|
|
version 20070917.)
|
|
|
|
----------------------------------------
|
|
19 September 2007. Summary of changes for version 20070919:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Designed and implemented new external interfaces to install and remove
|
|
handlers for ACPI table-related events. Current events that are defined
|
|
are
|
|
LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
|
|
they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
|
|
AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
|
|
|
|
Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
|
|
(acpi_serialized option on Linux) could cause some systems to hang during
|
|
initialization. (Bob Moore) BZ 8171
|
|
|
|
Fixed a problem where objects of certain types (Device, ThermalZone,
|
|
Processor, PowerResource) can be not found if they are declared and
|
|
referenced from within the same control method (Lin Ming) BZ 341
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
|
|
Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
|
|
Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented support to allow multiple files to be compiled/disassembled
|
|
in
|
|
a
|
|
single invocation. This includes command line wildcard support for both
|
|
the
|
|
Windows and Unix versions of the compiler. This feature simplifies the
|
|
disassembly and compilation of multiple ACPI tables in a single
|
|
directory.
|
|
|
|
----------------------------------------
|
|
08 May 2007. Summary of changes for version 20070508:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a Microsoft compatibility design change for the handling of
|
|
the
|
|
Notify AML operator. Previously, notify handlers were dispatched and
|
|
executed completely asynchronously in a deferred thread. The new design
|
|
still executes the notify handlers in a different thread, but the
|
|
original
|
|
thread that executed the Notify() now waits at a synchronization point
|
|
for
|
|
the notify handler to complete. Some machines depend on a synchronous
|
|
Notify
|
|
operator in order to operate correctly.
|
|
|
|
Implemented support to allow Package objects to be passed as method
|
|
arguments to the external AcpiEvaluateObject interface. Previously, this
|
|
would return the AE_NOT_IMPLEMENTED exception. This feature had not been
|
|
implemented since there were no reserved control methods that required it
|
|
until recently.
|
|
|
|
Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
|
|
that
|
|
contained invalid non-zero values in reserved fields could cause later
|
|
failures because these fields have meaning in later revisions of the
|
|
FADT.
|
|
For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
|
|
fields
|
|
are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
|
|
|
|
Fixed a problem where the Global Lock handle was not properly updated if
|
|
a
|
|
thread that acquired the Global Lock via executing AML code then
|
|
attempted
|
|
to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
|
|
Joe
|
|
Liu.
|
|
|
|
Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
|
|
could be corrupted if the interrupt being removed was at the head of the
|
|
list. Reported by Linn Crosetto.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
|
|
Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
|
|
Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
|
|
|
|
----------------------------------------
|
|
20 March 2007. Summary of changes for version 20070320:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a change to the order of interpretation and evaluation of AML
|
|
operand objects within the AML interpreter. The interpreter now evaluates
|
|
operands in the order that they appear in the AML stream (and the
|
|
corresponding ASL code), instead of in the reverse order (after the
|
|
entire
|
|
operand list has been parsed). The previous behavior caused several
|
|
subtle
|
|
incompatibilities with the Microsoft AML interpreter as well as being
|
|
somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
|
|
|
|
Implemented a change to the ACPI Global Lock support. All interfaces to
|
|
the
|
|
global lock now allow the same thread to acquire the lock multiple times.
|
|
This affects the AcpiAcquireGlobalLock external interface to the global
|
|
lock
|
|
as well as the internal use of the global lock to support AML fields -- a
|
|
control method that is holding the global lock can now simultaneously
|
|
access
|
|
AML fields that require global lock protection. Previously, in both
|
|
cases,
|
|
this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
|
|
to
|
|
AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
|
|
Controller. There is no change to the behavior of the AML Acquire
|
|
operator,
|
|
as this can already be used to acquire a mutex multiple times by the same
|
|
thread. BZ 8066. With assistance from Alexey Starikovskiy.
|
|
|
|
Fixed a problem where invalid objects could be referenced in the AML
|
|
Interpreter after error conditions. During operand evaluation, ensure
|
|
that
|
|
the internal "Return Object" field is cleared on error and only valid
|
|
pointers are stored there. Caused occasional access to deleted objects
|
|
that
|
|
resulted in "large reference count" warning messages. Valery Podrezov.
|
|
|
|
Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
|
|
on
|
|
deeply nested control method invocations. BZ 7873, local BZ 487. Valery
|
|
Podrezov.
|
|
|
|
Fixed an internal problem with the handling of result objects on the
|
|
interpreter result stack. BZ 7872. Valery Podrezov.
|
|
|
|
Removed obsolete code that handled the case where AML_NAME_OP is the
|
|
target
|
|
of a reference (Reference.Opcode). This code was no longer necessary. BZ
|
|
7874. Valery Podrezov.
|
|
|
|
Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
|
|
was
|
|
a
|
|
remnant from the previously discontinued 16-bit support.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
|
|
Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
|
|
Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
|
|
|
|
----------------------------------------
|
|
26 January 2007. Summary of changes for version 20070126:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added the 2007 copyright to all module headers and signons. This affects
|
|
virtually every file in the ACPICA core subsystem, the iASL compiler, and
|
|
the utilities.
|
|
|
|
Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
|
|
during a table load. A bad pointer was passed in the case where the DSDT
|
|
is
|
|
overridden, causing a fault in this case.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
|
|
Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
|
|
Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
|
|
|
|
----------------------------------------
|
|
15 December 2006. Summary of changes for version 20061215:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Support for 16-bit ACPICA has been completely removed since it is no
|
|
longer
|
|
necessary and it clutters the code. All 16-bit macros, types, and
|
|
conditional compiles have been removed, cleaning up and simplifying the
|
|
code
|
|
across the entire subsystem. DOS support is no longer needed since the
|
|
bootable Linux firmware kit is now available.
|
|
|
|
The handler for the Global Lock is now removed during AcpiTerminate to
|
|
enable a clean subsystem restart, via the implementation of the
|
|
AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
|
|
HP)
|
|
|
|
Implemented enhancements to the multithreading support within the
|
|
debugger
|
|
to enable improved multithreading debugging and evaluation of the
|
|
subsystem.
|
|
(Valery Podrezov)
|
|
|
|
Debugger: Enhanced the Statistics/Memory command to emit the total
|
|
(maximum)
|
|
memory used during the execution, as well as the maximum memory consumed
|
|
by
|
|
each of the various object types. (Valery Podrezov)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
|
|
Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
|
|
Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
AcpiExec: Implemented a new option (-m) to display full memory use
|
|
statistics upon subsystem/program termination. (Valery Podrezov)
|
|
|
|
----------------------------------------
|
|
09 November 2006. Summary of changes for version 20061109:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Optimized the Load ASL operator in the case where the source operand is
|
|
an
|
|
operation region. Simply map the operation region memory, instead of
|
|
performing a bytewise read. (Region must be of type SystemMemory, see
|
|
below.)
|
|
|
|
Fixed the Load ASL operator for the case where the source operand is a
|
|
region field. A buffer object is also allowed as the source operand. BZ
|
|
480
|
|
|
|
Fixed a problem where the Load ASL operator allowed the source operand to
|
|
be
|
|
an operation region of any type. It is now restricted to regions of type
|
|
SystemMemory, as per the ACPI specification. BZ 481
|
|
|
|
Additional cleanup and optimizations for the new Table Manager code.
|
|
|
|
AcpiEnable will now fail if all of the required ACPI tables are not
|
|
loaded
|
|
(FADT, FACS, DSDT). BZ 477
|
|
|
|
Added #pragma pack(8/4) to acobject.h to ensure that the structures in
|
|
this
|
|
header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
|
|
manually optimized to be aligned and will not work if it is byte-packed.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
|
|
Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
|
|
Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed a problem where the presence of the _OSI predefined control method
|
|
within complex expressions could cause an internal compiler error.
|
|
|
|
AcpiExec: Implemented full region support for multiple address spaces.
|
|
SpaceId is now part of the REGION object. BZ 429
|
|
|
|
----------------------------------------
|
|
11 October 2006. Summary of changes for version 20061011:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Completed an AML interpreter performance enhancement for control method
|
|
execution. Previously a 2-pass parse/execution, control methods are now
|
|
completely parsed and executed in a single pass. This improves overall
|
|
interpreter performance by ~25%, reduces code size, and reduces CPU stack
|
|
use. (Valery Podrezov + interpreter changes in version 20051202 that
|
|
eliminated namespace loading during the pass one parse.)
|
|
|
|
Implemented _CID support for PCI Root Bridge detection. If the _HID does
|
|
not
|
|
match the predefined PCI Root Bridge IDs, the _CID list (if present) is
|
|
now
|
|
obtained and also checked for an ID match.
|
|
|
|
Implemented additional support for the PCI _ADR execution: upsearch until
|
|
a
|
|
device scope is found before executing _ADR. This allows PCI_Config
|
|
operation regions to be declared locally within control methods
|
|
underneath
|
|
PCI device objects.
|
|
|
|
Fixed a problem with a possible race condition between threads executing
|
|
AcpiWalkNamespace and the AML interpreter. This condition was removed by
|
|
modifying AcpiWalkNamespace to (by default) ignore all temporary
|
|
namespace
|
|
entries created during any concurrent control method execution. An
|
|
additional namespace race condition is known to exist between
|
|
AcpiWalkNamespace and the Load/Unload ASL operators and is still under
|
|
investigation.
|
|
|
|
Restructured the AML ParseLoop function, breaking it into several
|
|
subfunctions in order to reduce CPU stack use and improve
|
|
maintainability.
|
|
(Mikhail Kouzmich)
|
|
|
|
AcpiGetHandle: Fix for parameter validation to detect invalid
|
|
combinations
|
|
of prefix handle and pathname. BZ 478
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
|
|
Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
|
|
Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Ported the -g option (get local ACPI tables) to the new ACPICA Table
|
|
Manager
|
|
to restore original behavior.
|
|
|
|
----------------------------------------
|
|
27 September 2006. Summary of changes for version 20060927:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
|
|
These functions now use a spinlock for mutual exclusion and the interrupt
|
|
level indication flag is not needed.
|
|
|
|
Fixed a problem with the Global Lock where the lock could appear to be
|
|
obtained before it is actually obtained. The global lock semaphore was
|
|
inadvertently created with one unit instead of zero units. (BZ 464)
|
|
Fiodor
|
|
Suietov.
|
|
|
|
Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
|
|
during
|
|
a read from a buffer or region field. (BZ 458) Fiodor Suietov.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
|
|
Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
|
|
Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed a compilation problem with the pre-defined Resource Descriptor
|
|
field
|
|
names where an "object does not exist" error could be incorrectly
|
|
generated
|
|
if the parent ResourceTemplate pathname places the template within a
|
|
different namespace scope than the current scope. (BZ 7212)
|
|
|
|
Fixed a problem where the compiler could hang after syntax errors
|
|
detected
|
|
in an ElseIf construct. (BZ 453)
|
|
|
|
Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
|
|
operator. An incorrect output filename was produced when this parameter
|
|
was
|
|
a null string (""). Now, the original input filename is used as the AML
|
|
output filename, with an ".aml" extension.
|
|
|
|
Implemented a generic batch command mode for the AcpiExec utility
|
|
(execute
|
|
any AML debugger command) (Valery Podrezov).
|
|
|
|
----------------------------------------
|
|
12 September 2006. Summary of changes for version 20060912:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Enhanced the implementation of the "serialized mode" of the interpreter
|
|
(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
|
|
specified, instead of creating a serialization semaphore per control
|
|
method,
|
|
the interpreter lock is simply no longer released before a blocking
|
|
operation during control method execution. This effectively makes the AML
|
|
Interpreter single-threaded. The overhead of a semaphore per-method is
|
|
eliminated.
|
|
|
|
Fixed a regression where an error was no longer emitted if a control
|
|
method
|
|
attempts to create 2 objects of the same name. This once again returns
|
|
AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
|
|
that
|
|
will dynamically serialize the control method to possible prevent future
|
|
errors. (BZ 440)
|
|
|
|
Integrated a fix for a problem with PCI Express HID detection in the PCI
|
|
Config Space setup procedure. (BZ 7145)
|
|
|
|
Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
|
|
AcpiHwInitialize function - the FADT registers are now validated when the
|
|
table is loaded.
|
|
|
|
Added two new warnings during FADT verification - 1) if the FADT is
|
|
larger
|
|
than the largest known FADT version, and 2) if there is a mismatch
|
|
between
|
|
a
|
|
32-bit block address and the 64-bit X counterpart (when both are non-
|
|
zero.)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
|
|
Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
|
|
Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed a problem with the implementation of the Switch() operator where
|
|
the
|
|
temporary variable was declared too close to the actual Switch, instead
|
|
of
|
|
at method level. This could cause a problem if the Switch() operator is
|
|
within a while loop, causing an error on the second iteration. (BZ 460)
|
|
|
|
Disassembler - fix for error emitted for unknown type for target of scope
|
|
operator. Now, ignore it and continue.
|
|
|
|
Disassembly of an FADT now verifies the input FADT and reports any errors
|
|
found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
|
|
|
|
Disassembly of raw data buffers with byte initialization data now
|
|
prefixes
|
|
each output line with the current buffer offset.
|
|
|
|
Disassembly of ASF! table now includes all variable-length data fields at
|
|
the end of some of the subtables.
|
|
|
|
The disassembler now emits a comment if a buffer appears to be a
|
|
ResourceTemplate, but cannot be disassembled as such because the EndTag
|
|
does
|
|
not appear at the very end of the buffer.
|
|
|
|
AcpiExec - Added the "-t" command line option to enable the serialized
|
|
mode
|
|
of the AML interpreter.
|
|
|
|
----------------------------------------
|
|
31 August 2006. Summary of changes for version 20060831:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Miscellaneous fixes for the Table Manager:
|
|
- Correctly initialize internal common FADT for all 64-bit "X" fields
|
|
- Fixed a couple table mapping issues during table load
|
|
- Fixed a couple alignment issues for IA64
|
|
- Initialize input array to zero in AcpiInitializeTables
|
|
- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
|
|
AcpiGetTableByIndex
|
|
|
|
Change for GPE support: when a "wake" GPE is received, all wake GPEs are
|
|
now
|
|
immediately disabled to prevent the waking GPE from firing again and to
|
|
prevent other wake GPEs from interrupting the wake process.
|
|
|
|
Added the AcpiGpeCount global that tracks the number of processed GPEs,
|
|
to
|
|
be used for debugging systems with a large number of ACPI interrupts.
|
|
|
|
Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
|
|
both the ACPICA headers and the disassembler.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
|
|
Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
|
|
Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler support for the DMAR ACPI table.
|
|
|
|
----------------------------------------
|
|
23 August 2006. Summary of changes for version 20060823:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The Table Manager component has been completely redesigned and
|
|
reimplemented. The new design is much simpler, and reduces the overall
|
|
code
|
|
and data size of the kernel-resident ACPICA by approximately 5%. Also, it
|
|
is
|
|
now possible to obtain the ACPI tables very early during kernel
|
|
initialization, even before dynamic memory management is initialized.
|
|
(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
|
|
|
|
Obsolete ACPICA interfaces:
|
|
|
|
- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
|
|
init
|
|
time).
|
|
- AcpiLoadTable: Not needed.
|
|
- AcpiUnloadTable: Not needed.
|
|
|
|
New ACPICA interfaces:
|
|
|
|
- AcpiInitializeTables: Must be called before the table manager can be
|
|
used.
|
|
- AcpiReallocateRootTable: Used to transfer the root table to dynamically
|
|
allocated memory after it becomes available.
|
|
- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
|
|
tables
|
|
in the RSDT/XSDT.
|
|
|
|
Other ACPICA changes:
|
|
|
|
- AcpiGetTableHeader returns the actual mapped table header, not a copy.
|
|
Use
|
|
AcpiOsUnmapMemory to free this mapping.
|
|
- AcpiGetTable returns the actual mapped table. The mapping is managed
|
|
internally and must not be deleted by the caller. Use of this interface
|
|
causes no additional dynamic memory allocation.
|
|
- AcpiFindRootPointer: Support for physical addressing has been
|
|
eliminated,
|
|
it appeared to be unused.
|
|
- The interface to AcpiOsMapMemory has changed to be consistent with the
|
|
other allocation interfaces.
|
|
- The interface to AcpiOsGetRootPointer has changed to eliminate
|
|
unnecessary
|
|
parameters.
|
|
- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
|
|
64-
|
|
bit platforms. Was previously 64 bits on all platforms.
|
|
- The interface to the ACPI Global Lock acquire/release macros have
|
|
changed
|
|
slightly since ACPICA no longer keeps a local copy of the FACS with a
|
|
constructed pointer to the actual global lock.
|
|
|
|
Porting to the new table manager:
|
|
|
|
- AcpiInitializeTables: Must be called once, and can be called anytime
|
|
during the OS initialization process. It allows the host to specify an
|
|
area
|
|
of memory to be used to store the internal version of the RSDT/XSDT (root
|
|
table). This allows the host to access ACPI tables before memory
|
|
management
|
|
is initialized and running.
|
|
- AcpiReallocateRootTable: Can be called after memory management is
|
|
running
|
|
to copy the root table to a dynamically allocated array, freeing up the
|
|
scratch memory specified in the call to AcpiInitializeTables.
|
|
- AcpiSubsystemInitialize: This existing interface is independent of the
|
|
Table Manager, and does not have to be called before the Table Manager
|
|
can
|
|
be used, it only must be called before the rest of ACPICA can be used.
|
|
- ACPI Tables: Some changes have been made to the names and structure of
|
|
the
|
|
actbl.h and actbl1.h header files and may require changes to existing
|
|
code.
|
|
For example, bitfields have been completely removed because of their lack
|
|
of
|
|
portability across C compilers.
|
|
- Update interfaces to the Global Lock acquire/release macros if local
|
|
versions are used. (see acwin.h)
|
|
|
|
Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
|
|
|
|
New files: tbfind.c
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
|
|
Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
|
|
Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
No changes for this release.
|
|
|
|
----------------------------------------
|
|
21 July 2006. Summary of changes for version 20060721:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The full source code for the ASL test suite used to validate the iASL
|
|
compiler and the ACPICA core subsystem is being released with the ACPICA
|
|
source for the first time. The source is contained in a separate package
|
|
and
|
|
consists of over 1100 files that exercise all ASL/AML operators. The
|
|
package
|
|
should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
|
|
Fiodor
|
|
Suietov)
|
|
|
|
Completed a new design and implementation for support of the ACPI Global
|
|
Lock. On the OS side, the global lock is now treated as a standard AML
|
|
mutex. Previously, multiple OS threads could "acquire" the global lock
|
|
simultaneously. However, this could cause the BIOS to be starved out of
|
|
the
|
|
lock - especially in cases such as the Embedded Controller driver where
|
|
there is a tight coupling between the OS and the BIOS.
|
|
|
|
Implemented an optimization for the ACPI Global Lock interrupt mechanism.
|
|
The Global Lock interrupt handler no longer queues the execution of a
|
|
separate thread to signal the global lock semaphore. Instead, the
|
|
semaphore
|
|
is signaled directly from the interrupt handler.
|
|
|
|
Implemented support within the AML interpreter for package objects that
|
|
contain a larger AML length (package list length) than the package
|
|
element
|
|
count. In this case, the length of the package is truncated to match the
|
|
package element count. Some BIOS code apparently modifies the package
|
|
length
|
|
on the fly, and this change supports this behavior. Provides
|
|
compatibility
|
|
with the MS AML interpreter. (With assistance from Fiodor Suietov)
|
|
|
|
Implemented a temporary fix for the BankValue parameter of a Bank Field
|
|
to
|
|
support all constant values, now including the Zero and One opcodes.
|
|
Evaluation of this parameter must eventually be converted to a full
|
|
TermArg
|
|
evaluation. A not-implemented error is now returned (temporarily) for
|
|
non-
|
|
constant values for this parameter.
|
|
|
|
Fixed problem reports (Fiodor Suietov) integrated:
|
|
- Fix for premature object deletion after CopyObject on Operation Region
|
|
(BZ
|
|
350)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total
|
|
Debug Version: 160.9K Code, 65.1K Data, 226.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
|
|
Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
No changes for this release.
|
|
|
|
----------------------------------------
|
|
07 July 2006. Summary of changes for version 20060707:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
|
|
that do not allow the initialization of address pointers within packed
|
|
structures - even though the hardware itself may support misaligned
|
|
transfers. Some of the debug data structures are packed by default to
|
|
minimize size.
|
|
|
|
Added an error message for the case where AcpiOsGetThreadId() returns
|
|
zero.
|
|
A non-zero value is required by the core ACPICA code to ensure the proper
|
|
operation of AML mutexes and recursive control methods.
|
|
|
|
The DSDT is now the only ACPI table that determines whether the AML
|
|
interpreter is in 32-bit or 64-bit mode. Not really a functional change,
|
|
but
|
|
the hooks for per-table 32/64 switching have been removed from the code.
|
|
A
|
|
clarification to the ACPI specification is forthcoming in ACPI 3.0B.
|
|
|
|
Fixed a possible leak of an OwnerID in the error path of
|
|
AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
|
|
deletion to a single place in AcpiTbUninstallTable to correct possible
|
|
leaks
|
|
when using the AcpiTbDeleteTablesByType interface (with assistance from
|
|
Lance Ortiz.)
|
|
|
|
Fixed a problem with Serialized control methods where the semaphore
|
|
associated with the method could be over-signaled after multiple method
|
|
invocations.
|
|
|
|
Fixed two issues with the locking of the internal namespace data
|
|
structure.
|
|
Both the Unload() operator and AcpiUnloadTable interface now lock the
|
|
namespace during the namespace deletion associated with the table unload
|
|
(with assistance from Linn Crosetto.)
|
|
|
|
Fixed problem reports (Valery Podrezov) integrated:
|
|
- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
|
|
|
|
Fixed problem reports (Fiodor Suietov) integrated:
|
|
- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
|
|
- On Address Space handler deletion, needless deactivation call (BZ 374)
|
|
- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
|
|
375)
|
|
- Possible memory leak, Notify sub-objects of Processor, Power,
|
|
ThermalZone
|
|
(BZ 376)
|
|
- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
|
|
- Minimum Length of RSDT should be validated (BZ 379)
|
|
- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
|
|
Handler (BZ (380)
|
|
- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
|
|
loaded
|
|
(BZ 381)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
|
|
Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
|
|
Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed problem reports:
|
|
Compiler segfault when ASL contains a long (>1024) String declaration (BZ
|
|
436)
|
|
|
|
----------------------------------------
|
|
23 June 2006. Summary of changes for version 20060623:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
|
|
allows the type to be customized to the host OS for improved efficiency
|
|
(since a spinlock is usually a very small object.)
|
|
|
|
Implemented support for "ignored" bits in the ACPI registers. According
|
|
to
|
|
the ACPI specification, these bits should be preserved when writing the
|
|
registers via a read/modify/write cycle. There are 3 bits preserved in
|
|
this
|
|
manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
|
|
|
|
Implemented the initial deployment of new OSL mutex interfaces. Since
|
|
some
|
|
host operating systems have separate mutex and semaphore objects, this
|
|
feature was requested. The base code now uses mutexes (and the new mutex
|
|
interfaces) wherever a binary semaphore was used previously. However, for
|
|
the current release, the mutex interfaces are defined as macros to map
|
|
them
|
|
to the existing semaphore interfaces. Therefore, no OSL changes are
|
|
required
|
|
at this time. (See acpiosxf.h)
|
|
|
|
Fixed several problems with the support for the control method SyncLevel
|
|
parameter. The SyncLevel now works according to the ACPI specification
|
|
and
|
|
in concert with the Mutex SyncLevel parameter, since the current
|
|
SyncLevel
|
|
is a property of the executing thread. Mutual exclusion for control
|
|
methods
|
|
is now implemented with a mutex instead of a semaphore.
|
|
|
|
Fixed three instances of the use of the C shift operator in the bitfield
|
|
support code (exfldio.c) to avoid the use of a shift value larger than
|
|
the
|
|
target data width. The behavior of C compilers is undefined in this case
|
|
and
|
|
can cause unpredictable results, and therefore the case must be detected
|
|
and
|
|
avoided. (Fiodor Suietov)
|
|
|
|
Added an info message whenever an SSDT or OEM table is loaded dynamically
|
|
via the Load() or LoadTable() ASL operators. This should improve
|
|
debugging
|
|
capability since it will show exactly what tables have been loaded
|
|
(beyond
|
|
the tables present in the RSDT/XSDT.)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
|
|
Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
|
|
Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
No changes for this release.
|
|
|
|
----------------------------------------
|
|
08 June 2006. Summary of changes for version 20060608:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Converted the locking mutex used for the ACPI hardware to a spinlock.
|
|
This
|
|
change should eliminate all problems caused by attempting to acquire a
|
|
semaphore at interrupt level, and it means that all ACPICA external
|
|
interfaces that directly access the ACPI hardware can be safely called
|
|
from
|
|
interrupt level. OSL code that implements the semaphore interfaces should
|
|
be
|
|
able to eliminate any workarounds for being called at interrupt level.
|
|
|
|
Fixed a regression introduced in 20060526 where the ACPI device
|
|
initialization could be prematurely aborted with an AE_NOT_FOUND if a
|
|
device
|
|
did not have an optional _INI method.
|
|
|
|
Fixed an IndexField issue where a write to the Data Register should be
|
|
limited in size to the AccessSize (width) of the IndexField itself. (BZ
|
|
433,
|
|
Fiodor Suietov)
|
|
|
|
Fixed problem reports (Valery Podrezov) integrated:
|
|
- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
|
|
|
|
Fixed problem reports (Fiodor Suietov) integrated:
|
|
- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
|
|
|
|
Removed four global mutexes that were obsolete and were no longer being
|
|
used.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
|
|
Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
|
|
Current Release:
|
|
Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
|
|
Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Fixed a fault when using -g option (get tables from registry) on Windows
|
|
machines.
|
|
|
|
Fixed problem reports integrated:
|
|
- Generate error if CreateField NumBits parameter is zero. (BZ 405)
|
|
- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
|
|
Suietov)
|
|
- Global table revision override (-r) is ignored (BZ 413)
|
|
|
|
----------------------------------------
|
|
26 May 2006. Summary of changes for version 20060526:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Restructured, flattened, and simplified the internal interfaces for
|
|
namespace object evaluation - resulting in smaller code, less CPU stack
|
|
use,
|
|
and fewer interfaces. (With assistance from Mikhail Kouzmich)
|
|
|
|
Fixed a problem with the CopyObject operator where the first parameter
|
|
was
|
|
not typed correctly for the parser, interpreter, compiler, and
|
|
disassembler.
|
|
Caused various errors and unexpected behavior.
|
|
|
|
Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
|
|
produced incorrect results with some C compilers. Since the behavior of C
|
|
compilers when the shift value is larger than the datatype width is
|
|
apparently not well defined, the interpreter now detects this condition
|
|
and
|
|
simply returns zero as expected in all such cases. (BZ 395)
|
|
|
|
Fixed problem reports (Valery Podrezov) integrated:
|
|
- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
|
|
- Allow interpreter to handle nested method declarations (BZ 5361)
|
|
|
|
Fixed problem reports (Fiodor Suietov) integrated:
|
|
- AcpiTerminate doesn't free debug memory allocation list objects (BZ
|
|
355)
|
|
- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
|
|
356)
|
|
- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
|
|
- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
|
|
- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
|
|
- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
|
|
- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
|
|
- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
|
|
- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
|
|
365)
|
|
- Status of the Global Initialization Handler call not used (BZ 366)
|
|
- Incorrect object parameter to Global Initialization Handler (BZ 367)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
|
|
Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
|
|
Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Modified the parser to allow the names IO, DMA, and IRQ to be used as
|
|
namespace identifiers with no collision with existing resource descriptor
|
|
macro names. This provides compatibility with other ASL compilers and is
|
|
most useful for disassembly/recompilation of existing tables without
|
|
parse
|
|
errors. (With assistance from Thomas Renninger)
|
|
|
|
Disassembler: fixed an incorrect disassembly problem with the
|
|
DataTableRegion and CopyObject operators. Fixed a possible fault during
|
|
disassembly of some Alias operators.
|
|
|
|
----------------------------------------
|
|
12 May 2006. Summary of changes for version 20060512:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Replaced the AcpiOsQueueForExecution interface with a new interface named
|
|
AcpiOsExecute. The major difference is that the new interface does not
|
|
have
|
|
a Priority parameter, this appeared to be useless and has been replaced
|
|
by
|
|
a
|
|
Type parameter. The Type tells the host what type of execution is being
|
|
requested, such as global lock handler, notify handler, GPE handler, etc.
|
|
This allows the host to queue and execute the request as appropriate for
|
|
the
|
|
request type, possibly using different work queues and different
|
|
priorities
|
|
for the various request types. This enables fixes for multithreading
|
|
deadlock problems such as BZ #5534, and will require changes to all
|
|
existing
|
|
OS interface layers. (Alexey Starikovskiy and Bob Moore)
|
|
|
|
Fixed a possible memory leak associated with the support for the so-
|
|
called
|
|
"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
|
|
Suietov)
|
|
|
|
Fixed a problem with the Load() operator where a table load from an
|
|
operation region could overwrite an internal table buffer by up to 7
|
|
bytes
|
|
and cause alignment faults on IPF systems. (With assistance from Luming
|
|
Yu)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
|
|
Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
|
|
Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
|
|
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Implemented support to cross reference the internal
|
|
namespace
|
|
and automatically generate ASL External() statements for symbols not
|
|
defined
|
|
within the current table being disassembled. This will simplify the
|
|
disassembly and recompilation of interdependent tables such as SSDTs
|
|
since
|
|
these statements will no longer have to be added manually.
|
|
|
|
Disassembler: Implemented experimental support to automatically detect
|
|
invocations of external control methods and generate appropriate
|
|
External()
|
|
statements. This is problematic because the AML cannot be correctly
|
|
parsed
|
|
until the number of arguments for each control method is known.
|
|
Currently,
|
|
standalone method invocations and invocations as the source operand of a
|
|
Store() statement are supported.
|
|
|
|
Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
|
|
LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
|
|
LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
|
|
more readable and likely closer to the original ASL source.
|
|
|
|
----------------------------------------
|
|
21 April 2006. Summary of changes for version 20060421:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Removed a device initialization optimization introduced in 20051216 where
|
|
the _STA method was not run unless an _INI was also present for the same
|
|
device. This optimization could cause problems because it could allow
|
|
_INI
|
|
methods to be run within a not-present device subtree. (If a not-present
|
|
device had no _INI, _STA would not be run, the not-present status would
|
|
not
|
|
be discovered, and the children of the device would be incorrectly
|
|
traversed.)
|
|
|
|
Implemented a new _STA optimization where namespace subtrees that do not
|
|
contain _INI are identified and ignored during device initialization.
|
|
Selectively running _STA can significantly improve boot time on large
|
|
machines (with assistance from Len Brown.)
|
|
|
|
Implemented support for the device initialization case where the returned
|
|
_STA flags indicate a device not-present but functioning. In this case,
|
|
_INI
|
|
is not run, but the device children are examined for presence, as per the
|
|
ACPI specification.
|
|
|
|
Implemented an additional change to the IndexField support in order to
|
|
conform to MS behavior. The value written to the Index Register is not
|
|
simply a byte offset, it is a byte offset in units of the access width of
|
|
the parent Index Field. (Fiodor Suietov)
|
|
|
|
Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
|
|
interface is called during the creation of all AML operation regions, and
|
|
allows the host OS to exert control over what addresses it will allow the
|
|
AML code to access. Operation Regions whose addresses are disallowed will
|
|
cause a runtime exception when they are actually accessed (will not
|
|
affect
|
|
or abort table loading.) See oswinxf or osunixxf for an example
|
|
implementation.
|
|
|
|
Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
|
|
interface allows the host OS to match the various "optional"
|
|
interface/behavior strings for the _OSI predefined control method as
|
|
appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
|
|
for an example implementation.
|
|
|
|
Restructured and corrected various problems in the exception handling
|
|
code
|
|
paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
|
|
(with assistance from Takayoshi Kochi.)
|
|
|
|
Modified the Linux source converter to ignore quoted string literals
|
|
while
|
|
converting identifiers from mixed to lower case. This will correct
|
|
problems
|
|
with the disassembler and other areas where such strings must not be
|
|
modified.
|
|
|
|
The ACPI_FUNCTION_* macros no longer require quotes around the function
|
|
name. This allows the Linux source converter to convert the names, now
|
|
that
|
|
the converter ignores quoted strings.
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
|
|
Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
|
|
Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
|
|
Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Implemented 3 new warnings for iASL, and implemented multiple warning
|
|
levels
|
|
(w2 flag).
|
|
|
|
1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
|
|
not
|
|
WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
|
|
check for the possible timeout, a warning is issued.
|
|
|
|
2) Useless operators: If an ASL operator does not specify an optional
|
|
target
|
|
operand and it also does not use the function return value from the
|
|
operator, a warning is issued since the operator effectively does
|
|
nothing.
|
|
|
|
3) Unreferenced objects: If a namespace object is created, but never
|
|
referenced, a warning is issued. This is a warning level 2 since there
|
|
are
|
|
cases where this is ok, such as when a secondary table is loaded that
|
|
uses
|
|
the unreferenced objects. Even so, care is taken to only flag objects
|
|
that
|
|
don't look like they will ever be used. For example, the reserved methods
|
|
(starting with an underscore) are usually not referenced because it is
|
|
expected that the OS will invoke them.
|
|
|
|
----------------------------------------
|
|
31 March 2006. Summary of changes for version 20060331:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented header file support for the following additional ACPI tables:
|
|
ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
|
|
support,
|
|
all current and known ACPI tables are now defined in the ACPICA headers
|
|
and
|
|
are available for use by device drivers and other software.
|
|
|
|
Implemented support to allow tables that contain ACPI names with invalid
|
|
characters to be loaded. Previously, this would cause the table load to
|
|
fail, but since there are several known cases of such tables on existing
|
|
machines, this change was made to enable ACPI support for them. Also,
|
|
this
|
|
matches the behavior of the Microsoft ACPI implementation.
|
|
|
|
Fixed a couple regressions introduced during the memory optimization in
|
|
the
|
|
20060317 release. The namespace node definition required additional
|
|
reorganization and an internal datatype that had been changed to 8-bit
|
|
was
|
|
restored to 32-bit. (Valery Podrezov)
|
|
|
|
Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
|
|
could be passed through to AcpiOsReleaseObject which is unexpected. Such
|
|
null pointers are now trapped and ignored, matching the behavior of the
|
|
previous implementation before the deployment of AcpiOsReleaseObject.
|
|
(Valery Podrezov, Fiodor Suietov)
|
|
|
|
Fixed a memory mapping leak during the deletion of a SystemMemory
|
|
operation
|
|
region where a cached memory mapping was not deleted. This became a
|
|
noticeable problem for operation regions that are defined within
|
|
frequently
|
|
used control methods. (Dana Meyers)
|
|
|
|
Reorganized the ACPI table header files into two main files: one for the
|
|
ACPI tables consumed by the ACPICA core, and another for the
|
|
miscellaneous
|
|
ACPI tables that are consumed by the drivers and other software. The
|
|
various
|
|
FADT definitions were merged into one common section and three different
|
|
tables (ACPI 1.0, 1.0+, and 2.0)
|
|
|
|
Example Code and Data Size: These are the sizes for the OS-independent
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
|
|
debug version of the code includes the debug output trace mechanism and
|
|
has
|
|
a much larger code and data size.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
|
|
Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
|
|
Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Disassembler: Implemented support to decode and format all non-AML ACPI
|
|
tables (tables other than DSDTs and SSDTs.) This includes the new tables
|
|
added to the ACPICA headers, therefore all current and known ACPI tables
|
|
are
|
|
supported.
|
|
|
|
Disassembler: The change to allow ACPI names with invalid characters also
|
|
enables the disassembly of such tables. Invalid characters within names
|
|
are
|
|
changed to '*' to make the name printable; the iASL compiler will still
|
|
generate an error for such names, however, since this is an invalid ACPI
|
|
character.
|
|
|
|
Implemented an option for AcpiXtract (-a) to extract all tables found in
|
|
the
|
|
input file. The default invocation extracts only the DSDTs and SSDTs.
|
|
|
|
Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
|
|
makefile for the AcpiXtract utility.
|
|
|
|
----------------------------------------
|
|
17 March 2006. Summary of changes for version 20060317:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented the use of a cache object for all internal namespace nodes.
|
|
Since there are about 1000 static nodes in a typical system, this will
|
|
decrease memory use for cache implementations that minimize per-
|
|
allocation
|
|
overhead (such as a slab allocator.)
|
|
|
|
Removed the reference count mechanism for internal namespace nodes, since
|
|
it
|
|
was deemed unnecessary. This reduces the size of each namespace node by
|
|
about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
|
|
case,
|
|
and 32 bytes for the 64-bit case.
|
|
|
|
Optimized several internal data structures to reduce object size on 64-
|
|
bit
|
|
platforms by packing data within the 64-bit alignment. This includes the
|
|
frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
|
|
instances corresponding to the namespace objects.
|
|
|
|
Added two new strings for the predefined _OSI method: "Windows 2001.1
|
|
SP1"
|
|
and "Windows 2006".
|
|
|
|
Split the allocation tracking mechanism out to a separate file, from
|
|
utalloc.c to uttrack.c. This mechanism appears to be only useful for
|
|
application-level code. Kernels may wish to not include uttrack.c in
|
|
distributions.
|
|
|
|
Removed all remnants of the obsolete ACPI_REPORT_* macros and the
|
|
associated
|
|
code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
|
|
macros.)
|
|
|
|
Code and Data Size: These are the sizes for the acpica.lib produced by
|
|
the
|
|
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
|
|
ACPI
|
|
driver or OSPM code. The debug version of the code includes the debug
|
|
output
|
|
trace mechanism and has a much larger code and data size. Note that these
|
|
values will vary depending on the efficiency of the compiler and the
|
|
compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
|
|
Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
|
|
Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler and Tools:
|
|
|
|
Implemented an ANSI C version of the acpixtract utility. This version
|
|
will
|
|
automatically extract the DSDT and all SSDTs from the input acpidump text
|
|
file and dump the binary output to separate files. It can also display a
|
|
summary of the input file including the headers for each table found and
|
|
will extract any single ACPI table, with any signature. (See
|
|
source/tools/acpixtract)
|
|
|
|
----------------------------------------
|
|
10 March 2006. Summary of changes for version 20060310:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Tagged all external interfaces to the subsystem with the new
|
|
ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
|
|
assist
|
|
kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
|
|
macro. The default definition is NULL.
|
|
|
|
Added the ACPI_THREAD_ID type for the return value from
|
|
AcpiOsGetThreadId.
|
|
This allows the host to define this as necessary to simplify kernel
|
|
integration. The default definition is ACPI_NATIVE_UINT.
|
|
|
|
Fixed two interpreter problems related to error processing, the deletion
|
|
of
|
|
objects, and placing invalid pointers onto the internal operator result
|
|
stack. BZ 6028, 6151 (Valery Podrezov)
|
|
|
|
Increased the reference count threshold where a warning is emitted for
|
|
large
|
|
reference counts in order to eliminate unnecessary warnings on systems
|
|
with
|
|
large namespaces (especially 64-bit.) Increased the value from 0x400 to
|
|
0x800.
|
|
|
|
Due to universal disagreement as to the meaning of the 'c' in the
|
|
calloc()
|
|
function, the ACPI_MEM_CALLOCATE macro has been renamed to
|
|
ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
|
|
ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
|
|
ACPI_FREE.
|
|
|
|
Code and Data Size: These are the sizes for the acpica.lib produced by
|
|
the
|
|
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
|
|
ACPI
|
|
driver or OSPM code. The debug version of the code includes the debug
|
|
output
|
|
trace mechanism and has a much larger code and data size. Note that these
|
|
values will vary depending on the efficiency of the compiler and the
|
|
compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
|
|
Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
|
|
Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Disassembler: implemented support for symbolic resource descriptor
|
|
references. If a CreateXxxxField operator references a fixed offset
|
|
within
|
|
a
|
|
resource descriptor, a name is assigned to the descriptor and the offset
|
|
is
|
|
translated to the appropriate resource tag and pathname. The addition of
|
|
this support brings the disassembled code very close to the original ASL
|
|
source code and helps eliminate run-time errors when the disassembled
|
|
code
|
|
is modified (and recompiled) in such a way as to invalidate the original
|
|
fixed offsets.
|
|
|
|
Implemented support for a Descriptor Name as the last parameter to the
|
|
ASL
|
|
Register() macro. This parameter was inadvertently left out of the ACPI
|
|
specification, and will be added for ACPI 3.0b.
|
|
|
|
Fixed a problem where the use of the "_OSI" string (versus the full path
|
|
"\_OSI") caused an internal compiler error. ("No back ptr to op")
|
|
|
|
Fixed a problem with the error message that occurs when an invalid string
|
|
is
|
|
used for a _HID object (such as one with an embedded asterisk:
|
|
"*PNP010A".)
|
|
The correct message is now displayed.
|
|
|
|
----------------------------------------
|
|
17 February 2006. Summary of changes for version 20060217:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a change to the IndexField support to match the behavior of
|
|
the
|
|
Microsoft AML interpreter. The value written to the Index register is now
|
|
a
|
|
byte offset, no longer an index based upon the width of the Data
|
|
register.
|
|
This should fix IndexField problems seen on some machines where the Data
|
|
register is not exactly one byte wide. The ACPI specification will be
|
|
clarified on this point.
|
|
|
|
Fixed a problem where several resource descriptor types could overrun the
|
|
internal descriptor buffer due to size miscalculation: VendorShort,
|
|
VendorLong, and Interrupt. This was noticed on IA64 machines, but could
|
|
affect all platforms.
|
|
|
|
Fixed a problem where individual resource descriptors were misaligned
|
|
within
|
|
the internal buffer, causing alignment faults on IA64 platforms.
|
|
|
|
Code and Data Size: These are the sizes for the acpica.lib produced by
|
|
the
|
|
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
|
|
ACPI
|
|
driver or OSPM code. The debug version of the code includes the debug
|
|
output
|
|
trace mechanism and has a much larger code and data size. Note that these
|
|
values will vary depending on the efficiency of the compiler and the
|
|
compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
|
|
Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
|
|
Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented support for new reserved names: _WDG and _WED are Microsoft
|
|
extensions for Windows Instrumentation Management, _TDL is a new ACPI-
|
|
defined method (Throttling Depth Limit.)
|
|
|
|
Fixed a problem where a zero-length VendorShort or VendorLong resource
|
|
descriptor was incorrectly emitted as a descriptor of length one.
|
|
|
|
----------------------------------------
|
|
10 February 2006. Summary of changes for version 20060210:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Removed a couple of extraneous ACPI_ERROR messages that appeared during
|
|
normal execution. These became apparent after the conversion from
|
|
ACPI_DEBUG_PRINT.
|
|
|
|
Fixed a problem where the CreateField operator could hang if the BitIndex
|
|
or
|
|
NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
|
|
|
|
Fixed a problem where a DeRefOf operation on a buffer object incorrectly
|
|
failed with an exception. This also fixes a couple of related RefOf and
|
|
DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
|
|
|
|
Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
|
|
of
|
|
AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
|
|
BZ
|
|
5480)
|
|
|
|
Implemented a memory cleanup at the end of the execution of each
|
|
iteration
|
|
of an AML While() loop, preventing the accumulation of outstanding
|
|
objects.
|
|
(Valery Podrezov, BZ 5427)
|
|
|
|
Eliminated a chunk of duplicate code in the object resolution code.
|
|
(Valery
|
|
Podrezov, BZ 5336)
|
|
|
|
Fixed several warnings during the 64-bit code generation.
|
|
|
|
The AcpiSrc source code conversion tool now inserts one line of
|
|
whitespace
|
|
after an if() statement that is followed immediately by a comment,
|
|
improving
|
|
readability of the Linux code.
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
|
|
Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
|
|
Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem with the disassembly of a BankField operator with a
|
|
complex
|
|
expression for the BankValue parameter.
|
|
|
|
----------------------------------------
|
|
27 January 2006. Summary of changes for version 20060127:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support in the Resource Manager to allow unresolved
|
|
namestring
|
|
references within resource package objects for the _PRT method. This
|
|
support
|
|
is in addition to the previously implemented unresolved reference support
|
|
within the AML parser. If the interpreter slack mode is enabled, these
|
|
unresolved references will be passed through to the caller as a NULL
|
|
package
|
|
entry.
|
|
|
|
Implemented and deployed new macros and functions for error and warning
|
|
messages across the subsystem. These macros are simpler and generate less
|
|
code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
|
|
ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
|
|
macros remain defined to allow ACPI drivers time to migrate to the new
|
|
macros.
|
|
|
|
Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
|
|
the
|
|
Acquire/Release Lock OSL interfaces.
|
|
|
|
Fixed a problem where Alias ASL operators are sometimes not correctly
|
|
resolved, in both the interpreter and the iASL compiler.
|
|
|
|
Fixed several problems with the implementation of the
|
|
ConcatenateResTemplate
|
|
ASL operator. As per the ACPI specification, zero length buffers are now
|
|
treated as a single EndTag. One-length buffers always cause a fatal
|
|
exception. Non-zero length buffers that do not end with a full 2-byte
|
|
EndTag
|
|
cause a fatal exception.
|
|
|
|
Fixed a possible structure overwrite in the AcpiGetObjectInfo external
|
|
interface. (With assistance from Thomas Renninger)
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
|
|
Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
|
|
Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed an internal error that was generated for any forward references to
|
|
ASL
|
|
Alias objects.
|
|
|
|
----------------------------------------
|
|
13 January 2006. Summary of changes for version 20060113:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added 2006 copyright to all module headers and signons. This affects
|
|
virtually every file in the ACPICA core subsystem, iASL compiler, and the
|
|
utilities.
|
|
|
|
Enhanced the ACPICA error reporting in order to simplify user migration
|
|
to
|
|
the non-debug version of ACPICA. Replaced all instances of the
|
|
ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
|
|
debug
|
|
levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
|
|
respectively. This preserves all error and warning messages in the non-
|
|
debug
|
|
version of the ACPICA code (this has been referred to as the "debug lite"
|
|
option.) Over 200 cases were converted to create a total of over 380
|
|
error/warning messages across the ACPICA code. This increases the code
|
|
and
|
|
data size of the default non-debug version of the code somewhat (about
|
|
13K),
|
|
but all error/warning reporting may be disabled if desired (and code
|
|
eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
|
|
configuration option. The size of the debug version of ACPICA remains
|
|
about
|
|
the same.
|
|
|
|
Fixed a memory leak within the AML Debugger "Set" command. One object was
|
|
not properly deleted for every successful invocation of the command.
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
|
|
Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
|
|
Current Release:
|
|
Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
|
|
Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
The compiler now officially supports the ACPI 3.0a specification that was
|
|
released on December 30, 2005. (Specification is available at
|
|
www.acpi.info)
|
|
|
|
----------------------------------------
|
|
16 December 2005. Summary of changes for version 20051216:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented optional support to allow unresolved names within ASL Package
|
|
objects. A null object is inserted in the package when a named reference
|
|
cannot be located in the current namespace. Enabled via the interpreter
|
|
slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
|
|
machines
|
|
that contain such code.
|
|
|
|
Implemented an optimization to the initialization sequence that can
|
|
improve
|
|
boot time. During ACPI device initialization, the _STA method is now run
|
|
if
|
|
and only if the _INI method exists. The _STA method is used to determine
|
|
if
|
|
the device is present; An _INI can only be run if _STA returns present,
|
|
but
|
|
it is a waste of time to run the _STA method if the _INI does not exist.
|
|
(Prototype and assistance from Dong Wei)
|
|
|
|
Implemented use of the C99 uintptr_t for the pointer casting macros if it
|
|
is
|
|
available in the current compiler. Otherwise, the default (void *) cast
|
|
is
|
|
used as before.
|
|
|
|
Fixed some possible memory leaks found within the execution path of the
|
|
Break, Continue, If, and CreateField operators. (Valery Podrezov)
|
|
|
|
Fixed a problem introduced in the 20051202 release where an exception is
|
|
generated during method execution if a control method attempts to declare
|
|
another method.
|
|
|
|
Moved resource descriptor string constants that are used by both the AML
|
|
disassembler and AML debugger to the common utilities directory so that
|
|
these components are independent.
|
|
|
|
Implemented support in the AcpiExec utility (-e switch) to globally
|
|
ignore
|
|
exceptions during control method execution (method is not aborted.)
|
|
|
|
Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
|
|
generation.
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
|
|
Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
|
|
Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem where a CPU stack overflow fault could occur if a
|
|
recursive
|
|
method call was made from within a Return statement.
|
|
|
|
----------------------------------------
|
|
02 December 2005. Summary of changes for version 20051202:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Modified the parsing of control methods to no longer create namespace
|
|
objects during the first pass of the parse. Objects are now created only
|
|
during the execute phase, at the moment the namespace creation operator
|
|
is
|
|
encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
|
|
This
|
|
should eliminate ALREADY_EXISTS exceptions seen on some machines where
|
|
reentrant control methods are protected by an AML mutex. The mutex will
|
|
now
|
|
correctly block multiple threads from attempting to create the same
|
|
object
|
|
more than once.
|
|
|
|
Increased the number of available Owner Ids for namespace object tracking
|
|
from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
|
|
on
|
|
some machines with a large number of ACPI tables (either static or
|
|
dynamic).
|
|
|
|
Fixed a problem with the AcpiExec utility where a fault could occur when
|
|
the
|
|
-b switch (batch mode) is used.
|
|
|
|
Enhanced the namespace dump routine to output the owner ID for each
|
|
namespace object.
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
|
|
Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
|
|
Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a parse error during compilation of certain Switch/Case constructs.
|
|
To
|
|
simplify the parse, the grammar now allows for multiple Default
|
|
statements
|
|
and this error is now detected and flagged during the analysis phase.
|
|
|
|
Disassembler: The disassembly now includes the contents of the original
|
|
table header within a comment at the start of the file. This includes the
|
|
name and version of the original ASL compiler.
|
|
|
|
----------------------------------------
|
|
17 November 2005. Summary of changes for version 20051117:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem in the AML parser where the method thread count could be
|
|
decremented below zero if any errors occurred during the method parse
|
|
phase.
|
|
This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
|
|
machines.
|
|
This also fixed a related regression with the mechanism that detects and
|
|
corrects methods that cannot properly handle reentrancy (related to the
|
|
deployment of the new OwnerId mechanism.)
|
|
|
|
Eliminated the pre-parsing of control methods (to detect errors) during
|
|
table load. Related to the problem above, this was causing unwind issues
|
|
if
|
|
any errors occurred during the parse, and it seemed to be overkill. A
|
|
table
|
|
load should not be aborted if there are problems with any single control
|
|
method, thus rendering this feature rather pointless.
|
|
|
|
Fixed a problem with the new table-driven resource manager where an
|
|
internal
|
|
buffer overflow could occur for small resource templates.
|
|
|
|
Implemented a new external interface, AcpiGetVendorResource. This
|
|
interface
|
|
will find and return a vendor-defined resource descriptor within a _CRS
|
|
or
|
|
_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
|
|
Helgaas.
|
|
|
|
Removed the length limit (200) on string objects as per the upcoming ACPI
|
|
3.0A specification. This affects the following areas of the interpreter:
|
|
1)
|
|
any implicit conversion of a Buffer to a String, 2) a String object
|
|
result
|
|
of the ASL Concatenate operator, 3) the String object result of the ASL
|
|
ToString operator.
|
|
|
|
Fixed a problem in the Windows OS interface layer (OSL) where a
|
|
WAIT_FOREVER
|
|
on a semaphore object would incorrectly timeout. This allows the
|
|
multithreading features of the AcpiExec utility to work properly under
|
|
Windows.
|
|
|
|
Updated the Linux makefiles for the iASL compiler and AcpiExec to include
|
|
the recently added file named "utresrc.c".
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
|
|
Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
|
|
Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
|
|
specification. For the iASL compiler, this means that string literals
|
|
within
|
|
the source ASL can be of any length.
|
|
|
|
Enhanced the listing output to dump the AML code for resource descriptors
|
|
immediately after the ASL code for each descriptor, instead of in a block
|
|
at
|
|
the end of the entire resource template.
|
|
|
|
Enhanced the compiler debug output to dump the entire original parse tree
|
|
constructed during the parse phase, before any transforms are applied to
|
|
the
|
|
tree. The transformed tree is dumped also.
|
|
|
|
----------------------------------------
|
|
02 November 2005. Summary of changes for version 20051102:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Modified the subsystem initialization sequence to improve GPE support.
|
|
The
|
|
GPE initialization has been split into two parts in order to defer
|
|
execution
|
|
of the _PRW methods (Power Resources for Wake) until after the hardware
|
|
is
|
|
fully initialized and the SCI handler is installed. This allows the _PRW
|
|
methods to access fields protected by the Global Lock. This will fix
|
|
systems
|
|
where a NO_GLOBAL_LOCK exception has been seen during initialization.
|
|
|
|
Converted the ACPI internal object disassemble and display code within
|
|
the
|
|
AML debugger to fully table-driven operation, reducing code size and
|
|
increasing maintainability.
|
|
|
|
Fixed a regression with the ConcatenateResTemplate() ASL operator
|
|
introduced
|
|
in the 20051021 release.
|
|
|
|
Implemented support for "local" internal ACPI object types within the
|
|
debugger "Object" command and the AcpiWalkNamespace external interfaces.
|
|
These local types include RegionFields, BankFields, IndexFields, Alias,
|
|
and
|
|
reference objects.
|
|
|
|
Moved common AML resource handling code into a new file, "utresrc.c".
|
|
This
|
|
code is shared by both the Resource Manager and the AML Debugger.
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
|
|
Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
|
|
Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem with very large initializer lists (more than 4000
|
|
elements)
|
|
for both Buffer and Package objects where the parse stack could overflow.
|
|
|
|
Enhanced the pre-compile source code scan for non-ASCII characters to
|
|
ignore
|
|
characters within comment fields. The scan is now always performed and is
|
|
no
|
|
longer optional, detecting invalid characters within a source file
|
|
immediately rather than during the parse phase or later.
|
|
|
|
Enhanced the ASL grammar definition to force early reductions on all
|
|
list-
|
|
style grammar elements so that the overall parse stack usage is greatly
|
|
reduced. This should improve performance and reduce the possibility of
|
|
parse
|
|
stack overflow.
|
|
|
|
Eliminated all reduce/reduce conflicts in the iASL parser generation.
|
|
Also,
|
|
with the addition of a %expected statement, the compiler generates from
|
|
source with no warnings.
|
|
|
|
Fixed a possible segment fault in the disassembler if the input filename
|
|
does not contain a "dot" extension (Thomas Renninger).
|
|
|
|
----------------------------------------
|
|
21 October 2005. Summary of changes for version 20051021:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support for the EM64T and other x86-64 processors. This
|
|
essentially entails recognizing that these processors support non-aligned
|
|
memory transfers. Previously, all 64-bit processors were assumed to lack
|
|
hardware support for non-aligned transfers.
|
|
|
|
Completed conversion of the Resource Manager to nearly full table-driven
|
|
operation. Specifically, the resource conversion code (convert AML to
|
|
internal format and the reverse) and the debug code to dump internal
|
|
resource descriptors are fully table-driven, reducing code and data size
|
|
and
|
|
improving maintainability.
|
|
|
|
The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
|
|
word
|
|
on 64-bit processors instead of a fixed 32-bit word. (With assistance
|
|
from
|
|
Alexey Starikovskiy)
|
|
|
|
Implemented support within the resource conversion code for the Type-
|
|
Specific byte within the various ACPI 3.0 *WordSpace macros.
|
|
|
|
Fixed some issues within the resource conversion code for the type-
|
|
specific
|
|
flags for both Memory and I/O address resource descriptors. For Memory,
|
|
implemented support for the MTP and TTP flags. For I/O, split the TRS and
|
|
TTP flags into two separate fields.
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
|
|
Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
|
|
Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
|
|
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Relaxed a compiler restriction that disallowed a ResourceIndex byte if
|
|
the
|
|
corresponding ResourceSource string was not also present in a resource
|
|
descriptor declaration. This restriction caused problems with existing
|
|
AML/ASL code that includes the Index byte without the string. When such
|
|
AML
|
|
was disassembled, it could not be compiled without modification. Further,
|
|
the modified code created a resource template with a different size than
|
|
the
|
|
original, breaking code that used fixed offsets into the resource
|
|
template
|
|
buffer.
|
|
|
|
Removed a recent feature of the disassembler to ignore a lone
|
|
ResourceIndex
|
|
byte. This byte is now emitted if present so that the exact AML can be
|
|
reproduced when the disassembled code is recompiled.
|
|
|
|
Improved comments and text alignment for the resource descriptor code
|
|
emitted by the disassembler.
|
|
|
|
Implemented disassembler support for the ACPI 3.0 AccessSize field within
|
|
a
|
|
Register() resource descriptor.
|
|
|
|
----------------------------------------
|
|
30 September 2005. Summary of changes for version 20050930:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Completed a major overhaul of the Resource Manager code - specifically,
|
|
optimizations in the area of the AML/internal resource conversion code.
|
|
The
|
|
code has been optimized to simplify and eliminate duplicated code, CPU
|
|
stack
|
|
use has been decreased by optimizing function parameters and local
|
|
variables, and naming conventions across the manager have been
|
|
standardized
|
|
for clarity and ease of maintenance (this includes function, parameter,
|
|
variable, and struct/typedef names.) The update may force changes in some
|
|
driver code, depending on how resources are handled by the host OS.
|
|
|
|
All Resource Manager dispatch and information tables have been moved to a
|
|
single location for clarity and ease of maintenance. One new file was
|
|
created, named "rsinfo.c".
|
|
|
|
The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
|
|
guarantee that the argument is not evaluated twice, making them less
|
|
prone
|
|
to macro side-effects. However, since there exists the possibility of
|
|
additional stack use if a particular compiler cannot optimize them (such
|
|
as
|
|
in the debug generation case), the original macros are optionally
|
|
available.
|
|
Note that some invocations of the return_VALUE macro may now cause size
|
|
mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
|
|
to
|
|
eliminate these. (From Randy Dunlap)
|
|
|
|
Implemented a new mechanism to enable debug tracing for individual
|
|
control
|
|
methods. A new external interface, AcpiDebugTrace, is provided to enable
|
|
this mechanism. The intent is to allow the host OS to easily enable and
|
|
disable tracing for problematic control methods. This interface can be
|
|
easily exposed to a user or debugger interface if desired. See the file
|
|
psxface.c for details.
|
|
|
|
AcpiUtCallocate will now return a valid pointer if a length of zero is
|
|
specified - a length of one is used and a warning is issued. This matches
|
|
the behavior of AcpiUtAllocate.
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
|
|
Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
|
|
Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
A remark is issued if the effective compile-time length of a package or
|
|
buffer is zero. Previously, this was a warning.
|
|
|
|
----------------------------------------
|
|
16 September 2005. Summary of changes for version 20050916:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem within the Resource Manager where support for the Generic
|
|
Register descriptor was not fully implemented. This descriptor is now
|
|
fully
|
|
recognized, parsed, disassembled, and displayed.
|
|
|
|
Completely restructured the Resource Manager code to utilize table-driven
|
|
dispatch and lookup, eliminating many of the large switch() statements.
|
|
This
|
|
reduces overall subsystem code size and code complexity. Affects the
|
|
resource parsing and construction, disassembly, and debug dump output.
|
|
|
|
Cleaned up and restructured the debug dump output for all resource
|
|
descriptors. Improved readability of the output and reduced code size.
|
|
|
|
Fixed a problem where changes to internal data structures caused the
|
|
optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
|
|
|
|
Code and Data Size: The current and previous library sizes for the core
|
|
subsystem are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
|
|
These
|
|
values do not include any ACPI driver or OSPM code. The debug version of
|
|
the
|
|
code includes the debug output trace mechanism and has a much larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency
|
|
of the compiler and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
|
|
Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
|
|
Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Updated the disassembler to automatically insert an EndDependentFn()
|
|
macro
|
|
into the ASL stream if this macro is missing in the original AML code,
|
|
simplifying compilation of the resulting ASL module.
|
|
|
|
Fixed a problem in the disassembler where a disassembled ResourceSource
|
|
string (within a large resource descriptor) was not surrounded by quotes
|
|
and
|
|
not followed by a comma, causing errors when the resulting ASL module was
|
|
compiled. Also, escape sequences within a ResourceSource string are now
|
|
handled correctly (especially "\\")
|
|
|
|
----------------------------------------
|
|
02 September 2005. Summary of changes for version 20050902:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem with the internal Owner ID allocation and deallocation
|
|
mechanisms for control method execution and recursive method invocation.
|
|
This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
|
|
messages seen on some systems. Recursive method invocation depth is
|
|
currently limited to 255. (Alexey Starikovskiy)
|
|
|
|
Completely eliminated all vestiges of support for the "module-level
|
|
executable code" until this support is fully implemented and debugged.
|
|
This
|
|
should eliminate the NO_RETURN_VALUE exceptions seen during table load on
|
|
some systems that invoke this support.
|
|
|
|
Fixed a problem within the resource manager code where the transaction
|
|
flags
|
|
for a 64-bit address descriptor were handled incorrectly in the type-
|
|
specific flag byte.
|
|
|
|
Consolidated duplicate code within the address descriptor resource
|
|
manager
|
|
code, reducing overall subsystem code size.
|
|
|
|
Fixed a fault when using the AML debugger "disassemble" command to
|
|
disassemble individual control methods.
|
|
|
|
Removed references to the "release_current" directory within the Unix
|
|
release package.
|
|
|
|
Code and Data Size: The current and previous core subsystem library sizes
|
|
are shown below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler. These values do not
|
|
include any ACPI driver or OSPM code. The debug version of the code
|
|
includes
|
|
the debug output trace mechanism and has a much larger code and data
|
|
size.
|
|
Note that these values will vary depending on the efficiency of the
|
|
compiler
|
|
and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
|
|
Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
|
|
Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented an error check for illegal duplicate values in the interrupt
|
|
and
|
|
dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
|
|
Interrupt().
|
|
|
|
Implemented error checking for the Irq() and IrqNoFlags() macros to
|
|
detect
|
|
too many values in the interrupt list (16 max) and invalid values in the
|
|
list (range 0 - 15)
|
|
|
|
The maximum length string literal within an ASL file is now restricted to
|
|
200 characters as per the ACPI specification.
|
|
|
|
Fixed a fault when using the -ln option (generate namespace listing).
|
|
|
|
Implemented an error check to determine if a DescriptorName within a
|
|
resource descriptor has already been used within the current scope.
|
|
|
|
----------------------------------------
|
|
15 August 2005. Summary of changes for version 20050815:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a full bytewise compare to determine if a table load request
|
|
is
|
|
attempting to load a duplicate table. The compare is performed if the
|
|
table
|
|
signatures and table lengths match. This will allow different tables with
|
|
the same OEM Table ID and revision to be loaded - probably against the
|
|
ACPI
|
|
specification, but discovered in the field nonetheless.
|
|
|
|
Added the changes.txt logfile to each of the zipped release packages.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
|
|
Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
|
|
Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem where incorrect AML code could be generated for Package
|
|
objects if optimization is disabled (via the -oa switch).
|
|
|
|
Fixed a problem with where incorrect AML code is generated for variable-
|
|
length packages when the package length is not specified and the number
|
|
of
|
|
initializer values is greater than 255.
|
|
|
|
|
|
----------------------------------------
|
|
29 July 2005. Summary of changes for version 20050729:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support to ignore an attempt to install/load a particular
|
|
ACPI
|
|
table more than once. Apparently there exists BIOS code that repeatedly
|
|
attempts to load the same SSDT upon certain events. With assistance from
|
|
Venkatesh Pallipadi.
|
|
|
|
Restructured the main interface to the AML parser in order to correctly
|
|
handle all exceptional conditions. This will prevent leakage of the
|
|
OwnerId
|
|
resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
|
|
some
|
|
machines. With assistance from Alexey Starikovskiy.
|
|
|
|
Support for "module level code" has been disabled in this version due to
|
|
a
|
|
number of issues that have appeared on various machines. The support can
|
|
be
|
|
enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
|
|
compilation. When the issues are fully resolved, the code will be enabled
|
|
by
|
|
default again.
|
|
|
|
Modified the internal functions for debug print support to define the
|
|
FunctionName parameter as a (const char *) for compatibility with
|
|
compiler
|
|
built-in macros such as __FUNCTION__, etc.
|
|
|
|
Linted the entire ACPICA source tree for both 32-bit and 64-bit.
|
|
|
|
Implemented support to display an object count summary for the AML
|
|
Debugger
|
|
commands Object and Methods.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
|
|
Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
|
|
Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a regression that appeared in the 20050708 version of the compiler
|
|
where an error message was inadvertently emitted for invocations of the
|
|
_OSI
|
|
reserved control method.
|
|
|
|
----------------------------------------
|
|
08 July 2005. Summary of changes for version 20050708:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The use of the CPU stack in the debug version of the subsystem has been
|
|
considerably reduced. Previously, a debug structure was declared in every
|
|
function that used the debug macros. This structure has been removed in
|
|
favor of declaring the individual elements as parameters to the debug
|
|
functions. This reduces the cumulative stack use during nested execution
|
|
of
|
|
ACPI function calls at the cost of a small increase in the code size of
|
|
the
|
|
debug version of the subsystem. With assistance from Alexey Starikovskiy
|
|
and
|
|
Len Brown.
|
|
|
|
Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
|
|
headers to define a macro that will return the current function name at
|
|
runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
|
|
by
|
|
the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
|
|
compiler-dependent header, the function name is saved on the CPU stack
|
|
(one
|
|
pointer per function.) This mechanism is used because apparently there
|
|
exists no standard ANSI-C defined macro that that returns the function
|
|
name.
|
|
|
|
Redesigned and reimplemented the "Owner ID" mechanism used to track
|
|
namespace objects created/deleted by ACPI tables and control method
|
|
execution. A bitmap is now used to allocate and free the IDs, thus
|
|
solving
|
|
the wraparound problem present in the previous implementation. The size
|
|
of
|
|
the namespace node descriptor was reduced by 2 bytes as a result (Alexey
|
|
Starikovskiy).
|
|
|
|
Removed the UINT32_BIT and UINT16_BIT types that were used for the
|
|
bitfield
|
|
flag definitions within the headers for the predefined ACPI tables. These
|
|
have been replaced by UINT8_BIT in order to increase the code portability
|
|
of
|
|
the subsystem. If the use of UINT8 remains a problem, we may be forced to
|
|
eliminate bitfields entirely because of a lack of portability.
|
|
|
|
Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
|
|
This
|
|
is a frequently used function and this improvement increases the
|
|
performance
|
|
of the entire subsystem (Alexey Starikovskiy).
|
|
|
|
Fixed several possible memory leaks and the inverse - premature object
|
|
deletion (Alexey Starikovskiy).
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
|
|
Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
|
|
Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
|
|
|
|
----------------------------------------
|
|
24 June 2005. Summary of changes for version 20050624:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
|
|
the host-defined cache object. This allows the OSL implementation to
|
|
define
|
|
and type this object in any manner desired, simplifying the OSL
|
|
implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
|
|
Linux, and should be defined in the OS-specific header file for other
|
|
operating systems as required.
|
|
|
|
Changed the interface to AcpiOsAcquireObject to directly return the
|
|
requested object as the function return (instead of ACPI_STATUS.) This
|
|
change was made for performance reasons, since this is the purpose of the
|
|
interface in the first place. AcpiOsAcquireObject is now similar to the
|
|
AcpiOsAllocate interface.
|
|
|
|
Implemented a new AML debugger command named Businfo. This command
|
|
displays
|
|
information about all devices that have an associate _PRT object. The
|
|
_ADR,
|
|
_HID, _UID, and _CID are displayed for these devices.
|
|
|
|
Modified the initialization sequence in AcpiInitializeSubsystem to call
|
|
the
|
|
OSL interface AcpiOslInitialize first, before any local initialization.
|
|
This
|
|
change was required because the global initialization now calls OSL
|
|
interfaces.
|
|
|
|
Enhanced the Dump command to display the entire contents of Package
|
|
objects
|
|
(including all sub-objects and their values.)
|
|
|
|
Restructured the code base to split some files because of size and/or
|
|
because the code logically belonged in a separate file. New files are
|
|
listed
|
|
below. All makefiles and project files included in the ACPI CA release
|
|
have
|
|
been updated.
|
|
utilities/utcache.c /* Local cache interfaces */
|
|
utilities/utmutex.c /* Local mutex support */
|
|
utilities/utstate.c /* State object support */
|
|
interpreter/parser/psloop.c /* Main AML parse loop */
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
|
|
Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
|
|
Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a regression introduced in version 20050513 where the use of a
|
|
Package
|
|
object within a Case() statement caused a compile time exception. The
|
|
original behavior has been restored (a Match() operator is emitted.)
|
|
|
|
----------------------------------------
|
|
17 June 2005. Summary of changes for version 20050617:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Moved the object cache operations into the OS interface layer (OSL) to
|
|
allow
|
|
the host OS to handle these operations if desired (for example, the Linux
|
|
OSL will invoke the slab allocator). This support is optional; the
|
|
compile
|
|
time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
|
|
cache
|
|
code in the ACPI CA core. The new OSL interfaces are shown below. See
|
|
utalloc.c for an example implementation, and acpiosxf.h for the exact
|
|
interface definitions. With assistance from Alexey Starikovskiy.
|
|
AcpiOsCreateCache
|
|
AcpiOsDeleteCache
|
|
AcpiOsPurgeCache
|
|
AcpiOsAcquireObject
|
|
AcpiOsReleaseObject
|
|
|
|
Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
|
|
return
|
|
and restore a flags parameter. This fits better with many OS lock models.
|
|
Note: the current execution state (interrupt handler or not) is no longer
|
|
passed to these interfaces. If necessary, the OSL must determine this
|
|
state
|
|
by itself, a simple and fast operation. With assistance from Alexey
|
|
Starikovskiy.
|
|
|
|
Fixed a problem in the ACPI table handling where a valid XSDT was assumed
|
|
present if the revision of the RSDP was 2 or greater. According to the
|
|
ACPI
|
|
specification, the XSDT is optional in all cases, and the table manager
|
|
therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
|
|
Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
|
|
contain
|
|
only the RSDT.
|
|
|
|
Fixed an interpreter problem with the Mid() operator in the case of an
|
|
input
|
|
string where the resulting output string is of zero length. It now
|
|
correctly
|
|
returns a valid, null terminated string object instead of a string object
|
|
with a null pointer.
|
|
|
|
Fixed a problem with the control method argument handling to allow a
|
|
store
|
|
to an Arg object that already contains an object of type Device. The
|
|
Device
|
|
object is now correctly overwritten. Previously, an error was returned.
|
|
|
|
|
|
Enhanced the debugger Find command to emit object values in addition to
|
|
the
|
|
found object pathnames. The output format is the same as the dump
|
|
namespace
|
|
command.
|
|
|
|
Enhanced the debugger Set command. It now has the ability to set the
|
|
value
|
|
of any Named integer object in the namespace (Previously, only method
|
|
locals
|
|
and args could be set.)
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
|
|
Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
|
|
Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a regression in the disassembler where if/else/while constructs
|
|
were
|
|
output incorrectly. This problem was introduced in the previous release
|
|
(20050526). This problem also affected the single-step disassembly in the
|
|
debugger.
|
|
|
|
Fixed a problem where compiling the reserved _OSI method would randomly
|
|
(but
|
|
rarely) produce compile errors.
|
|
|
|
Enhanced the disassembler to emit compilable code in the face of
|
|
incorrect
|
|
AML resource descriptors. If the optional ResourceSourceIndex is present,
|
|
but the ResourceSource is not, do not emit the ResourceSourceIndex in the
|
|
disassembly. Otherwise, the resulting code cannot be compiled without
|
|
errors.
|
|
|
|
----------------------------------------
|
|
26 May 2005. Summary of changes for version 20050526:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
|
|
the module level (not within a control method.) These opcodes are
|
|
executed
|
|
exactly once at the time the table is loaded. This type of code was legal
|
|
up
|
|
until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
|
|
in
|
|
order to provide backwards compatibility with earlier BIOS
|
|
implementations.
|
|
This eliminates the "Encountered executable code at module level" warning
|
|
that was previously generated upon detection of such code.
|
|
|
|
Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
|
|
inadvertently be generated during the lookup of namespace objects in the
|
|
second pass parse of ACPI tables and control methods. It appears that
|
|
this
|
|
problem could occur during the resolution of forward references to
|
|
namespace
|
|
objects.
|
|
|
|
Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
|
|
corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
|
|
allows the deadlock detection debug code to be compiled out in the normal
|
|
case, improving mutex performance (and overall subsystem performance)
|
|
considerably.
|
|
|
|
Implemented a handful of miscellaneous fixes for possible memory leaks on
|
|
error conditions and error handling control paths. These fixes were
|
|
suggested by FreeBSD and the Coverity Prevent source code analysis tool.
|
|
|
|
Added a check for a null RSDT pointer in AcpiGetFirmwareTable
|
|
(tbxfroot.c)
|
|
to prevent a fault in this error case.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
|
|
Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
|
|
Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented support to allow Type 1 and Type 2 ASL operators to appear at
|
|
the module level (not within a control method.) These operators will be
|
|
executed once at the time the table is loaded. This type of code was
|
|
legal
|
|
up until the release of ACPI 2.0B (2002) and is now supported by the iASL
|
|
compiler in order to provide backwards compatibility with earlier BIOS
|
|
ASL
|
|
code.
|
|
|
|
The ACPI integer width (specified via the table revision ID or the -r
|
|
override, 32 or 64 bits) is now used internally during compile-time
|
|
constant
|
|
folding to ensure that constants are truncated to 32 bits if necessary.
|
|
Previously, the revision ID value was only emitted in the AML table
|
|
header.
|
|
|
|
An error message is now generated for the Mutex and Method operators if
|
|
the
|
|
SyncLevel parameter is outside the legal range of 0 through 15.
|
|
|
|
Fixed a problem with the Method operator ParameterTypes list handling
|
|
(ACPI
|
|
3.0). Previously, more than 2 types or 2 arguments generated a syntax
|
|
error.
|
|
The actual underlying implementation of method argument typechecking is
|
|
still under development, however.
|
|
|
|
----------------------------------------
|
|
13 May 2005. Summary of changes for version 20050513:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support for PCI Express root bridges -- added support for
|
|
device
|
|
PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
|
|
|
|
The interpreter now automatically truncates incoming 64-bit constants to
|
|
32
|
|
bits if currently executing out of a 32-bit ACPI table (Revision < 2).
|
|
This
|
|
also affects the iASL compiler constant folding. (Note: as per below, the
|
|
iASL compiler no longer allows 64-bit constants within 32-bit tables.)
|
|
|
|
Fixed a problem where string and buffer objects with "static" pointers
|
|
(pointers to initialization data within an ACPI table) were not handled
|
|
consistently. The internal object copy operation now always copies the
|
|
data
|
|
to a newly allocated buffer, regardless of whether the source object is
|
|
static or not.
|
|
|
|
Fixed a problem with the FromBCD operator where an implicit result
|
|
conversion was improperly performed while storing the result to the
|
|
target
|
|
operand. Since this is an "explicit conversion" operator, the implicit
|
|
conversion should never be performed on the output.
|
|
|
|
Fixed a problem with the CopyObject operator where a copy to an existing
|
|
named object did not always completely overwrite the existing object
|
|
stored
|
|
at name. Specifically, a buffer-to-buffer copy did not delete the
|
|
existing
|
|
buffer.
|
|
|
|
Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
|
|
and
|
|
structs for consistency.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
|
|
Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
|
|
Current Release: (Same sizes)
|
|
Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
|
|
Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
The compiler now emits a warning if an attempt is made to generate a 64-
|
|
bit
|
|
integer constant from within a 32-bit ACPI table (Revision < 2). The
|
|
integer
|
|
is truncated to 32 bits.
|
|
|
|
Fixed a problem with large package objects: if the static length of the
|
|
package is greater than 255, the "variable length package" opcode is
|
|
emitted. Previously, this caused an error. This requires an update to the
|
|
ACPI spec, since it currently (incorrectly) states that packages larger
|
|
than
|
|
255 elements are not allowed.
|
|
|
|
The disassembler now correctly handles variable length packages and
|
|
packages
|
|
larger than 255 elements.
|
|
|
|
----------------------------------------
|
|
08 April 2005. Summary of changes for version 20050408:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed three cases in the interpreter where an "index" argument to an ASL
|
|
function was still (internally) 32 bits instead of the required 64 bits.
|
|
This was the Index argument to the Index, Mid, and Match operators.
|
|
|
|
The "strupr" function is now permanently local (AcpiUtStrupr), since this
|
|
is
|
|
not a POSIX-defined function and not present in most kernel-level C
|
|
libraries. All references to the C library strupr function have been
|
|
removed
|
|
from the headers.
|
|
|
|
Completed the deployment of static functions/prototypes. All prototypes
|
|
with
|
|
the static attribute have been moved from the headers to the owning C
|
|
file.
|
|
|
|
Implemented an extract option (-e) for the AcpiBin utility (AML binary
|
|
utility). This option allows the utility to extract individual ACPI
|
|
tables
|
|
from the output of AcpiDmp. It provides the same functionality of the
|
|
acpixtract.pl perl script without the worry of setting the correct perl
|
|
options. AcpiBin runs on Windows and has not yet been generated/validated
|
|
in
|
|
the Linux/Unix environment (but should be soon).
|
|
|
|
Updated and fixed the table dump option for AcpiBin (-d). This option
|
|
converts a single ACPI table to a hex/ascii file, similar to the output
|
|
of
|
|
AcpiDmp.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
|
|
Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
|
|
Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Disassembler fix: Added a check to ensure that the table length found in
|
|
the
|
|
ACPI table header within the input file is not longer than the actual
|
|
input
|
|
file size. This indicates some kind of file or table corruption.
|
|
|
|
----------------------------------------
|
|
29 March 2005. Summary of changes for version 20050329:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
An error is now generated if an attempt is made to create a Buffer Field
|
|
of
|
|
length zero (A CreateField with a length operand of zero.)
|
|
|
|
The interpreter now issues a warning whenever executable code at the
|
|
module
|
|
level is detected during ACPI table load. This will give some idea of the
|
|
prevalence of this type of code.
|
|
|
|
Implemented support for references to named objects (other than control
|
|
methods) within package objects.
|
|
|
|
Enhanced package object output for the debug object. Package objects are
|
|
now
|
|
completely dumped, showing all elements.
|
|
|
|
Enhanced miscellaneous object output for the debug object. Any object can
|
|
now be written to the debug object (for example, a device object can be
|
|
written, and the type of the object will be displayed.)
|
|
|
|
The "static" qualifier has been added to all local functions across both
|
|
the
|
|
core subsystem and the iASL compiler.
|
|
|
|
The number of "long" lines (> 80 chars) within the source has been
|
|
significantly reduced, by about 1/3.
|
|
|
|
Cleaned up all header files to ensure that all CA/iASL functions are
|
|
prototyped (even static functions) and the formatting is consistent.
|
|
|
|
Two new header files have been added, acopcode.h and acnames.h.
|
|
|
|
Removed several obsolete functions that were no longer used.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
|
|
Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
|
|
Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
|
|
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem with the resource descriptor generation/support. For the
|
|
ResourceSourceIndex and the ResourceSource fields, both must be present,
|
|
or
|
|
both must be not present - can't have one without the other.
|
|
|
|
The compiler now returns non-zero from the main procedure if any errors
|
|
have
|
|
occurred during the compilation.
|
|
|
|
|
|
----------------------------------------
|
|
09 March 2005. Summary of changes for version 20050309:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The string-to-buffer implicit conversion code has been modified again
|
|
after
|
|
a change to the ACPI specification. In order to match the behavior of
|
|
the
|
|
other major ACPI implementation, the target buffer is no longer truncated
|
|
if
|
|
the source string is smaller than an existing target buffer. This change
|
|
requires an update to the ACPI spec, and should eliminate the recent
|
|
AE_AML_BUFFER_LIMIT issues.
|
|
|
|
The "implicit return" support was rewritten to a new algorithm that
|
|
solves
|
|
the general case. Rather than attempt to determine when a method is about
|
|
to
|
|
exit, the result of every ASL operator is saved momentarily until the
|
|
very
|
|
next ASL operator is executed. Therefore, no matter how the method exits,
|
|
there will always be a saved implicit return value. This feature is only
|
|
enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
|
|
eliminate
|
|
AE_AML_NO_RETURN_VALUE errors when enabled.
|
|
|
|
Implemented implicit conversion support for the predicate (operand) of
|
|
the
|
|
If, Else, and While operators. String and Buffer arguments are
|
|
automatically
|
|
converted to Integers.
|
|
|
|
Changed the string-to-integer conversion behavior to match the new ACPI
|
|
errata: "If no integer object exists, a new integer is created. The ASCII
|
|
string is interpreted as a hexadecimal constant. Each string character is
|
|
interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
|
|
with the first character as the most significant digit, and ending with
|
|
the
|
|
first non-hexadecimal character or end-of-string." This means that the
|
|
first
|
|
non-hex character terminates the conversion and this is the code that was
|
|
changed.
|
|
|
|
Fixed a problem where the ObjectType operator would fail (fault) when
|
|
used
|
|
on an Index of a Package which pointed to a null package element. The
|
|
operator now properly returns zero (Uninitialized) in this case.
|
|
|
|
Fixed a problem where the While operator used excessive memory by not
|
|
properly popping the result stack during execution. There was no memory
|
|
leak
|
|
after execution, however. (Code provided by Valery Podrezov.)
|
|
|
|
Fixed a problem where references to control methods within Package
|
|
objects
|
|
caused the method to be invoked, instead of producing a reference object
|
|
pointing to the method.
|
|
|
|
Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
|
|
to
|
|
improve performance and reduce code size. (Code provided by Alexey
|
|
Starikovskiy.)
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
|
|
Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
|
|
Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem with the Return operator with no arguments. Since the AML
|
|
grammar for the byte encoding requires an operand for the Return opcode,
|
|
the
|
|
compiler now emits a Return(Zero) for this case. An ACPI specification
|
|
update has been written for this case.
|
|
|
|
For tables other than the DSDT, namepath optimization is automatically
|
|
disabled. This is because SSDTs can be loaded anywhere in the namespace,
|
|
the
|
|
compiler has no knowledge of where, and thus cannot optimize namepaths.
|
|
|
|
Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
|
|
inadvertently omitted from the ACPI specification, and will require an
|
|
update to the spec.
|
|
|
|
The source file scan for ASCII characters is now optional (-a). This
|
|
change
|
|
was made because some vendors place non-ascii characters within comments.
|
|
However, the scan is simply a brute-force byte compare to ensure all
|
|
characters in the file are in the range 0x00 to 0x7F.
|
|
|
|
Fixed a problem with the CondRefOf operator where the compiler was
|
|
inappropriately checking for the existence of the target. Since the point
|
|
of
|
|
the operator is to check for the existence of the target at run-time, the
|
|
compiler no longer checks for the target existence.
|
|
|
|
Fixed a problem where errors generated from the internal AML interpreter
|
|
during constant folding were not handled properly, causing a fault.
|
|
|
|
Fixed a problem with overly aggressive range checking for the Stall
|
|
operator. The valid range (max 255) is now only checked if the operand is
|
|
of
|
|
type Integer. All other operand types cannot be statically checked.
|
|
|
|
Fixed a problem where control method references within the RefOf,
|
|
DeRefOf,
|
|
and ObjectType operators were not treated properly. They are now treated
|
|
as
|
|
actual references, not method invocations.
|
|
|
|
Fixed and enhanced the "list namespace" option (-ln). This option was
|
|
broken
|
|
a number of releases ago.
|
|
|
|
Improved error handling for the Field, IndexField, and BankField
|
|
operators.
|
|
The compiler now cleanly reports and recovers from errors in the field
|
|
component (FieldUnit) list.
|
|
|
|
Fixed a disassembler problem where the optional ResourceDescriptor fields
|
|
TRS and TTP were not always handled correctly.
|
|
|
|
Disassembler - Comments in output now use "//" instead of "/*"
|
|
|
|
----------------------------------------
|
|
28 February 2005. Summary of changes for version 20050228:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where the result of an Index() operator (an object
|
|
reference) must increment the reference count on the target object for
|
|
the
|
|
life of the object reference.
|
|
|
|
Implemented AML Interpreter and Debugger support for the new ACPI 3.0
|
|
Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
|
|
WordSpace
|
|
resource descriptors.
|
|
|
|
Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
|
|
Space Descriptor" string, indicating interpreter support for the
|
|
descriptors
|
|
above.
|
|
|
|
Implemented header support for the new ACPI 3.0 FADT flag bits.
|
|
|
|
Implemented header support for the new ACPI 3.0 PCI Express bits for the
|
|
PM1
|
|
status/enable registers.
|
|
|
|
Updated header support for the MADT processor local Apic struct and MADT
|
|
platform interrupt source struct for new ACPI 3.0 fields.
|
|
|
|
Implemented header support for the SRAT and SLIT ACPI tables.
|
|
|
|
Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
|
|
flag
|
|
at runtime.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
|
|
Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
|
|
Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem with the internal 64-bit String-to-integer conversion
|
|
with
|
|
strings less than two characters long.
|
|
|
|
Fixed a problem with constant folding where the result of the Index()
|
|
operator can not be considered a constant. This means that Index() cannot
|
|
be
|
|
a type3 opcode and this will require an update to the ACPI specification.
|
|
|
|
Disassembler: Implemented support for the TTP, MTP, and TRS resource
|
|
descriptor fields. These fields were inadvertently ignored and not output
|
|
in
|
|
the disassembly of the resource descriptor.
|
|
|
|
|
|
----------------------------------------
|
|
11 February 2005. Summary of changes for version 20050211:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented ACPI 3.0 support for implicit conversion within the Match()
|
|
operator. MatchObjects can now be of type integer, buffer, or string
|
|
instead
|
|
of just type integer. Package elements are implicitly converted to the
|
|
type
|
|
of the MatchObject. This change aligns the behavior of Match() with the
|
|
behavior of the other logical operators (LLess(), etc.) It also requires
|
|
an
|
|
errata change to the ACPI specification as this support was intended for
|
|
ACPI 3.0, but was inadvertently omitted.
|
|
|
|
Fixed a problem with the internal implicit "to buffer" conversion.
|
|
Strings
|
|
that are converted to buffers will cause buffer truncation if the string
|
|
is
|
|
smaller than the target buffer. Integers that are converted to buffers
|
|
will
|
|
not cause buffer truncation, only zero extension (both as per the ACPI
|
|
spec.) The problem was introduced when code was added to truncate the
|
|
buffer, but this should not be performed in all cases, only the string
|
|
case.
|
|
|
|
Fixed a problem with the Buffer and Package operators where the
|
|
interpreter
|
|
would get confused if two such operators were used as operands to an ASL
|
|
operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
|
|
stack was not being popped after the execution of these operators,
|
|
resulting
|
|
in an AE_NO_RETURN_VALUE exception.
|
|
|
|
Fixed a problem with constructs of the form Store(Index(...),...). The
|
|
reference object returned from Index was inadvertently resolved to an
|
|
actual
|
|
value. This problem was introduced in version 20050114 when the behavior
|
|
of
|
|
Store() was modified to restrict the object types that can be used as the
|
|
source operand (to match the ACPI specification.)
|
|
|
|
Reduced excessive stack use within the AcpiGetObjectInfo procedure.
|
|
|
|
Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
|
|
|
|
Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
|
|
Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
|
|
Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a code generation problem in the constant folding optimization code
|
|
where incorrect code was generated if a constant was reduced to a buffer
|
|
object (i.e., a reduced type 5 opcode.)
|
|
|
|
Fixed a typechecking problem for the ToBuffer operator. Caused by an
|
|
incorrect return type in the internal opcode information table.
|
|
|
|
----------------------------------------
|
|
25 January 2005. Summary of changes for version 20050125:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a recently introduced problem with the Global Lock where the
|
|
underlying semaphore was not created. This problem was introduced in
|
|
version 20050114, and caused an AE_AML_NO_OPERAND exception during an
|
|
Acquire() operation on _GL.
|
|
|
|
The local object cache is now optional, and is disabled by default. Both
|
|
AcpiExec and the iASL compiler enable the cache because they run in user
|
|
mode and this enhances their performance. #define
|
|
ACPI_ENABLE_OBJECT_CACHE
|
|
to enable the local cache.
|
|
|
|
Fixed an issue in the internal function AcpiUtEvaluateObject concerning
|
|
the
|
|
optional "implicit return" support where an error was returned if no
|
|
return
|
|
object was expected, but one was implicitly returned. AE_OK is now
|
|
returned
|
|
in this case and the implicitly returned object is deleted.
|
|
AcpiUtEvaluateObject is only occasionally used, and only to execute
|
|
reserved
|
|
methods such as _STA and _INI where the return type is known up front.
|
|
|
|
Fixed a few issues with the internal convert-to-integer code. It now
|
|
returns
|
|
an error if an attempt is made to convert a null string, a string of only
|
|
blanks/tabs, or a zero-length buffer. This affects both implicit
|
|
conversion
|
|
and explicit conversion via the ToInteger() operator.
|
|
|
|
The internal debug code in AcpiUtAcquireMutex has been commented out. It
|
|
is
|
|
not needed for normal operation and should increase the performance of
|
|
the
|
|
entire subsystem. The code remains in case it is needed for debug
|
|
purposes
|
|
again.
|
|
|
|
The AcpiExec source and makefile are included in the Unix/Linux package
|
|
for
|
|
the first time.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
|
|
Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
|
|
Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Switch/Case support: A warning is now issued if the type of the Switch
|
|
value
|
|
cannot be determined at compile time. For example, Switch(Arg0) will
|
|
generate the warning, and the type is assumed to be an integer. As per
|
|
the
|
|
ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
|
|
the
|
|
warning.
|
|
|
|
Switch/Case support: Implemented support for buffer and string objects as
|
|
the switch value. This is an ACPI 3.0 feature, now that LEqual supports
|
|
buffers and strings.
|
|
|
|
Switch/Case support: The emitted code for the LEqual() comparisons now
|
|
uses
|
|
the switch value as the first operand, not the second. The case value is
|
|
now
|
|
the second operand, and this allows the case value to be implicitly
|
|
converted to the type of the switch value, not the other way around.
|
|
|
|
Switch/Case support: Temporary variables are now emitted immediately
|
|
within
|
|
the control method, not at the global level. This means that there are
|
|
now
|
|
36 temps available per-method, not 36 temps per-module as was the case
|
|
with
|
|
the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
|
|
|
|
----------------------------------------
|
|
14 January 2005. Summary of changes for version 20050114:
|
|
|
|
Added 2005 copyright to all module headers. This affects every module in
|
|
the core subsystem, iASL compiler, and the utilities.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed an issue with the String-to-Buffer conversion code where the string
|
|
null terminator was not included in the buffer after conversion, but
|
|
there
|
|
is existing ASL that assumes the string null terminator is included. This
|
|
is
|
|
the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
|
|
introduced in the previous version when the code was updated to correctly
|
|
set the converted buffer size as per the ACPI specification. The ACPI
|
|
spec
|
|
is ambiguous and will be updated to specify that the null terminator must
|
|
be
|
|
included in the converted buffer. This also affects the ToBuffer() ASL
|
|
operator.
|
|
|
|
Fixed a problem with the Mid() ASL/AML operator where it did not work
|
|
correctly on Buffer objects. Newly created sub-buffers were not being
|
|
marked
|
|
as initialized.
|
|
|
|
|
|
Fixed a problem in AcpiTbFindTable where incorrect string compares were
|
|
performed on the OemId and OemTableId table header fields. These fields
|
|
are
|
|
not null terminated, so strncmp is now used instead of strcmp.
|
|
|
|
Implemented a restriction on the Store() ASL/AML operator to align the
|
|
behavior with the ACPI specification. Previously, any object could be
|
|
used
|
|
as the source operand. Now, the only objects that may be used are
|
|
Integers,
|
|
Buffers, Strings, Packages, Object References, and DDB Handles. If
|
|
necessary, the original behavior can be restored by enabling the
|
|
EnableInterpreterSlack flag.
|
|
|
|
Enhanced the optional "implicit return" support to allow an implicit
|
|
return
|
|
value from methods that are invoked externally via the AcpiEvaluateObject
|
|
interface. This enables implicit returns from the _STA and _INI methods,
|
|
for example.
|
|
|
|
Changed the Revision() ASL/AML operator to return the current version of
|
|
the
|
|
AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
|
|
returned
|
|
the supported ACPI version (This is the function of the _REV method).
|
|
|
|
Updated the _REV predefined method to return the currently supported
|
|
version
|
|
of ACPI, now 3.
|
|
|
|
Implemented batch mode option for the AcpiExec utility (-b).
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
|
|
Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
|
|
Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
|
|
|
|
----------------------------------------
|
|
10 December 2004. Summary of changes for version 20041210:
|
|
|
|
ACPI 3.0 support is nearing completion in both the iASL compiler and the
|
|
ACPI CA core subsystem.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem in the ToDecimalString operator where the resulting
|
|
string
|
|
length was incorrectly calculated. The length is now calculated exactly,
|
|
eliminating incorrect AE_STRING_LIMIT exceptions.
|
|
|
|
Fixed a problem in the ToHexString operator to allow a maximum 200
|
|
character
|
|
string to be produced.
|
|
|
|
Fixed a problem in the internal string-to-buffer and buffer-to-buffer
|
|
copy
|
|
routine where the length of the resulting buffer was not truncated to the
|
|
new size (if the target buffer already existed).
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
|
|
Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
|
|
Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented the new ACPI 3.0 resource template macros - DWordSpace,
|
|
ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
|
|
Includes support in the disassembler.
|
|
|
|
Implemented support for the new (ACPI 3.0) parameter to the Register
|
|
macro,
|
|
AccessSize.
|
|
|
|
Fixed a problem where the _HE resource name for the Interrupt macro was
|
|
referencing bit 0 instead of bit 1.
|
|
|
|
Implemented check for maximum 255 interrupts in the Interrupt macro.
|
|
|
|
Fixed a problem with the predefined resource descriptor names where
|
|
incorrect AML code was generated if the offset within the resource buffer
|
|
was 0 or 1. The optimizer shortened the AML code to a single byte opcode
|
|
but did not update the surrounding package lengths.
|
|
|
|
Changes to the Dma macro: All channels within the channel list must be
|
|
in
|
|
the range 0-7. Maximum 8 channels can be specified. BusMaster operand is
|
|
optional (default is BusMaster).
|
|
|
|
Implemented check for maximum 7 data bytes for the VendorShort macro.
|
|
|
|
The ReadWrite parameter is now optional for the Memory32 and similar
|
|
macros.
|
|
|
|
----------------------------------------
|
|
03 December 2004. Summary of changes for version 20041203:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The low-level field insertion/extraction code (exfldio) has been
|
|
completely
|
|
rewritten to eliminate unnecessary complexity, bugs, and boundary
|
|
conditions.
|
|
|
|
Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
|
|
ToDecimalString
|
|
operators where the input operand could be inadvertently deleted if no
|
|
conversion was necessary (e.g., if the input to ToInteger was an Integer
|
|
object.)
|
|
|
|
Fixed a problem with the ToDecimalString and ToHexString where an
|
|
incorrect
|
|
exception code was returned if the resulting string would be > 200 chars.
|
|
AE_STRING_LIMIT is now returned.
|
|
|
|
Fixed a problem with the Concatenate operator where AE_OK was always
|
|
returned, even if the operation failed.
|
|
|
|
Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
|
|
semaphores to be allocated.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
|
|
Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
|
|
Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed typechecking for the ObjectType and SizeOf operators. Problem was
|
|
recently introduced in 20041119.
|
|
|
|
Fixed a problem with the ToUUID macro where the upper nybble of each
|
|
buffer
|
|
byte was inadvertently set to zero.
|
|
|
|
----------------------------------------
|
|
19 November 2004. Summary of changes for version 20041119:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem in the internal ConvertToInteger routine where new
|
|
integers
|
|
were not truncated to 32 bits for 32-bit ACPI tables. This routine
|
|
converts
|
|
buffers and strings to integers.
|
|
|
|
Implemented support to store a value to an Index() on a String object.
|
|
This
|
|
is an ACPI 2.0 feature that had not yet been implemented.
|
|
|
|
Implemented new behavior for storing objects to individual package
|
|
elements
|
|
(via the Index() operator). The previous behavior was to invoke the
|
|
implicit
|
|
conversion rules if an object was already present at the index. The new
|
|
behavior is to simply delete any existing object and directly store the
|
|
new
|
|
object. Although the ACPI specification seems unclear on this subject,
|
|
other
|
|
ACPI implementations behave in this manner. (This is the root of the
|
|
AE_BAD_HEX_CONSTANT issue.)
|
|
|
|
Modified the RSDP memory scan mechanism to support the extended checksum
|
|
for
|
|
ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
|
|
RSDP signature is found with a valid checksum.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
|
|
Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
|
|
Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a missing semicolon in the aslcompiler.y file.
|
|
|
|
----------------------------------------
|
|
05 November 2004. Summary of changes for version 20041105:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support for FADT revision 2. This was an interim table
|
|
(between
|
|
ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
|
|
|
|
Implemented optional support to allow uninitialized LocalX and ArgX
|
|
variables in a control method. The variables are initialized to an
|
|
Integer
|
|
object with a value of zero. This support is enabled by setting the
|
|
AcpiGbl_EnableInterpreterSlack flag to TRUE.
|
|
|
|
Implemented support for Integer objects for the SizeOf operator. Either
|
|
4
|
|
or 8 is returned, depending on the current integer size (32-bit or 64-
|
|
bit,
|
|
depending on the parent table revision).
|
|
|
|
Fixed a problem in the implementation of the SizeOf and ObjectType
|
|
operators
|
|
where the operand was resolved to a value too early, causing incorrect
|
|
return values for some objects.
|
|
|
|
Fixed some possible memory leaks during exceptional conditions.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
|
|
Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
|
|
Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented support for all ACPI 3.0 reserved names and methods.
|
|
|
|
Implemented all ACPI 3.0 grammar elements in the front-end, including
|
|
support for semicolons.
|
|
|
|
Implemented the ACPI 3.0 Function() and ToUUID() macros
|
|
|
|
Fixed a problem in the disassembler where a Scope() operator would not be
|
|
emitted properly if the target of the scope was in another table.
|
|
|
|
----------------------------------------
|
|
15 October 2004. Summary of changes for version 20041015:
|
|
|
|
Note: ACPI CA is currently undergoing an in-depth and complete formal
|
|
evaluation to test/verify the following areas. Other suggestions are
|
|
welcome. This will result in an increase in the frequency of releases and
|
|
the number of bug fixes in the next few months.
|
|
- Functional tests for all ASL/AML operators
|
|
- All implicit/explicit type conversions
|
|
- Bit fields and operation regions
|
|
- 64-bit math support and 32-bit-only "truncated" math support
|
|
- Exceptional conditions, both compiler and interpreter
|
|
- Dynamic object deletion and memory leaks
|
|
- ACPI 3.0 support when implemented
|
|
- External interfaces to the ACPI subsystem
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed two alignment issues on 64-bit platforms - within debug statements
|
|
in
|
|
AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
|
|
Address
|
|
field within the non-aligned ACPI generic address structure.
|
|
|
|
Fixed a problem in the Increment and Decrement operators where incorrect
|
|
operand resolution could result in the inadvertent modification of the
|
|
original integer when the integer is passed into another method as an
|
|
argument and the arg is then incremented/decremented.
|
|
|
|
Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
|
|
bit
|
|
BCD number were truncated during conversion.
|
|
|
|
Fixed a problem in the ToDecimal operator where the length of the
|
|
resulting
|
|
string could be set incorrectly too long if the input operand was a
|
|
Buffer
|
|
object.
|
|
|
|
Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
|
|
(0)
|
|
within a buffer would prematurely terminate a compare between buffer
|
|
objects.
|
|
|
|
Added a check for string overflow (>200 characters as per the ACPI
|
|
specification) during the Concatenate operator with two string operands.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
|
|
Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
|
|
Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
|
|
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Allow the use of the ObjectType operator on uninitialized Locals and Args
|
|
(returns 0 as per the ACPI specification).
|
|
|
|
Fixed a problem where the compiler would fault if there was a syntax
|
|
error
|
|
in the FieldName of all of the various CreateXXXField operators.
|
|
|
|
Disallow the use of lower case letters within the EISAID macro, as per
|
|
the
|
|
ACPI specification. All EISAID strings must be of the form "UUUNNNN"
|
|
Where
|
|
U is an uppercase letter and N is a hex digit.
|
|
|
|
|
|
----------------------------------------
|
|
06 October 2004. Summary of changes for version 20041006:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support for the ACPI 3.0 Timer operator. This ASL function
|
|
implements a 64-bit timer with 100 nanosecond granularity.
|
|
|
|
Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
|
|
implement the ACPI 3.0 Timer operator. This allows the host OS to
|
|
implement
|
|
the timer with the best clock available. Also, it keeps the core
|
|
subsystem
|
|
out of the clock handling business, since the host OS (usually) performs
|
|
this function.
|
|
|
|
Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
|
|
functions use a 64-bit address which is part of the packed ACPI Generic
|
|
Address Structure. Since the structure is non-aligned, the alignment
|
|
macros
|
|
are now used to extract the address to a local variable before use.
|
|
|
|
Fixed a problem where the ToInteger operator assumed all input strings
|
|
were
|
|
hexadecimal. The operator now handles both decimal strings and hex
|
|
strings
|
|
(prefixed with "0x").
|
|
|
|
Fixed a problem where the string length in the string object created as a
|
|
result of the internal ConvertToString procedure could be incorrect. This
|
|
potentially affected all implicit conversions and also the
|
|
ToDecimalString
|
|
and ToHexString operators.
|
|
|
|
Fixed two problems in the ToString operator. If the length parameter was
|
|
zero, an incorrect string object was created and the value of the input
|
|
length parameter was inadvertently changed from zero to Ones.
|
|
|
|
Fixed a problem where the optional ResourceSource string in the
|
|
ExtendedIRQ
|
|
resource macro was ignored.
|
|
|
|
Simplified the interfaces to the internal division functions, reducing
|
|
code
|
|
size and complexity.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
|
|
Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
|
|
Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented support for the ACPI 3.0 Timer operator.
|
|
|
|
Fixed a problem where the Default() operator was inadvertently ignored in
|
|
a
|
|
Switch/Case block. This was a problem in the translation of the Switch
|
|
statement to If...Else pairs.
|
|
|
|
Added support to allow a standalone Return operator, with no parentheses
|
|
(or
|
|
operands).
|
|
|
|
Fixed a problem with code generation for the ElseIf operator where the
|
|
translated Else...If parse tree was improperly constructed leading to the
|
|
loss of some code.
|
|
|
|
----------------------------------------
|
|
22 September 2004. Summary of changes for version 20040922:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem with the implementation of the LNot() operator where
|
|
"Ones"
|
|
was not returned for the TRUE case. Changed the code to return Ones
|
|
instead
|
|
of (!Arg) which was usually 1. This change affects iASL constant folding
|
|
for
|
|
this operator also.
|
|
|
|
Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
|
|
not
|
|
initialized properly -- Now zero the entire buffer in this case where the
|
|
buffer already exists.
|
|
|
|
Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
|
|
Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
|
|
related code considerably. This will require changes/updates to all OS
|
|
interface layers (OSLs.)
|
|
|
|
Implemented a new external interface, AcpiInstallExceptionHandler, to
|
|
allow
|
|
a system exception handler to be installed. This handler is invoked upon
|
|
any
|
|
run-time exception that occurs during control method execution.
|
|
|
|
Added support for the DSDT in AcpiTbFindTable. This allows the
|
|
DataTableRegion() operator to access the local copy of the DSDT.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
|
|
Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
|
|
Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem with constant folding and the LNot operator. LNot was
|
|
returning 1 in the TRUE case, not Ones as per the ACPI specification.
|
|
This
|
|
could result in the generation of an incorrect folded/reduced constant.
|
|
|
|
End-Of-File is now allowed within a "//"-style comment. A parse error no
|
|
longer occurs if such a comment is at the very end of the input ASL
|
|
source
|
|
file.
|
|
|
|
Implemented the "-r" option to override the Revision in the table header.
|
|
The initial use of this option will be to simplify the evaluation of the
|
|
AML
|
|
interpreter by allowing a single ASL source module to be compiled for
|
|
either
|
|
32-bit or 64-bit integers.
|
|
|
|
|
|
----------------------------------------
|
|
27 August 2004. Summary of changes for version 20040827:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
- Implemented support for implicit object conversion in the non-numeric
|
|
logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
|
|
and
|
|
LNotEqual.) Any combination of Integers/Strings/Buffers may now be used;
|
|
the second operand is implicitly converted on the fly to match the type
|
|
of
|
|
the first operand. For example:
|
|
|
|
LEqual (Source1, Source2)
|
|
|
|
Source1 and Source2 must each evaluate to an integer, a string, or a
|
|
buffer.
|
|
The data type of Source1 dictates the required type of Source2. Source2
|
|
is
|
|
implicitly converted if necessary to match the type of Source1.
|
|
|
|
- Updated and corrected the behavior of the string conversion support.
|
|
The
|
|
rules concerning conversion of buffers to strings (according to the ACPI
|
|
specification) are as follows:
|
|
|
|
ToDecimalString - explicit byte-wise conversion of buffer to string of
|
|
decimal values (0-255) separated by commas. ToHexString - explicit byte-
|
|
wise
|
|
conversion of buffer to string of hex values (0-FF) separated by commas.
|
|
ToString - explicit byte-wise conversion of buffer to string. Byte-by-
|
|
byte
|
|
copy with no transform except NULL terminated. Any other implicit buffer-
|
|
to-
|
|
string conversion - byte-wise conversion of buffer to string of hex
|
|
values
|
|
(0-FF) separated by spaces.
|
|
|
|
- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
|
|
|
|
- Fixed a problem in AcpiNsGetPathnameLength where the returned length
|
|
was
|
|
one byte too short in the case of a node in the root scope. This could
|
|
cause a fault during debug output.
|
|
|
|
- Code and Data Size: Current and previous core subsystem library sizes
|
|
are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
|
|
Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
|
|
Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
- Fixed a Linux generation error.
|
|
|
|
|
|
----------------------------------------
|
|
16 August 2004. Summary of changes for version 20040816:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Designed and implemented support within the AML interpreter for the so-
|
|
called "implicit return". This support returns the result of the last
|
|
ASL
|
|
operation within a control method, in the absence of an explicit Return()
|
|
operator. A few machines depend on this behavior, even though it is not
|
|
explicitly supported by the ASL language. It is optional support that
|
|
can
|
|
be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
|
|
|
|
Removed support for the PCI_Config address space from the internal low
|
|
level
|
|
hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This
|
|
support was not used internally, and would not work correctly anyway
|
|
because
|
|
the PCI bus number and segment number were not supported. There are
|
|
separate interfaces for PCI configuration space access because of the
|
|
unique
|
|
interface.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
|
|
Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
|
|
Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem where constants in ASL expressions at the root level (not
|
|
within a control method) could be inadvertently truncated during code
|
|
generation. This problem was introduced in the 20040715 release.
|
|
|
|
|
|
----------------------------------------
|
|
15 July 2004. Summary of changes for version 20040715:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Restructured the internal HW GPE interfaces to pass/track the current
|
|
state
|
|
of interrupts (enabled/disabled) in order to avoid possible deadlock and
|
|
increase flexibility of the interfaces.
|
|
|
|
Implemented a "lexicographical compare" for String and Buffer objects
|
|
within
|
|
the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
|
|
-
|
|
as per further clarification to the ACPI specification. Behavior is
|
|
similar
|
|
to C library "strcmp".
|
|
|
|
Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
|
|
external function. In the 32-bit non-debug case, the stack use has been
|
|
reduced from 168 bytes to 32 bytes.
|
|
|
|
Deployed a new run-time configuration flag,
|
|
AcpiGbl_EnableInterpreterSlack,
|
|
whose purpose is to allow the AML interpreter to forgive certain bad AML
|
|
constructs. Default setting is FALSE.
|
|
|
|
Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
|
|
IO
|
|
support code. If enabled, it allows field access to go beyond the end of
|
|
a
|
|
region definition if the field is within the region length rounded up to
|
|
the
|
|
next access width boundary (a common coding error.)
|
|
|
|
Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
|
|
ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also,
|
|
these
|
|
symbols are lowercase by the latest version of the AcpiSrc tool.
|
|
|
|
The prototypes for the PCI interfaces in acpiosxf.h have been updated to
|
|
rename "Register" to simply "Reg" to prevent certain compilers from
|
|
complaining.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
|
|
Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
|
|
Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented full support for Package objects within the Case() operator.
|
|
Note: The Break() operator is currently not supported within Case blocks
|
|
(TermLists) as there is some question about backward compatibility with
|
|
ACPI
|
|
1.0 interpreters.
|
|
|
|
|
|
Fixed a problem where complex terms were not supported properly within
|
|
the
|
|
Switch() operator.
|
|
|
|
Eliminated extraneous warning for compiler-emitted reserved names of the
|
|
form "_T_x". (Used in Switch/Case operators.)
|
|
|
|
Eliminated optimization messages for "_T_x" objects and small constants
|
|
within the DefinitionBlock operator.
|
|
|
|
|
|
----------------------------------------
|
|
15 June 2004. Summary of changes for version 20040615:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support for Buffer and String objects (as per ACPI 2.0) for
|
|
the
|
|
following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
|
|
LLessEqual.
|
|
|
|
All directory names in the entire source package are lower case, as they
|
|
were in earlier releases.
|
|
|
|
Implemented "Disassemble" command in the AML debugger that will
|
|
disassemble
|
|
a single control method.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
|
|
Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
|
|
|
|
Current Release:
|
|
Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
|
|
Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented support for Buffer and String objects (as per ACPI 2.0) for
|
|
the
|
|
following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
|
|
LLessEqual.
|
|
|
|
All directory names in the entire source package are lower case, as they
|
|
were in earlier releases.
|
|
|
|
Fixed a fault when using the -g or -d<nofilename> options if the FADT was
|
|
not found.
|
|
|
|
Fixed an issue with the Windows version of the compiler where later
|
|
versions
|
|
of Windows place the FADT in the registry under the name "FADT" and not
|
|
"FACP" as earlier versions did. This applies when using the -g or -
|
|
d<nofilename> options. The compiler now looks for both strings as
|
|
necessary.
|
|
|
|
Fixed a problem with compiler namepath optimization where a namepath
|
|
within
|
|
the Scope() operator could not be optimized if the namepath was a subpath
|
|
of
|
|
the current scope path.
|
|
|
|
----------------------------------------
|
|
27 May 2004. Summary of changes for version 20040527:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Completed a new design and implementation for EBDA (Extended BIOS Data
|
|
Area)
|
|
support in the RSDP scan code. The original code improperly scanned for
|
|
the
|
|
EBDA by simply scanning from memory location 0 to 0x400. The correct
|
|
method
|
|
is to first obtain the EBDA pointer from within the BIOS data area, then
|
|
scan 1K of memory starting at the EBDA pointer. There appear to be few
|
|
if
|
|
any machines that place the RSDP in the EBDA, however.
|
|
|
|
Integrated a fix for a possible fault during evaluation of BufferField
|
|
arguments. Obsolete code that was causing the problem was removed.
|
|
|
|
Found and fixed a problem in the Field Support Code where data could be
|
|
corrupted on a bit field read that starts on an aligned boundary but does
|
|
not end on an aligned boundary. Merged the read/write "datum length"
|
|
calculation code into a common procedure.
|
|
|
|
Rolled in a couple of changes to the FreeBSD-specific header.
|
|
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
|
|
Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
|
|
Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed a generation warning produced by some overly-verbose compilers for
|
|
a
|
|
64-bit constant.
|
|
|
|
----------------------------------------
|
|
14 May 2004. Summary of changes for version 20040514:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where hardware GPE enable bits sometimes not set properly
|
|
during and after GPE method execution. Result of 04/27 changes.
|
|
|
|
Removed extra "clear all GPEs" when sleeping/waking.
|
|
|
|
Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
|
|
AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
|
|
to
|
|
the new AcpiEv* calls as appropriate.
|
|
|
|
ACPI_OS_NAME was removed from the OS-specific headers. The default name
|
|
is
|
|
now "Microsoft Windows NT" for maximum compatibility. However this can
|
|
be
|
|
changed by modifying the acconfig.h file.
|
|
|
|
Allow a single invocation of AcpiInstallNotifyHandler for a handler that
|
|
traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag.
|
|
|
|
Run _INI methods on ThermalZone objects. This is against the ACPI
|
|
specification, but there is apparently ASL code in the field that has
|
|
these
|
|
_INI methods, and apparently "other" AML interpreters execute them.
|
|
|
|
Performed a full 16/32/64 bit lint that resulted in some small changes.
|
|
|
|
Added a sleep simulation command to the AML debugger to test sleep code.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
|
|
Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
|
|
Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
|
|
|
|
----------------------------------------
|
|
27 April 2004. Summary of changes for version 20040427:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Completed a major overhaul of the GPE handling within ACPI CA. There are
|
|
now three types of GPEs: wake-only, runtime-only, and combination
|
|
wake/run.
|
|
The only GPEs allowed to be combination wake/run are for button-style
|
|
devices such as a control-method power button, control-method sleep
|
|
button,
|
|
or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are
|
|
not
|
|
referenced by any _PRW methods are marked for "runtime" and hardware
|
|
enabled. Any GPE that is referenced by a _PRW method is marked for
|
|
"wake"
|
|
(and disabled at runtime). However, at sleep time, only those GPEs that
|
|
have been specifically enabled for wake via the AcpiEnableGpe interface
|
|
will
|
|
actually be hardware enabled.
|
|
|
|
A new external interface has been added, AcpiSetGpeType(), that is meant
|
|
to
|
|
be used by device drivers to force a GPE to a particular type. It will
|
|
be
|
|
especially useful for the drivers for the button devices mentioned above.
|
|
|
|
Completed restructuring of the ACPI CA initialization sequence so that
|
|
default operation region handlers are installed before GPEs are
|
|
initialized
|
|
and the _PRW methods are executed. This will prevent errors when the
|
|
_PRW
|
|
methods attempt to access system memory or I/O space.
|
|
|
|
GPE enable/disable no longer reads the GPE enable register. We now keep
|
|
the
|
|
enable info for runtime and wake separate and in the GPE_EVENT_INFO. We
|
|
thus no longer depend on the hardware to maintain these bits.
|
|
|
|
Always clear the wake status and fixed/GPE status bits before sleep, even
|
|
for state S5.
|
|
|
|
Improved the AML debugger output for displaying the GPE blocks and their
|
|
current status.
|
|
|
|
Added new strings for the _OSI method, of the form "Windows 2001 SPx"
|
|
where
|
|
x = 0,1,2,3,4.
|
|
|
|
Fixed a problem where the physical address was incorrectly calculated
|
|
when
|
|
the Load() operator was used to directly load from an Operation Region
|
|
(vs.
|
|
loading from a Field object.) Also added check for minimum table length
|
|
for
|
|
this case.
|
|
|
|
Fix for multiple mutex acquisition. Restore original thread SyncLevel on
|
|
mutex release.
|
|
|
|
Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
|
|
consistency with the other fields returned.
|
|
|
|
Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such
|
|
structure for each GPE in the system, so the size of this structure is
|
|
important.
|
|
|
|
CPU stack requirement reduction: Cleaned up the method execution and
|
|
object
|
|
evaluation paths so that now a parameter structure is passed, instead of
|
|
copying the various method parameters over and over again.
|
|
|
|
In evregion.c: Correctly exit and reenter the interpreter region if and
|
|
only if dispatching an operation region request to a user-installed
|
|
handler.
|
|
Do not exit/reenter when dispatching to a default handler (e.g., default
|
|
system memory or I/O handlers)
|
|
|
|
|
|
Notes for updating drivers for the new GPE support. The following
|
|
changes
|
|
must be made to ACPI-related device drivers that are attached to one or
|
|
more
|
|
GPEs: (This information will be added to the ACPI CA Programmer
|
|
Reference.)
|
|
|
|
1) AcpiInstallGpeHandler no longer automatically enables the GPE, you
|
|
must
|
|
explicitly call AcpiEnableGpe.
|
|
2) There is a new interface called AcpiSetGpeType. This should be called
|
|
before enabling the GPE. Also, this interface will automatically disable
|
|
the GPE if it is currently enabled.
|
|
3) AcpiEnableGpe no longer supports a GPE type flag.
|
|
|
|
Specific drivers that must be changed:
|
|
1) EC driver:
|
|
AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
|
|
AeGpeHandler, NULL);
|
|
AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
|
|
AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
|
|
|
|
2) Button Drivers (Power, Lid, Sleep):
|
|
Run _PRW method under parent device
|
|
If _PRW exists: /* This is a control-method button */
|
|
Extract GPE number and possibly GpeDevice
|
|
AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
|
|
AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
|
|
|
|
For all other devices that have _PRWs, we automatically set the GPE type
|
|
to
|
|
ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
|
|
This
|
|
must be done on a selective basis, usually requiring some kind of user
|
|
app
|
|
to allow the user to pick the wake devices.
|
|
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
|
|
Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
|
|
Current Release:
|
|
|
|
Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
|
|
Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
|
|
|
|
|
|
|
|
----------------------------------------
|
|
02 April 2004. Summary of changes for version 20040402:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed an interpreter problem where an indirect store through an ArgX
|
|
parameter was incorrectly applying the "implicit conversion rules" during
|
|
the store. From the ACPI specification: "If the target is a method local
|
|
or
|
|
argument (LocalX or ArgX), no conversion is performed and the result is
|
|
stored directly to the target". The new behavior is to disable implicit
|
|
conversion during ALL stores to an ArgX.
|
|
|
|
Changed the behavior of the _PRW method scan to ignore any and all errors
|
|
returned by a given _PRW. This prevents the scan from aborting from the
|
|
failure of any single _PRW.
|
|
|
|
Moved the runtime configuration parameters from the global init procedure
|
|
to
|
|
static variables in acglobal.h. This will allow the host to override the
|
|
default values easily.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
|
|
Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
|
|
Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
iASL now fully disassembles SSDTs. However, External() statements are
|
|
not
|
|
generated automatically for unresolved symbols at this time. This is a
|
|
planned feature for future implementation.
|
|
|
|
Fixed a scoping problem in the disassembler that occurs when the type of
|
|
the
|
|
target of a Scope() operator is overridden. This problem caused an
|
|
incorrectly nested internal namespace to be constructed.
|
|
|
|
Any warnings or errors that are emitted during disassembly are now
|
|
commented
|
|
out automatically so that the resulting file can be recompiled without
|
|
any
|
|
hand editing.
|
|
|
|
----------------------------------------
|
|
26 March 2004. Summary of changes for version 20040326:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support for "wake" GPEs via interaction between GPEs and the
|
|
_PRW methods. Every GPE that is pointed to by one or more _PRWs is
|
|
identified as a WAKE GPE and by default will no longer be enabled at
|
|
runtime. Previously, we were blindly enabling all GPEs with a
|
|
corresponding
|
|
_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
|
|
We
|
|
believe this has been the cause of thousands of "spurious" GPEs on some
|
|
systems.
|
|
|
|
This new GPE behavior is can be reverted to the original behavior (enable
|
|
ALL GPEs at runtime) via a runtime flag.
|
|
|
|
Fixed a problem where aliased control methods could not access objects
|
|
properly. The proper scope within the namespace was not initialized
|
|
(transferred to the target of the aliased method) before executing the
|
|
target method.
|
|
|
|
Fixed a potential race condition on internal object deletion on the
|
|
return
|
|
object in AcpiEvaluateObject.
|
|
|
|
Integrated a fix for resource descriptors where both _MEM and _MTP were
|
|
being extracted instead of just _MEM. (i.e. bitmask was incorrectly too
|
|
wide, 0x0F instead of 0x03.)
|
|
|
|
Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
|
|
preventing
|
|
a
|
|
fault in some cases.
|
|
|
|
Updated Notify() values for debug statements in evmisc.c
|
|
|
|
Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
|
|
Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
|
|
Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
|
|
Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
|
|
|
|
----------------------------------------
|
|
11 March 2004. Summary of changes for version 20040311:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where errors occurring during the parse phase of control
|
|
method execution did not abort cleanly. For example, objects created and
|
|
installed in the namespace were not deleted. This caused all subsequent
|
|
invocations of the method to return the AE_ALREADY_EXISTS exception.
|
|
|
|
Implemented a mechanism to force a control method to "Serialized"
|
|
execution
|
|
if the method attempts to create namespace objects. (The root of the
|
|
AE_ALREADY_EXISTS problem.)
|
|
|
|
Implemented support for the predefined _OSI "internal" control method.
|
|
Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
|
|
and
|
|
"Windows 2001.1", and can be easily upgraded for new strings as
|
|
necessary.
|
|
This feature will allow "other" operating systems to execute the fully
|
|
tested, "Windows" code path through the ASL code
|
|
|
|
Global Lock Support: Now allows multiple acquires and releases with any
|
|
internal thread. Removed concept of "owning thread" for this special
|
|
mutex.
|
|
|
|
Fixed two functions that were inappropriately declaring large objects on
|
|
the
|
|
CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage
|
|
during
|
|
method execution considerably.
|
|
|
|
Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
|
|
S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
|
|
|
|
Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
|
|
defined on the machine.
|
|
|
|
Implemented two runtime options: One to force all control method
|
|
execution
|
|
to "Serialized" to mimic Windows behavior, another to disable _OSI
|
|
support
|
|
if it causes problems on a given machine.
|
|
|
|
Code and Data Size: Current and previous core subsystem library sizes are
|
|
shown below. These are the code and data sizes for the acpica.lib
|
|
produced
|
|
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code includes the
|
|
debug output trace mechanism and has a much larger code and data size.
|
|
Note
|
|
that these values will vary depending on the efficiency of the compiler
|
|
and
|
|
the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
|
|
Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
|
|
Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Fixed an array size problem for FreeBSD that would cause the compiler to
|
|
fault.
|
|
|
|
----------------------------------------
|
|
20 February 2004. Summary of changes for version 20040220:
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented execution of _SxD methods for Device objects in the
|
|
GetObjectInfo interface.
|
|
|
|
Fixed calls to _SST method to pass the correct arguments.
|
|
|
|
Added a call to _SST on wake to restore to "working" state.
|
|
|
|
Check for End-Of-Buffer failure case in the WalkResources interface.
|
|
|
|
Integrated fix for 64-bit alignment issue in acglobal.h by moving two
|
|
structures to the beginning of the file.
|
|
|
|
After wake, clear GPE status register(s) before enabling GPEs.
|
|
|
|
After wake, clear/enable power button. (Perhaps we should clear/enable
|
|
all
|
|
fixed events upon wake.)
|
|
|
|
Fixed a couple of possible memory leaks in the Namespace manager.
|
|
|
|
Integrated latest acnetbsd.h file.
|
|
|
|
----------------------------------------
|
|
11 February 2004. Summary of changes for version 20040211:
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Completed investigation and implementation of the call-by-reference
|
|
mechanism for control method arguments.
|
|
|
|
Fixed a problem where a store of an object into an indexed package could
|
|
fail if the store occurs within a different method than the method that
|
|
created the package.
|
|
|
|
Fixed a problem where the ToDecimal operator could return incorrect
|
|
results.
|
|
|
|
Fixed a problem where the CopyObject operator could fail on some of the
|
|
more
|
|
obscure objects (e.g., Reference objects.)
|
|
|
|
Improved the output of the Debug object to display buffer, package, and
|
|
index objects.
|
|
|
|
Fixed a problem where constructs of the form "RefOf (ArgX)" did not
|
|
return
|
|
the expected result.
|
|
|
|
Added permanent ACPI_REPORT_ERROR macros for all instances of the
|
|
ACPI_AML_INTERNAL exception.
|
|
|
|
Integrated latest version of acfreebsd.h
|
|
|
|
----------------------------------------
|
|
16 January 2004. Summary of changes for version 20040116:
|
|
|
|
The purpose of this release is primarily to update the copyright years in
|
|
each module, thus causing a huge number of diffs. There are a few small
|
|
functional changes, however.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Improved error messages when there is a problem finding one or more of
|
|
the
|
|
required base ACPI tables
|
|
|
|
Reintroduced the definition of APIC_HEADER in actbl.h
|
|
|
|
Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
|
|
|
|
Removed extraneous reference to NewObj in dsmthdat.c
|
|
|
|
2) iASL compiler
|
|
|
|
Fixed a problem introduced in December that disabled the correct
|
|
disassembly
|
|
of Resource Templates
|
|
|
|
|
|
----------------------------------------
|
|
03 December 2003. Summary of changes for version 20031203:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Changed the initialization of Operation Regions during subsystem
|
|
init to perform two entire walks of the ACPI namespace; The first
|
|
to initialize the regions themselves, the second to execute the
|
|
_REG methods. This fixed some interdependencies across _REG
|
|
methods found on some machines.
|
|
|
|
Fixed a problem where a Store(Local0, Local1) could simply update
|
|
the object reference count, and not create a new copy of the
|
|
object if the Local1 is uninitialized.
|
|
|
|
Implemented support for the _SST reserved method during sleep
|
|
transitions.
|
|
|
|
Implemented support to clear the SLP_TYP and SLP_EN bits when
|
|
waking up, this is apparently required by some machines.
|
|
|
|
When sleeping, clear the wake status only if SleepState is not S5.
|
|
|
|
Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
|
|
pointer arithmetic advanced a string pointer too far.
|
|
|
|
Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
|
|
could be returned if the requested table has not been loaded.
|
|
|
|
Within the support for IRQ resources, restructured the handling of
|
|
the active and edge/level bits.
|
|
|
|
Fixed a few problems in AcpiPsxExecute() where memory could be
|
|
leaked under certain error conditions.
|
|
|
|
Improved error messages for the cases where the ACPI mode could
|
|
not be entered.
|
|
|
|
Code and Data Size: Current and previous core subsystem library
|
|
sizes are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
|
|
these values do not include any ACPI driver or OSPM code. The
|
|
debug version of the code includes the debug output trace
|
|
mechanism and has a much larger code and data size. Note that
|
|
these values will vary depending on the efficiency of the compiler
|
|
and the compiler options used during generation.
|
|
|
|
Previous Release (20031029):
|
|
Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
|
|
Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
|
|
Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Implemented a fix for the iASL disassembler where a bad index was
|
|
generated. This was most noticeable on 64-bit platforms
|
|
|
|
|
|
----------------------------------------
|
|
29 October 2003. Summary of changes for version 20031029:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
|
|
Fixed a problem where a level-triggered GPE with an associated
|
|
_Lxx control method was incorrectly cleared twice.
|
|
|
|
Fixed a problem with the Field support code where an access can
|
|
occur beyond the end-of-region if the field is non-aligned but
|
|
extends to the very end of the parent region (resulted in an
|
|
AE_AML_REGION_LIMIT exception.)
|
|
|
|
Fixed a problem with ACPI Fixed Events where an RT Clock handler
|
|
would not get invoked on an RTC event. The RTC event bitmasks for
|
|
the PM1 registers were not being initialized properly.
|
|
|
|
Implemented support for executing _STA and _INI methods for
|
|
Processor objects. Although this is currently not part of the
|
|
ACPI specification, there is existing ASL code that depends on the
|
|
init-time execution of these methods.
|
|
|
|
Implemented and deployed a GetDescriptorName function to decode
|
|
the various types of internal descriptors. Guards against null
|
|
descriptors during debug output also.
|
|
|
|
Implemented and deployed a GetNodeName function to extract the 4-
|
|
character namespace node name. This function simplifies the debug
|
|
and error output, as well as guarding against null pointers during
|
|
output.
|
|
|
|
Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
|
|
simplify the debug and error output of 64-bit integers. This
|
|
macro replaces the HIDWORD and LODWORD macros for dumping these
|
|
integers.
|
|
|
|
Updated the implementation of the Stall() operator to only call
|
|
AcpiOsStall(), and also return an error if the operand is larger
|
|
than 255. This preserves the required behavior of not
|
|
relinquishing the processor, as would happen if AcpiOsSleep() was
|
|
called for "long stalls".
|
|
|
|
Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
|
|
initialized are now treated as NOOPs.
|
|
|
|
Cleaned up a handful of warnings during 64-bit generation.
|
|
|
|
Fixed a reported error where and incorrect GPE number was passed
|
|
to the GPE dispatch handler. This value is only used for error
|
|
output, however. Used this opportunity to clean up and streamline
|
|
the GPE dispatch code.
|
|
|
|
Code and Data Size: Current and previous core subsystem library
|
|
sizes are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
|
|
these values do not include any ACPI driver or OSPM code. The
|
|
|
|
debug version of the code includes the debug output trace
|
|
mechanism and has a much larger code and data size. Note that
|
|
these values will vary depending on the efficiency of the compiler
|
|
and the compiler options used during generation.
|
|
|
|
Previous Release (20031002):
|
|
Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
|
|
Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
|
|
Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler:
|
|
|
|
Updated the iASL compiler to return an error if the operand to the
|
|
Stall() operator is larger than 255.
|
|
|
|
|
|
----------------------------------------
|
|
02 October 2003. Summary of changes for version 20031002:
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem with Index Fields where the index was not
|
|
incremented for fields that require multiple writes to the
|
|
index/data registers (Fields that are wider than the data
|
|
register.)
|
|
|
|
Fixed a problem with all Field objects where a write could go
|
|
beyond the end-of-field if the field was larger than the access
|
|
granularity and therefore required multiple writes to complete the
|
|
request. An extra write beyond the end of the field could happen
|
|
inadvertently.
|
|
|
|
Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
|
|
would incorrectly be returned if the width of the Data Register
|
|
was larger than the specified field access width.
|
|
|
|
Completed fixes for LoadTable() and Unload() and verified their
|
|
operation. Implemented full support for the "DdbHandle" object
|
|
throughout the ACPI CA subsystem.
|
|
|
|
Implemented full support for the MADT and ECDT tables in the ACPI
|
|
CA header files. Even though these tables are not directly
|
|
consumed by ACPI CA, the header definitions are useful for ACPI
|
|
device drivers.
|
|
|
|
Integrated resource descriptor fixes posted to the Linux ACPI
|
|
list. This included checks for minimum descriptor length, and
|
|
support for trailing NULL strings within descriptors that have
|
|
optional string elements.
|
|
|
|
Code and Data Size: Current and previous core subsystem library
|
|
sizes are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
|
|
these values do not include any ACPI driver or OSPM code. The
|
|
debug version of the code includes the debug output trace
|
|
mechanism and has a much larger code and data size. Note that
|
|
these values will vary depending on the efficiency of the compiler
|
|
and the compiler options used during generation.
|
|
|
|
Previous Release (20030918):
|
|
Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
|
|
Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
|
|
Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
|
|
|
|
|
|
2) iASL Compiler:
|
|
|
|
Implemented detection of non-ASCII characters within the input
|
|
source ASL file. This catches attempts to compile binary (AML)
|
|
files early in the compile, with an informative error message.
|
|
|
|
Fixed a problem where the disassembler would fault if the output
|
|
filename could not be generated or if the output file could not be
|
|
opened.
|
|
|
|
----------------------------------------
|
|
18 September 2003. Summary of changes for version 20030918:
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Found and fixed a longstanding problem with the late execution of
|
|
the various deferred AML opcodes (such as Operation Regions,
|
|
Buffer Fields, Buffers, and Packages). If the name string
|
|
specified for the name of the new object placed the object in a
|
|
scope other than the current scope, the initialization/execution
|
|
of the opcode failed. The solution to this problem was to
|
|
implement a mechanism where the late execution of such opcodes
|
|
does not attempt to lookup/create the name a second time in an
|
|
incorrect scope. This fixes the "region size computed
|
|
incorrectly" problem.
|
|
|
|
Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
|
|
Global Lock AE_BAD_PARAMETER error.
|
|
|
|
Fixed several 64-bit issues with prototypes, casting and data
|
|
types.
|
|
|
|
Removed duplicate prototype from acdisasm.h
|
|
|
|
Fixed an issue involving EC Operation Region Detach (Shaohua Li)
|
|
|
|
Code and Data Size: Current and previous core subsystem library
|
|
sizes are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
|
|
these values do not include any ACPI driver or OSPM code. The
|
|
debug version of the code includes the debug output trace
|
|
mechanism and has a much larger code and data size. Note that
|
|
these values will vary depending on the efficiency of the compiler
|
|
and the compiler options used during generation.
|
|
|
|
Previous Release:
|
|
|
|
Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
|
|
Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
|
|
Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
|
|
|
|
|
|
2) Linux:
|
|
|
|
Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
|
|
correct sleep time in seconds.
|
|
|
|
----------------------------------------
|
|
14 July 2003. Summary of changes for version 20030619:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Parse SSDTs in order discovered, as opposed to reverse order
|
|
(Hrvoje Habjanic)
|
|
|
|
Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
|
|
Klausner,
|
|
Nate Lawson)
|
|
|
|
|
|
2) Linux:
|
|
|
|
Dynamically allocate SDT list (suggested by Andi Kleen)
|
|
|
|
proc function return value cleanups (Andi Kleen)
|
|
|
|
Correctly handle NMI watchdog during long stalls (Andrew Morton)
|
|
|
|
Make it so acpismp=force works (reported by Andrew Morton)
|
|
|
|
|
|
----------------------------------------
|
|
19 June 2003. Summary of changes for version 20030619:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fix To/FromBCD, eliminating the need for an arch-specific #define.
|
|
|
|
Do not acquire a semaphore in the S5 shutdown path.
|
|
|
|
Fix ex_digits_needed for 0. (Takayoshi Kochi)
|
|
|
|
Fix sleep/stall code reversal. (Andi Kleen)
|
|
|
|
Revert a change having to do with control method calling
|
|
semantics.
|
|
|
|
2) Linux:
|
|
|
|
acpiphp update (Takayoshi Kochi)
|
|
|
|
Export acpi_disabled for sonypi (Stelian Pop)
|
|
|
|
Mention acpismp=force in config help
|
|
|
|
Re-add acpitable.c and acpismp=force. This improves backwards
|
|
|
|
compatibility and also cleans up the code to a significant degree.
|
|
|
|
Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
|
|
|
|
----------------------------------------
|
|
22 May 2003. Summary of changes for version 20030522:
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Found and fixed a reported problem where an AE_NOT_FOUND error
|
|
occurred occasionally during _BST evaluation. This turned out to
|
|
be an Owner ID allocation issue where a called method did not get
|
|
a new ID assigned to it. Eventually, (after 64k calls), the Owner
|
|
ID UINT16 would wraparound so that the ID would be the same as the
|
|
caller's and the called method would delete the caller's
|
|
namespace.
|
|
|
|
Implemented extended error reporting for control methods that are
|
|
aborted due to a run-time exception. Output includes the exact
|
|
AML instruction that caused the method abort, a dump of the method
|
|
locals and arguments at the time of the abort, and a trace of all
|
|
nested control method calls.
|
|
|
|
Modified the interpreter to allow the creation of buffers of zero
|
|
length from the AML code. Implemented new code to ensure that no
|
|
attempt is made to actually allocate a memory buffer (of length
|
|
zero) - instead, a simple buffer object with a NULL buffer pointer
|
|
and length zero is created. A warning is no longer issued when
|
|
the AML attempts to create a zero-length buffer.
|
|
|
|
Implemented a workaround for the "leading asterisk issue" in
|
|
_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading
|
|
asterisk is automatically removed if present in any HID, UID, or
|
|
CID strings. The iASL compiler will still flag this asterisk as
|
|
an error, however.
|
|
|
|
Implemented full support for _CID methods that return a package of
|
|
multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface
|
|
now additionally returns a device _CID list if present. This
|
|
required a change to the external interface in order to pass an
|
|
ACPI_BUFFER object as a parameter since the _CID list is of
|
|
variable length.
|
|
|
|
Fixed a problem with the new AE_SAME_HANDLER exception where
|
|
handler initialization code did not know about this exception.
|
|
|
|
Code and Data Size: Current and previous core subsystem library
|
|
sizes are shown below. These are the code and data sizes for the
|
|
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
|
|
these values do not include any ACPI driver or OSPM code. The
|
|
debug version of the code includes the debug output trace
|
|
mechanism and has a much larger code and data size. Note that
|
|
these values will vary depending on the efficiency of the compiler
|
|
and the compiler options used during generation.
|
|
|
|
Previous Release (20030509):
|
|
Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
|
|
Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
|
|
Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
|
|
|
|
|
|
2) Linux:
|
|
|
|
Fixed a bug in which we would reinitialize the ACPI interrupt
|
|
after it was already working, thus disabling all ACPI and the IRQs
|
|
for any other device sharing the interrupt. (Thanks to Stian
|
|
Jordet)
|
|
|
|
Toshiba driver update (John Belmonte)
|
|
|
|
Return only 0 or 1 for our interrupt handler status (Andrew
|
|
Morton)
|
|
|
|
|
|
3) iASL Compiler:
|
|
|
|
Fixed a reported problem where multiple (nested) ElseIf()
|
|
statements were not handled correctly by the compiler, resulting
|
|
in incorrect warnings and incorrect AML code. This was a problem
|
|
in both the ASL parser and the code generator.
|
|
|
|
|
|
4) Documentation:
|
|
|
|
Added changes to existing interfaces, new exception codes, and new
|
|
text concerning reference count object management versus garbage
|
|
collection.
|
|
|
|
----------------------------------------
|
|
09 May 2003. Summary of changes for version 20030509.
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Changed the subsystem initialization sequence to hold off
|
|
installation of address space handlers until the hardware has been
|
|
initialized and the system has entered ACPI mode. This is because
|
|
the installation of space handlers can cause _REG methods to be
|
|
run. Previously, the _REG methods could potentially be run before
|
|
ACPI mode was enabled.
|
|
|
|
Fixed some memory leak issues related to address space handler and
|
|
notify handler installation. There were some problems with the
|
|
reference count mechanism caused by the fact that the handler
|
|
objects are shared across several namespace objects.
|
|
|
|
Fixed a reported problem where reference counts within the
|
|
namespace were not properly updated when named objects created by
|
|
method execution were deleted.
|
|
|
|
Fixed a reported problem where multiple SSDTs caused a deletion
|
|
issue during subsystem termination. Restructured the table data
|
|
structures to simplify the linked lists and the related code.
|
|
|
|
Fixed a problem where the table ID associated with secondary
|
|
tables (SSDTs) was not being propagated into the namespace objects
|
|
created by those tables. This would only present a problem for
|
|
tables that are unloaded at run-time, however.
|
|
|
|
Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
|
|
type as the length parameter (instead of UINT32).
|
|
|
|
Solved a long-standing problem where an ALREADY_EXISTS error
|
|
appears on various systems. This problem could happen when there
|
|
are multiple PCI_Config operation regions under a single PCI root
|
|
bus. This doesn't happen very frequently, but there are some
|
|
systems that do this in the ASL.
|
|
|
|
Fixed a reported problem where the internal DeleteNode function
|
|
was incorrectly handling the case where a namespace node was the
|
|
first in the parent's child list, and had additional peers (not
|
|
the only child, but first in the list of children.)
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
|
|
Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
|
|
Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
|
|
|
|
|
|
2) Linux:
|
|
|
|
Allow ":" in OS override string (Ducrot Bruno)
|
|
|
|
Kobject fix (Greg KH)
|
|
|
|
|
|
3 iASL Compiler/Disassembler:
|
|
|
|
Fixed a problem in the generation of the C source code files (AML
|
|
is emitted in C source statements for BIOS inclusion) where the
|
|
Ascii dump that appears within a C comment at the end of each line
|
|
could cause a compile time error if the AML sequence happens to
|
|
have an open comment or close comment sequence embedded.
|
|
|
|
|
|
----------------------------------------
|
|
24 April 2003. Summary of changes for version 20030424.
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Support for big-endian systems has been implemented. Most of the
|
|
support has been invisibly added behind big-endian versions of the
|
|
ACPI_MOVE_* macros.
|
|
|
|
Fixed a problem in AcpiHwDisableGpeBlock() and
|
|
AcpiHwClearGpeBlock() where an incorrect offset was passed to the
|
|
low level hardware write routine. The offset parameter was
|
|
actually eliminated from the low level read/write routines because
|
|
they had become obsolete.
|
|
|
|
Fixed a problem where a handler object was deleted twice during
|
|
the removal of a fixed event handler.
|
|
|
|
|
|
2) Linux:
|
|
|
|
A fix for SMP systems with link devices was contributed by
|
|
|
|
Compaq's Dan Zink.
|
|
|
|
(2.5) Return whether we handled the interrupt in our IRQ handler.
|
|
(Linux ISRs no longer return void, so we can propagate the handler
|
|
return value from the ACPI CA core back to the OS.)
|
|
|
|
|
|
|
|
3) Documentation:
|
|
|
|
The ACPI CA Programmer Reference has been updated to reflect new
|
|
interfaces and changes to existing interfaces.
|
|
|
|
----------------------------------------
|
|
28 March 2003. Summary of changes for version 20030328.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The GPE Block Device support has been completed. New interfaces
|
|
are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event
|
|
interfaces (enable, disable, clear, getstatus) have been split
|
|
into separate interfaces for Fixed Events and General Purpose
|
|
Events (GPEs) in order to support GPE Block Devices properly.
|
|
|
|
Fixed a problem where the error message "Failed to acquire
|
|
semaphore" would appear during operations on the embedded
|
|
controller (EC).
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
|
|
Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
|
|
Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
|
|
|
|
|
|
----------------------------------------
|
|
28 February 2003. Summary of changes for version 20030228.
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The GPE handling and dispatch code has been completely overhauled
|
|
in preparation for support of GPE Block Devices (ID ACPI0006).
|
|
This affects internal data structures and code only; there should
|
|
be no differences visible externally. One new file has been
|
|
added, evgpeblk.c
|
|
|
|
The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
|
|
fields that are used to determine the GPE block lengths. The
|
|
REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
|
|
structures are ignored. This is per the ACPI specification but it
|
|
isn't very clear. The full 256 Block 0/1 GPEs are now supported
|
|
(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
|
|
|
|
In the SCI interrupt handler, removed the read of the PM1_CONTROL
|
|
register to look at the SCI_EN bit. On some machines, this read
|
|
causes an SMI event and greatly slows down SCI events. (This may
|
|
in fact be the cause of slow battery status response on some
|
|
systems.)
|
|
|
|
Fixed a problem where a store of a NULL string to a package object
|
|
could cause the premature deletion of the object. This was seen
|
|
during execution of the battery _BIF method on some systems,
|
|
resulting in no battery data being returned.
|
|
|
|
Added AcpiWalkResources interface to simplify parsing of resource
|
|
lists.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
|
|
Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
|
|
Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
S3 fixes (Ole Rohne)
|
|
|
|
Update ACPI PHP driver with to use new acpi_walk_resource API
|
|
(Bjorn Helgaas)
|
|
|
|
Add S4BIOS support (Pavel Machek)
|
|
|
|
Map in entire table before performing checksum (John Stultz)
|
|
|
|
Expand the mem= cmdline to allow the specification of reserved and
|
|
ACPI DATA blocks (Pavel Machek)
|
|
|
|
Never use ACPI on VISWS
|
|
|
|
Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
|
|
|
|
Revert a change that allowed P_BLK lengths to be 4 or 5. This is
|
|
causing us to think that some systems support C2 when they really
|
|
don't.
|
|
|
|
Do not count processor objects for non-present CPUs (Thanks to
|
|
Dominik Brodowski)
|
|
|
|
|
|
3) iASL Compiler:
|
|
|
|
Fixed a problem where ASL include files could not be found and
|
|
opened.
|
|
|
|
Added support for the _PDC reserved name.
|
|
|
|
|
|
----------------------------------------
|
|
22 January 2003. Summary of changes for version 20030122.
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Added a check for constructs of the form: Store (Local0, Local0)
|
|
where Local0 is not initialized. Apparently, some BIOS
|
|
programmers believe that this is a NOOP. Since this store doesn't
|
|
do anything anyway, the new prototype behavior will ignore this
|
|
error. This is a case where we can relax the strict checking in
|
|
the interpreter in the name of compatibility.
|
|
|
|
|
|
2) Linux
|
|
|
|
The AcpiSrc Source Conversion Utility has been released with the
|
|
Linux package for the first time. This is the utility that is
|
|
used to convert the ACPI CA base source code to the Linux version.
|
|
|
|
(Both) Handle P_BLK lengths shorter than 6 more gracefully
|
|
|
|
(Both) Move more headers to include/acpi, and delete an unused
|
|
header.
|
|
|
|
(Both) Move drivers/acpi/include directory to include/acpi
|
|
|
|
(Both) Boot functions don't use cmdline, so don't pass it around
|
|
|
|
(Both) Remove include of unused header (Adrian Bunk)
|
|
|
|
(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
|
|
the
|
|
former now also includes the latter, acpiphp.h only needs the one,
|
|
now.
|
|
|
|
(2.5) Make it possible to select method of bios restoring after S3
|
|
resume. [=> no more ugly ifdefs] (Pavel Machek)
|
|
|
|
(2.5) Make proc write interfaces work (Pavel Machek)
|
|
|
|
(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
|
|
|
|
(2.5) Break out ACPI Perf code into its own module, under cpufreq
|
|
(Dominik Brodowski)
|
|
|
|
(2.4) S4BIOS support (Ducrot Bruno)
|
|
|
|
(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
|
|
Visinoni)
|
|
|
|
|
|
3) iASL Compiler:
|
|
|
|
Added support to disassemble SSDT and PSDTs.
|
|
|
|
Implemented support to obtain SSDTs from the Windows registry if
|
|
available.
|
|
|
|
|
|
----------------------------------------
|
|
09 January 2003. Summary of changes for version 20030109.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Changed the behavior of the internal Buffer-to-String conversion
|
|
function. The current ACPI specification states that the contents
|
|
of the buffer are "converted to a string of two-character
|
|
hexadecimal numbers, each separated by a space". Unfortunately,
|
|
this definition is not backwards compatible with existing ACPI 1.0
|
|
implementations (although the behavior was not defined in the ACPI
|
|
1.0 specification). The new behavior simply copies data from the
|
|
buffer to the string until a null character is found or the end of
|
|
the buffer is reached. The new String object is always null
|
|
terminated. This problem was seen during the generation of _BIF
|
|
battery data where incorrect strings were returned for battery
|
|
type, etc. This will also require an errata to the ACPI
|
|
specification.
|
|
|
|
Renamed all instances of NATIVE_UINT and NATIVE_INT to
|
|
ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
|
|
|
|
Copyright in all module headers (both Linux and non-Linux) has be
|
|
updated to 2003.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
|
|
Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
|
|
Current Release:
|
|
Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
|
|
Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Fixed an oops on module insertion/removal (Matthew Tippett)
|
|
|
|
(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
|
|
|
|
(2.5) Replace pr_debug (Randy Dunlap)
|
|
|
|
(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
|
|
|
|
(Both) Eliminate spawning of thread from timer callback, in favor
|
|
of schedule_work()
|
|
|
|
(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
|
|
|
|
(Both) Added define for Fixed Function HW region (Matthew Wilcox)
|
|
|
|
(Both) Add missing statics to button.c (Pavel Machek)
|
|
|
|
Several changes have been made to the source code translation
|
|
utility that generates the Linux Code in order to make the code
|
|
more "Linux-like":
|
|
|
|
All typedefs on structs and unions have been removed in keeping
|
|
with the Linux coding style.
|
|
|
|
Removed the non-Linux SourceSafe module revision number from each
|
|
module header.
|
|
|
|
Completed major overhaul of symbols to be lowercase for linux.
|
|
Doubled the number of symbols that are lowercase.
|
|
|
|
Fixed a problem where identifiers within procedure headers and
|
|
within quotes were not fully lower cased (they were left with a
|
|
starting capital.)
|
|
|
|
Some C macros whose only purpose is to allow the generation of 16-
|
|
bit code are now completely removed in the Linux code, increasing
|
|
readability and maintainability.
|
|
|
|
----------------------------------------
|
|
|
|
12 December 2002. Summary of changes for version 20021212.
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where the creation of a zero-length AML Buffer
|
|
would cause a fault.
|
|
|
|
Fixed a problem where a Buffer object that pointed to a static AML
|
|
buffer (in an ACPI table) could inadvertently be deleted, causing
|
|
memory corruption.
|
|
|
|
Fixed a problem where a user buffer (passed in to the external
|
|
ACPI CA interfaces) could be overwritten if the buffer was too
|
|
small to complete the operation, causing memory corruption.
|
|
|
|
Fixed a problem in the Buffer-to-String conversion code where a
|
|
string of length one was always returned, regardless of the size
|
|
of the input Buffer object.
|
|
|
|
Removed the NATIVE_CHAR data type across the entire source due to
|
|
lack of need and lack of consistent use.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
|
|
Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
|
|
Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
|
|
|
|
|
|
----------------------------------------
|
|
05 December 2002. Summary of changes for version 20021205.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where a store to a String or Buffer object could
|
|
cause corruption of the DSDT if the object type being stored was
|
|
the same as the target object type and the length of the object
|
|
being stored was equal to or smaller than the original (existing)
|
|
target object. This was seen to cause corruption of battery _BIF
|
|
buffers if the _BIF method modified the buffer on the fly.
|
|
|
|
Fixed a problem where an internal error was generated if a control
|
|
method invocation was used in an OperationRegion, Buffer, or
|
|
Package declaration. This was caused by the deferred parsing of
|
|
the control method and thus the deferred creation of the internal
|
|
method object. The solution to this problem was to create the
|
|
internal method object at the moment the method is encountered in
|
|
the first pass - so that subsequent references to the method will
|
|
able to obtain the required parameter count and thus properly
|
|
parse the method invocation. This problem presented itself as an
|
|
AE_AML_INTERNAL during the pass 1 parse phase during table load.
|
|
|
|
Fixed a problem where the internal String object copy routine did
|
|
not always allocate sufficient memory for the target String object
|
|
and caused memory corruption. This problem was seen to cause
|
|
"Allocation already present in list!" errors as memory allocation
|
|
became corrupted.
|
|
|
|
Implemented a new function for the evaluation of namespace objects
|
|
that allows the specification of the allowable return object
|
|
types. This simplifies a lot of code that checks for a return
|
|
object of one or more specific objects returned from the
|
|
evaluation (such as _STA, etc.) This may become and external
|
|
function if it would be useful to ACPI-related drivers.
|
|
|
|
Completed another round of prefixing #defines with "ACPI_" for
|
|
clarity.
|
|
|
|
Completed additional code restructuring to allow more modular
|
|
linking for iASL compiler and AcpiExec. Several files were split
|
|
creating new files. New files: nsparse.c dsinit.c evgpe.c
|
|
|
|
Implemented an abort mechanism to terminate an executing control
|
|
method via the AML debugger. This feature is useful for debugging
|
|
control methods that depend (wait) for specific hardware
|
|
responses.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
|
|
Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
|
|
Current Release:
|
|
Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
|
|
Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
|
|
|
|
|
|
2) iASL Compiler/Disassembler
|
|
|
|
Fixed a compiler code generation problem for "Interrupt" Resource
|
|
Descriptors. If specified in the ASL, the optional "Resource
|
|
Source Index" and "Resource Source" fields were not inserted into
|
|
the correct location within the AML resource descriptor, creating
|
|
an invalid descriptor.
|
|
|
|
Fixed a disassembler problem for "Interrupt" resource descriptors.
|
|
The optional "Resource Source Index" and "Resource Source" fields
|
|
were ignored.
|
|
|
|
|
|
----------------------------------------
|
|
22 November 2002. Summary of changes for version 20021122.
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a reported problem where an object stored to a Method Local
|
|
or Arg was not copied to a new object during the store - the
|
|
object pointer was simply copied to the Local/Arg. This caused
|
|
all subsequent operations on the Local/Arg to also affect the
|
|
original source of the store operation.
|
|
|
|
Fixed a problem where a store operation to a Method Local or Arg
|
|
was not completed properly if the Local/Arg contained a reference
|
|
(from RefOf) to a named field. The general-purpose store-to-
|
|
namespace-node code is now used so that this case is handled
|
|
automatically.
|
|
|
|
Fixed a problem where the internal object copy routine would cause
|
|
a protection fault if the object being copied was a Package and
|
|
contained either 1) a NULL package element or 2) a nested sub-
|
|
package.
|
|
|
|
Fixed a problem with the GPE initialization that resulted from an
|
|
ambiguity in the ACPI specification. One section of the
|
|
specification states that both the address and length of the GPE
|
|
block must be zero if the block is not supported. Another section
|
|
implies that only the address need be zero if the block is not
|
|
supported. The code has been changed so that both the address and
|
|
the length must be non-zero to indicate a valid GPE block (i.e.,
|
|
if either the address or the length is zero, the GPE block is
|
|
invalid.)
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
|
|
Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
|
|
Current Release:
|
|
Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
|
|
Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Cleaned up EC driver. Exported an external EC read/write
|
|
interface. By going through this, other drivers (most notably
|
|
sonypi) will be able to serialize access to the EC.
|
|
|
|
|
|
3) iASL Compiler/Disassembler
|
|
|
|
Implemented support to optionally generate include files for both
|
|
ASM and C (the -i switch). This simplifies BIOS development by
|
|
automatically creating include files that contain external
|
|
declarations for the symbols that are created within the
|
|
|
|
(optionally generated) ASM and C AML source files.
|
|
|
|
|
|
----------------------------------------
|
|
15 November 2002. Summary of changes for version 20021115.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a memory leak problem where an error during resolution of
|
|
|
|
method arguments during a method invocation from another method
|
|
failed to cleanup properly by deleting all successfully resolved
|
|
argument objects.
|
|
|
|
Fixed a problem where the target of the Index() operator was not
|
|
correctly constructed if the source object was a package. This
|
|
problem has not been detected because the use of a target operand
|
|
with Index() is very rare.
|
|
|
|
Fixed a problem with the Index() operator where an attempt was
|
|
made to delete the operand objects twice.
|
|
|
|
Fixed a problem where an attempt was made to delete an operand
|
|
twice during execution of the CondRefOf() operator if the target
|
|
did not exist.
|
|
|
|
Implemented the first of perhaps several internal create object
|
|
functions that create and initialize a specific object type. This
|
|
consolidates duplicated code wherever the object is created, thus
|
|
shrinking the size of the subsystem.
|
|
|
|
Implemented improved debug/error messages for errors that occur
|
|
during nested method invocations. All executing method pathnames
|
|
are displayed (with the error) as the call stack is unwound - thus
|
|
simplifying debug.
|
|
|
|
Fixed a problem introduced in the 10/02 release that caused
|
|
premature deletion of a buffer object if a buffer was used as an
|
|
ASL operand where an integer operand is required (Thus causing an
|
|
implicit object conversion from Buffer to Integer.) The change in
|
|
the 10/02 release was attempting to fix a memory leak (albeit
|
|
incorrectly.)
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
|
|
Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
|
|
Current Release:
|
|
Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
|
|
Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Changed the implementation of the ACPI semaphores to use down()
|
|
instead of down_interruptable(). It is important that the
|
|
execution of ACPI control methods not be interrupted by signals.
|
|
Methods must run to completion, or the system may be left in an
|
|
unknown/unstable state.
|
|
|
|
Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
|
|
(Shawn Starr)
|
|
|
|
|
|
3) iASL Compiler/Disassembler
|
|
|
|
|
|
Changed the default location of output files. All output files
|
|
are now placed in the current directory by default instead of in
|
|
the directory of the source file. This change may affect some
|
|
existing makefiles, but it brings the behavior of the compiler in
|
|
line with other similar tools. The location of the output files
|
|
can be overridden with the -p command line switch.
|
|
|
|
|
|
----------------------------------------
|
|
11 November 2002. Summary of changes for version 20021111.
|
|
|
|
|
|
0) ACPI Specification 2.0B is released and is now available at:
|
|
http://www.acpi.info/index.html
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support for the ACPI 2.0 SMBus Operation Regions.
|
|
This includes the early detection and handoff of the request to
|
|
the SMBus region handler (avoiding all of the complex field
|
|
support code), and support for the bidirectional return packet
|
|
from an SMBus write operation. This paves the way for the
|
|
development of SMBus drivers in each host operating system.
|
|
|
|
Fixed a problem where the semaphore WAIT_FOREVER constant was
|
|
defined as 32 bits, but must be 16 bits according to the ACPI
|
|
specification. This had the side effect of causing ASL
|
|
Mutex/Event timeouts even though the ASL code requested a wait
|
|
forever. Changed all internal references to the ACPI timeout
|
|
parameter to 16 bits to prevent future problems. Changed the name
|
|
of WAIT_FOREVER to ACPI_WAIT_FOREVER.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
|
|
Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
|
|
Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Module loading/unloading fixes (John Cagle)
|
|
|
|
|
|
3) iASL Compiler/Disassembler
|
|
|
|
Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
|
|
|
|
Implemented support for the disassembly of all SMBus protocol
|
|
keywords (SMBQuick, SMBWord, etc.)
|
|
|
|
----------------------------------------
|
|
01 November 2002. Summary of changes for version 20021101.
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where platforms that have a GPE1 block but no GPE0
|
|
block were not handled correctly. This resulted in a "GPE
|
|
overlap" error message. GPE0 is no longer required.
|
|
|
|
Removed code added in the previous release that inserted nodes
|
|
into the namespace in alphabetical order. This caused some side-
|
|
effects on various machines. The root cause of the problem is
|
|
still under investigation since in theory, the internal ordering
|
|
of the namespace nodes should not matter.
|
|
|
|
|
|
Enhanced error reporting for the case where a named object is not
|
|
found during control method execution. The full ACPI namepath
|
|
(name reference) of the object that was not found is displayed in
|
|
this case.
|
|
|
|
Note: as a result of the overhaul of the namespace object types in
|
|
the previous release, the namespace nodes for the predefined
|
|
scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
|
|
instead of ACPI_TYPE_ANY. This simplifies the namespace
|
|
management code but may affect code that walks the namespace tree
|
|
looking for specific object types.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a much larger code and data size. Note that these values will
|
|
vary depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
|
|
Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
|
|
Current Release:
|
|
Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
|
|
Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Fixed a problem introduced in the previous release where the
|
|
Processor and Thermal objects were not recognized and installed in
|
|
/proc. This was related to the scope type change described above.
|
|
|
|
|
|
3) iASL Compiler/Disassembler
|
|
|
|
Implemented the -g option to get all of the required ACPI tables
|
|
from the registry and save them to files (Windows version of the
|
|
compiler only.) The required tables are the FADT, FACS, and DSDT.
|
|
|
|
Added ACPI table checksum validation during table disassembly in
|
|
order to catch corrupted tables.
|
|
|
|
|
|
----------------------------------------
|
|
22 October 2002. Summary of changes for version 20021022.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented a restriction on the Scope operator that the target
|
|
must already exist in the namespace at the time the operator is
|
|
encountered (during table load or method execution). In other
|
|
words, forward references are not allowed and Scope() cannot
|
|
create a new object. This changes the previous behavior where the
|
|
interpreter would create the name if not found. This new behavior
|
|
correctly enables the search-to-root algorithm during namespace
|
|
lookup of the target name. Because of this upsearch, this fixes
|
|
the known Compaq _SB_.OKEC problem and makes both the AML
|
|
interpreter and iASL compiler compatible with other ACPI
|
|
implementations.
|
|
|
|
Completed a major overhaul of the internal ACPI object types for
|
|
the ACPI Namespace and the associated operand objects. Many of
|
|
these types had become obsolete with the introduction of the two-
|
|
pass namespace load. This cleanup simplifies the code and makes
|
|
the entire namespace load mechanism much clearer and easier to
|
|
understand.
|
|
|
|
Improved debug output for tracking scope opening/closing to help
|
|
diagnose scoping issues. The old scope name as well as the new
|
|
scope name are displayed. Also improved error messages for
|
|
problems with ASL Mutex objects and error messages for GPE
|
|
problems.
|
|
|
|
Cleaned up the namespace dump code, removed obsolete code.
|
|
|
|
All string output (for all namespace/object dumps) now uses the
|
|
common ACPI string output procedure which handles escapes properly
|
|
and does not emit non-printable characters.
|
|
|
|
Fixed some issues with constants in the 64-bit version of the
|
|
local C library (utclib.c)
|
|
|
|
|
|
2) Linux
|
|
|
|
EC Driver: No longer attempts to acquire the Global Lock at
|
|
interrupt level.
|
|
|
|
|
|
3) iASL Compiler/Disassembler
|
|
|
|
Implemented ACPI 2.0B grammar change that disallows all Type 1 and
|
|
2 opcodes outside of a control method. This means that the
|
|
"executable" operators (versus the "namespace" operators) cannot
|
|
be used at the table level; they can only be used within a control
|
|
method.
|
|
|
|
Implemented the restriction on the Scope() operator where the
|
|
target must already exist in the namespace at the time the
|
|
operator is encountered (during ASL compilation). In other words,
|
|
forward references are not allowed and Scope() cannot create a new
|
|
object. This makes the iASL compiler compatible with other ACPI
|
|
implementations and makes the Scope() implementation adhere to the
|
|
ACPI specification.
|
|
|
|
Fixed a problem where namepath optimization for the Alias operator
|
|
was optimizing the wrong path (of the two namepaths.) This caused
|
|
a "Missing alias link" error message.
|
|
|
|
Fixed a problem where an "unknown reserved name" warning could be
|
|
incorrectly generated for names like "_SB" when the trailing
|
|
underscore is not used in the original ASL.
|
|
|
|
Fixed a problem where the reserved name check did not handle
|
|
NamePaths with multiple NameSegs correctly. The first nameseg of
|
|
the NamePath was examined instead of the last NameSeg.
|
|
|
|
|
|
----------------------------------------
|
|
|
|
02 October 2002. Summary of changes for this release.
|
|
|
|
|
|
1) ACPI CA Core Subsystem version 20021002:
|
|
|
|
Fixed a problem where a store/copy of a string to an existing
|
|
string did not always set the string length properly in the String
|
|
object.
|
|
|
|
Fixed a reported problem with the ToString operator where the
|
|
behavior was identical to the ToHexString operator instead of just
|
|
simply converting a raw buffer to a string data type.
|
|
|
|
Fixed a problem where CopyObject and the other "explicit"
|
|
conversion operators were not updating the internal namespace node
|
|
type as part of the store operation.
|
|
|
|
Fixed a memory leak during implicit source operand conversion
|
|
where the original object was not deleted if it was converted to a
|
|
new object of a different type.
|
|
|
|
Enhanced error messages for all problems associated with namespace
|
|
lookups. Common procedure generates and prints the lookup name as
|
|
well as the formatted status.
|
|
|
|
Completed implementation of a new design for the Alias support
|
|
within the namespace. The existing design did not handle the case
|
|
where a new object was assigned to one of the two names due to the
|
|
use of an explicit conversion operator, resulting in the two names
|
|
pointing to two different objects. The new design simply points
|
|
the Alias name to the original name node - not to the object.
|
|
This results in a level of indirection that must be handled in the
|
|
name resolution mechanism.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
|
|
Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
|
|
Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Initialize thermal driver's timer before it is used. (Knut
|
|
Neumann)
|
|
|
|
Allow handling negative celsius values. (Kochi Takayoshi)
|
|
|
|
Fix thermal management and make trip points. R/W (Pavel Machek)
|
|
|
|
Fix /proc/acpi/sleep. (P. Christeas)
|
|
|
|
IA64 fixes. (David Mosberger)
|
|
|
|
Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
|
|
|
|
Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
|
|
Brodowski)
|
|
|
|
|
|
3) iASL Compiler/Disassembler
|
|
|
|
Clarified some warning/error messages.
|
|
|
|
|
|
----------------------------------------
|
|
18 September 2002. Summary of changes for this release.
|
|
|
|
|
|
1) ACPI CA Core Subsystem version 20020918:
|
|
|
|
Fixed a reported problem with reference chaining (via the Index()
|
|
and RefOf() operators) in the ObjectType() and SizeOf() operators.
|
|
The definition of these operators includes the dereferencing of
|
|
all chained references to return information on the base object.
|
|
|
|
Fixed a problem with stores to indexed package elements - the
|
|
existing code would not complete the store if an "implicit
|
|
conversion" was not performed. In other words, if the existing
|
|
object (package element) was to be replaced completely, the code
|
|
didn't handle this case.
|
|
|
|
Relaxed typechecking on the ASL "Scope" operator to allow the
|
|
target name to refer to an object of type Integer, String, or
|
|
Buffer, in addition to the scoping object types (Device,
|
|
predefined Scopes, Processor, PowerResource, and ThermalZone.)
|
|
This allows existing AML code that has workarounds for a bug in
|
|
Windows to function properly. A warning is issued, however. This
|
|
affects both the AML interpreter and the iASL compiler. Below is
|
|
an example of this type of ASL code:
|
|
|
|
Name(DEB,0x00)
|
|
Scope(DEB)
|
|
{
|
|
|
|
Fixed some reported problems with 64-bit integer support in the
|
|
local implementation of C library functions (clib.c)
|
|
|
|
|
|
2) Linux
|
|
|
|
Use ACPI fix map region instead of IOAPIC region, since it is
|
|
undefined in non-SMP.
|
|
|
|
Ensure that the SCI has the proper polarity and trigger, even on
|
|
systems that do not have an interrupt override entry in the MADT.
|
|
|
|
2.5 big driver reorganization (Pat Mochel)
|
|
|
|
Use early table mapping code from acpitable.c (Andi Kleen)
|
|
|
|
New blacklist entries (Andi Kleen)
|
|
|
|
Blacklist improvements. Split blacklist code out into a separate
|
|
file. Move checking the blacklist to very early. Previously, we
|
|
would use ACPI tables, and then halfway through init, check the
|
|
blacklist -- too late. Now, it's early enough to completely fall-
|
|
back to non-ACPI.
|
|
|
|
|
|
3) iASL Compiler/Disassembler version 20020918:
|
|
|
|
Fixed a problem where the typechecking code didn't know that an
|
|
alias could point to a method. In other words, aliases were not
|
|
being dereferenced during typechecking.
|
|
|
|
|
|
----------------------------------------
|
|
29 August 2002. Summary of changes for this release.
|
|
|
|
1) ACPI CA Core Subsystem Version 20020829:
|
|
|
|
If the target of a Scope() operator already exists, it must be an
|
|
object type that actually opens a scope -- such as a Device,
|
|
Method, Scope, etc. This is a fatal runtime error. Similar error
|
|
check has been added to the iASL compiler also.
|
|
|
|
Tightened up the namespace load to disallow multiple names in the
|
|
same scope. This previously was allowed if both objects were of
|
|
the same type. (i.e., a lookup was the same as entering a new
|
|
name).
|
|
|
|
|
|
2) Linux
|
|
|
|
Ensure that the ACPI interrupt has the proper trigger and
|
|
polarity.
|
|
|
|
local_irq_disable is extraneous. (Matthew Wilcox)
|
|
|
|
Make "acpi=off" actually do what it says, and not use the ACPI
|
|
interpreter *or* the tables.
|
|
|
|
Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
|
|
Takayoshi)
|
|
|
|
|
|
3) iASL Compiler/Disassembler Version 20020829:
|
|
|
|
Implemented namepath optimization for name declarations. For
|
|
example, a declaration like "Method (\_SB_.ABCD)" would get
|
|
optimized to "Method (ABCD)" if the declaration is within the
|
|
\_SB_ scope. This optimization is in addition to the named
|
|
reference path optimization first released in the previous
|
|
version. This would seem to complete all possible optimizations
|
|
for namepaths within the ASL/AML.
|
|
|
|
If the target of a Scope() operator already exists, it must be an
|
|
object type that actually opens a scope -- such as a Device,
|
|
Method, Scope, etc.
|
|
|
|
Implemented a check and warning for unreachable code in the same
|
|
block below a Return() statement.
|
|
|
|
Fixed a problem where the listing file was not generated if the
|
|
compiler aborted if the maximum error count was exceeded (200).
|
|
|
|
Fixed a problem where the typechecking of method return values was
|
|
broken. This includes the check for a return value when the
|
|
method is invoked as a TermArg (a return value is expected.)
|
|
|
|
Fixed a reported problem where EOF conditions during a quoted
|
|
string or comment caused a fault.
|
|
|
|
|
|
----------------------------------------
|
|
15 August 2002. Summary of changes for this release.
|
|
|
|
1) ACPI CA Core Subsystem Version 20020815:
|
|
|
|
Fixed a reported problem where a Store to a method argument that
|
|
contains a reference did not perform the indirect store correctly.
|
|
This problem was created during the conversion to the new
|
|
reference object model - the indirect store to a method argument
|
|
code was not updated to reflect the new model.
|
|
|
|
Reworked the ACPI mode change code to better conform to ACPI 2.0,
|
|
handle corner cases, and improve code legibility (Kochi Takayoshi)
|
|
|
|
Fixed a problem with the pathname parsing for the carat (^)
|
|
prefix. The heavy use of the carat operator by the new namepath
|
|
optimization in the iASL compiler uncovered a problem with the AML
|
|
interpreter handling of this prefix. In the case where one or
|
|
more carats precede a single nameseg, the nameseg was treated as
|
|
standalone and the search rule (to root) was inadvertently
|
|
applied. This could cause both the iASL compiler and the
|
|
interpreter to find the wrong object or to miss the error that
|
|
should occur if the object does not exist at that exact pathname.
|
|
|
|
Found and fixed the problem where the HP Pavilion DSDT would not
|
|
load. This was a relatively minor tweak to the table loading code
|
|
(a problem caused by the unexpected encounter with a method
|
|
invocation not within a control method), but it does not solve the
|
|
overall issue of the execution of AML code at the table level.
|
|
This investigation is still ongoing.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
|
|
Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
|
|
Current Release:
|
|
Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
|
|
Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Remove redundant slab.h include (Brad Hards)
|
|
|
|
Fix several bugs in thermal.c (Herbert Nachtnebel)
|
|
|
|
Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
|
|
|
|
Change acpi_system_suspend to use updated irq functions (Pavel
|
|
Machek)
|
|
|
|
Export acpi_get_firmware_table (Matthew Wilcox)
|
|
|
|
Use proper root proc entry for ACPI (Kochi Takayoshi)
|
|
|
|
Fix early-boot table parsing (Bjorn Helgaas)
|
|
|
|
|
|
3) iASL Compiler/Disassembler
|
|
|
|
Reworked the compiler options to make them more consistent and to
|
|
use two-letter options where appropriate. We were running out of
|
|
sensible letters. This may break some makefiles, so check the
|
|
current options list by invoking the compiler with no parameters.
|
|
|
|
Completed the design and implementation of the ASL namepath
|
|
optimization option for the compiler. This option optimizes all
|
|
references to named objects to the shortest possible path. The
|
|
first attempt tries to utilize a single nameseg (4 characters) and
|
|
the "search-to-root" algorithm used by the interpreter. If that
|
|
cannot be used (because either the name is not in the search path
|
|
or there is a conflict with another object with the same name),
|
|
the pathname is optimized using the carat prefix (usually a
|
|
shorter string than specifying the entire path from the root.)
|
|
|
|
Implemented support to obtain the DSDT from the Windows registry
|
|
(when the disassembly option is specified with no input file).
|
|
Added this code as the implementation for AcpiOsTableOverride in
|
|
the Windows OSL. Migrated the 16-bit code (used in the AcpiDump
|
|
utility) to scan memory for the DSDT to the AcpiOsTableOverride
|
|
function in the DOS OSL to make the disassembler truly OS
|
|
independent.
|
|
|
|
Implemented a new option to disassemble and compile in one step.
|
|
When used without an input filename, this option will grab the
|
|
DSDT from the local machine, disassemble it, and compile it in one
|
|
step.
|
|
|
|
Added a warning message for invalid escapes (a backslash followed
|
|
by any character other than the allowable escapes). This catches
|
|
the quoted string error "\_SB_" (which should be "\\_SB_" ).
|
|
|
|
Also, there are numerous instances in the ACPI specification where
|
|
this error occurs.
|
|
|
|
Added a compiler option to disable all optimizations. This is
|
|
basically the "compatibility mode" because by using this option,
|
|
the AML code will come out exactly the same as other ASL
|
|
compilers.
|
|
|
|
Added error messages for incorrectly ordered dependent resource
|
|
functions. This includes: missing EndDependentFn macro at end of
|
|
dependent resource list, nested dependent function macros (both
|
|
start and end), and missing StartDependentFn macro. These are
|
|
common errors that should be caught at compile time.
|
|
|
|
Implemented _OSI support for the disassembler and compiler. _OSI
|
|
must be included in the namespace for proper disassembly (because
|
|
the disassembler must know the number of arguments.)
|
|
|
|
Added an "optimization" message type that is optional (off by
|
|
default). This message is used for all optimizations - including
|
|
constant folding, integer optimization, and namepath optimization.
|
|
|
|
----------------------------------------
|
|
25 July 2002. Summary of changes for this release.
|
|
|
|
|
|
1) ACPI CA Core Subsystem Version 20020725:
|
|
|
|
The AML Disassembler has been enhanced to produce compilable ASL
|
|
code and has been integrated into the iASL compiler (see below) as
|
|
well as the single-step disassembly for the AML debugger and the
|
|
disassembler for the AcpiDump utility. All ACPI 2.0A opcodes,
|
|
resource templates and macros are fully supported. The
|
|
disassembler has been tested on over 30 different AML files,
|
|
producing identical AML when the resulting disassembled ASL file
|
|
is recompiled with the same ASL compiler.
|
|
|
|
Modified the Resource Manager to allow zero interrupts and zero
|
|
dma channels during the GetCurrentResources call. This was
|
|
causing problems on some platforms.
|
|
|
|
Added the AcpiOsRedirectOutput interface to the OSL to simplify
|
|
output redirection for the AcpiOsPrintf and AcpiOsVprintf
|
|
interfaces.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
|
|
Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
|
|
Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Fixed a panic in the EC driver (Dominik Brodowski)
|
|
|
|
Implemented checksum of the R/XSDT itself during Linux table scan
|
|
(Richard Schaal)
|
|
|
|
|
|
3) iASL compiler
|
|
|
|
The AML disassembler is integrated into the compiler. The "-d"
|
|
option invokes the disassembler to completely disassemble an
|
|
input AML file, producing as output a text ASL file with the
|
|
extension ".dsl" (to avoid name collisions with existing .asl
|
|
source files.) A future enhancement will allow the disassembler
|
|
to obtain the BIOS DSDT from the registry under Windows.
|
|
|
|
Fixed a problem with the VendorShort and VendorLong resource
|
|
descriptors where an invalid AML sequence was created.
|
|
|
|
Implemented a fix for BufferData term in the ASL parser. It was
|
|
inadvertently defined twice, allowing invalid syntax to pass and
|
|
causing reduction conflicts.
|
|
|
|
Fixed a problem where the Ones opcode could get converted to a
|
|
value of zero if "Ones" was used where a byte, word or dword value
|
|
was expected. The 64-bit value is now truncated to the correct
|
|
size with the correct value.
|
|
|
|
|
|
|
|
----------------------------------------
|
|
02 July 2002. Summary of changes for this release.
|
|
|
|
|
|
1) ACPI CA Core Subsystem Version 20020702:
|
|
|
|
The Table Manager code has been restructured to add several new
|
|
features. Tables that are not required by the core subsystem
|
|
(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
|
|
validated in any way and are returned from AcpiGetFirmwareTable if
|
|
requested. The AcpiOsTableOverride interface is now called for
|
|
each table that is loaded by the subsystem in order to allow the
|
|
host to override any table it chooses. Previously, only the DSDT
|
|
could be overridden. Added one new files, tbrsdt.c and
|
|
tbgetall.c.
|
|
|
|
Fixed a problem with the conversion of internal package objects to
|
|
external objects (when a package is returned from a control
|
|
method.) The return buffer length was set to zero instead of the
|
|
proper length of the package object.
|
|
|
|
Fixed a reported problem with the use of the RefOf and DeRefOf
|
|
operators when passing reference arguments to control methods. A
|
|
new type of Reference object is used internally for references
|
|
produced by the RefOf operator.
|
|
|
|
Added additional error messages in the Resource Manager to explain
|
|
AE_BAD_DATA errors when they occur during resource parsing.
|
|
|
|
Split the AcpiEnableSubsystem into two primitives to enable a
|
|
finer granularity initialization sequence. These two calls should
|
|
be called in this order: AcpiEnableSubsystem (flags),
|
|
AcpiInitializeObjects (flags). The flags parameter remains the
|
|
same.
|
|
|
|
|
|
2) Linux
|
|
|
|
Updated the ACPI utilities module to understand the new style of
|
|
fully resolved package objects that are now returned from the core
|
|
subsystem. This eliminates errors of the form:
|
|
|
|
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
|
|
acpi_utils-0430 [145] acpi_evaluate_reference:
|
|
Invalid element in package (not a device reference)
|
|
|
|
The method evaluation utility uses the new buffer allocation
|
|
scheme instead of calling AcpiEvaluate Object twice.
|
|
|
|
Added support for ECDT. This allows the use of the Embedded
|
|
|
|
Controller before the namespace has been fully initialized, which
|
|
is necessary for ACPI 2.0 support, and for some laptops to
|
|
initialize properly. (Laptops using ECDT are still rare, so only
|
|
limited testing was performed of the added functionality.)
|
|
|
|
Fixed memory leaks in the EC driver.
|
|
|
|
Eliminated a brittle code structure in acpi_bus_init().
|
|
|
|
Eliminated the acpi_evaluate() helper function in utils.c. It is
|
|
no longer needed since acpi_evaluate_object can optionally
|
|
allocate memory for the return object.
|
|
|
|
Implemented fix for keyboard hang when getting battery readings on
|
|
some systems (Stephen White)
|
|
|
|
PCI IRQ routing update (Dominik Brodowski)
|
|
|
|
Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
|
|
support
|
|
|
|
----------------------------------------
|
|
11 June 2002. Summary of changes for this release.
|
|
|
|
|
|
1) ACPI CA Core Subsystem Version 20020611:
|
|
|
|
Fixed a reported problem where constants such as Zero and One
|
|
appearing within _PRT packages were not handled correctly within
|
|
the resource manager code. Originally reported against the ASL
|
|
compiler because the code generator now optimizes integers to
|
|
their minimal AML representation (i.e. AML constants if possible.)
|
|
The _PRT code now handles all AML constant opcodes correctly
|
|
(Zero, One, Ones, Revision).
|
|
|
|
Fixed a problem with the Concatenate operator in the AML
|
|
interpreter where a buffer result object was incorrectly marked as
|
|
not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
|
|
|
|
All package sub-objects are now fully resolved before they are
|
|
returned from the external ACPI interfaces. This means that name
|
|
strings are resolved to object handles, and constant operators
|
|
(Zero, One, Ones, Revision) are resolved to Integers.
|
|
|
|
Implemented immediate resolution of the AML Constant opcodes
|
|
(Zero, One, Ones, Revision) to Integer objects upon detection
|
|
within the AML stream. This has simplified and reduced the
|
|
generated code size of the subsystem by eliminating about 10
|
|
switch statements for these constants (which previously were
|
|
contained in Reference objects.) The complicating issues are that
|
|
the Zero opcode is used as a "placeholder" for unspecified
|
|
optional target operands and stores to constants are defined to be
|
|
no-ops.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
|
|
Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
|
|
Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
|
|
Added preliminary support for obtaining _TRA data for PCI root
|
|
bridges (Bjorn Helgaas).
|
|
|
|
|
|
3) iASL Compiler Version X2046:
|
|
|
|
Fixed a problem where the "_DDN" reserved name was defined to be a
|
|
control method with one argument. There are no arguments, and
|
|
_DDN does not have to be a control method.
|
|
|
|
Fixed a problem with the Linux version of the compiler where the
|
|
source lines printed with error messages were the wrong lines.
|
|
This turned out to be the "LF versus CR/LF" difference between
|
|
Windows and Unix. This appears to be the longstanding issue
|
|
concerning listing output and error messages.
|
|
|
|
Fixed a problem with the Linux version of compiler where opcode
|
|
names within error messages were wrong. This was caused by a
|
|
slight difference in the output of the Flex tool on Linux versus
|
|
Windows.
|
|
|
|
Fixed a problem with the Linux compiler where the hex output files
|
|
contained some garbage data caused by an internal buffer overrun.
|
|
|
|
|
|
----------------------------------------
|
|
17 May 2002. Summary of changes for this release.
|
|
|
|
|
|
1) ACPI CA Core Subsystem Version 20020517:
|
|
|
|
Implemented a workaround to an BIOS bug discovered on the HP
|
|
OmniBook where the FADT revision number and the table size are
|
|
inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new
|
|
behavior is to fallback to using only the ACPI 1.0 fields of the
|
|
FADT if the table is too small to be a ACPI 2.0 table as claimed
|
|
by the revision number. Although this is a BIOS bug, this is a
|
|
case where the workaround is simple enough and with no side
|
|
effects, so it seemed prudent to add it. A warning message is
|
|
issued, however.
|
|
|
|
Implemented minimum size checks for the fixed-length ACPI tables -
|
|
- the FADT and FACS, as well as consistency checks between the
|
|
revision number and the table size.
|
|
|
|
Fixed a reported problem in the table override support where the
|
|
new table pointer was incorrectly treated as a physical address
|
|
instead of a logical address.
|
|
|
|
Eliminated the use of the AE_AML_ERROR exception and replaced it
|
|
with more descriptive codes.
|
|
|
|
Fixed a problem where an exception would occur if an ASL Field was
|
|
defined with no named Field Units underneath it (used by some
|
|
index fields).
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
|
|
Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
|
|
Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
|
|
|
|
|
|
|
|
2) Linux
|
|
|
|
Much work done on ACPI init (MADT and PCI IRQ routing support).
|
|
(Paul D. and Dominik Brodowski)
|
|
|
|
Fix PCI IRQ-related panic on boot (Sam Revitch)
|
|
|
|
Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
|
|
|
|
Fix "MHz" typo (Dominik Brodowski)
|
|
|
|
Fix RTC year 2000 issue (Dominik Brodowski)
|
|
|
|
Preclude multiple button proc entries (Eric Brunet)
|
|
|
|
Moved arch-specific code out of include/platform/aclinux.h
|
|
|
|
3) iASL Compiler Version X2044:
|
|
|
|
Implemented error checking for the string used in the EISAID macro
|
|
(Usually used in the definition of the _HID object.) The code now
|
|
strictly enforces the PnP format - exactly 7 characters, 3
|
|
uppercase letters and 4 hex digits.
|
|
|
|
If a raw string is used in the definition of the _HID object
|
|
(instead of the EISAID macro), the string must contain all
|
|
alphanumeric characters (e.g., "*PNP0011" is not allowed because
|
|
of the asterisk.)
|
|
|
|
Implemented checking for invalid use of ACPI reserved names for
|
|
most of the name creation operators (Name, Device, Event, Mutex,
|
|
OperationRegion, PowerResource, Processor, and ThermalZone.)
|
|
Previously, this check was only performed for control methods.
|
|
|
|
Implemented an additional check on the Name operator to emit an
|
|
error if a reserved name that must be implemented in ASL as a
|
|
control method is used. We know that a reserved name must be a
|
|
method if it is defined with input arguments.
|
|
|
|
The warning emitted when a namespace object reference is not found
|
|
during the cross reference phase has been changed into an error.
|
|
The "External" directive should be used for names defined in other
|
|
modules.
|
|
|
|
|
|
4) Tools and Utilities
|
|
|
|
The 16-bit tools (adump16 and aexec16) have been regenerated and
|
|
tested.
|
|
|
|
Fixed a problem with the output of both acpidump and adump16 where
|
|
the indentation of closing parentheses and brackets was not
|
|
|
|
aligned properly with the parent block.
|
|
|
|
|
|
----------------------------------------
|
|
03 May 2002. Summary of changes for this release.
|
|
|
|
|
|
1) ACPI CA Core Subsystem Version 20020503:
|
|
|
|
Added support a new OSL interface that allows the host operating
|
|
|
|
system software to override the DSDT found in the firmware -
|
|
AcpiOsTableOverride. With this interface, the OSL can examine the
|
|
version of the firmware DSDT and replace it with a different one
|
|
if desired.
|
|
|
|
Added new external interfaces for accessing ACPI registers from
|
|
device drivers and other system software - AcpiGetRegister and
|
|
AcpiSetRegister. This was simply an externalization of the
|
|
existing AcpiHwBitRegister interfaces.
|
|
|
|
Fixed a regression introduced in the previous build where the
|
|
ASL/AML CreateField operator always returned an error,
|
|
"destination must be a NS Node".
|
|
|
|
Extended the maximum time (before failure) to successfully enable
|
|
ACPI mode to 3 seconds.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
|
|
Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
|
|
Current Release:
|
|
Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
|
|
Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
|
|
free. While 3 out of 4 of our in-house systems work fine, the last
|
|
one still hangs when testing the LAPIC timer.
|
|
|
|
Renamed many files in 2.5 kernel release to omit "acpi_" from the
|
|
name.
|
|
|
|
Added warning on boot for Presario 711FR.
|
|
|
|
Sleep improvements (Pavel Machek)
|
|
|
|
ACPI can now be built without CONFIG_PCI enabled.
|
|
|
|
IA64: Fixed memory map functions (JI Lee)
|
|
|
|
|
|
3) iASL Compiler Version X2043:
|
|
|
|
Added support to allow the compiler to be integrated into the MS
|
|
VC++ development environment for one-button compilation of single
|
|
files or entire projects -- with error-to-source-line mapping.
|
|
|
|
Implemented support for compile-time constant folding for the
|
|
Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
|
|
specification. This allows the ASL writer to use expressions
|
|
instead of Integer/Buffer/String constants in terms that must
|
|
evaluate to constants at compile time and will also simplify the
|
|
emitted AML in any such sub-expressions that can be folded
|
|
(evaluated at compile-time.) This increases the size of the
|
|
compiler significantly because a portion of the ACPI CA AML
|
|
interpreter is included within the compiler in order to pre-
|
|
evaluate constant expressions.
|
|
|
|
|
|
Fixed a problem with the "Unicode" ASL macro that caused the
|
|
compiler to fault. (This macro is used in conjunction with the
|
|
_STR reserved name.)
|
|
|
|
Implemented an AML opcode optimization to use the Zero, One, and
|
|
Ones opcodes where possible to further reduce the size of integer
|
|
constants and thus reduce the overall size of the generated AML
|
|
code.
|
|
|
|
Implemented error checking for new reserved terms for ACPI version
|
|
2.0A.
|
|
|
|
Implemented the -qr option to display the current list of ACPI
|
|
reserved names known to the compiler.
|
|
|
|
Implemented the -qc option to display the current list of ASL
|
|
operators that are allowed within constant expressions and can
|
|
therefore be folded at compile time if the operands are constants.
|
|
|
|
|
|
4) Documentation
|
|
|
|
Updated the Programmer's Reference for new interfaces, data types,
|
|
and memory allocation model options.
|
|
|
|
Updated the iASL Compiler User Reference to apply new format and
|
|
add information about new features and options.
|
|
|
|
----------------------------------------
|
|
19 April 2002. Summary of changes for this release.
|
|
|
|
1) ACPI CA Core Subsystem Version 20020419:
|
|
|
|
The source code base for the Core Subsystem has been completely
|
|
cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
|
|
versions. The Lint option files used are included in the
|
|
/acpi/generate/lint directory.
|
|
|
|
Implemented enhanced status/error checking across the entire
|
|
Hardware manager subsystem. Any hardware errors (reported from
|
|
the OSL) are now bubbled up and will abort a running control
|
|
method.
|
|
|
|
|
|
Fixed a problem where the per-ACPI-table integer width (32 or 64)
|
|
was stored only with control method nodes, causing a fault when
|
|
non-control method code was executed during table loading. The
|
|
solution implemented uses a global variable to indicate table
|
|
width across the entire ACPI subsystem. Therefore, ACPI CA does
|
|
not support mixed integer widths across different ACPI tables
|
|
(DSDT, SSDT).
|
|
|
|
Fixed a problem where NULL extended fields (X fields) in an ACPI
|
|
2.0 ACPI FADT caused the table load to fail. Although the
|
|
existing ACPI specification is a bit fuzzy on this topic, the new
|
|
behavior is to fall back on a ACPI 1.0 field if the corresponding
|
|
ACPI 2.0 X field is zero (even though the table revision indicates
|
|
a full ACPI 2.0 table.) The ACPI specification will be updated to
|
|
clarify this issue.
|
|
|
|
Fixed a problem with the SystemMemory operation region handler
|
|
where memory was always accessed byte-wise even if the AML-
|
|
specified access width was larger than a byte. This caused
|
|
problems on systems with memory-mapped I/O. Memory is now
|
|
accessed with the width specified. On systems that do not support
|
|
non-aligned transfers, a check is made to guarantee proper address
|
|
alignment before proceeding in order to avoid an AML-caused
|
|
alignment fault within the kernel.
|
|
|
|
|
|
Fixed a problem with the ExtendedIrq resource where only one byte
|
|
of the 4-byte Irq field was extracted.
|
|
|
|
Fixed the AcpiExDigitsNeeded() procedure to support _UID. This
|
|
function was out of date and required a rewrite.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
|
|
Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
|
|
Current Release:
|
|
Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
|
|
Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
PCI IRQ routing fixes (Dominik Brodowski)
|
|
|
|
|
|
3) iASL Compiler Version X2042:
|
|
|
|
Implemented an additional compile-time error check for a field
|
|
unit whose size + minimum access width would cause a run-time
|
|
access beyond the end-of-region. Previously, only the field size
|
|
itself was checked.
|
|
|
|
The Core subsystem and iASL compiler now share a common parse
|
|
object in preparation for compile-time evaluation of the type
|
|
3/4/5 ASL operators.
|
|
|
|
|
|
----------------------------------------
|
|
Summary of changes for this release: 03_29_02
|
|
|
|
1) ACPI CA Core Subsystem Version 20020329:
|
|
|
|
Implemented support for late evaluation of TermArg operands to
|
|
Buffer and Package objects. This allows complex expressions to be
|
|
used in the declarations of these object types.
|
|
|
|
Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
|
|
1.0, if the field was larger than 32 bits, it was returned as a
|
|
buffer - otherwise it was returned as an integer. In ACPI 2.0,
|
|
the field is returned as a buffer only if the field is larger than
|
|
64 bits. The TableRevision is now considered when making this
|
|
conversion to avoid incompatibility with existing ASL code.
|
|
|
|
Implemented logical addressing for AcpiOsGetRootPointer. This
|
|
allows an RSDP with either a logical or physical address. With
|
|
this support, the host OS can now override all ACPI tables with
|
|
one logical RSDP. Includes implementation of "typed" pointer
|
|
support to allow a common data type for both physical and logical
|
|
pointers internally. This required a change to the
|
|
AcpiOsGetRootPointer interface.
|
|
|
|
Implemented the use of ACPI 2.0 Generic Address Structures for all
|
|
GPE, Fixed Event, and PM Timer I/O. This allows the use of memory
|
|
mapped I/O for these ACPI features.
|
|
|
|
Initialization now ignores not only non-required tables (All
|
|
tables other than the FADT, FACS, DSDT, and SSDTs), but also does
|
|
not validate the table headers of unrecognized tables.
|
|
|
|
Fixed a problem where a notify handler could only be
|
|
installed/removed on an object of type Device. All "notify"
|
|
|
|
objects are now supported -- Devices, Processor, Power, and
|
|
Thermal.
|
|
|
|
Removed most verbosity from the ACPI_DB_INFO debug level. Only
|
|
critical information is returned when this debug level is enabled.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release
|
|
Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
|
|
Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
|
|
Current Release:
|
|
Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
|
|
Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
|
|
|
|
|
|
2) Linux:
|
|
|
|
The processor driver (acpi_processor.c) now fully supports ACPI
|
|
2.0-based processor performance control (e.g. Intel(R)
|
|
SpeedStep(TM) technology) Note that older laptops that only have
|
|
the Intel "applet" interface are not supported through this. The
|
|
'limit' and 'performance' interface (/proc) are fully functional.
|
|
[Note that basic policy for controlling performance state
|
|
transitions will be included in the next version of ospmd.] The
|
|
idle handler was modified to more aggressively use C2, and PIIX4
|
|
errata handling underwent a complete overhaul (big thanks to
|
|
Dominik Brodowski).
|
|
|
|
Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
|
|
based devices in the ACPI namespace are now dynamically bound
|
|
(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
|
|
This allows, among other things, ACPI to resolve bus numbers for
|
|
subordinate PCI bridges.
|
|
|
|
Enhanced PCI IRQ routing to get the proper bus number for _PRT
|
|
entries defined underneath PCI bridges.
|
|
|
|
Added IBM 600E to bad bios list due to invalid _ADR value for
|
|
PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
|
|
|
|
In the process of adding full MADT support (e.g. IOAPIC) for IA32
|
|
(acpi.c, mpparse.c) -- stay tuned.
|
|
|
|
Added back visual differentiation between fixed-feature and
|
|
control-method buttons in dmesg. Buttons are also subtyped (e.g.
|
|
button/power/PWRF) to simplify button identification.
|
|
|
|
We no longer use -Wno-unused when compiling debug. Please ignore
|
|
any "_THIS_MODULE defined but not used" messages.
|
|
|
|
Can now shut down the system using "magic sysrq" key.
|
|
|
|
|
|
3) iASL Compiler version 2041:
|
|
|
|
Fixed a problem where conversion errors for hex/octal/decimal
|
|
constants were not reported.
|
|
|
|
Implemented a fix for the General Register template Address field.
|
|
This field was 8 bits when it should be 64.
|
|
|
|
Fixed a problem where errors/warnings were no longer being emitted
|
|
within the listing output file.
|
|
|
|
Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
|
|
exactly 4 characters, alphanumeric only.
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
Summary of changes for this release: 03_08_02
|
|
|
|
|
|
1) ACPI CA Core Subsystem Version 20020308:
|
|
|
|
Fixed a problem with AML Fields where the use of the "AccessAny"
|
|
keyword could cause an interpreter error due to attempting to read
|
|
or write beyond the end of the parent Operation Region.
|
|
|
|
Fixed a problem in the SystemMemory Operation Region handler where
|
|
an attempt was made to map memory beyond the end of the region.
|
|
This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
|
|
errors on some Linux systems.
|
|
|
|
Fixed a problem where the interpreter/namespace "search to root"
|
|
algorithm was not functioning for some object types. Relaxed the
|
|
internal restriction on the search to allow upsearches for all
|
|
external object types as well as most internal types.
|
|
|
|
|
|
2) Linux:
|
|
|
|
We now use safe_halt() macro versus individual calls to sti | hlt.
|
|
|
|
Writing to the processor limit interface should now work. "echo 1"
|
|
will increase the limit, 2 will decrease, and 0 will reset to the
|
|
|
|
default.
|
|
|
|
|
|
3) ASL compiler:
|
|
|
|
Fixed segfault on Linux version.
|
|
|
|
|
|
----------------------------------------
|
|
Summary of changes for this release: 02_25_02
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
|
|
Fixed a problem where the GPE bit masks were not initialized
|
|
properly, causing erratic GPE behavior.
|
|
|
|
Implemented limited support for multiple calling conventions. The
|
|
code can be generated with either the VPL (variable parameter
|
|
list, or "C") convention, or the FPL (fixed parameter list, or
|
|
"Pascal") convention. The core subsystem is about 3.4% smaller
|
|
when generated with FPL.
|
|
|
|
|
|
2) Linux
|
|
|
|
Re-add some /proc/acpi/event functionality that was lost during
|
|
the rewrite
|
|
|
|
Resolved issue with /proc events for fixed-feature buttons showing
|
|
up as the system device.
|
|
|
|
Fixed checks on C2/C3 latencies to be inclusive of maximum values.
|
|
|
|
Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
|
|
|
|
Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
|
|
|
|
Fixed limit interface & usage to fix bugs with passive cooling
|
|
hysterisis.
|
|
|
|
Restructured PRT support.
|
|
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 02_14_02
|
|
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented support in AcpiLoadTable to allow loading of FACS and
|
|
FADT tables.
|
|
|
|
Support for the now-obsolete interim 0.71 64-bit ACPI tables has
|
|
been removed. All 64-bit platforms should be migrated to the ACPI
|
|
2.0 tables. The actbl71.h header has been removed from the source
|
|
tree.
|
|
|
|
All C macros defined within the subsystem have been prefixed with
|
|
"ACPI_" to avoid collision with other system include files.
|
|
|
|
Removed the return value for the two AcpiOsPrint interfaces, since
|
|
it is never used and causes lint warnings for ignoring the return
|
|
value.
|
|
|
|
Added error checking to all internal mutex acquire and release
|
|
calls. Although a failure from one of these interfaces is
|
|
probably a fatal system error, these checks will cause the
|
|
immediate abort of the currently executing method or interface.
|
|
|
|
Fixed a problem where the AcpiSetCurrentResources interface could
|
|
fault. This was a side effect of the deployment of the new memory
|
|
allocation model.
|
|
|
|
Fixed a couple of problems with the Global Lock support introduced
|
|
in the last major build. The "common" (1.0/2.0) internal FACS was
|
|
being overwritten with the FACS signature and clobbering the
|
|
Global Lock pointer. Also, the actual firmware FACS was being
|
|
unmapped after construction of the "common" FACS, preventing
|
|
access to the actual Global Lock field within it. The "common"
|
|
internal FACS is no longer installed as an actual ACPI table; it
|
|
is used simply as a global.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release (02_07_01)
|
|
Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
|
|
Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
|
|
Current Release:
|
|
Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
|
|
Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
|
|
|
|
|
|
2) Linux
|
|
|
|
Updated Linux-specific code for core macro and OSL interface
|
|
changes described above.
|
|
|
|
Improved /proc/acpi/event. It now can be opened only once and has
|
|
proper poll functionality.
|
|
|
|
Fixed and restructured power management (acpi_bus).
|
|
|
|
Only create /proc "view by type" when devices of that class exist.
|
|
|
|
Fixed "charging/discharging" bug (and others) in acpi_battery.
|
|
|
|
Improved thermal zone code.
|
|
|
|
|
|
3) ASL Compiler, version X2039:
|
|
|
|
|
|
Implemented the new compiler restriction on ASL String hex/octal
|
|
escapes to non-null, ASCII values. An error results if an invalid
|
|
value is used. (This will require an ACPI 2.0 specification
|
|
change.)
|
|
|
|
AML object labels that are output to the optional C and ASM source
|
|
are now prefixed with both the ACPI table signature and table ID
|
|
to help guarantee uniqueness within a large BIOS project.
|
|
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 02_01_02
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
ACPI 2.0 support is complete in the entire Core Subsystem and the
|
|
ASL compiler. All new ACPI 2.0 operators are implemented and all
|
|
other changes for ACPI 2.0 support are complete. With
|
|
simultaneous code and data optimizations throughout the subsystem,
|
|
ACPI 2.0 support has been implemented with almost no additional
|
|
cost in terms of code and data size.
|
|
|
|
Implemented a new mechanism for allocation of return buffers. If
|
|
the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
|
|
be allocated on behalf of the caller. Consolidated all return
|
|
buffer validation and allocation to a common procedure. Return
|
|
buffers will be allocated via the primary OSL allocation interface
|
|
since it appears that a separate pool is not needed by most users.
|
|
If a separate pool is required for these buffers, the caller can
|
|
still use the original mechanism and pre-allocate the buffer(s).
|
|
|
|
Implemented support for string operands within the DerefOf
|
|
operator.
|
|
|
|
Restructured the Hardware and Event managers to be table driven,
|
|
simplifying the source code and reducing the amount of generated
|
|
code.
|
|
|
|
Split the common read/write low-level ACPI register bitfield
|
|
procedure into a separate read and write, simplifying the code
|
|
considerably.
|
|
|
|
Obsoleted the AcpiOsCallocate OSL interface. This interface was
|
|
used only a handful of times and didn't have enough critical mass
|
|
for a separate interface. Replaced with a common calloc procedure
|
|
in the core.
|
|
|
|
Fixed a reported problem with the GPE number mapping mechanism
|
|
that allows GPE1 numbers to be non-contiguous with GPE0.
|
|
Reorganized the GPE information and shrunk a large array that was
|
|
originally large enough to hold info for all possible GPEs (256)
|
|
to simply large enough to hold all GPEs up to the largest GPE
|
|
number on the machine.
|
|
|
|
Fixed a reported problem with resource structure alignment on 64-
|
|
bit platforms.
|
|
|
|
Changed the AcpiEnableEvent and AcpiDisableEvent external
|
|
interfaces to not require any flags for the common case of
|
|
enabling/disabling a GPE.
|
|
|
|
Implemented support to allow a "Notify" on a Processor object.
|
|
|
|
Most TBDs in comments within the source code have been resolved
|
|
and eliminated.
|
|
|
|
|
|
Fixed a problem in the interpreter where a standalone parent
|
|
prefix (^) was not handled correctly in the interpreter and
|
|
debugger.
|
|
|
|
Removed obsolete and unnecessary GPE save/restore code.
|
|
|
|
Implemented Field support in the ASL Load operator. This allows a
|
|
table to be loaded from a named field, in addition to loading a
|
|
table directly from an Operation Region.
|
|
|
|
Implemented timeout and handle support in the external Global Lock
|
|
interfaces.
|
|
|
|
Fixed a problem in the AcpiDump utility where pathnames were no
|
|
longer being generated correctly during the dump of named objects.
|
|
|
|
Modified the AML debugger to give a full display of if/while
|
|
predicates instead of just one AML opcode at a time. (The
|
|
predicate can have several nested ASL statements.) The old method
|
|
was confusing during single stepping.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release (12_18_01)
|
|
Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
|
|
Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
|
|
Current Release:
|
|
Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
|
|
Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
|
|
|
|
2) Linux
|
|
|
|
Implemented fix for PIIX reverse throttling errata (Processor
|
|
driver)
|
|
|
|
Added new Limit interface (Processor and Thermal drivers)
|
|
|
|
New thermal policy (Thermal driver)
|
|
|
|
Many updates to /proc
|
|
|
|
Battery "low" event support (Battery driver)
|
|
|
|
Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
|
|
|
|
IA32 - IA64 initialization unification, no longer experimental
|
|
|
|
Menuconfig options redesigned
|
|
|
|
3) ASL Compiler, version X2037:
|
|
|
|
Implemented several new output features to simplify integration of
|
|
AML code into firmware: 1) Output the AML in C source code with
|
|
labels for each named ASL object. The original ASL source code
|
|
is interleaved as C comments. 2) Output the AML in ASM source code
|
|
with labels and interleaved ASL source. 3) Output the AML in
|
|
raw hex table form, in either C or ASM.
|
|
|
|
Implemented support for optional string parameters to the
|
|
LoadTable operator.
|
|
|
|
Completed support for embedded escape sequences within string
|
|
literals. The compiler now supports all single character escapes
|
|
as well as the Octal and Hex escapes. Note: the insertion of a
|
|
null byte into a string literal (via the hex/octal escape) causes
|
|
the string to be immediately terminated. A warning is issued.
|
|
|
|
Fixed a problem where incorrect AML was generated for the case
|
|
where an ASL namepath consists of a single parent prefix (
|
|
|
|
) with no trailing name segments.
|
|
|
|
The compiler has been successfully generated with a 64-bit C
|
|
compiler.
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 12_18_01
|
|
|
|
1) Linux
|
|
|
|
Enhanced blacklist with reason and severity fields. Any table's
|
|
signature may now be used to identify a blacklisted system.
|
|
|
|
Call _PIC control method to inform the firmware which interrupt
|
|
model the OS is using. Turn on any disabled link devices.
|
|
|
|
Cleaned up busmgr /proc error handling (Andreas Dilger)
|
|
|
|
2) ACPI CA Core Subsystem:
|
|
|
|
Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
|
|
while loop)
|
|
|
|
Completed implementation of the ACPI 2.0 "Continue",
|
|
"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
|
|
operators. All new ACPI 2.0 operators are now implemented in both
|
|
the ASL compiler and the AML interpreter. The only remaining ACPI
|
|
2.0 task is support for the String data type in the DerefOf
|
|
operator. Fixed a problem with AcquireMutex where the status code
|
|
was lost if the caller had to actually wait for the mutex.
|
|
|
|
Increased the maximum ASL Field size from 64K bits to 4G bits.
|
|
|
|
Completed implementation of the external Global Lock interfaces --
|
|
AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and
|
|
Handler parameters were added.
|
|
|
|
Completed another pass at removing warnings and issues when
|
|
compiling with 64-bit compilers. The code now compiles cleanly
|
|
with the Intel 64-bit C/C++ compiler. Most notably, the pointer
|
|
add and subtract (diff) macros have changed considerably.
|
|
|
|
|
|
Created and deployed a new ACPI_SIZE type that is 64-bits wide on
|
|
64-bit platforms, 32-bits on all others. This type is used
|
|
wherever memory allocation and/or the C sizeof() operator is used,
|
|
and affects the OSL memory allocation interfaces AcpiOsAllocate
|
|
and AcpiOsCallocate.
|
|
|
|
Implemented sticky user breakpoints in the AML debugger.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release (12_05_01)
|
|
Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
|
|
Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
|
|
Current Release:
|
|
Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
|
|
Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
|
|
|
|
3) ASL Compiler, version X2034:
|
|
|
|
Now checks for (and generates an error if detected) the use of a
|
|
Break or Continue statement without an enclosing While statement.
|
|
|
|
|
|
Successfully generated the compiler with the Intel 64-bit C
|
|
compiler.
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 12_05_01
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
The ACPI 2.0 CopyObject operator is fully implemented. This
|
|
operator creates a new copy of an object (and is also used to
|
|
bypass the "implicit conversion" mechanism of the Store operator.)
|
|
|
|
The ACPI 2.0 semantics for the SizeOf operator are fully
|
|
implemented. The change is that performing a SizeOf on a
|
|
reference object causes an automatic dereference of the object to
|
|
the actual value before the size is evaluated. This behavior was
|
|
undefined in ACPI 1.0.
|
|
|
|
The ACPI 2.0 semantics for the Extended IRQ resource descriptor
|
|
have been implemented. The interrupt polarity and mode are now
|
|
independently set.
|
|
|
|
Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
|
|
appearing in Package objects were not properly converted to
|
|
integers when the internal Package was converted to an external
|
|
object (via the AcpiEvaluateObject interface.)
|
|
|
|
Fixed a problem with the namespace object deletion mechanism for
|
|
objects created by control methods. There were two parts to this
|
|
problem: 1) Objects created during the initialization phase method
|
|
parse were not being deleted, and 2) The object owner ID mechanism
|
|
to track objects was broken.
|
|
|
|
Fixed a problem where the use of the ASL Scope operator within a
|
|
control method would result in an invalid opcode exception.
|
|
|
|
Fixed a problem introduced in the previous label where the buffer
|
|
length required for the _PRT structure was not being returned
|
|
correctly.
|
|
|
|
Code and Data Size: Current core subsystem library sizes are shown
|
|
below. These are the code and data sizes for the acpica.lib
|
|
produced by the Microsoft Visual C++ 6.0 compiler, and these
|
|
values do not include any ACPI driver or OSPM code. The debug
|
|
version of the code includes the debug output trace mechanism and
|
|
has a larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Release (11_20_01)
|
|
Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
|
|
Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
|
|
|
|
Current Release:
|
|
Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
|
|
Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
|
|
|
|
2) Linux:
|
|
|
|
Updated all files to apply cleanly against 2.4.16.
|
|
|
|
Added basic PCI Interrupt Routing Table (PRT) support for IA32
|
|
(acpi_pci.c), and unified the PRT code for IA32 and IA64. This
|
|
version supports both static and dynamic PRT entries, but dynamic
|
|
entries are treated as if they were static (not yet
|
|
reconfigurable). Architecture- specific code to use this data is
|
|
absent on IA32 but should be available shortly.
|
|
|
|
Changed the initialization sequence to start the ACPI interpreter
|
|
(acpi_init) prior to initialization of the PCI driver (pci_init)
|
|
in init/main.c. This ordering is required to support PRT and
|
|
facilitate other (future) enhancement. A side effect is that the
|
|
ACPI bus driver and certain device drivers can no longer be loaded
|
|
as modules.
|
|
|
|
Modified the 'make menuconfig' options to allow PCI Interrupt
|
|
Routing support to be included without the ACPI Bus and other
|
|
device drivers.
|
|
|
|
3) ASL Compiler, version X2033:
|
|
|
|
Fixed some issues with the use of the new CopyObject and
|
|
DataTableRegion operators. Both are fully functional.
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 11_20_01
|
|
|
|
20 November 2001. Summary of changes for this release.
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Updated Index support to match ACPI 2.0 semantics. Storing a
|
|
Integer, String, or Buffer to an Index of a Buffer will store only
|
|
the least-significant byte of the source to the Indexed buffer
|
|
byte. Multiple writes are not performed.
|
|
|
|
Fixed a problem where the access type used in an AccessAs ASL
|
|
operator was not recorded correctly into the field object.
|
|
|
|
Fixed a problem where ASL Event objects were created in a
|
|
signalled state. Events are now created in an unsignalled state.
|
|
|
|
The internal object cache is now purged after table loading and
|
|
initialization to reduce the use of dynamic kernel memory -- on
|
|
the assumption that object use is greatest during the parse phase
|
|
of the entire table (versus the run-time use of individual control
|
|
methods.)
|
|
|
|
ACPI 2.0 variable-length packages are now fully operational.
|
|
|
|
Code and Data Size: Code and Data optimizations have permitted new
|
|
feature development with an actual reduction in the library size.
|
|
Current core subsystem library sizes are shown below. These are
|
|
the code and data sizes for the acpica.lib produced by the
|
|
Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code
|
|
includes the debug output trace mechanism and has a larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency of the compiler and the compiler options used during
|
|
generation.
|
|
|
|
Previous Release (11_09_01):
|
|
Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
|
|
Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
|
|
|
|
Current Release:
|
|
Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
|
|
Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
|
|
|
|
2) Linux:
|
|
|
|
Enhanced the ACPI boot-time initialization code to allow the use
|
|
of Local APIC tables for processor enumeration on IA-32, and to
|
|
pave the way for a fully MPS-free boot (on SMP systems) in the
|
|
near future. This functionality replaces
|
|
arch/i386/kernel/acpitables.c, which was introduced in an earlier
|
|
2.4.15-preX release. To enable this feature you must add
|
|
"acpi_boot=on" to the kernel command line -- see the help entry
|
|
for CONFIG_ACPI_BOOT for more information. An IA-64 release is in
|
|
the works...
|
|
|
|
Restructured the configuration options to allow boot-time table
|
|
parsing support without inclusion of the ACPI Interpreter (and
|
|
other) code.
|
|
|
|
NOTE: This release does not include fixes for the reported events,
|
|
power-down, and thermal passive cooling issues (coming soon).
|
|
|
|
3) ASL Compiler:
|
|
|
|
Added additional typechecking for Fields within restricted access
|
|
Operation Regions. All fields within EC and CMOS regions must be
|
|
declared with ByteAcc. All fields within SMBus regions must be
|
|
declared with the BufferAcc access type.
|
|
|
|
Fixed a problem where the listing file output of control methods
|
|
no longer interleaved the actual AML code with the ASL source
|
|
code.
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 11_09_01
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
Implemented ACPI 2.0-defined support for writes to fields with a
|
|
Buffer, String, or Integer source operand that is smaller than the
|
|
target field. In these cases, the source operand is zero-extended
|
|
to fill the target field.
|
|
|
|
Fixed a problem where a Field starting bit offset (within the
|
|
parent operation region) was calculated incorrectly if the
|
|
|
|
alignment of the field differed from the access width. This
|
|
affected CreateWordField, CreateDwordField, CreateQwordField, and
|
|
possibly other fields that use the "AccessAny" keyword.
|
|
|
|
Fixed a problem introduced in the 11_02_01 release where indirect
|
|
stores through method arguments did not operate correctly.
|
|
|
|
2) Linux:
|
|
|
|
Implemented boot-time ACPI table parsing support
|
|
(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code
|
|
facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
|
|
legacy BIOS interfaces (e.g. MPS) for the configuration of system
|
|
processors, memory, and interrupts during setup_arch(). Note that
|
|
this patch does not include the required architecture-specific
|
|
changes required to apply this information -- subsequent patches
|
|
will be posted for both IA32 and IA64 to achieve this.
|
|
|
|
Added low-level sleep support for IA32 platforms, courtesy of Pat
|
|
Mochel. This allows IA32 systems to transition to/from various
|
|
sleeping states (e.g. S1, S3), although the lack of a centralized
|
|
driver model and power-manageable drivers will prevent its
|
|
(successful) use on most systems.
|
|
|
|
Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
|
|
submenu, unified IA32 and IA64 options, added new "Boot using ACPI
|
|
tables" option, etc.
|
|
|
|
Increased the default timeout for the EC driver from 1ms to 10ms
|
|
(1000 cycles of 10us) to try to address AE_TIME errors during EC
|
|
transactions.
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 11_02_01
|
|
|
|
1) ACPI CA Core Subsystem:
|
|
|
|
ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
|
|
(QWordAcc keyword). All ACPI 2.0 64-bit support is now
|
|
implemented.
|
|
|
|
OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
|
|
changes to support ACPI 2.0 Qword field access. Read/Write
|
|
PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
|
|
accept an ACPI_INTEGER (64 bits) as the value parameter. Also,
|
|
the value parameter for the address space handler interface is now
|
|
an ACPI_INTEGER. OSL implementations of these interfaces must now
|
|
handle the case where the Width parameter is 64.
|
|
|
|
Index Fields: Fixed a problem where unaligned bit assembly and
|
|
disassembly for IndexFields was not supported correctly.
|
|
|
|
Index and Bank Fields: Nested Index and Bank Fields are now
|
|
supported. During field access, a check is performed to ensure
|
|
that the value written to an Index or Bank register is not out of
|
|
the range of the register. The Index (or Bank) register is
|
|
written before each access to the field data. Future support will
|
|
include allowing individual IndexFields to be wider than the
|
|
DataRegister width.
|
|
|
|
Fields: Fixed a problem where the AML interpreter was incorrectly
|
|
attempting to write beyond the end of a Field/OpRegion. This was
|
|
a boundary case that occurred when a DWORD field was written to a
|
|
BYTE access OpRegion, forcing multiple writes and causing the
|
|
interpreter to write one datum too many.
|
|
|
|
Fields: Fixed a problem with Field/OpRegion access where the
|
|
starting bit address of a field was incorrectly calculated if the
|
|
current access type was wider than a byte (WordAcc, DwordAcc, or
|
|
QwordAcc).
|
|
|
|
Fields: Fixed a problem where forward references to individual
|
|
FieldUnits (individual Field names within a Field definition) were
|
|
not resolved during the AML table load.
|
|
|
|
Fields: Fixed a problem where forward references from a Field
|
|
definition to the parent Operation Region definition were not
|
|
resolved during the AML table load.
|
|
|
|
Fields: Duplicate FieldUnit names within a scope are now detected
|
|
during AML table load.
|
|
|
|
Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
|
|
returned an incorrect name for the root node.
|
|
|
|
Code and Data Size: Code and Data optimizations have permitted new
|
|
feature development with an actual reduction in the library size.
|
|
Current core subsystem library sizes are shown below. These are
|
|
the code and data sizes for the acpica.lib produced by the
|
|
Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code
|
|
includes the debug output trace mechanism and has a larger code
|
|
and data size. Note that these values will vary depending on the
|
|
efficiency of the compiler and the compiler options used during
|
|
generation.
|
|
|
|
Previous Release (10_18_01):
|
|
Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
|
|
Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
|
|
|
|
Current Release:
|
|
Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
|
|
Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
|
|
|
|
2) Linux:
|
|
|
|
Improved /proc processor output (Pavel Machek) Re-added
|
|
MODULE_LICENSE("GPL") to all modules.
|
|
|
|
3) ASL Compiler version X2030:
|
|
|
|
Duplicate FieldUnit names within a scope are now detected and
|
|
flagged as errors.
|
|
|
|
4) Documentation:
|
|
|
|
Programmer Reference updated to reflect OSL and address space
|
|
handler interface changes described above.
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 10_18_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem with the internal object reference count mechanism
|
|
that occasionally caused premature object deletion. This resolves
|
|
all of the outstanding problem reports where an object is deleted
|
|
in the middle of an interpreter evaluation. Although this problem
|
|
only showed up in rather obscure cases, the solution to the
|
|
problem involved an adjustment of all reference counts involving
|
|
objects attached to namespace nodes.
|
|
|
|
Fixed a problem with Field support in the interpreter where
|
|
writing to an aligned field whose length is an exact multiple (2
|
|
or greater) of the field access granularity would cause an attempt
|
|
to write beyond the end of the field.
|
|
|
|
The top level AML opcode execution functions within the
|
|
interpreter have been renamed with a more meaningful and
|
|
consistent naming convention. The modules exmonad.c and
|
|
exdyadic.c were eliminated. New modules are exoparg1.c,
|
|
exoparg2.c, exoparg3.c, and exoparg6.c.
|
|
|
|
Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
|
|
|
|
Fixed a problem where the AML debugger was causing some internal
|
|
objects to not be deleted during subsystem termination.
|
|
|
|
Fixed a problem with the external AcpiEvaluateObject interface
|
|
where the subsystem would fault if the named object to be
|
|
evaluated referred to a constant such as Zero, Ones, etc.
|
|
|
|
Fixed a problem with IndexFields and BankFields where the
|
|
subsystem would fault if the index, data, or bank registers were
|
|
not defined in the same scope as the field itself.
|
|
|
|
Added printf format string checking for compilers that support
|
|
this feature. Corrected more than 50 instances of issues with
|
|
format specifiers within invocations of ACPI_DEBUG_PRINT
|
|
throughout the core subsystem code.
|
|
|
|
The ASL "Revision" operator now returns the ACPI support level
|
|
implemented in the core - the value "2" since the ACPI 2.0 support
|
|
is more than 50% implemented.
|
|
|
|
Enhanced the output of the AML debugger "dump namespace" command
|
|
to output in a more human-readable form.
|
|
|
|
Current core subsystem library code sizes are shown below. These
|
|
|
|
are the code and data sizes for the acpica.lib produced by the
|
|
Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code
|
|
includes the full debug trace mechanism -- leading to a much
|
|
|
|
larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Previous Label (09_20_01):
|
|
Non-Debug Version: 65K Code, 5K Data, 70K Total
|
|
Debug Version: 138K Code, 58K Data, 196K Total
|
|
|
|
This Label:
|
|
|
|
Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
|
|
Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
|
|
|
|
Linux:
|
|
|
|
Implemented a "Bad BIOS Blacklist" to track machines that have
|
|
known ASL/AML problems.
|
|
|
|
Enhanced the /proc interface for the thermal zone driver and added
|
|
support for _HOT (the critical suspend trip point). The 'info'
|
|
file now includes threshold/policy information, and allows setting
|
|
of _SCP (cooling preference) and _TZP (polling frequency) values
|
|
to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
|
|
frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
|
|
preference to the passive/quiet mode (if supported by the ASL).
|
|
|
|
Implemented a workaround for a gcc bug that resuted in an OOPs
|
|
when loading the control method battery driver.
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 09_20_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
The AcpiEnableEvent and AcpiDisableEvent interfaces have been
|
|
modified to allow individual GPE levels to be flagged as wake-
|
|
enabled (i.e., these GPEs are to remain enabled when the platform
|
|
sleeps.)
|
|
|
|
The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
|
|
support wake-enabled GPEs. This means that upon entering the
|
|
sleep state, all GPEs that are not wake-enabled are disabled.
|
|
When leaving the sleep state, these GPEs are re-enabled.
|
|
|
|
A local double-precision divide/modulo module has been added to
|
|
enhance portability to OS kernels where a 64-bit math library is
|
|
not available. The new module is "utmath.c".
|
|
|
|
Several optimizations have been made to reduce the use of CPU
|
|
stack. Originally over 2K, the maximum stack usage is now below
|
|
2K at 1860 bytes (1.82k)
|
|
|
|
Fixed a problem with the AcpiGetFirmwareTable interface where the
|
|
root table pointer was not mapped into a logical address properly.
|
|
|
|
Fixed a problem where a NULL pointer was being dereferenced in the
|
|
interpreter code for the ASL Notify operator.
|
|
|
|
Fixed a problem where the use of the ASL Revision operator
|
|
returned an error. This operator now returns the current version
|
|
of the ACPI CA core subsystem.
|
|
|
|
Fixed a problem where objects passed as control method parameters
|
|
to AcpiEvaluateObject were always deleted at method termination.
|
|
However, these objects may end up being stored into the namespace
|
|
by the called method. The object reference count mechanism was
|
|
applied to these objects instead of a force delete.
|
|
|
|
Fixed a problem where static strings or buffers (contained in the
|
|
AML code) that are declared as package elements within the ASL
|
|
code could cause a fault because the interpreter would attempt to
|
|
delete them. These objects are now marked with the "static
|
|
object" flag to prevent any attempt to delete them.
|
|
|
|
Implemented an interpreter optimization to use operands directly
|
|
from the state object instead of extracting the operands to local
|
|
variables. This reduces stack use and code size, and improves
|
|
performance.
|
|
|
|
The module exxface.c was eliminated as it was an unnecessary extra
|
|
layer of code.
|
|
|
|
Current core subsystem library code sizes are shown below. These
|
|
are the code and data sizes for the acpica.lib produced by the
|
|
Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code
|
|
includes the full debug trace mechanism -- leading to a much
|
|
larger code and data size. Note that these values will vary
|
|
depending on the efficiency of the compiler and the compiler
|
|
options used during generation.
|
|
|
|
Non-Debug Version: 65K Code, 5K Data, 70K Total
|
|
(Previously 69K) Debug Version: 138K Code, 58K Data, 196K
|
|
Total (Previously 195K)
|
|
|
|
Linux:
|
|
|
|
Support for ACPI 2.0 64-bit integers has been added. All ACPI
|
|
Integer objects are now 64 bits wide
|
|
|
|
All Acpi data types and structures are now in lower case. Only
|
|
Acpi macros are upper case for differentiation.
|
|
|
|
Documentation:
|
|
|
|
Changes to the external interfaces as described above.
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 08_31_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
A bug with interpreter implementation of the ASL Divide operator
|
|
was found and fixed. The implicit function return value (not the
|
|
explicit store operands) was returning the remainder instead of
|
|
the quotient. This was a longstanding bug and it fixes several
|
|
known outstanding issues on various platforms.
|
|
|
|
The ACPI_DEBUG_PRINT and function trace entry/exit macros have
|
|
been further optimized for size. There are 700 invocations of the
|
|
DEBUG_PRINT macro alone, so each optimization reduces the size of
|
|
the debug version of the subsystem significantly.
|
|
|
|
A stack trace mechanism has been implemented. The maximum stack
|
|
usage is about 2K on 32-bit platforms. The debugger command "stat
|
|
stack" will display the current maximum stack usage.
|
|
|
|
All public symbols and global variables within the subsystem are
|
|
now prefixed with the string "Acpi". This keeps all of the
|
|
symbols grouped together in a kernel map, and avoids conflicts
|
|
with other kernel subsystems.
|
|
|
|
Most of the internal fixed lookup tables have been moved into the
|
|
code segment via the const operator.
|
|
|
|
Several enhancements have been made to the interpreter to both
|
|
reduce the code size and improve performance.
|
|
|
|
Current core subsystem library code sizes are shown below. These
|
|
are the code and data sizes for the acpica.lib produced by the
|
|
Microsoft Visual C++ 6.0 compiler, and these values do not include
|
|
any ACPI driver or OSPM code. The debug version of the code
|
|
includes the full debug trace mechanism which contains over 700
|
|
invocations of the DEBUG_PRINT macro, 500 function entry macro
|
|
invocations, and over 900 function exit macro invocations --
|
|
leading to a much larger code and data size. Note that these
|
|
values will vary depending on the efficiency of the compiler and
|
|
the compiler options used during generation.
|
|
|
|
Non-Debug Version: 64K Code, 5K Data, 69K Total
|
|
Debug Version: 137K Code, 58K Data, 195K Total
|
|
|
|
Linux:
|
|
|
|
Implemented wbinvd() macro, pending a kernel-wide definition.
|
|
|
|
Fixed /proc/acpi/event to handle poll() and short reads.
|
|
|
|
ASL Compiler, version X2026:
|
|
|
|
Fixed a problem introduced in the previous label where the AML
|
|
|
|
code emitted for package objects produced packages with zero
|
|
length.
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 08_16_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
The following ACPI 2.0 ASL operators have been implemented in the
|
|
AML interpreter (These are already supported by the Intel ASL
|
|
compiler): ToDecimalString, ToHexString, ToString, ToInteger, and
|
|
ToBuffer. Support for 64-bit AML constants is implemented in the
|
|
AML parser, debugger, and disassembler.
|
|
|
|
The internal memory tracking mechanism (leak detection code) has
|
|
been upgraded to reduce the memory overhead (a separate tracking
|
|
block is no longer allocated for each memory allocation), and now
|
|
supports all of the internal object caches.
|
|
|
|
The data structures and code for the internal object caches have
|
|
been coelesced and optimized so that there is a single cache and
|
|
memory list data structure and a single group of functions that
|
|
implement generic cache management. This has reduced the code
|
|
size in both the debug and release versions of the subsystem.
|
|
|
|
The DEBUG_PRINT macro(s) have been optimized for size and replaced
|
|
by ACPI_DEBUG_PRINT. The syntax for this macro is slightly
|
|
different, because it generates a single call to an internal
|
|
function. This results in a savings of about 90 bytes per
|
|
invocation, resulting in an overall code and data savings of about
|
|
16% in the debug version of the subsystem.
|
|
|
|
Linux:
|
|
|
|
Fixed C3 disk corruption problems and re-enabled C3 on supporting
|
|
machines.
|
|
|
|
Integrated low-level sleep code by Patrick Mochel.
|
|
|
|
Further tweaked source code Linuxization.
|
|
|
|
Other minor fixes.
|
|
|
|
ASL Compiler:
|
|
|
|
Support for ACPI 2.0 variable length packages is fixed/completed.
|
|
|
|
Fixed a problem where the optional length parameter for the ACPI
|
|
2.0 ToString operator.
|
|
|
|
Fixed multiple extraneous error messages when a syntax error is
|
|
detected within the declaration line of a control method.
|
|
|
|
----------------------------------------
|
|
Summary of changes for this label: 07_17_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
Added a new interface named AcpiGetFirmwareTable to obtain any
|
|
ACPI table via the ACPI signature. The interface can be called at
|
|
any time during kernel initialization, even before the kernel
|
|
virtual memory manager is initialized and paging is enabled. This
|
|
allows kernel subsystems to obtain ACPI tables very early, even
|
|
before the ACPI CA subsystem is initialized.
|
|
|
|
Fixed a problem where Fields defined with the AnyAcc attribute
|
|
could be resolved to the incorrect address under the following
|
|
conditions: 1) the field width is larger than 8 bits and 2) the
|
|
parent operation region is not defined on a DWORD boundary.
|
|
|
|
Fixed a problem where the interpreter is not being locked during
|
|
namespace initialization (during execution of the _INI control
|
|
methods), causing an error when an attempt is made to release it
|
|
later.
|
|
|
|
ACPI 2.0 support in the AML Interpreter has begun and will be
|
|
ongoing throughout the rest of this year. In this label, The Mod
|
|
operator is implemented.
|
|
|
|
Added a new data type to contain full PCI addresses named
|
|
ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
|
|
and Function values.
|
|
|
|
Linux:
|
|
|
|
Enhanced the Linux version of the source code to change most
|
|
capitalized ACPI type names to lowercase. For example, all
|
|
instances of ACPI_STATUS are changed to acpi_status. This will
|
|
result in a large diff, but the change is strictly cosmetic and
|
|
aligns the CA code closer to the Linux coding standard.
|
|
|
|
OSL Interfaces:
|
|
|
|
The interfaces to the PCI configuration space have been changed to
|
|
add the PCI Segment number and to split the single 32-bit combined
|
|
DeviceFunction field into two 16-bit fields. This was
|
|
accomplished by moving the four values that define an address in
|
|
PCI configuration space (segment, bus, device, and function) to
|
|
the new ACPI_PCI_ID structure.
|
|
|
|
The changes to the PCI configuration space interfaces led to a
|
|
reexamination of the complete set of address space access
|
|
interfaces for PCI, I/O, and Memory. The previously existing 18
|
|
interfaces have proven difficult to maintain (any small change
|
|
must be propagated across at least 6 interfaces) and do not easily
|
|
allow for future expansion to 64 bits if necessary. Also, on some
|
|
systems, it would not be appropriate to demultiplex the access
|
|
width (8, 16, 32,or 64) before calling the OSL if the
|
|
corresponding native OS interfaces contain a similar access width
|
|
parameter. For these reasons, the 18 address space interfaces
|
|
have been replaced by these 6 new ones:
|
|
|
|
AcpiOsReadPciConfiguration
|
|
AcpiOsWritePciConfiguration
|
|
AcpiOsReadMemory
|
|
AcpiOsWriteMemory
|
|
AcpiOsReadPort
|
|
AcpiOsWritePort
|
|
|
|
Added a new interface named AcpiOsGetRootPointer to allow the OSL
|
|
to perform the platform and/or OS-specific actions necessary to
|
|
obtain the ACPI RSDP table pointer. On IA-32 platforms, this
|
|
interface will simply call down to the CA core to perform the low-
|
|
memory search for the table. On IA-64, the RSDP is obtained from
|
|
EFI. Migrating this interface to the OSL allows the CA core to
|
|
|
|
remain OS and platform independent.
|
|
|
|
Added a new interface named AcpiOsSignal to provide a generic
|
|
"function code and pointer" interface for various miscellaneous
|
|
signals and notifications that must be made to the host OS. The
|
|
first such signals are intended to support the ASL Fatal and
|
|
Breakpoint operators. In the latter case, the AcpiOsBreakpoint
|
|
interface has been obsoleted.
|
|
|
|
The definition of the AcpiFormatException interface has been
|
|
changed to simplify its use. The caller no longer must supply a
|
|
buffer to the call; A pointer to a const string is now returned
|
|
directly. This allows the call to be easily used in printf
|
|
statements, etc. since the caller does not have to manage a local
|
|
buffer.
|
|
|
|
|
|
ASL Compiler, Version X2025:
|
|
|
|
The ACPI 2.0 Switch/Case/Default operators have been implemented
|
|
and are fully functional. They will work with all ACPI 1.0
|
|
interpreters, since the operators are simply translated to If/Else
|
|
pairs.
|
|
|
|
The ACPI 2.0 ElseIf operator is implemented and will also work
|
|
with 1.0 interpreters, for the same reason.
|
|
|
|
Implemented support for ACPI 2.0 variable-length packages. These
|
|
packages have a separate opcode, and their size is determined by
|
|
the interpreter at run-time.
|
|
|
|
Documentation The ACPI CA Programmer Reference has been updated to
|
|
reflect the new interfaces and changes to existing interfaces.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 06_15_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where a DWORD-accessed field within a Buffer
|
|
object would get its byte address inadvertently rounded down to
|
|
the nearest DWORD. Buffers are always Byte-accessible.
|
|
|
|
ASL Compiler, version X2024:
|
|
|
|
Fixed a problem where the Switch() operator would either fault or
|
|
hang the compiler. Note however, that the AML code for this ACPI
|
|
2.0 operator is not yet implemented.
|
|
|
|
Compiler uses the new AcpiOsGetTimer interface to obtain compile
|
|
timings.
|
|
|
|
Implementation of the CreateField operator automatically converts
|
|
a reference to a named field within a resource descriptor from a
|
|
byte offset to a bit offset if required.
|
|
|
|
Added some missing named fields from the resource descriptor
|
|
support. These are the names that are automatically created by the
|
|
compiler to reference fields within a descriptor. They are only
|
|
valid at compile time and are not passed through to the AML
|
|
interpreter.
|
|
|
|
Resource descriptor named fields are now typed as Integers and
|
|
subject to compile-time typechecking when used in expressions.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 05_18_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
Fixed a couple of problems in the Field support code where bits
|
|
from adjacent fields could be returned along with the proper field
|
|
bits. Restructured the field support code to improve performance,
|
|
readability and maintainability.
|
|
|
|
New DEBUG_PRINTP macro automatically inserts the procedure name
|
|
into the output, saving hundreds of copies of procedure name
|
|
strings within the source, shrinking the memory footprint of the
|
|
debug version of the core subsystem.
|
|
|
|
Source Code Structure:
|
|
|
|
The source code directory tree was restructured to reflect the
|
|
current organization of the component architecture. Some files
|
|
and directories have been moved and/or renamed.
|
|
|
|
Linux:
|
|
|
|
Fixed leaking kacpidpc processes.
|
|
|
|
Fixed queueing event data even when /proc/acpi/event is not
|
|
opened.
|
|
|
|
ASL Compiler, version X2020:
|
|
|
|
Memory allocation performance enhancement - over 24X compile time
|
|
improvement on large ASL files. Parse nodes and namestring
|
|
buffers are now allocated from a large internal compiler buffer.
|
|
|
|
The temporary .SRC file is deleted unless the "-s" option is
|
|
specified
|
|
|
|
The "-d" debug output option now sends all output to the .DBG file
|
|
instead of the console.
|
|
|
|
"External" second parameter is now optional
|
|
|
|
"ElseIf" syntax now properly allows the predicate
|
|
|
|
Last operand to "Load" now recognized as a Target operand
|
|
|
|
Debug object can now be used anywhere as a normal object.
|
|
|
|
ResourceTemplate now returns an object of type BUFFER
|
|
|
|
EISAID now returns an object of type INTEGER
|
|
|
|
"Index" now works with a STRING operand
|
|
|
|
"LoadTable" now accepts optional parameters
|
|
|
|
"ToString" length parameter is now optional
|
|
|
|
"Interrupt (ResourceType," parse error fixed.
|
|
|
|
"Register" with a user-defined region space parse error fixed
|
|
|
|
Escaped backslash at the end of a string ("\\") scan/parse error
|
|
fixed
|
|
|
|
"Revision" is now an object of type INTEGER.
|
|
|
|
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 05_02_01
|
|
|
|
Linux:
|
|
|
|
/proc/acpi/event now blocks properly.
|
|
|
|
Removed /proc/sys/acpi. You can still dump your DSDT from
|
|
/proc/acpi/dsdt.
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem introduced in the previous label where some of the
|
|
"small" resource descriptor types were not recognized.
|
|
|
|
Improved error messages for the case where an ASL Field is outside
|
|
the range of the parent operation region.
|
|
|
|
ASL Compiler, version X2018:
|
|
|
|
|
|
Added error detection for ASL Fields that extend beyond the length
|
|
of the parent operation region (only if the length of the region
|
|
is known at compile time.) This includes fields that have a
|
|
minimum access width that is smaller than the parent region, and
|
|
individual field units that are partially or entirely beyond the
|
|
extent of the parent.
|
|
|
|
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 04_27_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
Fixed a problem where the namespace mutex could be released at the
|
|
wrong time during execution of AcpiRemoveAddressSpaceHandler.
|
|
|
|
Added optional thread ID output for debug traces, to simplify
|
|
debugging of multiple threads. Added context switch notification
|
|
when the debug code realizes that a different thread is now
|
|
executing ACPI code.
|
|
|
|
Some additional external data types have been prefixed with the
|
|
string "ACPI_" for consistency. This may effect existing code.
|
|
The data types affected are the external callback typedefs - e.g.,
|
|
|
|
WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
|
|
|
|
Linux:
|
|
|
|
Fixed an issue with the OSL semaphore implementation where a
|
|
thread was waking up with an error from receiving a SIGCHLD
|
|
signal.
|
|
|
|
Linux version of ACPI CA now uses the system C library for string
|
|
manipulation routines instead of a local implementation.
|
|
|
|
Cleaned up comments and removed TBDs.
|
|
|
|
ASL Compiler, version X2017:
|
|
|
|
Enhanced error detection and reporting for all file I/O
|
|
operations.
|
|
|
|
Documentation:
|
|
|
|
Programmer Reference updated to version 1.06.
|
|
|
|
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 04_13_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
Restructured support for BufferFields and RegionFields.
|
|
BankFields support is now fully operational. All known 32-bit
|
|
limitations on field sizes have been removed. Both BufferFields
|
|
and (Operation) RegionFields are now supported by the same field
|
|
management code.
|
|
|
|
Resource support now supports QWORD address and IO resources. The
|
|
16/32/64 bit address structures and the Extended IRQ structure
|
|
have been changed to properly handle Source Resource strings.
|
|
|
|
A ThreadId of -1 is now used to indicate a "mutex not acquired"
|
|
condition internally and must never be returned by AcpiOsThreadId.
|
|
This reserved value was changed from 0 since Unix systems allow a
|
|
thread ID of 0.
|
|
|
|
Linux:
|
|
|
|
Driver code reorganized to enhance portability
|
|
|
|
Added a kernel configuration option to control ACPI_DEBUG
|
|
|
|
Fixed the EC driver to honor _GLK.
|
|
|
|
ASL Compiler, version X2016:
|
|
|
|
Fixed support for the "FixedHw" keyword. Previously, the FixedHw
|
|
address space was set to 0, not 0x7f as it should be.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 03_13_01
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
During ACPI initialization, the _SB_._INI method is now run if
|
|
present.
|
|
|
|
Notify handler fix - notifies are deferred until the parent method
|
|
completes execution. This fixes the "mutex already acquired"
|
|
issue seen occasionally.
|
|
|
|
Part of the "implicit conversion" rules in ACPI 2.0 have been
|
|
found to cause compatibility problems with existing ASL/AML. The
|
|
convert "result-to-target-type" implementation has been removed
|
|
for stores to method Args and Locals. Source operand conversion
|
|
is still fully implemented. Possible changes to ACPI 2.0
|
|
specification pending.
|
|
|
|
Fix to AcpiRsCalculatePciRoutingTableLength to return correct
|
|
length.
|
|
|
|
Fix for compiler warnings for 64-bit compiles.
|
|
|
|
Linux:
|
|
|
|
/proc output aligned for easier parsing.
|
|
|
|
Release-version compile problem fixed.
|
|
|
|
New kernel configuration options documented in Configure.help.
|
|
|
|
IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
|
|
context" message.
|
|
|
|
OSPM:
|
|
|
|
Power resource driver integrated with bus manager.
|
|
|
|
Fixed kernel fault during active cooling for thermal zones.
|
|
|
|
Source Code:
|
|
|
|
The source code tree has been restructured.
|
|
|
|
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 03_02_01
|
|
|
|
Linux OS Services Layer (OSL):
|
|
|
|
Major revision of all Linux-specific code.
|
|
|
|
Modularized all ACPI-specific drivers.
|
|
|
|
Added new thermal zone and power resource drivers.
|
|
|
|
Revamped /proc interface (new functionality is under /proc/acpi).
|
|
|
|
New kernel configuration options.
|
|
|
|
Linux known issues:
|
|
|
|
New kernel configuration options not documented in Configure.help
|
|
yet.
|
|
|
|
|
|
Module dependencies not currently implemented. If used, they
|
|
should be loaded in this order: busmgr, power, ec, system,
|
|
processor, battery, ac_adapter, button, thermal.
|
|
|
|
Modules will not load if CONFIG_MODVERSION is set.
|
|
|
|
IBM 600E - entering S5 may reboot instead of shutting down.
|
|
|
|
IBM 600E - Sleep button may generate "Invalid <NULL> context"
|
|
message.
|
|
|
|
Some systems may fail with "execution mutex already acquired"
|
|
message.
|
|
|
|
ACPI CA Core Subsystem:
|
|
|
|
Added a new OSL Interface, AcpiOsGetThreadId. This was required
|
|
for the deadlock detection code. Defined to return a non-zero, 32-
|
|
bit thread ID for the currently executing thread. May be a non-
|
|
zero constant integer on single-thread systems.
|
|
|
|
Implemented deadlock detection for internal subsystem mutexes. We
|
|
may add conditional compilation for this code (debug only) later.
|
|
|
|
ASL/AML Mutex object semantics are now fully supported. This
|
|
includes multiple acquires/releases by owner and support for the
|
|
|
|
Mutex SyncLevel parameter.
|
|
|
|
A new "Force Release" mechanism automatically frees all ASL
|
|
Mutexes that have been acquired but not released when a thread
|
|
exits the interpreter. This forces conformance to the ACPI spec
|
|
("All mutexes must be released when an invocation exits") and
|
|
prevents deadlocked ASL threads. This mechanism can be expanded
|
|
(later) to monitor other resource acquisitions if OEM ASL code
|
|
continues to misbehave (which it will).
|
|
|
|
Several new ACPI exception codes have been added for the Mutex
|
|
support.
|
|
|
|
Recursive method calls are now allowed and supported (the ACPI
|
|
spec does in fact allow recursive method calls.) The number of
|
|
recursive calls is subject to the restrictions imposed by the
|
|
SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
|
|
parameter.
|
|
|
|
Implemented support for the SyncLevel parameter for control
|
|
methods (ACPI 2.0 feature)
|
|
|
|
Fixed a deadlock problem when multiple threads attempted to use
|
|
the interpreter.
|
|
|
|
Fixed a problem where the string length of a String package
|
|
element was not always set in a package returned from
|
|
AcpiEvaluateObject.
|
|
|
|
Fixed a problem where the length of a String package element was
|
|
not always included in the length of the overall package returned
|
|
from AcpiEvaluateObject.
|
|
|
|
Added external interfaces (Acpi*) to the ACPI debug memory
|
|
manager. This manager keeps a list of all outstanding
|
|
allocations, and can therefore detect memory leaks and attempts to
|
|
free memory blocks more than once. Useful for code such as the
|
|
power manager, etc. May not be appropriate for device drivers.
|
|
Performance with the debug code enabled is slow.
|
|
|
|
The ACPI Global Lock is now an optional hardware element.
|
|
|
|
ASL Compiler Version X2015:
|
|
|
|
Integrated changes to allow the compiler to be generated on
|
|
multiple platforms.
|
|
|
|
Linux makefile added to generate the compiler on Linux
|
|
|
|
Source Code:
|
|
|
|
All platform-specific headers have been moved to their own
|
|
subdirectory, Include/Platform.
|
|
|
|
New source file added, Interpreter/ammutex.c
|
|
|
|
New header file, Include/acstruct.h
|
|
|
|
Documentation:
|
|
|
|
The programmer reference has been updated for the following new
|
|
interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 02_08_01
|
|
|
|
Core ACPI CA Subsystem: Fixed a problem where an error was
|
|
incorrectly returned if the return resource buffer was larger than
|
|
the actual data (in the resource interfaces).
|
|
|
|
References to named objects within packages are resolved to the
|
|
|
|
full pathname string before packages are returned directly (via
|
|
the AcpiEvaluateObject interface) or indirectly via the resource
|
|
interfaces.
|
|
|
|
Linux OS Services Layer (OSL):
|
|
|
|
Improved /proc battery interface.
|
|
|
|
|
|
Added C-state debugging output and other miscellaneous fixes.
|
|
|
|
ASL Compiler Version X2014:
|
|
|
|
All defined method arguments can now be used as local variables,
|
|
including the ones that are not actually passed in as parameters.
|
|
The compiler tracks initialization of the arguments and issues an
|
|
exception if they are used without prior assignment (just like
|
|
locals).
|
|
|
|
The -o option now specifies a filename prefix that is used for all
|
|
output files, including the AML output file. Otherwise, the
|
|
default behavior is as follows: 1) the AML goes to the file
|
|
specified in the DSDT. 2) all other output files use the input
|
|
source filename as the base.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 01_25_01
|
|
|
|
Core ACPI CA Subsystem: Restructured the implementation of object
|
|
store support within the interpreter. This includes support for
|
|
the Store operator as well as any ASL operators that include a
|
|
target operand.
|
|
|
|
Partially implemented support for Implicit Result-to-Target
|
|
conversion. This is when a result object is converted on the fly
|
|
to the type of an existing target object. Completion of this
|
|
support is pending further analysis of the ACPI specification
|
|
concerning this matter.
|
|
|
|
CPU-specific code has been removed from the subsystem (hardware
|
|
directory).
|
|
|
|
New Power Management Timer functions added
|
|
|
|
Linux OS Services Layer (OSL): Moved system state transition code
|
|
to the core, fixed it, and modified Linux OSL accordingly.
|
|
|
|
Fixed C2 and C3 latency calculations.
|
|
|
|
|
|
We no longer use the compilation date for the version message on
|
|
initialization, but retrieve the version from AcpiGetSystemInfo().
|
|
|
|
Incorporated for fix Sony VAIO machines.
|
|
|
|
Documentation: The Programmer Reference has been updated and
|
|
reformatted.
|
|
|
|
|
|
ASL Compiler: Version X2013: Fixed a problem where the line
|
|
numbering and error reporting could get out of sync in the
|
|
presence of multiple include files.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 01_15_01
|
|
|
|
Core ACPI CA Subsystem:
|
|
|
|
Implemented support for type conversions in the execution of the
|
|
ASL Concatenate operator (The second operand is converted to
|
|
match the type of the first operand before concatenation.)
|
|
|
|
Support for implicit source operand conversion is partially
|
|
implemented. The ASL source operand types Integer, Buffer, and
|
|
String are freely interchangeable for most ASL operators and are
|
|
converted by the interpreter on the fly as required. Implicit
|
|
Target operand conversion (where the result is converted to the
|
|
target type before storing) is not yet implemented.
|
|
|
|
Support for 32-bit and 64-bit BCD integers is implemented.
|
|
|
|
Problem fixed where a field read on an aligned field could cause a
|
|
read past the end of the field.
|
|
|
|
New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
|
|
does not return a value, but the caller expects one. (The ASL
|
|
compiler flags this as a warning.)
|
|
|
|
ASL Compiler:
|
|
|
|
Version X2011:
|
|
1. Static typechecking of all operands is implemented. This
|
|
prevents the use of invalid objects (such as using a Package where
|
|
an Integer is required) at compile time instead of at interpreter
|
|
run-time.
|
|
2. The ASL source line is printed with ALL errors and warnings.
|
|
3. Bug fix for source EOF without final linefeed.
|
|
4. Debug option is split into a parse trace and a namespace trace.
|
|
5. Namespace output option (-n) includes initial values for
|
|
integers and strings.
|
|
6. Parse-only option added for quick syntax checking.
|
|
7. Compiler checks for duplicate ACPI name declarations
|
|
|
|
Version X2012:
|
|
1. Relaxed typechecking to allow interchangeability between
|
|
strings, integers, and buffers. These types are now converted by
|
|
the interpreter at runtime.
|
|
2. Compiler reports time taken by each internal subsystem in the
|
|
debug output file.
|
|
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 12_14_00
|
|
|
|
ASL Compiler:
|
|
|
|
This is the first official release of the compiler. Since the
|
|
compiler requires elements of the Core Subsystem, this label
|
|
synchronizes everything.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 12_08_00
|
|
|
|
|
|
Fixed a problem where named references within the ASL definition
|
|
of both OperationRegions and CreateXXXFields did not work
|
|
properly. The symptom was an AE_AML_OPERAND_TYPE during
|
|
initialization of the region/field. This is similar (but not
|
|
related internally) to the problem that was fixed in the last
|
|
label.
|
|
|
|
Implemented both 32-bit and 64-bit support for the BCD ASL
|
|
functions ToBCD and FromBCD.
|
|
|
|
Updated all legal headers to include "2000" in the copyright
|
|
years.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 12_01_00
|
|
|
|
Fixed a problem where method invocations within the ASL definition
|
|
of both OperationRegions and CreateXXXFields did not work
|
|
properly. The symptom was an AE_AML_OPERAND_TYPE during
|
|
initialization of the region/field:
|
|
|
|
nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
|
|
[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
|
|
(0x3005)
|
|
|
|
Fixed a problem where operators with more than one nested
|
|
subexpression would fail. The symptoms were varied, by mostly
|
|
AE_AML_OPERAND_TYPE errors. This was actually a rather serious
|
|
problem that has gone unnoticed until now.
|
|
|
|
Subtract (Add (1,2), Multiply (3,4))
|
|
|
|
Fixed a problem where AcpiGetHandle didn't quite get fixed in the
|
|
previous build (The prefix part of a relative path was handled
|
|
incorrectly).
|
|
|
|
Fixed a problem where Operation Region initialization failed if
|
|
the operation region name was a "namepath" instead of a simple
|
|
"nameseg". Symptom was an AE_NO_OPERAND error.
|
|
|
|
Fixed a problem where an assignment to a local variable via the
|
|
indirect RefOf mechanism only worked for the first such
|
|
assignment. Subsequent assignments were ignored.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 11_15_00
|
|
|
|
ACPI 2.0 table support with backwards support for ACPI 1.0 and the
|
|
0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables,
|
|
the AML interpreter does NOT have support for the new 2.0 ASL
|
|
grammar terms at this time.
|
|
|
|
All ACPI hardware access is via the GAS structures in the ACPI 2.0
|
|
FADT.
|
|
|
|
All physical memory addresses across all platforms are now 64 bits
|
|
wide. Logical address width remains dependent on the platform
|
|
(i.e., "void *").
|
|
|
|
AcpiOsMapMemory interface changed to a 64-bit physical address.
|
|
|
|
The AML interpreter integer size is now 64 bits, as per the ACPI
|
|
2.0 specification.
|
|
|
|
For backwards compatibility with ACPI 1.0, ACPI tables with a
|
|
revision number less than 2 use 32-bit integers only.
|
|
|
|
Fixed a problem where the evaluation of OpRegion operands did not
|
|
always resolve them to numbers properly.
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 10_20_00
|
|
|
|
Fix for CBN_._STA issue. This fix will allow correct access to
|
|
CBN_ OpRegions when the _STA returns 0x8.
|
|
|
|
Support to convert ACPI constants (Ones, Zeros, One) to actual
|
|
values before a package object is returned
|
|
|
|
Fix for method call as predicate to if/while construct causing
|
|
incorrect if/while behavior
|
|
|
|
Fix for Else block package lengths sometimes calculated wrong (if
|
|
block > 63 bytes)
|
|
|
|
Fix for Processor object length field, was always zero
|
|
|
|
Table load abort if FACP sanity check fails
|
|
|
|
Fix for problem with Scope(name) if name already exists
|
|
|
|
Warning emitted if a named object referenced cannot be found
|
|
(resolved) during method execution.
|
|
|
|
|
|
|
|
|
|
|
|
------------------------------------------
|
|
Summary of changes for this label: 9_29_00
|
|
|
|
New table initialization interfaces: AcpiInitializeSubsystem no
|
|
longer has any parameters AcpiFindRootPointer - Find the RSDP (if
|
|
necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
|
|
>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
|
|
AcpiLoadTables
|
|
|
|
Note: These interface changes require changes to all existing OSDs
|
|
|
|
The PCI_Config default address space handler is always installed
|
|
at the root namespace object.
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 09_15_00
|
|
|
|
The new initialization architecture is implemented. New
|
|
interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
|
|
AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
|
|
|
|
(Namespace is automatically loaded when a table is loaded)
|
|
|
|
The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
|
|
52 bytes to 32 bytes. There is usually one of these for every
|
|
namespace object, so the memory savings is significant.
|
|
|
|
Implemented just-in-time evaluation of the CreateField operators.
|
|
|
|
Bug fixes for IA-64 support have been integrated.
|
|
|
|
Additional code review comments have been implemented
|
|
|
|
The so-called "third pass parse" has been replaced by a final walk
|
|
through the namespace to initialize all operation regions (address
|
|
spaces) and fields that have not yet been initialized during the
|
|
execution of the various _INI and REG methods.
|
|
|
|
New file - namespace/nsinit.c
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 09_01_00
|
|
|
|
Namespace manager data structures have been reworked to change the
|
|
primary object from a table to a single object. This has
|
|
resulted in dynamic memory savings of 3X within the namespace and
|
|
2X overall in the ACPI CA subsystem.
|
|
|
|
Fixed problem where the call to AcpiEvFindPciRootBuses was
|
|
inadvertently left commented out.
|
|
|
|
Reduced the warning count when generating the source with the GCC
|
|
compiler.
|
|
|
|
Revision numbers added to each module header showing the
|
|
SourceSafe version of the file. Please refer to this version
|
|
number when giving us feedback or comments on individual modules.
|
|
|
|
The main object types within the subsystem have been renamed to
|
|
clarify their purpose:
|
|
|
|
ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
|
|
ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
|
|
ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
|
|
|
|
NOTE: no changes to the initialization sequence are included in
|
|
this label.
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 08_23_00
|
|
|
|
Fixed problem where TerminateControlMethod was being called
|
|
multiple times per method
|
|
|
|
Fixed debugger problem where single stepping caused a semaphore to
|
|
be oversignalled
|
|
|
|
Improved performance through additional parse object caching -
|
|
added ACPI_EXTENDED_OP type
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 08_10_00
|
|
|
|
Parser/Interpreter integration: Eliminated the creation of
|
|
complete parse trees for ACPI tables and control methods.
|
|
Instead, parse subtrees are created and then deleted as soon as
|
|
they are processed (Either entered into the namespace or executed
|
|
by the interpreter). This reduces the use of dynamic kernel
|
|
memory significantly. (about 10X)
|
|
|
|
Exception codes broken into classes and renumbered. Be sure to
|
|
recompile all code that includes acexcep.h. Hopefully we won't
|
|
have to renumber the codes again now that they are split into
|
|
classes (environment, programmer, AML code, ACPI table, and
|
|
internal).
|
|
|
|
Fixed some additional alignment issues in the Resource Manager
|
|
subcomponent
|
|
|
|
Implemented semaphore tracking in the AcpiExec utility, and fixed
|
|
several places where mutexes/semaphores were being unlocked
|
|
without a corresponding lock operation. There are no known
|
|
semaphore or mutex "leaks" at this time.
|
|
|
|
Fixed the case where an ASL Return operator is used to return an
|
|
unnamed package.
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 07_28_00
|
|
|
|
Fixed a problem with the way addresses were calculated in
|
|
AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem
|
|
manifested itself when a Field was created with WordAccess or
|
|
DwordAccess, but the field unit defined within the Field was less
|
|
|
|
than a Word or Dword.
|
|
|
|
Fixed a problem in AmlDumpOperands() module's loop to pull
|
|
operands off of the operand stack to display information. The
|
|
problem manifested itself as a TLB error on 64-bit systems when
|
|
accessing an operand stack with two or more operands.
|
|
|
|
Fixed a problem with the PCI configuration space handlers where
|
|
context was getting confused between accesses. This required a
|
|
change to the generic address space handler and address space
|
|
setup definitions. Handlers now get both a global handler context
|
|
(this is the one passed in by the user when executing
|
|
AcpiInstallAddressSpaceHandler() and a specific region context
|
|
that is unique to each region (For example, the _ADR, _SEG and
|
|
_BBN values associated with a specific region). The generic
|
|
function definitions have changed to the following:
|
|
|
|
typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
|
|
UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
|
|
*HandlerContext, // This used to be void *Context void
|
|
*RegionContext); // This is an additional parameter
|
|
|
|
typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
|
|
RegionHandle, UINT32 Function, void *HandlerContext, void
|
|
**RegionContext); // This used to be **ReturnContext
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 07_21_00
|
|
|
|
Major file consolidation and rename. All files within the
|
|
interpreter have been renamed as well as most header files. This
|
|
was done to prevent collisions with existing files in the host
|
|
OSs -- filenames such as "config.h" and "global.h" seem to be
|
|
quite common. The VC project files have been updated. All
|
|
makefiles will require modification.
|
|
|
|
The parser/interpreter integration continues in Phase 5 with the
|
|
implementation of a complete 2-pass parse (the AML is parsed
|
|
twice) for each table; This avoids the construction of a huge
|
|
parse tree and therefore reduces the amount of dynamic memory
|
|
required by the subsystem. Greater use of the parse object cache
|
|
means that performance is unaffected.
|
|
|
|
Many comments from the two code reviews have been rolled in.
|
|
|
|
The 64-bit alignment support is complete.
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 06_30_00
|
|
|
|
With a nod and a tip of the hat to the technology of yesteryear,
|
|
we've added support in the source code for 80 column output
|
|
devices. The code is now mostly constrained to 80 columns or
|
|
less to support environments and editors that 1) cannot display
|
|
or print more than 80 characters on a single line, and 2) cannot
|
|
disable line wrapping.
|
|
|
|
A major restructuring of the namespace data structure has been
|
|
completed. The result is 1) cleaner and more
|
|
understandable/maintainable code, and 2) a significant reduction
|
|
in the dynamic memory requirement for each named ACPI object
|
|
(almost half).
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 06_23_00
|
|
|
|
Linux support has been added. In order to obtain approval to get
|
|
the ACPI CA subsystem into the Linux kernel, we've had to make
|
|
quite a few changes to the base subsystem that will affect all
|
|
users (all the changes are generic and OS- independent). The
|
|
effects of these global changes have been somewhat far reaching.
|
|
Files have been merged and/or renamed and interfaces have been
|
|
renamed. The major changes are described below.
|
|
|
|
Osd* interfaces renamed to AcpiOs* to eliminate namespace
|
|
pollution/confusion within our target kernels. All OSD
|
|
interfaces must be modified to match the new naming convention.
|
|
|
|
Files merged across the subsystem. A number of the smaller source
|
|
and header files have been merged to reduce the file count and
|
|
increase the density of the existing files. There are too many
|
|
to list here. In general, makefiles that call out individual
|
|
files will require rebuilding.
|
|
|
|
Interpreter files renamed. All interpreter files now have the
|
|
prefix am* instead of ie* and is*.
|
|
|
|
Header files renamed: The acapi.h file is now acpixf.h. The
|
|
acpiosd.h file is now acpiosxf.h. We are removing references to
|
|
the acronym "API" since it is somewhat windowsy. The new name is
|
|
"external interface" or xface or xf in the filenames.j
|
|
|
|
|
|
All manifest constants have been forced to upper case (some were
|
|
mixed case.) Also, the string "ACPI_" has been prepended to many
|
|
(not all) of the constants, typedefs, and structs.
|
|
|
|
The globals "DebugLevel" and "DebugLayer" have been renamed
|
|
"AcpiDbgLevel" and "AcpiDbgLayer" respectively.
|
|
|
|
All other globals within the subsystem are now prefixed with
|
|
"AcpiGbl_" Internal procedures within the subsystem are now
|
|
prefixed with "Acpi" (with only a few exceptions). The original
|
|
two-letter abbreviation for the subcomponent remains after "Acpi"
|
|
- for example, CmCallocate became AcpiCmCallocate.
|
|
|
|
Added a source code translation/conversion utility. Used to
|
|
generate the Linux source code, it can be modified to generate
|
|
other types of source as well. Can also be used to cleanup
|
|
existing source by removing extraneous spaces and blank lines.
|
|
Found in tools/acpisrc/*
|
|
|
|
OsdUnMapMemory was renamed to OsdUnmapMemory and then
|
|
AcpiOsUnmapMemory. (UnMap became Unmap).
|
|
|
|
A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
|
|
When set to one, this indicates that the caller wants to use the
|
|
|
|
semaphore as a mutex, not a counting semaphore. ACPI CA uses
|
|
both types. However, implementers of this call may want to use
|
|
different OS primitives depending on the type of semaphore
|
|
requested. For example, some operating systems provide separate
|
|
|
|
"mutex" and "semaphore" interfaces - where the mutex interface is
|
|
much faster because it doesn't have all the overhead of a full
|
|
semaphore implementation.
|
|
|
|
Fixed a deadlock problem where a method that accesses the PCI
|
|
address space can block forever if it is the first access to the
|
|
space.
|
|
|
|
-------------------------------------------
|
|
Summary of changes for this label: 06_02_00
|
|
|
|
Support for environments that cannot handle unaligned data
|
|
accesses (e.g. firmware and OS environments devoid of alignment
|
|
handler technology namely SAL/EFI and the IA-64 Linux kernel) has
|
|
been added (via configurable macros) in these three areas: -
|
|
Transfer of data from the raw AML byte stream is done via byte
|
|
moves instead of word/dword/qword moves. - External objects are
|
|
aligned within the user buffer, including package elements (sub-
|
|
objects). - Conversion of name strings to UINT32 Acpi Names is now
|
|
done byte-wise.
|
|
|
|
The Store operator was modified to mimic Microsoft's
|
|
implementation when storing to a Buffer Field.
|
|
|
|
Added a check of the BM_STS bit before entering C3.
|
|
|
|
The methods subdirectory has been obsoleted and removed. A new
|
|
file, cmeval.c subsumes the functionality.
|
|
|
|
A 16-bit (DOS) version of AcpiExec has been developed. The
|
|
makefile is under the acpiexec directory.
|