Subject: CVS commit: pkgsrc/sysutils/acpica-utils
From: Thomas Klausner
Date: 2015-04-16 16:21:01
Message id: 20150416142101.E305398@cvs.netbsd.org

Log Message:
Update to 20150410, provided by Kamil Rytarowski via wip.

----------------------------------------
10 April 2015. Summary of changes for version 20150410:

Reverted a change introduced in version 20150408 that caused
a regression in the disassembler where incorrect operator
symbols could be emitted.

----------------------------------------
08 April 2015. Summary of changes for version 20150408:

1) ACPICA kernel-resident subsystem:

Permanently set the return value for the _REV predefined name. It now
returns 2 (was 5). This matches other ACPI implementations. _REV will be
deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
for ACPI 2.0 and later. It should never be used to differentiate or
identify operating systems.

Added the "Windows 2015" string to the _OSI support. ACPICA will now
return TRUE to a query with this string.

Fixed several issues with the local version of the printf function.

Added the C99 compiler option (-std=c99) to the Unix makefiles.

  Current Release:
    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
  Previous Release:
    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Implemented an enhancement to the constant folding feature to
transform the parse tree to a simple Store operation whenever possible:
    Add (2, 3, X) ==> is converted to: Store (5, X)
    X = 2 + 3     ==> is converted to: Store (5, X)

Updated support for the SLIC table (Software Licensing Description Table)
in both the Data Table compiler and the disassembler. The SLIC table
support now conforms to "Microsoft Software Licensing Tables (SLIC and
MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
following the ACPI header is now defined to be "Proprietary Data", and as
such, can only be entered or displayed as a hex data block.

Implemented full support for the MSDM table as described in the document
above. Note: The format of MSDM is similar to SLIC. Any MSDM data
following the ACPI header is defined to be "Proprietary Data", and can
only be entered or displayed as a hex data block.

Implemented the -Pn option for the iASL Table Compiler (was only
implemented for the ASL compiler). This option disables the iASL
preprocessor.

Disassembler: For disassembly of Data Tables, added a comment field
around the Ascii equivalent data that is emitted as part of the "Raw
Table Data" block. This prevents the iASL Preprocessor from possible
confusion if/when the table is compiled.

Disassembler: Added an option (-df) to force the disassembler to assume
that the table being disassembled contains valid AML. This feature is
useful for disassembling AML files that contain ACPI signatures other
than DSDT or SSDT (such as OEMx or other signatures).

Changes for the EFI version of the tools:
1) Fixed a build error/issue
2) Fixed a cast warning

iASL: Fixed a path issue with the __FILE__ operator by making the
directory prefix optional within the internal SplitInputFilename
function.

Debugger: Removed some unused global variables.

Tests: Updated the makefile for proper generation of the AAPITS suite.

----------------------------------------
04 February 2015. Summary of changes for version 20150204:

ACPICA kernel-resident subsystem:

Updated all ACPICA copyrights and signons to 2014. Added the 2014
copyright to all module headers and signons, including the standard Linux
header. This affects virtually every file in the ACPICA core subsystem,
iASL compiler, all ACPICA utilities, and the test suites.

Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
A raw gpe handling mechanism was created to allow better handling of GPE
storms that aren't easily managed by the normal handler. The raw handler
allows disabling/renabling of the the GPE so that interrupt storms can be
avoided in cases where events cannot be timely serviced. In this
scenario, handlers should use the AcpiSetGpe() API to disable/enable the
GPE. This API will leave the reference counts undisturbed, thereby
preventing unintentional clearing of the GPE when the intent in only to
temporarily disable it. Raw handlers allow enabling and disabling of a
GPE by removing GPE register locking. As such, raw handlers much provide
their own locks while using GPE API's to protect access to GPE data
structures.
Lv Zheng

Events: Always modify GPE registers under the GPE lock.
Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
values. Reported as bug by joe.liu@apple.com.

Unix makefiles: Separate option to disable optimizations and
_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
NOOPT disable option and creates a separate flag (NOFORTIFY) for this
purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
errors when building ACPICA. This allows disabling the option without
also having to disable optimazations.
David Box

  Current Release:
    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total

----------------------------------------
07 November 2014. Summary of changes for version 20141107:

This release is available at https://acpica.org/downloads

This release introduces and implements language extensions to ASL that
provide support for symbolic ("C-style") operators and expressions. These
language extensions are known collectively as ASL+.

1) iASL Compiler/Disassembler and Tools:

Disassembler: Fixed a problem with disassembly of the UartSerialBus
macro. Changed "StopBitsNone" to the correct "StopBitsZero". \ 
David E.
Box.

Disassembler: Fixed the Unicode macro support to add escape sequences.
All non-printable ASCII values are emitted as escape sequences, as well
as the standard escapes for quote and backslash. Ensures that the
disassembled macro can be correctly recompiled.

iASL: Added Printf/Fprintf macros for formatted output. These macros are
translated to existing AML Concatenate and Store operations. Printf
writes to the ASL Debug object. Fprintf allows the specification of an
ASL name as the target. Only a single format specifier is required, %o,
since the AML interpreter dynamically converts objects to the required
type. David E. Box.

    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
                 (Concatenate (Concatenate (Concatenate ("", Arg0),
                 ": Unexpected value for "), Arg1), ", "), Arg2),
                 " at line "), Arg3), Debug)

    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
                 Arg0, Arg1, Arg2, Arg3)

    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
                 ("", Arg1), ": "), Arg0), " \ 
Successful"), STR1)

    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)

iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
ASL parse tree before the AML code is generated. This allows blocks of
ASL code to be removed in order to help locate and identify problem
devices and/or code. David E. Box.

AcpiExec: Added support (-fi) for an optional namespace object
initialization file. This file specifies initial values for namespace
objects as necessary for debugging and testing different ASL code paths
that may be taken as a result of BIOS options.

2) Overview of symbolic operator support for ASL (ASL+)
-------------------------------------------------------

As an extension to the ASL language, iASL implements support for symbolic
(C-style) operators for math and logical expressions. This can greatly
simplify ASL code as well as improve both readability and
maintainability. These language extensions can exist concurrently with
all legacy ASL code and expressions.

The symbolic extensions are 100% compatible with existing AML
interpreters, since no new AML opcodes are created. To implement the
extensions, the iASL compiler transforms the symbolic expressions into
the legacy ASL/AML equivalents at compile time.

Full symbolic expressions are supported, along with the standard C
precedence and associativity rules.

Full disassembler support for the symbolic expressions is provided, and
creates an automatic migration path for existing ASL code to ASL+ code
via the disassembly process. By default, the disassembler now emits ASL+
code with symbolic expressions. An option (-dl) is provided to force the
disassembler to emit legacy ASL code if desired.

Below is the complete list of the currently supported symbolic operators
with examples. See the iASL User Guide for additional information.

ASL+ Syntax      Legacy ASL Equivalent
-----------      ---------------------

    // Math operators

Z = X + Y        Add (X, Y, Z)
Z = X - Y        Subtract (X, Y, Z)
Z = X * Y        Multiply (X, Y, Z)
Z = X / Y        Divide (X, Y, , Z)
Z = X % Y        Mod (X, Y, Z)
Z = X << Y       ShiftLeft (X, Y, Z)
Z = X >> Y       ShiftRight (X, Y, Z)
Z = X & Y        And (X, Y, Z)
Z = X | Y        Or (X, Y, Z)
Z = X ^ Y        Xor (X, Y, Z)
Z = ~X           Not (X, Z)
X++              Increment (X)
X--              Decrement (X)

    // Logical operators

(X == Y)         LEqual (X, Y)
(X != Y)         LNotEqual (X, Y)
(X < Y)          LLess (X, Y)
(X > Y)          LGreater (X, Y)
(X <= Y)         LLessEqual (X, Y)
(X >= Y)         LGreaterEqual (X, Y)
(X && Y)         LAnd (X, Y)
(X || Y)         LOr (X, Y)
(!X)             LNot (X)

    // Assignment and compound assignment operations

X = Y           Store (Y, X)
X += Y          Add (X, Y, X)
X -= Y          Subtract (X, Y, X)
X *= Y          Multiply (X, Y, X)
X /= Y          Divide (X, Y, , X)
X %= Y          Mod (X, Y, X)
X <<= Y         ShiftLeft (X, Y, X)
X >>= Y         ShiftRight (X, Y, X)
X &= Y          And (X, Y, X)
X |= Y          Or (X, Y, X)
X ^= Y          Xor (X, Y, X)

3) ASL+ Examples:
-----------------

Legacy ASL:
        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
0x03FB),
            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
        {
            And (MEMB, 0xFFFFFFF0, SRMB)
            Store (MEMB, Local2)
            Store (PDBM, Local1)
            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
            Store (SRMB, MEMB)
            Or (PDBM, 0x02, PDBM)
        }

ASL+ version:
        If (((R510 & 0x03FB) == 0x02E0) ||
            ((R520 & 0x03FB) == 0x02E0) ||
            ((R530 & 0x03FB) == 0x02E0) ||
            ((R540 & 0x03FB) == 0x02E0))
        {
            SRMB = (MEMB & 0xFFFFFFF0)
            Local2 = MEMB
            Local1 = PDBM
            PDBM &= 0xFFFFFFFFFFFFFFF9
            MEMB = SRMB
            PDBM |= 0x02
        }

Legacy ASL:
        Store (0x1234, Local1)
        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
        Store (Index (PKG1, 0x03), Local6)
        Store (Add (Local3, Local2), Debug)
        Add (Local1, 0x0F, Local2)
        Add (Local1, Multiply (Local2, Local3), Local2)
        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)

ASL+ version:
        Local1 = 0x1234
        Local3 = (((Local1 + TEST) + 0x20) * Local2)
        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
        Local3 = (Local1 + (TEST + (0x20 * Local2)))
        Local6 = Index (PKG1, 0x03)
        Debug = (Local3 + Local2)
        Local2 = (Local1 + 0x0F)
        Local2 = (Local1 + (Local2 * Local3))
        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))

----------------------------------------
26 September 2014. Summary of changes for version 20140926:

1) ACPICA kernel-resident subsystem:

Updated the GPIO operation region handler interface (GeneralPurposeIo).
In order to support GPIO Connection objects with multiple pins, along
with the related Field objects, the following changes to the interface
have been made: The Address is now defined to be the offset in bits of
the field unit from the previous invocation of a Connection. It can be
viewed as a "Pin Number Index" into the connection resource descriptor.
The BitWidth is the exact bit width of the field. It is usually one bit,
but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
additional information and examples.

GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
corresponding _Lxx/_Exx methods are disabled (they may have been enabled
by the firmware), so that they cannot fire until they are enabled via
AcpiUpdateAllGpes. Rafael J. Wysocki.

Added a new return flag for the Event/GPE status interfaces --
AcpiGetEventStatus and AcpiGetGpeStatus. The new
ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
GPE currently has a handler associated with it, and can thus actually
affect the system. Lv Zheng.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
  Previous Release:
    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Fixed a memory allocation/free regression introduced in 20140828
that could cause the compiler to crash. This was introduced inadvertently
during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
1113.

iASL: Removed two error messages that have been found to create false
positives, until they can be fixed and fully validated (ACPICA BZ 1112):
1) Illegal forward reference within a method
2) Illegal reference across two methods

iASL: Implemented a new option (-lm) to create a hardware mapping file
that summarizes all GPIO, I2C, SPI, and UART connections. This option
works for both the compiler and disassembler. See the iASL compiler user
guide for additional information and examples (section 6.4.6).

AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
version 2. This corrects the AE_BAD_HEADER exception seen on systems with
a version 1 RSDP. Lv Zheng ACPICA BZ 1097.

AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
unless STDIN is actually a terminal. Assists with batch-mode processing.
ACPICA BZ 1114.

Disassembler/AcpiHelp: Added another large group of recognized _HID
values.

----------------------------------------
28 August 2014. Summary of changes for version 20140828:

1) ACPICA kernel-resident subsystem:

Fixed a problem related to the internal use of the Timer() operator where
a 64-bit divide could cause an attempted link to a double-precision math
library. This divide is not actually necessary, so the code was
restructured to eliminate it. Lv Zheng.

ACPI 5.1: Added support for the runtime validation of the _DSD package
(similar to the iASL support).

ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
  Previous Release:
    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total

2) iASL Compiler/Disassembler and Tools:

AcpiExec: Fixed a problem on unix systems where the original terminal
state was not always properly restored upon exit. Seen when using the -v
option. ACPICA BZ 1104.

iASL: Fixed a problem with the validation of the ranges/length within the
Memory24 resource descriptor. There was a boundary condition when the
range was equal to the (length -1) caused by the fact that these values
are defined in 256-byte blocks, not bytes. ACPICA BZ 1098

Disassembler: Fixed a problem with the GpioInt descriptor interrupt
polarity
flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
is
now supported properly.

ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
in the disassembler, data table compiler, and table template generator.

iASL: Added a requirement for Device() objects that one of either a _HID
or _ADR must exist within the scope of a Device, as per the ACPI
specification. Remove a similar requirement that was incorrectly in place
for the _DSD object.

iASL: Added error detection for illegal named references within control
methods that would cause runtime failures. Now trapped as errors are: 1)
References to objects within a non-parent control method. 2) Forward
references (within a method) -- for control methods, AML interpreters use
a one-pass parse of control methods. ACPICA BZ 1008.

iASL: Added error checking for dependencies related to the _PSx power
methods. ACPICA BZ 1029.
1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
_PS3.
2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
scope.

iASL and table compiler: Cleanup miscellaneous memory leaks by fully
deploying the existing object and string caches and adding new caches for
the table compiler.

iASL: Split the huge parser source file into multiple subfiles to improve
manageability. Generation now requires the M4 macro preprocessor, which
is part of the Bison distribution on both unix and windows platforms.

AcpiSrc: Fixed and removed all extraneous warnings generated during
entire ACPICA source code scan and/or conversion.

----------------------------------------

24 July 2014. Summary of changes for version 20140724:

The ACPI 5.1 specification has been released and is available at:
http://uefi.org/specs/access

0) ACPI 5.1 support in ACPICA:

ACPI 5.1 is fully supported in ACPICA as of this release.

New predefined names. Support includes iASL and runtime ACPICA
validation.
    _CCA (Cache Coherency Attribute).
    _DSD (Device-Specific Data). David Box.

Modifications to existing ACPI tables. Support includes headers, iASL
Data Table compiler, disassembler, and the template generator.
    FADT - New fields and flags. Graeme Gregory.
    GTDT - One new subtable and new fields. Tomasz Nowicki.
    MADT - Two new subtables. Tomasz Nowicki.
    PCCT - One new subtable.

Miscellaneous.
    New notification type for System Resource Affinity change events.

1) ACPICA kernel-resident subsystem:

Fixed a regression introduced in 20140627 where a fault can happen during
the deletion of Alias AML namespace objects. The problem affected both
the core ACPICA and the ACPICA tools including iASL and AcpiExec.

Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
simple mechanism to enable wake GPEs that have no associated handler or
control method. Rafael Wysocki.

Updated the AcpiEnableGpe interface to disallow the enable if there is no
handler or control method associated with the particular GPE. This will
help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.

Updated GPE handling and dispatch by disabling the GPE before clearing
the status bit for edge-triggered GPEs. Lv Zheng.

Added Timer() support to the AML Debug object. The current timer value is
now displayed with each invocation of (Store to) the debug object to
enable simple generation of execution times for AML code (method
execution for example.) ACPICA BZ 1093.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
  Previous Release:
    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total

2) iASL Compiler/Disassembler and Tools:

Fixed an issue with the recently added local printf implementation,
concerning width/precision specifiers that could cause incorrect output.
Lv Zheng. ACPICA BZ 1094.

Disassembler: Added support to detect buffers that contain UUIDs and
disassemble them to an invocation of the ToUUID operator. Also emit
commented descriptions of known ACPI-related UUIDs.

AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
-u. Adds three new files.

iASL: Update table compiler and disassembler for DMAR table changes that
were introduced in September 2013. With assistance by David Woodhouse.

----------------------------------------
27 June 2014. Summary of changes for version 20140627:

1) ACPICA kernel-resident subsystem:

Formatted Output: Implemented local versions of standard formatted output
utilities such as printf, etc. Over time, it has been discovered that
there are in fact many portability issues with printf, and the addition
of this feature will fix/prevent these issues once and for all. Some
known issues are summarized below:

1) Output of 64-bit values is not portable. For example, UINT64 is %ull
for the Linux kernel and is %uI64 for some MSVC versions.
2) Invoking printf consistently in a manner that is portable across both
32-bit and 64-bit platforms is difficult at best in many situations.
3) The output format for pointers varies from system to system (leading
zeros especially), and leads to inconsistent output from ACPICA across
platforms.
4) Certain platform-specific printf formats may conflict with ACPICA use.
5) If there is no local C library available, ACPICA now has local support
for printf.

-- To address these printf issues in a complete manner, ACPICA now
directly implements a small subset of printf format specifiers, only
those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.

Implemented support for ACPICA generation within the EFI environment.
Initially, the AcpiDump utility is supported in the UEFI shell
environment. Lv Zheng.

Added a new external interface, AcpiLogError, to improve ACPICA
portability. This allows the host to redirect error messages from the
ACPICA utilities. Lv Zheng.

Added and deployed new OSL file I/O interfaces to improve ACPICA
portability:
  AcpiOsOpenFile
  AcpiOsCloseFile
  AcpiOsReadFile
  AcpiOsWriteFile
  AcpiOsGetFileOffset
  AcpiOsSetFileOffset
There are C library implementations of these functions in the new file
service_layers/oslibcfs.c -- however, the functions can be implemented by
the local host in any way necessary. Lv Zheng.

Implemented a mechanism to disable/enable ACPI table checksum validation
at runtime. This can be useful when loading tables very early during OS
initialization when it may not be possible to map the entire table in
order to compute the checksum. Lv Zheng.

Fixed a buffer allocation issue for the Generic Serial Bus support.
Originally, a fixed buffer length was used. This change allows for
variable-length buffers based upon the protocol indicated by the field
access attributes. Reported by Lan Tianyu. Lv Zheng.

Fixed a problem where an object detached from a namespace node was not
properly terminated/cleared and could cause a circular list problem if
reattached. ACPICA BZ 1063. David Box.

Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.

Fixed a possible memory leak in an error return path within the function
AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
  Previous Release:
    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total

2) iASL Compiler/Disassembler and Tools:

Disassembler: Add dump of ASCII equivalent text within a comment at the
end of each line of the output for the Buffer() ASL operator.

AcpiDump: Miscellaneous changes:
  Fixed repetitive table dump in -n mode.
  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
the ACPI 2.0 GUID fails.

iASL: Fixed a problem where the compiler could fault if incorrectly given
an acpidump output file as input. ACPICA BZ 1088. David Box.

AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
they are invoked without any arguments.

Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
1086. Colin Ian King.

Disassembler: Cleaned up a block of code that extracts a parent Op
object. Added a comment that explains that the parent is guaranteed to be
valid in this case. ACPICA BZ 1069.

----------------------------------------
24 April 2014. Summary of changes for version 20140424:

1) ACPICA kernel-resident subsystem:

Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
Some of these tables are known to contain a trailing NULL entry. Lv
Zheng.

Removed an extraneous error message for the case where there are a large
number of system GPEs (> 124). This was the "32-bit FADT register is too
long to convert to GAS struct" message, which is irrelevant for GPEs
since the GPEx_BLK_LEN fields of the FADT are always used instead of the
(limited capacity) GAS bit length. Also, several changes to ensure proper
support for GPE numbers > 255, where some "GPE number" fields were \ 
8-bits
internally.

Implemented and deployed additional configuration support for the public
ACPICA external interfaces. Entire classes of interfaces can now be
easily modified or configured out, replaced by stubbed inline functions
by default. Lv Zheng.

Moved all public ACPICA runtime configuration globals to the public
ACPICA external interface file for convenience. Also, removed some
obsolete/unused globals. See the file acpixf.h. Lv Zheng.

Documentation: Added a new section to the ACPICA reference describing the
maximum number of GPEs that can be supported by the FADT-defined GPEs in
block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
reference.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
  Previous Release:
    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total

2) iASL Compiler/Disassembler and Tools:

iASL and disassembler: Add full support for the LPIT table (Low Power
Idle Table). Includes support in the disassembler, data table compiler,
and template generator.

AcpiDump utility:
1) Add option to force the use of the RSDT (over the XSDT).
2) Improve validation of the RSDP signature (use 8 chars instead of 4).

iASL: Add check for predefined packages that are too large.  For
predefined names that contain subpackages, check if each subpackage is
too large. (Check for too small already exists.)

Debugger: Updated the GPE command (which simulates a GPE by executing the
GPE code paths in ACPICA). The GPE device is now optional, and defaults
to the GPE 0/1 FADT-defined blocks.

Unix application OSL: Update line-editing support. Add additional error
checking and take care not to reset terminal attributes on exit if they
were never set. This should help guarantee that the terminal is always
left in the previous state on program exit.

----------------------------------------
25 March 2014. Summary of changes for version 20140325:

1) ACPICA kernel-resident subsystem:

Updated the auto-serialize feature for control methods. This feature
automatically serializes all methods that create named objects in order
to prevent runtime errors. The update adds support to ignore the
currently executing AML SyncLevel when invoking such a method, in order
to prevent disruption of any existing SyncLevel priorities that may exist
in the AML code. Although the use of SyncLevels is relatively rare, this
change fixes a regression where an AE_AML_MUTEX_ORDER exception can
appear on some machines starting with the 20140214 release.

Added a new external interface to allow the host to install ACPI tables
very early, before the namespace is even created. AcpiInstallTable gives
the host additional flexibility for ACPI table management. Tables can be
installed directly by the host as if they had originally appeared in the
XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
with additional internal restructuring and cleanup. See the ACPICA
Reference for interface details. Lv Zheng.

Added validation of the checksum for all incoming dynamically loaded
tables (via external interfaces or via AML Load/LoadTable operators). Lv
Zheng.

Updated the use of the AcpiOsWaitEventsComplete interface during Notify
and GPE handler removal. Restructured calls to eliminate possible race
conditions. Lv Zheng.

Added a warning for the use/execution of the ASL/AML Unload (table)
operator. This will help detect and identify machines that use this
operator if and when it is ever used. This operator has never been seen
in the field and the usage model and possible side-effects of the drastic
runtime action of a full table removal are unknown.

Reverted the use of #pragma push/pop which was introduced in the 20140214
release. It appears that push and pop are not implemented by enough
compilers to make the use of this feature feasible for ACPICA at this
time. However, these operators may be deployed in a future ACPICA
release.

Added the missing EXPORT_SYMBOL macros for the install and remove SCI
handler interfaces.

Source code generation:
1) Disabled the use of the "strchr" macro for the gcc-specific
generation. For some versions of gcc, this macro can periodically expose
a compiler bug which in turn causes compile-time error(s).
2) Added support for PPC64 compilation. Colin Ian King.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
  Previous Release:
    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total

2) iASL Compiler/Disassembler and Tools:

Disassembler: Added several new features to improve the readability of
the resulting ASL code. Extra information is emitted within comment
fields in the ASL code:
1) Known _HID/_CID values are decoded to descriptive text.
2) Standard values for the Notify() operator are decoded to descriptive
text.
3) Target operands are expanded to full pathnames (in a comment) when
possible.

Disassembler: Miscellaneous updates for extern() handling:
1) Abort compiler if file specified by -fe option does not exist.
2) Silence unnecessary warnings about argument count mismatches.
3) Update warning messages concerning unresolved method externals.
4) Emit "UnknownObj" keyword for externals whose type cannot be
determined.

AcpiHelp utility:
1) Added the -a option to display both the ASL syntax and the AML
encoding for an input ASL operator. This effectively displays all known
information about an ASL operator with one AcpiHelp invocation.
2) Added substring match support (similar to a wildcard) for the -i
(_HID/PNP IDs) option.

iASL/Disassembler: Since this tool does not yet support execution on big-
endian machines, added detection of endianness and an error message if
execution is attempted on big-endian. Support for big-endian within iASL
is a feature that is on the ACPICA to-be-done list.

AcpiBin utility:
1) Remove option to extract binary files from an acpidump; this function
is made obsolete by the AcpiXtract utility.
2) General cleanup of open files and allocated buffers.

----------------------------------------
14 February 2014. Summary of changes for version 20140214:

1) ACPICA kernel-resident subsystem:

Implemented a new mechanism to proactively prevent problems with ill-
behaved reentrant control methods that create named ACPI objects. This
behavior is illegal as per the ACPI specification, but is nonetheless
frequently seen in the field. Previously, this could lead to an
AE_ALREADY_EXISTS exception if the method was actually entered by more
than one thread. This new mechanism detects such methods at table load
time and marks them "serialized" to prevent reentrancy. A new global
option, AcpiGbl_AutoSerializeMethods, has been added to disable this
feature if desired. This mechanism and global option obsoletes and
supersedes the previous AcpiGbl_SerializeAllMethods option.

Added the "Windows 2013" string to the _OSI support. ACPICA will now
respond TRUE to _OSI queries with this string. It is the stated policy of
ACPICA to add new strings to the _OSI support as soon as possible after
they are defined. See the full ACPICA _OSI policy which has been added to
the utilities/utosi.c file.

Hardened/updated the _PRT return value auto-repair code:
1) Do not abort the repair on a single subpackage failure, continue to
check all subpackages.
2) Add check for the minimum subpackage length (4).
3) Properly handle extraneous NULL package elements.

Added support to avoid the possibility of infinite loops when traversing
object linked lists. Never allow an infinite loop, even in the face of
corrupted object lists.

ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
pack(pop) directives to ensure that the ACPICA headers are independent of
compiler settings or other host headers.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
  Previous Release:
    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total

2) iASL Compiler/Disassembler and Tools:

iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
first reserved field was incorrectly forced to have a value of zero. This
change correctly forces the field to have a value of one. ACPICA BZ 1081.

Debugger: Added missing support for the "Extra" and "Data" \ 
subobjects
when displaying object data.

Debugger: Added support to display entire object linked lists when
displaying object data.

iASL: Removed the obsolete -g option to obtain ACPI tables from the
Windows registry. This feature has been superseded by the acpidump
utility.

----------------------------------------
14 January 2014. Summary of changes for version 20140114:

1) ACPICA kernel-resident subsystem:

Updated all ACPICA copyrights and signons to 2014. Added the 2014
copyright to all module headers and signons, including the standard Linux
header. This affects virtually every file in the ACPICA core subsystem,
iASL compiler, all ACPICA utilities, and the test suites.

Improved parameter validation for AcpiInstallGpeBlock. Added the
following checks:
1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
2) There is not already a GPE block attached to the device.
Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
device.

Correctly support "references" in the ACPI_OBJECT. This change fixes the
support to allow references (namespace nodes) to be passed as arguments
to control methods via the evaluate object interface. This is probably
most useful for testing purposes, however.

Improved support for 32/64 bit physical addresses in printf()-like
output. This change improves the support for physical addresses in printf
debug statements and other output on both 32-bit and 64-bit hosts. It
consistently outputs the appropriate number of bytes for each host. The
%p specifier is unsatisfactory since it does not emit uniform output on
all hosts/clib implementations (on some, leading zeros are not supported,
leading to difficult-to-read output).

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
  Previous Release:
    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Fix a possible fault when using the Connection() operator. Fixes a
problem if the parent Field definition for the Connection operator refers
to an operation region that does not exist. ACPICA BZ 1064.

AcpiExec: Load of local test tables is now optional. The utility has the
capability to load some various tables to test features of ACPICA.
However, there are enough of them that the output of the utility became
confusing. With this change, only the required local tables are displayed
(RSDP, XSDT, etc.) along with the actual tables loaded via the command
line specification. This makes the default output simler and easier to
understand. The -el command line option restores the original behavior
for testing purposes.

AcpiExec: Added support for overlapping operation regions. This change
expands the simulation of operation regions by supporting regions that
overlap within the given address space. Supports SystemMemory and
SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.

AcpiExec: Added region handler support for PCI_Config and EC spaces. This
allows AcpiExec to simulate these address spaces, similar to the current
support for SystemMemory and SystemIO.

Debugger: Added new command to read/write/compare all namespace objects.
The command "test objects" will exercise the entire namespace by writing
new values to each data object, and ensuring that the write was
successful. The original value is then restored and verified.

Debugger: Added the "test predefined" command. This change makes this
test public and puts it under the new "test" command. The test executes
each and every predefined name within the current namespace.

----------------------------------------
18 December 2013. Summary of changes for version 20131218:

Global note: The ACPI 5.0A specification was released this month. There
are no changes needed for ACPICA since this release of ACPI is an
errata/clarification release. The specification is available at
acpi.info.

1) ACPICA kernel-resident subsystem:

Added validation of the XSDT root table if it is present. Some older
platforms contain an XSDT that is ill-formed or otherwise invalid (such
as containing some or all entries that are NULL pointers). This change
adds a new function to validate the XSDT before actually using it. If the
XSDT is found to be invalid, ACPICA will now automatically fall back to
using the RSDT instead. Original implementation by Zhao Yakui. Ported to
ACPICA and enhanced by Lv Zheng and Bob Moore.

Added a runtime option to ignore the XSDT and force the use of the RSDT.
This change adds a runtime option that will force ACPICA to use the RSDT
instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
requires that an XSDT be used instead of the RSDT, the XSDT has been
found to be corrupt or ill-formed on some machines. Lv Zheng.

Added a runtime option to favor 32-bit FADT register addresses over the
64-bit addresses. This change adds an option to favor 32-bit FADT
addresses when there is a conflict between the 32-bit and 64-bit versions
of the same register. The default behavior is to use the 64-bit version
in accordance with the ACPI specification. This can now be overridden via
the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.

During the change above, the internal "Convert FADT" and "Verify \ 
FADT"
functions have been merged to simplify the code, making it easier to
understand and maintain. ACPICA BZ 933.

Improve exception reporting and handling for GPE block installation.
Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.

Added helper macros to extract bus/segment numbers from the HEST table.
This change adds two macros to extract the encoded bus and segment
numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
Betty Dall <betty.dall@hp.com>

Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
by ACPICA. It is not a public macro, so it should have no effect on
existing OSV code. Lv Zheng.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
  Previous Release:
    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total

2) iASL Compiler/Disassembler and Tools:

Disassembler: Improved pathname support for emitted External()
statements. This change adds full pathname support for external names
that have been resolved internally by the inclusion of additional ACPI
tables (via the iASL -e option). Without this change, the disassembler
can emit multiple externals for the same object, or it become confused
when the Scope() operator is used on an external object. Overall, greatly
improves the ability to actually recompile the emitted ASL code when
objects a referenced across multiple ACPI tables. Reported by Michael
Tsirkin (mst@redhat.com).

Tests/ASLTS: Updated functional control suite to execute with no errors.
David Box. Fixed several errors related to the testing of the interpreter
slack mode. Lv Zheng.

iASL: Added support to detect names that are declared within a control
method, but are unused (these are temporary names that are only valid
during the time the method is executing). A remark is issued for these
cases. ACPICA BZ 1022.

iASL: Added full support for the DBG2 table. Adds full disassembler,
table compiler, and template generator support for the DBG2 table (Debug
Port 2 table).

iASL: Added full support for the PCCT table, update the table definition.
Updates the PCCT table definition in the actbl3.h header and adds table
compiler and template generator support.

iASL: Added an option to emit only error messages (no warnings/remarks).
The -ve option will enable only error messages, warnings and remarks are
suppressed. This can simplify debugging when only the errors are
important, such as when an ACPI table is disassembled and there are many
warnings and remarks -- but only the actual errors are of real interest.

Example ACPICA code (source/tools/examples): Updated the example code so
that it builds to an actual working program, not just example code. Added
ACPI tables and execution of an example control method in the DSDT. Added
makefile support for Unix generation.

----------------------------------------
15 November 2013. Summary of changes for version 20131115:

This release is available at https://acpica.org/downloads

1) ACPICA kernel-resident subsystem:

Resource Manager: Fixed loop termination for the "get AML length"
function. The loop previously had an error termination on a NULL resource
pointer, which can never happen since the loop simply increments a valid
resource pointer. This fix changes the loop to terminate with an error on
an invalid end-of-buffer condition. The problem can be seen as an
infinite loop by callers to AcpiSetCurrentResources with an invalid or
corrupted resource descriptor, or a resource descriptor that is missing
an END_TAG descriptor. Reported by Dan Carpenter
<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.

Table unload and ACPICA termination: Delete all attached data objects
during namespace node deletion. This fix updates namespace node deletion
to delete the entire list of attached objects (attached via
AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
1024. Tomasz Nowicki (tomasz.nowicki@linaro.org).

ACPICA termination: Added support to delete all objects attached to the
root namespace node. This fix deletes any and all objects that have been
attached to the root node via AcpiAttachData. Previously, none of these
objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.

Debug output: Do not emit the function nesting level for the in-kernel
build. The nesting level is really only useful during a single-thread
execution. Therefore, only enable this output for the AcpiExec utility.
Also, only emit the thread ID when executing under AcpiExec (Context
switches are still always detected and a message is emitted). ACPICA BZ
972.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
  Previous Release:
    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total

2) iASL Compiler/Disassembler and Tools:

AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
correct portable POSIX header for terminal control functions.

Disassembler: Fixed control method invocation issues related to the use
of the CondRefOf() operator. The problem is seen in the disassembly where
control method invocations may not be disassembled properly if the
control method name has been used previously as an argument to CondRefOf.
The solution is to not attempt to emit an external declaration for the
CondRefOf target (it is not necessary in the first place). This prevents
disassembler object type confusion. ACPICA BZ 988.

Unix Makefiles: Added an option to disable compiler optimizations and the
_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
with optimizations (reportedly, gcc 4.4 for example). This change adds a
command line option for make (NOOPT) that disables all compiler
optimizations and the _FORTIFY_SOURCE compiler flag. The default
optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
1034. Lv Zheng, Bob Moore.

Tests/ASLTS: Added options to specify individual test cases and modes.
This allows testers running aslts.sh to optionally specify individual
test modes and test cases. Also added an option to disable the forced
generation of the ACPICA tools from source if desired. Lv Zheng.

----------------------------------------
27 September 2013. Summary of changes for version 20130927:

This release is available at https://acpica.org/downloads

1) ACPICA kernel-resident subsystem:

Fixed a problem with store operations to reference objects. This change
fixes a problem where a Store operation to an ArgX object that contained
a
reference to a field object did not complete the automatic dereference
and
then write to the actual field object. Instead, the object type of the
field object was inadvertently changed to match the type of the source
operand. The new behavior will actually write to the field object (buffer
field or field unit), thus matching the correct ACPI-defined behavior.

Implemented support to allow the host to redefine individual OSL
prototypes. This change enables the host to redefine OSL prototypes found
in the acpiosxf.h file. This allows the host to implement OSL interfaces
with a macro or inlined function. Further, it allows the host to add any
additional required modifiers such as __iomem, __init, __exit, etc., as
necessary on a per-interface basis. Enables maximum flexibility for the
OSL interfaces. Lv Zheng.

Hardcoded the access width for the FADT-defined reset register. The ACPI
specification requires the reset register width to be 8 bits. ACPICA now
hardcodes the width to 8 and ignores the FADT width value. This provides
compatibility with other ACPI implementations that have allowed BIOS code
with bad register width values to go unnoticed. Matthew Garett, Bob
Moore,
Lv Zheng.

Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
used
in the OSL header (acpiosxf). The change modifies the position of this
macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
build issues if the OSL defines the implementation of the interface to be
an inline stub function. Lv Zheng.

Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
initialization interfaces. This change adds a new macro for the main init
and terminate external interfaces in order to support hosts that require
additional or different processing for these functions. Changed from
ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
Zheng, Bob Moore.

Cleaned up the memory allocation macros for configurability. In the
common
case, the ACPI_ALLOCATE and related macros now resolve directly to their
respective AcpiOs* OSL interfaces. Two options:
1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
2) For AcpiExec (and for debugging), the macros can optionally be
resolved
to the local ACPICA interfaces that track each allocation (local tracking
is used to immediately detect memory leaks).
Lv Zheng.

Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
to predefine this macro to either TRUE or FALSE during the system build.

Replaced __FUNCTION_ with __func__ in the gcc-specific header.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
  Previous Release:
    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Implemented wildcard support for the -e option. This simplifies use
when there are many SSDTs that must be included to resolve external
method
declarations. ACPICA BZ 1041. Example:
    iasl -e ssdt*.dat -d dsdt.dat

AcpiExec: Add history/line-editing for Unix/Linux systems. This change
adds a portable module that implements full history and limited line
editing for Unix and Linux systems. It does not use readline() due to
portability issues. Instead it uses the POSIX termio interface to put the
terminal in raw input mode so that the various special keys can be
trapped
(such as up/down-arrow for history support and left/right-arrow for line
editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.

AcpiXtract: Add support to handle (ignore) "empty" lines containing only
one or more spaces. This provides compatible with early or different
versions of the AcpiDump utility. ACPICA BZ 1044.

AcpiDump: Do not ignore tables that contain only an ACPI table header.
Apparently, some BIOSs create SSDTs that contain an ACPI table header but
no other data. This change adds support to dump these tables. Any tables
shorter than the length of an ACPI table header remain in error (an error
message is emitted). Reported by Yi Li.

Debugger: Echo actual command along with the "unknown command" message.

----------------------------------------
23 August 2013. Summary of changes for version 20130823:

1) ACPICA kernel-resident subsystem:

Implemented support for host-installed System Control Interrupt (SCI)
handlers. Certain ACPI functionality requires the host to handle raw
SCIs. For example, the "SCI Doorbell" that is defined for memory power
state support requires the host device driver to handle SCIs to examine
if the doorbell has been activated. Multiple SCI handlers can be
installed to allow for future expansion. New external interfaces are
AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
details. Lv Zheng, Bob Moore. ACPICA BZ 1032.

Operation region support: Never locally free the handler "context"
pointer. This change removes some dangerous code that attempts to free
the handler context pointer in some (rare) circumstances. The owner of
the handler owns this pointer and the ACPICA code should never touch it.
Although not seen to be an issue in any kernel, it did show up as a
problem (fault) under AcpiExec. Also, set the internal storage field for
the context pointer to zero when the region is deactivated, simply for
sanity. David Box. ACPICA BZ 1039.

AcpiRead: On error, do not modify the return value target location. If an
error happens in the middle of a split 32/32 64-bit I/O operation, do not
modify the target of the return value pointer. Makes the code consistent
with the rest of ACPICA. Bjorn Helgaas.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
  Previous Release:
    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total

2) iASL Compiler/Disassembler and Tools:

AcpiDump: Implemented several new features and fixed some problems:
1) Added support to dump the RSDP, RSDT, and XSDT tables.
2) Added support for multiple table instances (SSDT, UEFI).
3) Added option to dump "customized" (overridden) tables (-c).
4) Fixed a problem where some table filenames were improperly
constructed.
5) Improved some error messages, removed some unnecessary messages.

iASL: Implemented additional support for disassembly of ACPI tables that
contain invocations of external control methods. The -fe<file> option
allows the import of a file that specifies the external methods along
with the required number of arguments for each -- allowing for the
correct disassembly of the table. This is a workaround for a limitation
of AML code where the disassembler often cannot determine the number of
arguments required for an external control method and generates incorrect
ASL code. See the iASL reference for details. ACPICA BZ 1030.

Debugger: Implemented a new command (paths) that displays the full
pathnames (namepaths) and object types of all objects in the namespace.
This is an alternative to the namespace command.

Debugger: Implemented a new command (sci) that invokes the SCI dispatch
mechanism and any installed handlers.

iASL: Fixed a possible segfault for "too many parent prefixes" condition.
This can occur if there are too many parent prefixes in a namepath (for
example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.

Application OSLs: Set the return value for the PCI read functions. These
functions simply return AE_OK, but should set the return value to zero
also. This change implements this. ACPICA BZ 1038.

Debugger: Prevent possible command line buffer overflow. Increase the
size of a couple of the debugger line buffers, and ensure that overflow
cannot happen. ACPICA BZ 1037.

iASL: Changed to abort immediately on serious errors during the parsing
phase. Due to the nature of ASL, there is no point in attempting to
compile these types of errors, and they typically end up causing a
cascade of hundreds of errors which obscure the original problem.

----------------------------------------
25 July 2013. Summary of changes for version 20130725:

1) ACPICA kernel-resident subsystem:

Fixed a problem with the DerefOf operator where references to FieldUnits
and BufferFields incorrectly returned the parent object, not the actual
value of the object. After this change, a dereference of a FieldUnit
reference results in a read operation on the field to get the value, and
likewise, the appropriate BufferField value is extracted from the target
buffer.

Fixed a problem where the _WAK method could cause a fault under these
circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
method returned no value. The problem is rarely seen because most kernels
run ACPICA in slack mode.

For the DerefOf operator, a fatal error now results if an attempt is made
to dereference a reference (created by the Index operator) to a NULL
package element. Provides compatibility with other ACPI implementations,
and this behavior will be added to a future version of the ACPI
specification.

The ACPI Power Management Timer (defined in the FADT) is now optional.
This provides compatibility with other ACPI implementations and will
appear in the next version of the ACPI specification. If there is no PM
Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
zero in the FADT indicates no PM timer.

Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
allows the host to globally enable/disable all vendor strings, all
feature strings, or both. Intended to be primarily used for debugging
purposes only. Lv Zheng.

Expose the collected _OSI data to the host via a global variable. This
data tracks the highest level vendor ID that has been invoked by the BIOS
so that the host (and potentially ACPICA itself) can change behaviors
based upon the age of the BIOS.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
  Previous Release:
    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Created the following enhancements for the -so option (create
offset table):
1)Add offsets for the last nameseg in each namepath for every supported
object type
2)Add support for Processor, Device, Thermal Zone, and Scope objects
3)Add the actual AML opcode for the parent object of every supported
object type
4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects

Disassembler: Emit all unresolved external symbols in a single block.
These are external references to control methods that could not be
resolved, and thus, the disassembler had to make a guess at the number of
arguments to parse.

iASL: The argument to the -T option (create table template) is now
optional. If not specified, the default table is a DSDT, typically the
most common case.

----------------------------------------
26 June 2013. Summary of changes for version 20130626:

1) ACPICA kernel-resident subsystem:

Fixed an issue with runtime repair of the _CST object. Null or invalid
elements were not always removed properly. Lv Zheng.

Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
the maximum number of GPEs is 1016. Use of multiple GPE block devices
makes the system-wide number of GPEs essentially unlimited.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
  Previous Release:
    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total

2) iASL Compiler/Disassembler and Tools:

Portable AcpiDump: Implemented full support for the Linux and FreeBSD
hosts. Now supports Linux, FreeBSD, and Windows.

Disassembler: Added some missing types for the HEST and EINJ tables: "Set
Error Type With Address", "CMCI", "MCE", and \ 
"Flush Cacheline".

iASL/Preprocessor: Implemented full support for nested
#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.

Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
max. The original purpose of this constraint was to limit the amount of
debug output. However, the string function in question (UtPrintString) is
now used for the disassembler also, where 256 bytes is insufficient.
Reported by RehabMan@GitHub.

iASL/DataTables: Fixed some problems and issues with compilation of DMAR
tables. ACPICA BZ 999. Lv Zheng.

iASL: Fixed a couple of error exit issues that could result in a "Could
not delete <file>" message during ASL compilation.

AcpiDump: Allow "FADT" and "MADT" as valid table signatures, \ 
even though
the actual signatures for these tables are "FACP" and "APIC",
respectively.

AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
tables are allowed to have multiple instances.

----------------------------------------
17 May 2013. Summary of changes for version 20130517:

1) ACPICA kernel-resident subsystem:

Fixed a regression introduced in version 20130328 for _INI methods. This
change fixes a problem introduced in 20130328 where _INI methods are no
longer executed properly because of a memory block that was not
initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
<tomasz.nowicki@linaro.org>.

Fixed a possible problem with the new extended sleep registers in the
ACPI
5.0 FADT. Do not use these registers (even if populated) unless the HW-
reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
1020. Lv Zheng.

Implemented return value repair code for _CST predefined objects: Sort
the
list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.

Implemented a debug-only option to disable loading of SSDTs from the
RSDT/XSDT during ACPICA initialization. This can be useful for debugging
ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
acglobal.h - ACPICA BZ 1005. Lv Zheng.

Fixed some issues in the ACPICA initialization and termination code:
Tomasz Nowicki <tomasz.nowicki@linaro.org>
1) Clear events initialized flag upon event component termination. ACPICA
BZ 1013.
2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
3) Delete global lock pending lock during termination. ACPICA BZ 1012.
4) Clear debug buffer global on termination to prevent possible multiple
delete. ACPICA BZ 1010.

Standardized all switch() blocks across the entire source base. After
many
years, different formatting for switch() had crept in. This change makes
the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.

Split some files to enhance ACPICA modularity and configurability:
1) Split buffer dump routines into utilities/utbuffer.c
2) Split internal error message routines into utilities/uterror.c
3) Split table print utilities into tables/tbprint.c
4) Split iASL command-line option processing into asloptions.c

Makefile enhancements:
1) Support for all new files above.
2) Abort make on errors from any subcomponent. Chao Guan.
3) Add build support for Apple Mac OS X. Liang Qi.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
  Previous Release:
    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total

2) iASL Compiler/Disassembler and Tools:

New utility: Implemented an easily portable version of the acpidump
utility to extract ACPI tables from the system (or a file) in an ASCII
hex
dump format. The top-level code implements the various command line
options, file I/O, and table dump routines. To port to a new host, only
three functions need to be implemented to get tables -- since this
functionality is OS-dependent. See the tools/acpidump/apmain.c module and
the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
1) The Windows version obtains the ACPI tables from the Registry.
2) The Linux version is under development.
3) Other hosts - If an OS-dependent module is submitted, it will be
distributed with ACPICA.

iASL: Fixed a regression for -D preprocessor option (define symbol). A
restructuring/change to the initialization sequence caused this option to
no longer work properly.

iASL: Implemented a mechanism to disable specific warnings and remarks.
Adds a new command line option, "-vw <messageid> as well as "#pragma
disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.

iASL: Fix for too-strict package object validation. The package object
validation for return values from the predefined names is a bit too
strict, it does not allow names references within the package (which will
be resolved at runtime.) These types of references cannot be validated at
compile time. This change ignores named references within package objects
for names that return or define static packages.

Debugger: Fixed the 80-character command line limitation for the History
command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.

iASL: Added control method and package support for the -so option
(generates AML offset table for BIOS support.)

iASL: issue a remark if a non-serialized method creates named objects. If
a thread blocks within the method for any reason, and another thread
enters the method, the method will fail because an attempt will be made
to
create the same (named) object twice. In this case, issue a remark that
the method should be marked serialized. NOTE: may become a warning later.
ACPICA BZ 909.

----------------------------------------
18 April 2013. Summary of changes for version 20130418:

1) ACPICA kernel-resident subsystem:

Fixed a possible buffer overrun during some rare but specific field unit
read operations. This overrun can only happen if the DSDT version is 1 --
meaning that all AML integers are 32 bits -- and the field length is
between 33 and 55 bits long. During the read, an internal buffer object
is
created for the field unit because the field is larger than an integer
(32
bits). However, in this case, the buffer will be incorrectly written
beyond the end because the buffer length is less than the internal
minimum
of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
long, but a full 8 bytes will be written.

Updated the Embedded Controller "orphan" _REG method support. This refers
to _REG methods under the EC device that have no corresponding operation
region. This is allowed by the ACPI specification. This update removes a
dependency on the existence an ECDT table. It will execute an orphan _REG
method as long as the operation region handler for the EC is installed at
the EC device node and not the namespace root. Rui Zhang (original
update), Bob Moore (update/integrate).

Implemented run-time argument typechecking for all predefined ACPI names
(_STA, _BIF, etc.) This change performs object typechecking on all
incoming arguments for all predefined names executed via
AcpiEvaluateObject. This ensures that ACPI-related device drivers are
passing correct object types as well as the correct number of arguments
(therefore identifying any issues immediately). Also, the ASL/namespace
definition of the predefined name is checked against the ACPI
specification for the proper argument count. Adds one new file,
nsarguments.c

Changed an exception code for the ASL UnLoad() operator. Changed the
exception code for the case where the input DdbHandle is invalid, from
AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.

Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
global makefile. The use of this flag causes compiler errors on earlier
versions of GCC, so it has been removed for compatibility.

Miscellaneous cleanup:
1) Removed some unused/obsolete macros
2) Fixed a possible memory leak in the _OSI support
3) Removed an unused variable in the predefined name support
4) Windows OSL: remove obsolete reference to a memory list field

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Current Release:
    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
  Previous Release:
    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total

2) iASL Compiler/Disassembler and Tools:

AcpiExec: Added installation of a handler for the SystemCMOS address
space. This prevents control method abort if a method accesses this
space.

AcpiExec: Added support for multiple EC devices, and now install EC
operation region handler(s) at the actual EC device instead of the
namespace root. This reflects the typical behavior of host operating
systems.

AcpiExec: Updated to ensure that all operation region handlers are
installed before the _REG methods are executed. This prevents a _REG
method from aborting if it accesses an address space has no handler.
AcpiExec installs a handler for every possible address space.

Debugger: Enhanced the "handlers" command to display non-root handlers.
This change enhances the handlers command to display handlers associated
with individual devices throughout the namespace, in addition to the
currently supported display of handlers associated with the root
namespace
node.

ASL Test Suite: Several test suite errors have been identified and
resolved, reducing the total error count during execution. Chao Guan.

----------------------------------------
28 March 2013. Summary of changes for version 20130328:

1) ACPICA kernel-resident subsystem:

Fixed several possible race conditions with the internal object reference
counting mechanism. Some of the external ACPICA interfaces update object
reference counts without holding the interpreter or namespace lock. This
change adds a spinlock to protect reference count updates on the internal
ACPICA objects. Reported by and with assistance from Andriy Gapon
(avg@FreeBSD.org).

FADT support: Removed an extraneous warning for very large GPE register
sets. This change removes a size mismatch warning if the legacy length
field for a GPE register set is larger than the 64-bit GAS structure can
accommodate. GPE register sets can be larger than the 255-bit width
limitation of the GAS structure. Linn Crosetto (linn@hp.com).

_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
return from this interface. Handles a possible timeout case if
ACPI_WAIT_FOREVER is modified by the host to be a value less than
"forever". Jung-uk Kim.

Predefined name support: Add allowed/required argument type information
to
the master predefined info table. This change adds the infrastructure to
enable typechecking on incoming arguments for all predefined
methods/objects. It does not actually contain the code that will fully
utilize this information, this is still under development. Also condenses
some duplicate code for the predefined names into a new module,
utilities/utpredef.c

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Previous Release:
    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
  Current Release:
    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Implemented a new option to simplify the development of ACPI-
related
BIOS code. Adds support for a new "offset table" output file. The -so
option will create a C table containing the AML table offsets of various
named objects in the namespace so that BIOS code can modify them easily
at
boot time. This can simplify BIOS runtime code by eliminating expensive
searches for "magic values", enhancing boot times and adding greater
reliability. With assistance from Lee Hamel.

iASL: Allow additional predefined names to return zero-length packages.
Now, all predefined names that are defined by the ACPI specification to
return a "variable-length package of packages" are allowed to return a
zero length top-level package. This allows the BIOS to tell the host that
the requested feature is not supported, and supports existing BIOS/ASL
code and practices.

iASL: Changed the "result not used" warning to an error. This is the case
where an ASL operator is effectively a NOOP because the result of the
operation is not stored anywhere. For example:
    Add (4, Local0)
There is no target (missing 3rd argument), nor is the function return
value used. This is potentially a very serious problem -- since the code
was probably intended to do something, but for whatever reason, the value
was not stored. Therefore, this issue has been upgraded from a warning to
an error.

AcpiHelp: Added allowable/required argument types to the predefined names
info display. This feature utilizes the recent update to the predefined
names table (above).

----------------------------------------
14 February 2013. Summary of changes for version 20130214:

1) ACPICA Kernel-resident Subsystem:

Fixed a possible regression on some hosts: Reinstated the safe return
macros (return_ACPI_STATUS, etc.) that ensure that the argument is
evaluated only once. Although these macros are not needed for the ACPICA
code itself, they are often used by ACPI-related host device drivers
where
the safe feature may be necessary.

Fixed several issues related to the ACPI 5.0 reduced hardware support
(SOC): Now ensure that if the platform declares itself as hardware-
reduced
via the FADT, the following functions become NOOPs (and always return
AE_OK) because ACPI is always enabled by definition on these machines:
  AcpiEnable
  AcpiDisable
  AcpiHwGetMode
  AcpiHwSetMode

Dynamic Object Repair: Implemented additional runtime repairs for
predefined name return values. Both of these repairs can simplify code in
the related device drivers that invoke these methods:
1) For the _STR and _MLS names, automatically repair/convert an ASCII
string to a Unicode buffer.
2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
a
lone end tag descriptor in the following cases: A Return(0) was executed,
a null buffer was returned, or no object at all was returned (non-slack
mode only). Adds a new file, nsconvert.c
ACPICA BZ 998. Bob Moore, Lv Zheng.

Resource Manager: Added additional code to prevent possible infinite
loops
while traversing corrupted or ill-formed resource template buffers. Check
for zero-length resource descriptors in all code that loops through
resource templates (the length field is used to index through the
template). This change also hardens the external AcpiWalkResources and
AcpiWalkResourceBuffer interfaces.

Local Cache Manager: Enhanced the main data structure to eliminate an
unnecessary mechanism to access the next object in the list. Actually
provides a small performance enhancement for hosts that use the local
ACPICA cache manager. Jung-uk Kim.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Previous Release:
    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
  Current Release:
    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total

2) iASL Compiler/Disassembler and Tools:

iASL/Disassembler: Fixed several issues with the definition of the ACPI
5.0 RASF table (RAS Feature Table). This change incorporates late changes
that were made to the ACPI 5.0 specification.

iASL/Disassembler: Added full support for the following new ACPI tables:
  1) The MTMR table (MID Timer Table)
  2) The VRTC table (Virtual Real Time Clock Table).
Includes header file, disassembler, table compiler, and template support
for both tables.

iASL: Implemented compile-time validation of package objects returned by
predefined names. This new feature validates static package objects
returned by the various predefined names defined to return packages. Both
object types and package lengths are validated, for both parent packages
and sub-packages, if any. The code is similar in structure and behavior
to
the runtime repair mechanism within the AML interpreter and uses the
existing predefined name information table. Adds a new file, aslprepkg.c.
ACPICA BZ 938.

iASL: Implemented auto-detection of binary ACPI tables for disassembly.
This feature detects a binary file with a valid ACPI table header and
invokes the disassembler automatically. Eliminates the need to
specifically invoke the disassembler with the -d option. ACPICA BZ 862.

iASL/Disassembler: Added several warnings for the case where there are
unresolved control methods during the disassembly. This can potentially
cause errors when the output file is compiled, because the disassembler
assumes zero method arguments in these cases (it cannot determine the
actual number of arguments without resolution/definition of the method).

Debugger: Added support to display all resources with a single command.
Invocation of the resources command with no arguments will now display
all
resources within the current namespace.

AcpiHelp: Added descriptive text for each ACPICA exception code displayed
via the -e option.

----------------------------------------
17 January 2013. Summary of changes for version 20130117:

1) ACPICA Kernel-resident Subsystem:

Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
objects to return a package containing one integer, most BIOS code
returns
two integers and the previous code reflects that. However, we also need
to
support BIOS code that actually implements to the ACPI spec, and this
change reflects this.

Fixed two issues with the ACPI_DEBUG_PRINT macros:
1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
C compilers that require this support.
2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
ACPI_DEBUG is already used by many of the various hosts.

Updated all ACPICA copyrights and signons to 2013. Added the 2013
copyright to all module headers and signons, including the standard Linux
header. This affects virtually every file in the ACPICA core subsystem,
iASL compiler, all ACPICA utilities, and the test suites.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Previous Release:
    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
  Current Release:
    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total

2) iASL Compiler/Disassembler and Tools:

Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
prevent a possible fault on some hosts. Some C libraries modify the arg
pointer parameter to vfprintf making it difficult to call it twice in the
AcpiOsVprintf function. Use a local buffer to workaround this issue. This
does not affect the Windows OSL since the Win C library does not modify
the arg pointer. Chao Guan, Bob Moore.

iASL: Fixed a possible infinite loop when the maximum error count is
reached. If an output file other than the .AML file is specified (such as
a listing file), and the maximum number of errors is reached, do not
attempt to flush data to the output file(s) as the compiler is aborting.
This can cause an infinite loop as the max error count code essentially
keeps calling itself.

iASL/Disassembler: Added an option (-in) to ignore NOOP
opcodes/operators.
Implemented for both the compiler and the disassembler. Often, the NOOP
opcode is used as padding for packages that are changed dynamically by
the
BIOS. When disassembled and recompiled, these NOOPs will cause syntax
errors. This option causes the disassembler to ignore all NOOP opcodes
(0xA3), and it also causes the compiler to ignore all ASL source code
NOOP
statements as well.

Debugger: Enhanced the Sleep command to execute all sleep states. This
change allows Sleep to be invoked with no arguments and causes the
debugger to execute all of the sleep states, 0-5, automatically.

----------------------------------------
20 December 2012. Summary of changes for version 20121220:

1) ACPICA Kernel-resident Subsystem:

Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
alternate entry point for AcpiWalkResources and improves the usability of
the resource manager by accepting as input a buffer containing the output
of either a _CRS, _PRS, or _AEI method. The key functionality is that the
input buffer is not deleted by this interface so that it can be used by
the host later. See the ACPICA reference for details.

Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
(DSDT version < 2). The constant will be truncated and this warning
reflects that behavior.

Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
ExtendedInterrupt, and GpioInt descriptors. This change adds support to
both get and set the new wake bit in these descriptors, separately from
the existing share bit. Reported by Aaron Lu.

Interpreter: Fix Store() when an implicit conversion is not possible. For
example, in the cases such as a store of a string to an existing package
object, implement the store as a CopyObject(). This is a small departure
from the ACPI specification which states that the control method should
be
aborted in this case. However, the ASLTS suite depends on this behavior.

Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
macros: check if debug output is currently enabled as soon as possible to
minimize performance impact if debug is in fact not enabled.

Source code restructuring: Cleanup to improve modularity. The following
new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
Associated makefiles and project files have been updated.

Changed an exception code for LoadTable operator. For the case where one
of the input strings is too long, change the returned exception code from
AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.

Fixed a possible memory leak in dispatcher error path. On error, delete
the mutex object created during method mutex creation. Reported by
tim.gardner@canonical.com.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Previous Release:
    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
  Current Release:
    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Disallow a method call as argument to the ObjectType ASL operator.
This change tracks an errata to the ACPI 5.0 document. The AML grammar
will not allow the interpreter to differentiate between a method and a
method invocation when these are used as an argument to the ObjectType
operator. The ACPI specification change is to disallow a method
invocation
(UserTerm) for the ObjectType operator.

Finish support for the TPM2 and CSRT tables in the headers, table
compiler, and disassembler.

Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
always expires immediately if the semaphore is not available. The
original
code was using a relative-time timeout, but sem_timedwait requires the
use
of an absolute time.

iASL: Added a remark if the Timer() operator is used within a 32-bit
table. This operator returns a 64-bit time value that will be truncated
within a 32-bit table.

iASL Source code restructuring: Cleanup to improve modularity. The
following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
aslmethod.c, and aslfileio.c. Associated makefiles and project files have
been updated.

----------------------------------------
14 November 2012. Summary of changes for version 20121114:

1) ACPICA Kernel-resident Subsystem:

Implemented a performance enhancement for ACPI/AML Package objects. This
change greatly increases the performance of Package objects within the
interpreter. It changes the processing of reference counts for packages
by
optimizing for the most common case where the package sub-objects are
either Integers, Strings, or Buffers. Increases the overall performance
of
the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
2X.)
Chao Guan. ACPICA BZ 943.

Implemented and deployed common macros to extract flag bits from resource
descriptors. Improves readability and maintainability of the code. Fixes
a
problem with the UART serial bus descriptor for the number of data bits
flags (was incorrectly 2 bits, should be 3).

Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
of the macros and changed the SETx macros to the style of (destination,
source). Also added ACPI_CASTx companion macros. Lv Zheng.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Previous Release:
    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
  Current Release:
    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total

2) iASL Compiler/Disassembler and Tools:

Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
adds the ShareAndWake and ExclusiveAndWake flags which were added to the
Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.

Disassembler: Fixed a problem with external declaration generation. Fixes
a problem where an incorrect pathname could be generated for an external
declaration if the original reference to the object includes leading
carats (^). ACPICA BZ 984.

Debugger: Completed a major update for the Disassemble<method> command.
This command was out-of-date and did not properly disassemble control
methods that had any reasonable complexity. This fix brings the command
up
to the same level as the rest of the disassembler. Adds one new file,
dmdeferred.c, which is existing code that is now common with the main
disassembler and the debugger disassemble command. ACPICA MZ 978.

iASL: Moved the parser entry prototype to avoid a duplicate declaration.
Newer versions of Bison emit this prototype, so moved the prototype out
of
the iASL header to where it is actually used in order to avoid a
duplicate
declaration.

iASL/Tools: Standardized use of the stream I/O functions:
  1) Ensure check for I/O error after every fopen/fread/fwrite
  2) Ensure proper order of size/count arguments for fread/fwrite
  3) Use test of (Actual != Requested) after all fwrite, and most fread
  4) Standardize I/O error messages
Improves reliability and maintainability of the code. Bob Moore, Lv
Zheng.
ACPICA BZ 981.

Disassembler: Prevent duplicate External() statements. During generation
of external statements, detect similar pathnames that are actually
duplicates such as these:
  External (\ABCD)
  External (ABCD)
Remove all leading '\' characters from pathnames during the external
statement generation so that duplicates will be detected and tossed.
ACPICA BZ 985.

Tools: Replace low-level I/O with stream I/O functions. Replace
open/read/write/close with the stream I/O equivalents
fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
Moore.

AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
name header so that AcpiXtract recognizes the output file/table.

iASL: Remove obsolete -2 option flag. Originally intended to force the
compiler/disassembler into an ACPI 2.0 mode, this was never implemented
and the entire concept is now obsolete.

----------------------------------------
18 October 2012. Summary of changes for version 20121018:

1) ACPICA Kernel-resident Subsystem:

Updated support for the ACPI 5.0 MPST table. Fixes some problems
introduced by late changes to the table as it was added to the ACPI 5.0
specification. Includes header, disassembler, and data table compiler
support as well as a new version of the MPST template.

AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
methods: _HID, _CID, and _UID.

Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
names for their various drivers. Affects the AcpiGetObjectInfo external
interface, and other internal interfaces as well.

Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
on machines that support non-aligned transfers. Optimizes for this case
rather than using a strncpy. With assistance from Zheng Lv.

Resource Manager: Small fix for buffer size calculation. Fixed a one byte
error in the output buffer calculation. Feng Tang. ACPICA BZ 849.

Added a new debug print message for AML mutex objects that are force-
released. At control method termination, any currently acquired mutex
objects are force-released. Adds a new debug-only message for each one
that is released.

Audited/updated all ACPICA return macros and the function debug depth
counter: 1) Ensure that all functions that use the various TRACE macros
also use the appropriate ACPICA return macros. 2) Ensure that all normal
return statements surround the return expression (value) with parens to
ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
Zheng Lv, Bob Moore. ACPICA Bugzilla 972.

Global source code changes/maintenance: All extra lines at the start and
end of each source file have been removed for consistency. Also, within
comments, all new sentences start with a single space instead of a double
space, again for consistency across the code base.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.

  Previous Release:
    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
  Current Release:
    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total

2) iASL Compiler/Disassembler and Tools:

AcpiExec: Improved the algorithm used for memory leak/corruption
detection. Added some intelligence to the code that maintains the global
list of allocated memory. The list is now ordered by allocated memory
address, significantly improving performance. When running AcpiExec on
the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
on the platform and/or the environment. Note, this performance
enhancement affects the AcpiExec utility only, not the kernel-resident
ACPICA code.

Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
incorrect table offset reported for invalid opcodes. Report the original
32-bit value for bad ACPI_NAMEs (as well as the repaired name.)

Disassembler: Enhanced the -vt option to emit the binary table data in
hex format to assist with debugging.

Fixed a potential filename buffer overflow in osunixdir.c. Increased the
size of file structure. Colin Ian King.

----------------------------------------
13 September 2012. Summary of changes for version 20120913:

1) ACPICA Kernel-resident Subsystem:

ACPI 5.0: Added two new notify types for the Hardware Error Notification
Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
and
MCE(6).

Table Manager: Merged/removed duplicate code in the root table resize
functions. One function is external, the other is internal. Lv Zheng,
ACPICA
BZ 846.

Makefiles: Completely removed the obsolete "Linux" makefiles under
acpica/generate/linux. These makefiles are obsolete and have been
replaced
by
the generic unix makefiles under acpica/generate/unix.

Makefiles: Ensure that binary files always copied properly. Minor rule
change
to ensure that the final binary output files are always copied up to the
appropriate binary directory (bin32 or bin64.)

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug
version of the code includes the debug output trace mechanism and has a
much
larger code and data size.

  Previous Release:
    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
  Current Release:
    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total

2) iASL Compiler/Disassembler and Tools:

Disassembler: Fixed a possible fault during the disassembly of resource
descriptors when a second parse is required because of the invocation of
external control methods within the table. With assistance from
adq@lidskialf.net. ACPICA BZ 976.

iASL: Fixed a namepath optimization problem. An error can occur if the
parse
node that contains the namepath to be optimized does not have a parent
node
that is a named object. This change fixes the problem.

iASL: Fixed a regression where the AML file is not deleted on errors. The
AML
output file should be deleted if there are any errors during the
compiler.
The
only exception is if the -f (force output) option is used. ACPICA BZ 974.

iASL: Added a feature to automatically increase internal line buffer
sizes.
Via realloc(), automatically increase the internal line buffer sizes as
necessary to support very long source code lines. The current version of
the
preprocessor requires a buffer long enough to contain full source code
lines.
This change increases the line buffer(s) if the input lines go beyond the
current buffer size. This eliminates errors that occurred when a source
code
line was longer than the buffer.

iASL: Fixed a problem with constant folding in method declarations. The
SyncLevel term is a ByteConstExpr, and incorrect code would be generated
if a
Type3 opcode was used.

Debugger: Improved command help support. For incorrect argument count,
display
full help for the command. For help command itself, allow an argument to
specify a command.

Test Suites: Several bug fixes for the ASLTS suite reduces the number of
errors during execution of the suite. Guan Chao.

----------------------------------------
16 August 2012. Summary of changes for version 20120816:

1) ACPICA Kernel-resident Subsystem:

Removed all use of the deprecated _GTS and _BFS predefined methods. The
_GTS
(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
deprecated and will probably be removed from the ACPI specification.
Windows
does not invoke them, and reportedly never will. The final nail in the
coffin
is that the ACPI specification states that these methods must be run with
interrupts off, which is not going to happen in a kernel interpreter.
Note:
Linux has removed all use of the methods also. It was discovered that
invoking these functions caused failures on some machines, probably
because
they were never tested since Windows does not call them. Affects two
external
interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
ACPICA BZ 969.

Implemented support for complex bit-packed buffers returned from the _PLD
(Physical Location of Device) predefined method. Adds a new external
interface, AcpiDecodePldBuffer that parses the buffer into a more usable
C
structure. Note: C Bitfields cannot be used for this type of predefined
structure since the memory layout of individual bitfields is not defined
by
the C language. In addition, there are endian concerns where a compiler
will
change the bitfield ordering based on the machine type. The new ACPICA
interface eliminates these issues, and should be called after _PLD is
executed. ACPICA BZ 954.

Implemented a change to allow a scope change to root (via "Scope (\)")
during
execution of module-level ASL code (code that is executed at table load
time.) Lin Ming.

Added the Windows8/Server2012 string for the _OSI method. This change
adds
a
new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
2012.

Added header support for the new ACPI tables DBG2 (Debug Port Table Type
2)
and CSRT (Core System Resource Table).

Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
names. This simplifies access to the buffers returned by these predefined
names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.

GPE support: Removed an extraneous parameter from the various low-level
internal GPE functions. Tang Feng.

Removed the linux makefiles from the unix packages. The generate/linux
makefiles are obsolete and have been removed from the unix tarball
release
packages. The replacement makefiles are under generate/unix, and there is
a
top-level makefile under the main acpica directory. ACPICA BZ 967, 912.

Updates for Unix makefiles:
1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
2) Update linker flags (move to end of command line) for AcpiExec
utility.
Guan Chao.

Split ACPICA initialization functions to new file, utxfinit.c. Split from
utxface.c to improve modularity and reduce file size.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a
much larger code and data size.

  Previous Release:
    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
  Current Release:
    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Fixed a problem with constant folding for fixed-length constant
expressions. The constant-folding code was not being invoked for constant
expressions that allow the use of type 3/4/5 opcodes to generate
constants
for expressions such as ByteConstExpr, WordConstExpr, etc. This could
result
in the generation of invalid AML bytecode. ACPICA BZ 970.

iASL: Fixed a generation issue on newer versions of Bison. Newer versions
apparently automatically emit some of the necessary externals. This
change
handles these versions in order to eliminate generation warnings.

Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.

Disassembler: Add support to decode _PLD buffers. The decoded buffer
appears
within comments in the output file.

Debugger: Fixed a regression with the "Threads" command where
AE_BAD_PARAMETER was always returned.

----------------------------------------
11 July 2012. Summary of changes for version 20120711:

1) ACPICA Kernel-resident Subsystem:

Fixed a possible fault in the return package object repair code. Fixes a
problem that can occur when a lone package object is wrapped with an
outer
package object in order to force conformance to the ACPI specification.
Can
affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
_DLM,
_CSD, _PSD, _TSD.

Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
ARB_DIS bit must be implemented in the host-dependent C3 processor power
state
support. Note, ARB_DIS is obsolete and only applies to older chipsets,
both
Intel and other vendors. (for Intel: ICH4-M and earlier)

This change removes the code to disable/enable bus master arbitration
during
suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
causes
resume problems on some machines. The change has been in use for over
seven
years within Linux.

Implemented two new external interfaces to support host-directed dynamic
ACPI
table load and unload. They are intended to simplify the host
implementation
of hot-plug support:
  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
table.
See the ACPICA reference for additional details. Adds one new file,
components/tables/tbxfload.c

Implemented and deployed two new interfaces for errors and warnings that
are
known to be caused by BIOS/firmware issues:
  AcpiBiosError: Prints "ACPI Firmware Error" message.
  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
Deployed these new interfaces in the ACPICA Table Manager code for ACPI
table
and FADT errors. Additional deployment to be completed as appropriate in
the
future. The associated conditional macros are ACPI_BIOS_ERROR and
ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
ACPICA
BZ
843.

Implicit notify support: ensure that no memory allocation occurs within a
critical region. This fix moves a memory allocation outside of the time
that a
spinlock is held. Fixes issues on systems that do not allow this
behavior.
Jung-uk Kim.

Split exception code utilities and tables into a new file,
utilities/utexcep.c

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug
version of the code includes the debug output trace mechanism and has a
much
larger code and data size.

  Previous Release:
    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
  Current Release:
    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
of
0. Jung-uk Kim.

Debugger: Enhanced the "tables" command to emit additional information
about
the current set of ACPI tables, including the owner ID and flags decode.

Debugger: Reimplemented the "unload" command to use the new
AcpiUnloadParentTable external interface. This command was disable
previously
due to need for an unload interface.

AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
option
will decode 16-bit hex status codes (ACPI_STATUS) to name strings.

----------------------------------------
20 June 2012. Summary of changes for version 20120620:

1) ACPICA Kernel-resident Subsystem:

Implemented support to expand the "implicit notify" feature to allow
multiple
devices to be notified by a single GPE. This feature automatically
generates a
runtime device notification in the absence of a BIOS-provided GPE control
method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
notify is
provided by ACPICA for Windows compatibility, and is a workaround for
BIOS
AML
code errors. See the description of the AcpiSetupGpeForWake interface in
the
APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.

Changed some comments and internal function names to simplify and ensure
correctness of the Linux code translation. No functional changes.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug
version of the code includes the debug output trace mechanism and has a
much
larger code and data size.

  Previous Release:
    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
  Current Release:
    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total

2) iASL Compiler/Disassembler and Tools:

Disassembler: Added support to emit short, commented descriptions for the
ACPI
predefined names in order to improve the readability of the disassembled
output. ACPICA BZ 959. Changes include:
  1) Emit descriptions for all standard predefined names (_INI, _STA,
_PRW,
etc.)
  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
etc.)

AcpiSrc: Fixed several long-standing Linux code translation issues.
Argument
descriptions in function headers are now translated properly to lower
case
and
underscores. ACPICA BZ 961. Also fixes translation problems such as
these:
(old -> new)
  i_aSL -> iASL
  00-7_f -> 00-7F
  16_k -> 16K
  local_fADT -> local_FADT
  execute_oSI -> execute_OSI

iASL: Fixed a problem where null bytes were inadvertently emitted into
some
listing files.

iASL: Added the existing debug options to the standard help screen. There
are
no longer two different help screens. ACPICA BZ 957.

AcpiHelp: Fixed some typos in the various predefined name descriptions.
Also
expand some of the descriptions where appropriate.

iASL: Fixed the -ot option (display compile times/statistics). Was not
working
properly for standard output; only worked for the debug file case.

----------------------------------------
18 May 2012. Summary of changes for version 20120518:

1) ACPICA Core Subsystem:

Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
defined
to block until asynchronous events such as notifies and GPEs have
completed.
Within ACPICA, it is only called before a notify or GPE handler is
removed/uninstalled. It also may be useful for the host OS within related
drivers such as the Embedded Controller driver. See the ACPICA reference
for
additional information. ACPICA BZ 868.

ACPI Tables: Added a new error message for a possible overflow failure
during
the conversion of FADT 32-bit legacy register addresses to internal
common
64-
bit GAS structure representation. The GAS has a one-byte "bit length"
field,
thus limiting the register length to 255 bits. ACPICA BZ 953.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug
version of the code includes the debug output trace mechanism and has a
much
larger code and data size.

  Previous Release:
    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
  Current Release:
    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
macro.
This keyword was added late in the ACPI 5.0 release cycle and was not
implemented until now.

Disassembler: Added support for Operation Region externals. Adds missing
support for operation regions that are defined in another table, and
referenced locally via a Field or BankField ASL operator. Now generates
the
correct External statement.

Disassembler: Several additional fixes for the External() statement
generation
related to some ASL operators. Also, order the External() statements
alphabetically in the disassembler output. Fixes the External()
generation
for
the Create* field, Alias, and Scope operators:
 1) Create* buffer field operators - fix type mismatch warning on
disassembly
 2) Alias - implement missing External support
 3) Scope - fix to make sure all necessary externals are emitted.

iASL: Improved pathname support. For include files, merge the prefix
pathname
with the file pathname and eliminate unnecessary components. Convert
backslashes in all pathnames to forward slashes, for readability. Include
file
pathname changes affect both #include and Include() type operators.

iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
end
of a valid line by inserting a newline and then returning the EOF during
the
next call to GetNextLine. Prevents the line from being ignored due to EOF
condition.

iASL: Implemented some changes to enhance the IDE support (-vi option.)
Error
and Warning messages are now correctly recognized for both the source
code
browser and the global error and warning counts.

----------------------------------------
20 April 2012. Summary of changes for version 20120420:

1) ACPICA Core Subsystem:

Implemented support for multiple notify handlers. This change adds
support
to
allow multiple system and device notify handlers on Device, Thermal Zone,
and
Processor objects. This can simplify the host OS notification
implementation.
Also re-worked and restructured the entire notify support code to
simplify
handler installation, handler removal, notify event queuing, and notify
dispatch to handler(s). Note: there can still only be two global notify
handlers - one for system notifies and one for device notifies. There are
no
changes to the existing handler install/remove interfaces. Lin Ming, Bob
Moore, Rafael Wysocki.

Fixed a regression in the package repair code where the object reference
count was calculated incorrectly. Regression was introduced in the commit
"Support to add Package wrappers".

Fixed a couple possible memory leaks in the AML parser, in the error
recovery
path. Jesper Juhl, Lin Ming.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a
much larger code and data size.

  Previous Release:
    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
  Current Release:
    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Fixed a problem with the resource descriptor support where the
length
of the StartDependentFn and StartDependentFnNoPrio descriptors were not
included in cumulative descriptor offset, resulting in incorrect values
for
resource tags within resource descriptors appearing after a
StartDependent*
descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.

iASL and Preprocessor: Implemented full support for the #line directive
to
correctly track original source file line numbers through the .i
preprocessor
output file - for error and warning messages.

iASL: Expand the allowable byte constants for address space IDs.
Previously,
the allowable range was 0x80-0xFF (user-defined spaces), now the range is
0x0A-0xFF to allow for custom and new IDs without changing the compiler.

iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.

iASL: Add option to completely disable the preprocessor (-Pn).

iASL: Now emit all error/warning messages to standard error (stderr) by
default (instead of the previous stdout).

ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
Update
for resource descriptor offset fix above. Update/cleanup error output
routines. Enable and send iASL errors/warnings to an error logfile
(error.txt). Send all other iASL output to a logfile (compiler.txt).
Fixed
several extraneous "unrecognized operator" messages.

----------------------------------------
20 March 2012. Summary of changes for version 20120320:

1) ACPICA Core Subsystem:

Enhanced the sleep/wake interfaces to optionally execute the _GTS method
(Going To Sleep) and the _BFS method (Back From Sleep). Windows
apparently
does not execute these methods, and therefore these methods are often
untested. It has been seen on some systems where the execution of these
methods causes errors and also prevents the machine from entering S5. It
is
therefore suggested that host operating systems do not execute these
methods
by default. In the future, perhaps these methods can be optionally
executed
based on the age of the system and/or what is the newest version of
Windows
that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
and
AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
Ming.

Fixed a problem where the length of the local/common FADT was set too
early.
The local FADT table length cannot be set to the common length until the
original length has been examined. There is code that checks the table
length
and sets various fields appropriately. This can affect older machines
with
early FADT versions. For example, this can cause inadvertent writes to
the
CST_CNT register. Julian Anastasov.

Fixed a mapping issue related to a physical table override. Use the
deferred
mapping mechanism for tables loaded via the physical override OSL
interface.
This allows for early mapping before the virtual memory manager is
available.
Thomas Renninger, Bob Moore.

Enhanced the automatic return-object repair code: Repair a common problem
with
predefined methods that are defined to return a variable-length Package
of
sub-objects. If there is only one sub-object, some BIOS ASL code
mistakenly
simply returns the single object instead of a Package with one sub-
object.
This new support will repair this error by wrapping a Package object
around
the original object, creating the correct and expected Package with one
sub-
object. Names that can be repaired in this manner include: _ALR, _CSD,
_HPX,
_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
939.

Changed the exception code returned for invalid ACPI paths passed as
parameters to external interfaces such as AcpiEvaluateObject. Was
AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug
version of the code includes the debug output trace mechanism and has a
much
larger code and data size.

  Previous Release:
    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
  Current Release:
    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total

2) iASL Compiler/Disassembler and Tools:

iASL: Added the infrastructure and initial implementation of a integrated
C-
like preprocessor. This will simplify BIOS development process by
eliminating
the need for a separate preprocessing step during builds. On Windows, it
also
eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
features including full #define() macro support are still under
development.
These preprocessor directives are supported:
    #define
    #elif
    #else
    #endif
    #error
    #if
    #ifdef
    #ifndef
    #include
    #pragma message
    #undef
    #warning
In addition, these new command line options are supported:
    -D <symbol> Define symbol for preprocessor use
    -li         Create preprocessed output file (*.i)
    -P          Preprocess only and create preprocessor output file (*.i)

Table Compiler: Fixed a problem where the equals operator within an
expression
did not work properly.

Updated iASL to use the current versions of Bison/Flex. Updated the
Windows
project file to invoke these tools from the standard location. ACPICA BZ
904.
Versions supported:
    Flex for Windows:  V2.5.4
    Bison for Windows: V2.4.1

----------------------------------------
15 February 2012. Summary of changes for version 20120215:

1) ACPICA Core Subsystem:

There have been some major changes to the sleep/wake support code, as
described below (a - e).

a) The AcpiLeaveSleepState has been split into two interfaces, similar to
AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
AcpiLeaveSleepStatePrep. This allows the host to perform actions between
the
time the _BFS method is called and the _WAK method is called. NOTE: all
hosts
must update their wake/resume code or else sleep/wake will not work
properly.
Rafael Wysocki.

b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
_WAK
method. Some machines require that the GPEs are enabled before the _WAK
method
is executed. Thomas Renninger.

c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
bit.
Some BIOS code assumes that WAK_STS will be cleared on resume and use it
to
determine whether the system is rebooting or resuming. Matthew Garrett.

d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
Sleep) to
match the ACPI specification requirement. Rafael Wysocki.

e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
registers within the V5 FADT. This support adds two new files:
hardware/hwesleep.c implements the support for the new registers. Moved
all
sleep/wake external interfaces to hardware/hwxfsleep.c.

Added a new OSL interface for ACPI table overrides,
AcpiOsPhysicalTableOverride. This interface allows the host to override a
table via a physical address, instead of the logical address required by
AcpiOsTableOverride. This simplifies the host implementation. Initial
implementation by Thomas Renninger. The ACPICA implementation creates a
single
shared function for table overrides that attempts both a logical and a
physical override.

Expanded the OSL memory read/write interfaces to 64-bit data
(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
transfer support for GAS register structures passed to AcpiRead and
AcpiWrite.

Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
custom
build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
model.
See the ACPICA reference for details. ACPICA BZ 942. This option removes
about
10% of the code and 5% of the static data, and the following hardware
ACPI
features become unavailable:
    PM Event and Control registers
    SCI interrupt (and handler)
    Fixed Events
    General Purpose Events (GPEs)
    Global Lock
    ACPI PM timer
    FACS table (Waking vectors and Global Lock)

Updated the unix tarball directory structure to match the ACPICA git
source
tree. This ensures that the generic unix makefiles work properly (in
generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
867.

Updated the return value of the _REV predefined method to integer value 5
to
reflect ACPI 5.0 support.

Moved the external ACPI PM timer interface prototypes to the public
acpixf.h
file where they belong.

Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug
version of the code includes the debug output trace mechanism and has a
much
larger code and data size.

  Previous Release:
    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
  Current Release:
    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total

2) iASL Compiler/Disassembler and Tools:

Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
incorrectly displayed.

AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
specification.

----------------------------------------
11 January 2012. Summary of changes for version 20120111:

1) ACPICA Core Subsystem:

Implemented a new mechanism to allow host device drivers to check for
address
range conflicts with ACPI Operation Regions. Both SystemMemory and
SystemIO
address spaces are supported. A new external interface,
AcpiCheckAddressRange,
allows drivers to check an address range against the ACPI namespace. See
the
ACPICA reference for additional details. Adds one new file,
utilities/utaddress.c. Lin Ming, Bob Moore.

Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
Control
and

Files:
RevisionActionfile
1.3modifypkgsrc/sysutils/acpica-utils/DESCR
1.9modifypkgsrc/sysutils/acpica-utils/Makefile
1.4modifypkgsrc/sysutils/acpica-utils/PLIST
1.7modifypkgsrc/sysutils/acpica-utils/distinfo
1.1.1.1removepkgsrc/sysutils/acpica-utils/files/LICENSE