Changes
Changes
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: Add full support for the AEST table (data compiler)
Includes support in the table compiler and the disassembler.
----------------------------------------
04 June 2021. Summary of changes for version 20210604:
Cleaned up (delete) the context mutex during local address handler object
deletion.
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
<[email protected]>.
Headers: Added more structs to the CEDT table: CXL fixed memory window
structure.
----------------------------------------
31 March 2021. Summary of changes for version 20210331:
----------------------------------------
05 January 2021. Summary of changes for version 20210105:
Updated all copyrights to 2021. This affects all ACPICA source code
modules.
iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
MTMR. Al Stone.
----------------------------------------
17 December 2020. Summary of changes for version 20201217:
Added improvement to method call analysis by saving the return type and
relaxing certain cases of type checking.
----------------------------------------
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.
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.
Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
NFIT table.
----------------------------------------
Added support for 64 bit risc-v compilation. Useful for acpica tools and
incorporating ACPICA into the Firmware Test Suite. Colin Ian King
<[email protected]>.
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.
iASL: fixed a crash that occurred when predefined objects return packages
with lengths that exceed the initializer list.
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.
----------------------------------------
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.
----------------------------------------
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
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.
----------------------------------------
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: 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.
----------------------------------------
26 March 2020. Summary of changes for version 20200326:
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.
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).
----------------------------------------
14 February 2020. Summary of changes for version 20200214:
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.
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.
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 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: 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)
iASL: Removed unused parser file and updated msvc2017 project files.
Removed the obsolete AslCompiler.y from the repository.
----------------------------------------
10 January 2020. Summary of changes for version 20200110:
Updated all copyrights to 2020. This affects all ACPICA source code
modules.
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:
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.
iASL: For duplicate named object creation, now emit an error instead
of a warning - since this will cause a runtime error.
----------------------------------------
18 October 2019. Summary of changes for version 20191018:
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))
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.
----------------------------------------
16 August 2019. Summary of changes for version 20190816:
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.
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
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.
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 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:
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).
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:
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)
}
}
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:
Example:
Name (BUF1, Buffer() {1,2})
CreateField (BUF1, 7, 9, CF03) // 3: ERR
----------------------------------------
05 April 2019. Summary of changes for version 20190405:
This change ensures that status is cleared for any event that is being
enabled so that any stale events are cleared out.
----------------------------------------
29 March 2019. Summary of changes for version 20190329:
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
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.
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:
----------------------------------------
15 February 2019. Summary of changes for version 20190215:
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 online capable flag. If this bit is set, system hardware
supports enabling this processor during OS runtime.
GTDT: Add support for new GTDT Revision 3. This revision adds information
for the EL2 timer.
iASL: Add support for the new revision of the GTDT (Rev 3).
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.
----------------------------------------
08 January 2019. Summary of changes for version 20190108:
Updated all copyrights to 2019. This affects all source code modules.
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:
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
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.
----------------------------------------
31 October 2018. Summary of changes for version 20181031:
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.
----------------------------------------
03 October 2018. Summary of changes for version 20181003:
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:
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.
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:
----------------------------------------
10 August 2018. Summary of changes for version 20180810:
----------------------------------------
29 June 2018. Summary of changes for version 20180629:
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:
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.
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.
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:
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:
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.
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, [email protected] and Evan Lloyd,
[email protected]
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:
AcpiGetObjectInfo - removed support for the _STA method. This was causing
problems on some platforms.
ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
error reporting.
----------------------------------------
09 February 2018. Summary of changes for version 20180209:
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.
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:
Updated all copyrights to 2018. This affects all source code modules.
Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
Mittal.
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:
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.
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:
Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
runtime error messages have the identical prefix.
----------------------------------------
29 September 2017. Summary of changes for version 20170929:
Fixed an EFI build problem by updating the makefiles to for a new file
that was added, utstrsuppt.c
Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
includes support in the table disassembler, compiler, and template
generator.
Method (MTH1)
{
Name (INT1, 1)
MTH1 ()
}
External(\_SB.PCI0.GFX0, DeviceObj)
External(\_SB.PCI0.GFX0.ALSI)
----------------------------------------
31 August 2017. Summary of changes for version 20170831:
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.
----------------------------------------
28 July 2017. Summary of changes for version 20170728:
Fixed a regression seen with small resource descriptors that could cause
an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
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.
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.
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: Implemented debugger and table compiler support for the SDEI ACPI
table (Software Delegated Exception Interface). James Morse
<[email protected]>
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:
Tables: Fixed several mutex issues that could cause errors during table
acquisition. Lv Zheng.
Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
I/O Remapping specification. Robin Murphy <[email protected]>
iASL: IORT ACPI table: Implemented changes required to decode the new
Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
compiler. Ganapatrao Kulkarni <[email protected]>
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:
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.
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)
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.
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
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.
----------------------------------------
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.
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)
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:
----------------------------------------
24 February 2017. Summary of changes for version 20170224:
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
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.
----------------------------------------
19 January 2017. Summary of changes for version 20170119:
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:
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:
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.
source/tools/efihello/efihello.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.
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
----------------------------------------
17 November 2016. Summary of changes for version 20161117:
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
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.
----------------------------------------
30 September 2016. Summary of changes for version 20160930:
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).
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
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.
----------------------------------------
31 August 2016. Summary of changes for version 20160831:
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.
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
----------------------------------------
29 July 2016. Summary of changes for version 20160729:
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 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.
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
iASL: Add full support for the RASF ACPI table (RAS Features Table).
Includes disassembler, data table compiler, and header support.
----------------------------------------
27 May 2016. Summary of changes for version 20160527:
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:
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
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.
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.
----------------------------------------
18 March 2016. Summary of changes for version 20160318:
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.
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
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.
----------------------------------------
12 February 2016. Summary of changes for version 20160212:
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.
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: 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:
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
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:
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.
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
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.
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:
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.
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
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.
----------------------------------------
30 September 2015. Summary of changes for version 20150930:
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.
Debugger: Fixed the double-mutex user I/O handshake to work when local
deadlock detection is enabled.
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
-- 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.
-- 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.
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:
Debugger: Cleanup output to dump ACPI names and namepaths without any
trailing underscores. Lv Zheng. ACPICA BZ 1135.
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.
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.
----------------------------------------
17 July 2015. Summary of changes for version 20150717:
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
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: Added support for the TCPA server table to the table compiler and
template generator. (The client table was already previously supported)
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.
----------------------------------------
19 June 2015. Summary of changes for version 20150619:
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:
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.
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
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.
----------------------------------------
15 May 2015. Summary of changes for version 20150515:
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
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.
AcpiHelp: Added support for all new ACPI 6.0 predefined names.
----------------------------------------
10 April 2015. Summary of changes for version 20150410:
----------------------------------------
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.
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
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.
iASL: Fixed a path issue with the __FILE__ operator by making the
directory prefix optional within the internal SplitInputFilename
function.
Tests: Updated the makefile for proper generation of the AAPITS suite.
----------------------------------------
04 February 2015. Summary of changes for version 20150204:
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.
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:
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.
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.
// 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)
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:
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.
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
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
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.
----------------------------------------
28 August 2014. Summary of changes for version 20140828:
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 <[email protected]>.
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
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
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: 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.
----------------------------------------
The ACPI 5.1 specification has been released and is available at:
http://uefi.org/specs/access
Miscellaneous.
New notification type for System Resource Affinity change events.
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
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:
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.
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 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:
iASL: Fixed a problem where the compiler could fault if incorrectly given
an acpidump output file as input. ACPICA BZ 1088. David Box.
----------------------------------------
24 April 2014. Summary of changes for version 20140424:
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.
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
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.
----------------------------------------
25 March 2014. Summary of changes for version 20140325:
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.
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.
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
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:
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.
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
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.
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:
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.
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
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 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 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.
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.
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 <[email protected]>
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
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.
----------------------------------------
15 November 2013. Summary of changes for version 20131115:
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
<[email protected]>. 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 ([email protected]).
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
----------------------------------------
27 September 2013. Summary of changes for version 20130927:
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.
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
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
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:
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
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.
----------------------------------------
25 July 2013. Summary of changes for version 20130725:
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.
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
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
----------------------------------------
26 June 2013. Summary of changes for version 20130626:
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
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".
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: 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:
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.
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.
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
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.)
----------------------------------------
18 April 2013. Summary of changes for version 20130418:
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).
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
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:
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
([email protected]).
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 ([email protected]).
_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.
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
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.
----------------------------------------
14 February 2013. Summary of changes for version 20130214:
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
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/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).
AcpiHelp: Added descriptive text for each ACPICA exception code displayed
via the -e option.
----------------------------------------
17 January 2013. Summary of changes for version 20130117:
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
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.
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:
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.
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.
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
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.
----------------------------------------
14 November 2012. Summary of changes for version 20121114:
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).
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
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.
AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
name header so that AcpiXtract recognizes the output file/table.
----------------------------------------
18 October 2012. Summary of changes for version 20121018:
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.
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
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.
----------------------------------------
13 September 2012. Summary of changes for version 20120913:
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).
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
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.
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:
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.
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.
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.
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
Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
----------------------------------------
11 July 2012. Summary of changes for version 20120711:
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.
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.
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
iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
of
0. Jung-uk Kim.
----------------------------------------
20 June 2012. Summary of changes for version 20120620:
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
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.
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:
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
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.
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: 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:
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
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.
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:
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.
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
----------------------------------------
15 February 2012. Summary of changes for version 20120215:
There have been some major changes to the sleep/wake support code, as
described below (a - e).
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.
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.
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
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:
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
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:
This release contains full support for the ACPI 5.0 specification, as
summarized below.
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:
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:
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
Several new interfaces have been defined for use by ACPI-related device
drivers and other host OS services:
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.
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.)
Fixed an issue with the FFixedHW space ID where the ID was not always
recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
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.
iASL: Implemented the __PATH__ operator, which returns the full pathname
of
the current source file.
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:
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.
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.
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: Emit statistics for all output files (instead of just the ASL input
and
AML output). Includes listings, hex files, etc.
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.
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.
----------------------------------------
23 June 2011. Summary of changes for version 20110623:
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.
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:
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.
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:
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.
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.
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.
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".
----------------------------------------
16 March 2011. Summary of changes for version 20110316:
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.
Implemented full support for the "SLIC" ACPI table. Includes support in
the
header files, disassembler, table compiler, and template generator. Bob
Moore,
Lin Ming.
----------------------------------------
11 February 2011. Summary of changes for version 20110211:
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.
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.
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.
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:
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.
[email protected]
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.
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.
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:
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.
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
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.
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:
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".
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
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.
AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
support
for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
----------------------------------------
15 September 2010. Summary of changes for version 20100915:
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 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
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:
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
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
----------------------------------------
02 July 2010. Summary of changes for version 20100702:
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:
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.
Undefined ACPI tables: We are looking for the definitions for the
following
ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
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.
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
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.
----------------------------------------
28 April 2010. Summary of changes for version 20100428:
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.
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
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:
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
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
iASL: Added Windows 7 support for the -g option (get local ACPI tables)
by
reducing the requested registry access rights. ACPICA BZ 842.
----------------------------------------
04 March 2010. Summary of changes for version 20100304:
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
----------------------------------------
21 January 2010. Summary of changes for version 20100121:
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.
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
----------------------------------------
14 December 2009. Summary of changes for version 20091214:
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.
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.
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
----------------------------------------
12 November 2009. Summary of changes for version 20091112:
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.
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
iASL: Fixed a problem where the compiler could fault after the maximum
number
of errors was reached (200).
----------------------------------------
13 October 2009. Summary of changes for version 20091013:
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
AML Debugger: Added a max count argument for the Batch command (which
executes multiple predefined methods within the namespace.)
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:
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.
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
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.
----------------------------------------
30 July 2009. Summary of changes for version 20090730:
The ACPI 4.0 implementation for ACPICA is complete with this release.
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.
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.
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
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:
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.
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.
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
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:
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 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.
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:
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
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.
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:
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.
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
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:
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.
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.
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.
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
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:
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.
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
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:
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.)
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.
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
iASL: Removed the "named object in while loop" error. The compiler cannot
determine how many times a loop will execute. ACPICA BZ 730.
Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
MCFG).
----------------------------------------
31 October 2008. Summary of changes for version 20081031:
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.
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
----------------------------------------
26 September 2008. Summary of changes for version 20080926:
Fixed a fault in the AML parser if a memory allocation fails during the
Op
completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
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:
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
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.
----------------------------------------
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.
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
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: 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:
Fixed a problem where a git-clone from http would not transfer the entire
source tree.
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 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
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
iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
resource descriptor names.
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:
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
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
Disassembler: Added support for DMAR and SRAT table definition changes.
----------------------------------------
14 May 2008. Summary of changes for version 20080514:
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.
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.
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.
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.
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
----------------------------------------
21 March 2008. Summary of changes for version 20080321:
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)
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)
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.
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
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:
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
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:
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
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
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 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
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:
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
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.
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:
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.
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
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
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:
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)
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)
Added a table checksum verification for the Load operator, in the case
where
the load is from a buffer. (BZ 578).
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:
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:
----------------------------------------
08 May 2007. Summary of changes for version 20070508:
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.
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:
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.
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:
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.
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:
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)
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
----------------------------------------
09 November 2006. Summary of changes for version 20061109:
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
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
Fixed a problem where the presence of the _OSI predefined control method
within complex expressions could cause an internal compiler error.
----------------------------------------
11 October 2006. Summary of changes for version 20061011:
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.
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
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:
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.
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
Fixed a problem where the compiler could hang after syntax errors
detected
in an ElseIf construct. (BZ 453)
----------------------------------------
12 September 2006. Summary of changes for version 20060912:
Integrated a fix for a problem with PCI Express HID detection in the PCI
Config Space setup procedure. (BZ 7145)
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
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.
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:
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
----------------------------------------
23 August 2006. Summary of changes for version 20060823:
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
----------------------------------------
21 July 2006. Summary of changes for version 20060721:
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 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)
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
----------------------------------------
07 July 2006. Summary of changes for version 20060707:
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 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.)
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
----------------------------------------
23 June 2006. Summary of changes for version 20060623:
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.)
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)
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
----------------------------------------
08 June 2006. Summary of changes for version 20060608:
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
Fixed a fault when using -g option (get tables from registry) on Windows
machines.
----------------------------------------
26 May 2006. Summary of changes for version 20060526:
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.
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
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)
----------------------------------------
12 May 2006. Summary of changes for version 20060512:
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
----------------------------------------
21 April 2006. Summary of changes for version 20060421:
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.
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:
----------------------------------------
31 March 2006. Summary of changes for version 20060331:
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.
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
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.
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:
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.
Added two new strings for the predefined _OSI method: "Windows 2001.1
SP1"
and "Windows 2006".
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
----------------------------------------
10 March 2006. Summary of changes for version 20060310:
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:
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:
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.
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.)
----------------------------------------
10 February 2006. Summary of changes for version 20060210:
Fixed a problem where the CreateField operator could hang if the BitIndex
or
NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
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:
----------------------------------------
27 January 2006. Summary of changes for version 20060127:
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.
Fixed a problem where Alias ASL operators are sometimes not correctly
resolved, in both the interpreter and the iASL compiler.
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:
Added 2006 copyright to all module headers and signons. This affects
virtually every file in the ACPICA core subsystem, iASL compiler, and the
utilities.
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:
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)
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.
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:
----------------------------------------
02 December 2005. Summary of changes for version 20051202:
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:
----------------------------------------
17 November 2005. Summary of changes for version 20051117:
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.)
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.
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:
Converted the ACPI internal object disassemble and display code within
the
AML debugger to fully table-driven operation, reducing code size and
increasing maintainability.
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.
----------------------------------------
21 October 2005. Summary of changes for version 20051021:
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.
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:
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:
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".
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:
----------------------------------------
16 September 2005. Summary of changes for version 20050916:
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.
Cleaned up and restructured the debug dump output for all resource
descriptors. Improved readability of the output and reduced code size.
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:
----------------------------------------
02 September 2005. Summary of changes for version 20050902:
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.
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:
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).
----------------------------------------
15 August 2005. Summary of changes for version 20050815:
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:
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.
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:
----------------------------------------
08 July 2005. Summary of changes for version 20050708:
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.
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.
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:
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.
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:
----------------------------------------
17 June 2005. Summary of changes for version 20050617:
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
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.
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 problem where compiling the reserved _OSI method would randomly
(but
rarely) produce compile errors.
----------------------------------------
26 May 2005. Summary of changes for version 20050526:
1) ACPI CA Core Subsystem:
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:
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.
----------------------------------------
13 May 2005. Summary of changes for version 20050513:
Implemented support for PCI Express root bridges -- added support for
device
PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
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.
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:
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.
----------------------------------------
08 April 2005. Summary of changes for version 20050408:
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:
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.
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:
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:
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.)
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.
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 and enhanced the "list namespace" option (-ln). This option was
broken
a number of releases ago.
----------------------------------------
28 February 2005. Summary of changes for version 20050228:
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.
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 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:
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 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.
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:
----------------------------------------
25 January 2005. Summary of changes for version 20050125:
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.
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: 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.
----------------------------------------
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.
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.
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.
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 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.
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:
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:
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:
----------------------------------------
05 November 2004. Summary of changes for version 20041105:
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).
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.
----------------------------------------
15 October 2004. Summary of changes for version 20041015:
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 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:
Implemented support for the ACPI 3.0 Timer operator. This ASL function
implements a 64-bit timer with 100 nanosecond granularity.
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.
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:
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:
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.
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:
- 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:
----------------------------------------
16 August 2004. Summary of changes for version 20040816:
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:
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.
----------------------------------------
15 June 2004. Summary of changes for version 20040615:
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.
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.
----------------------------------------
27 May 2004. Summary of changes for version 20040527:
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.
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.
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:
----------------------------------------
14 May 2004. Summary of changes for version 20040514:
Fixed a problem where hardware GPE enable bits sometimes not set properly
during and after GPE method execution. Result of 04/27 changes.
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.
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:
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.
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.
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.)
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:
----------------------------------------
02 April 2004. Summary of changes for version 20040402:
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:
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:
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.
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.
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:
----------------------------------------
11 March 2004. Summary of changes for version 20040311:
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.
Global Lock Support: Now allows multiple acquires and releases with any
internal thread. Removed concept of "owning thread" for this special
mutex.
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.
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:
----------------------------------------
11 February 2004. Summary of changes for version 20040211:
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.
----------------------------------------
16 January 2004. Summary of changes for version 20040116:
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:
When sleeping, clear the wake status only if SleepState is not S5.
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.
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:
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 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
2) iASL Compiler/Disassembler:
----------------------------------------
02 October 2003. Summary of changes for version 20031002:
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.)
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.
2) iASL Compiler:
----------------------------------------
18 September 2003. Summary of changes for version 20030918:
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:
2) Linux:
----------------------------------------
14 July 2003. Summary of changes for version 20030619:
Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
Klausner,
Nate Lawson)
2) Linux:
----------------------------------------
19 June 2003. Summary of changes for version 20030619:
----------------------------------------
22 May 2003. Summary of changes for version 20030522:
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.
2) Linux:
3) iASL Compiler:
4) Documentation:
----------------------------------------
09 May 2003. Summary of changes for version 20030509.
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.
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:
3 iASL Compiler/Disassembler:
2) Linux:
3) Documentation:
----------------------------------------
28 March 2003. Summary of changes for version 20030328.
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.
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.
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).
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
3) iASL Compiler:
Fixed a problem where ASL include files could not be found and
opened.
----------------------------------------
22 January 2003. Summary of changes for version 20030122.
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.
(2.5) Break out ACPI Perf code into its own module, under cpufreq
(Dominik Brodowski)
3) iASL Compiler:
----------------------------------------
09 January 2003. Summary of changes for version 20030109.
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
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.
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.
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
----------------------------------------
22 November 2002. Summary of changes for version 20021122.
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.
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
----------------------------------------
15 November 2002. Summary of changes for version 20021115.
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.
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
3) iASL Compiler/Disassembler
----------------------------------------
11 November 2002. Summary of changes for version 20021111.
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
3) iASL Compiler/Disassembler
----------------------------------------
01 November 2002. Summary of changes for version 20021101.
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.
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.
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
3) iASL Compiler/Disassembler
----------------------------------------
22 October 2002. Summary of changes for version 20021022.
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.
2) Linux
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.
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.
----------------------------------------
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
Fix thermal management and make trip points. R/W (Pavel Machek)
----------------------------------------
18 September 2002. Summary of changes for this release.
Name(DEB,0x00)
Scope(DEB)
{
2) Linux
Ensure that the SCI has the proper polarity and trigger, even on
systems that do not have an interrupt override entry in the MADT.
----------------------------------------
29 August 2002. Summary of changes for this release.
2) Linux
Ensure that the ACPI interrupt has the proper trigger and
polarity.
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)
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.)
----------------------------------------
15 August 2002. Summary of changes for this release.
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
3) iASL Compiler/Disassembler
----------------------------------------
25 July 2002. Summary of changes for this release.
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
----------------------------------------
02 July 2002. Summary of changes for this release.
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 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 support for ECDT. This allows the use of the Embedded
----------------------------------------
11 June 2002. Summary of changes for this release.
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).
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 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:
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)
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.
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
----------------------------------------
03 May 2002. Summary of changes for this release.
Added support a new OSL interface that allows the host operating
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.
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 error checking for new reserved terms for ACPI version
2.0A.
4) Documentation
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.
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.
Fixed a problem with the ExtendedIrq resource where only one byte
of the 4-byte Irq field was extracted.
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
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
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.
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:
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.
Can now shut down the system using "magic sysrq" key.
----------------------------------------
Summary of changes for this release: 03_08_02
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.
2) Linux:
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:
----------------------------------------
Summary of changes for this release: 02_25_02
Fixed a problem where the GPE bit masks were not initialized
properly, causing erratic GPE behavior.
2) Linux
Fixed limit interface & usage to fix bugs with passive cooling
hysterisis.
Restructured PRT support.
----------------------------------------
Summary of changes for this label: 02_14_02
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.
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.
Only create /proc "view by type" when devices of that class exist.
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
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.
Most TBDs in comments within the source code have been resolved
and eliminated.
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.
2) Linux
Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
Fixed a problem where incorrect AML was generated for the case
where an ASL namepath consists of a single parent prefix (
----------------------------------------
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.
Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
while loop)
Increased the maximum ASL Field size from 64K bits to 4G bits.
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.
----------------------------------------
Summary of changes for this label: 12_05_01
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 the use of the ASL Scope operator within a
control method would result in an invalid opcode exception.
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.
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:
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.
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
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.)
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.
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:
NOTE: This release does not include fixes for the reported events,
power-down, and thermal passive cooling issues (coming soon).
3) ASL Compiler:
----------------------------------------
Summary of changes for this label: 11_09_01
2) Linux:
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
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.
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.
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:
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
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.
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.
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.
This Label:
Linux:
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).
----------------------------------------
Summary of changes for this label: 09_20_01
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.
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:
----------------------------------------
Summary of changes for this label: 08_31_01
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.
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.
Linux:
----------------------------------------
Summary of changes for this label: 08_16_01
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 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:
ASL Compiler:
Fixed a problem where the optional length parameter for the ACPI
2.0 ToString operator.
----------------------------------------
Summary of changes for this label: 07_17_01
Linux:
OSL Interfaces:
AcpiOsReadPciConfiguration
AcpiOsWritePciConfiguration
AcpiOsReadMemory
AcpiOsWriteMemory
AcpiOsReadPort
AcpiOsWritePort
The ACPI 2.0 ElseIf operator is implemented and will also work
with 1.0 interpreters, for the same reason.
------------------------------------------
Summary of changes for this label: 06_15_01
------------------------------------------
Summary of changes for this label: 05_18_01
Linux:
The "-d" debug output option now sends all output to the .DBG file
instead of the console.
------------------------------------------
Summary of changes for this label: 05_02_01
Linux:
Improved error messages for the case where an ASL Field is outside
the range of the parent operation region.
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
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.,
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.
Documentation:
------------------------------------------
Summary of changes for this label: 04_13_01
Linux:
------------------------------------------
Summary of changes for this label: 03_13_01
Notify handler fix - notifies are deferred until the parent method
completes execution. This fixes the "mutex already acquired"
issue seen occasionally.
Linux:
OSPM:
Source Code:
------------------------------------------
Summary of changes for this label: 03_02_01
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.
Source Code:
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
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
------------------------------------------
Summary of changes for this label: 01_15_01
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:
------------------------------------------
Summary of changes for this label: 12_08_00
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
------------------------------------------
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 *").
The AML interpreter integer size is now 64 bits, as per the ACPI
2.0 specification.
------------------------------------------
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.
Fix for Else block package lengths sometimes calculated wrong (if
block > 63 bytes)
------------------------------------------
Summary of changes for this label: 9_29_00
-------------------------------------------
Summary of changes for this label: 09_15_00
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.
-------------------------------------------
Summary of changes for this label: 09_01_00
Reduced the warning count when generating the source with the GCC
compiler.
The main object types within the subsystem have been renamed to
clarify their purpose:
-------------------------------------------
Summary of changes for this label: 08_23_00
-------------------------------------------
Summary of changes for this label: 08_10_00
-------------------------------------------
Summary of changes for this label: 07_28_00
-------------------------------------------
Summary of changes for this label: 07_21_00
Many comments from the two code reviews have been rolled in.
-------------------------------------------
Summary of changes for this label: 06_30_00
-------------------------------------------
Summary of changes for this label: 06_23_00
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.
-------------------------------------------
Summary of changes for this label: 06_02_00