History log of /netbsd/sys/external/bsd/acpica/dist/utilities/utdelete.c (Results 1 – 18 of 18)
Revision Date Author Comments
# ec12a2fa 27-Aug-2022 christos <christos@NetBSD.org>

merge conflicts between acpica-20211217 and acpica-20220331


# bff9fc28 18-Dec-2021 christos <christos@NetBSD.org>

merge changes from acpica-20210930 to acpica-20211217


# 79828540 06-Jul-2021 christos <christos@NetBSD.org>

merge changes for acpica-20210604


# adee7055 03-Apr-2021 christos <christos@NetBSD.org>

Merge local changes with acpica-20210331


# cf9af4fa 02-Aug-2020 christos <christos@NetBSD.org>

merge conflicts


# bd973ebc 28-Mar-2020 christos <christos@NetBSD.org>

merge conflicts


# f5a85da7 29-Apr-2019 christos <christos@NetBSD.org>

merge conflicts


# dab10b95 18-Aug-2018 christos <christos@NetBSD.org>

merge conflicts


# a82ffdcf 18-Aug-2018 christos <christos@NetBSD.org>

----------------------------------------
10 August 2018. Summary of changes for version 20180810:


1) ACPICA kernel-resident subsystem:

Initial ACPI table loading: Attempt to continue loading ACPI

----------------------------------------
10 August 2018. Summary of changes for version 20180810:


1) ACPICA kernel-resident subsystem:

Initial ACPI table loading: Attempt to continue loading ACPI tables
regardless of malformed AML. Since migrating table initialization to the
new module-level code support, the AML interpreter rejected tables upon
any ACPI error encountered during table load. This is a problem because
non-serious ACPI errors during table load do not necessarily mean that
the entire definition block (DSDT or SSDT) is invalid. This change
improves the table loading by ignoring some types of errors that can be
generated by incorrect AML. This can range from object type errors, scope
errors, and index errors.

Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
during suspend/resume. The status of ACPI events is no longer cleared
when entering the ACPI S5 system state (power off) which caused some
systems to power up immediately after turning off power in certain
situations. This was a functional regression. It was fixed by clearing
the status of all ACPI events again when entering S5 (for system-wide
suspend or hibernation the clearing of the status of all events is not
desirable, as it might cause the kernel to miss wakeup events sometimes).
Rafael Wysocki.


2) iASL Compiler/Disassembler and Tools:

AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
elements listed in the initialization file were previously initialized
after the table load and before executing module-level code blocks.
Recent changes in the module-level code support means that the table load
becomes a large control method execution. If fields are used within
module-level code and we are executing with the -fi option, the
initialization values were used to initialize the namespace object(s)
only after the table was finished loading. This change Provides an early
initialization of objects specified in the initialization file so that
field unit values are populated during the table load (not after the
load).

AcpiExec: Fixed a small memory leak regression that could result in
warnings during exit of the utility. These warnings were similar to
these:
0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001

----------------------------------------
29 June 2018. Summary of changes for version 20180629:


1) iASL Compiler/Disassembler and Tools:

iASL: Fixed a regression related to the use of the ASL External
statement. Error checking for the use of the External() statement has
been relaxed. Previously, a restriction on the use of External meant that
the referenced named object was required to be defined in a different
table (an SSDT). Thus it would be an error to declare an object as an
external and then define the same named object in the same table. For
example:
DefinitionBlock (...)
{
External (DEV1)
Device (DEV1){...} // This was an error
}
However, this behavior has caused regressions in some existing ASL code,
because there is code that depends on named objects and externals (with
the same name) being declared in the same table. This change will allow
the ASL code above to compile without errors or warnings.

iASL: Implemented ASL language extensions for four operators to make some
of their arguments optional instead of required:
1) Field (RegionName, AccessType, LockRule, UpdateRule)
2) BankField (RegionName, BankName, BankValue,
AccessType, LockRule, UpdateRule)
3) IndexField (IndexName, DataName,
AccessType, LockRule, UpdateRule)
For the Field operators above, the AccessType, LockRule, and UpdateRule
are now optional arguments. The default values are:
AccessType: AnyAcc
LockRule: NoLock
UpdateRule: Preserve
4) Mutex (MutexName, SyncLevel)
For this operator, the SyncLevel argument is now optional. This argument
is rarely used in any meaningful way by ASL code, and thus it makes sense
to make it optional. The default value is:
SyncLevel: 0

iASL: Attempted use of the ASL Unload() operator now results in the
following warning:
"Unload is not supported by all operating systems"
This is in fact very true, and the Unload operator may be completely
deprecated in the near future.

AcpiExec: Fixed a regression for the -fi option (Namespace initialization
file. Recent changes in the ACPICA module-level code support altered the
table load/initialization sequence . This means that the table load has
become a large method execution of the table itself. If Operation Region
Fields are used within any module-level code and the -fi option was
specified, the initialization values were populated only after the table
had completely finished loading (and thus the module-level code had
already been executed). This change moves the initialization of objects
listed in the initialization file to before the table is executed as a
method. Field unit values are now initialized before the table execution
is performed.

----------------------------------------
31 May 2018. Summary of changes for version 20180531:


1) ACPICA kernel-resident Subsystem:

Implemented additional support to help ensure that a DSDT or SSDT is
fully loaded even if errors are incurred during the load. The majority of
the problems that are seen is the failure of individual AML operators
that occur during execution of any module-level code (MLC) existing in
the table. This support adds a mechanism to abort the current ASL
statement (AML opcode), emit an error message, and to simply move on to
the next opcode -- instead of aborting the entire table load. This is
different than the execution of a control method where the entire method
is aborted upon any error. The goal is to perform a very "best effort" to
load the ACPI tables. The most common MLC errors that have been seen in
the field are direct references to unresolved ASL/AML symbols (referenced
directly without the use of the CondRefOf operator to validate the
symbol). This new ACPICA behavior is now compatible with other ACPI
implementations.

Interpreter: The Unload AML operator is no longer supported for the
reasons below. An AE_NOT_IMPLEMENTED exception is returned.
1) A correct implementation on at least some hosts may not be possible.
2) Other ACPI implementations do not correctly/fully support it.
3) It requires host device driver support which is not known to exist.
(To properly support namespace unload out from underneath.)
4) This AML operator has never been seen in the field.

Parser: Added a debug option to dump AML parse sub-trees as they are
being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
ACPI_DB_PARSE_TREES.

Debugger: Reduced the verbosity for errors incurred during table load and
module-level code execution.

Completed an investigation into adding a namespace node "owner list"
instead of the current "owner ID" associated with namespace nodes. This
list would link together all nodes that are owned by an individual
control method. The purpose would be to enhance control method execution
by speeding up cleanup during method exit (all namespace nodes created by
a method are deleted upon method termination.) Currently, the entire
namespace must be searched for matching owner IDs if (and only if) the
method creates named objects outside of the local scope. However, by far
the most common case is that methods create objects locally, not outside
the method scope. There is already an ACPICA optimization in place that
only searches the entire namespace in the rare case of a method creating
objects elsewhere in the namespace. Therefore, it is felt that the
overhead of adding an additional pointer to each namespace node to
implement the owner list makes this feature unnecessary.


2) iASL Compiler/Disassembler and Tools:

iASL, Disassembler, and Template generator: Implemented support for
Revision D of the IORT table. Adds a new subtable that is used to specify
SMMUv3 PMCGs. rmurphy-arm.

Disassembler: Restored correct table header validation for the "special"
ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
table header and must be special-cased. This was a regression that has
been present for apparently a long time.

AcpiExec: Reduced verbosity of the local exception handler implemented
within acpiexec. This handler is invoked by ACPICA upon any exceptions
generated during control method execution. A new option was added: -vh
restores the original verbosity level if desired.

AcpiExec: Changed the default base from decimal to hex for the -x option
(set debug level). This simplifies the use of this option and matches the
behavior of the corresponding iASL -x option.

AcpiExec: Restored a force-exit on multiple control-c (sigint)
interrupts. This allows program termination even if other issues cause
the control-c to fail.

ASL test suite (ASLTS): Added tests for the recently implemented package
element resolution mechanism that allows forward references to named
objects from individual package elements (this mechanism provides
compatibility with other ACPI implementations.)


----------------------------------------
8 May 2018. Summary of changes for version 20180508:


1) ACPICA kernel-resident subsystem:

Completed the new (recently deployed) package resolution mechanism for
the Load and LoadTable ASL/AML operators. This fixes a regression that
was introduced in version 20180209 that could result in an
AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
(SSDT) that contains package objects.


2) iASL Compiler/Disassembler and Tools:

AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
1 MB. This change allows for table offsets within the acpidump file to be
up to 8 characters. These changes are backwards compatible with existing
acpidump files.

show more ...


# e32744fc 07-Apr-2018 christos <christos@NetBSD.org>

----------------------------------------
13 March 2018. Summary of changes for version 20180313:


1) ACPICA kernel-resident subsystem:

Implemented various improvements to the GPE support:

1) Dispa

----------------------------------------
13 March 2018. Summary of changes for version 20180313:


1) ACPICA kernel-resident subsystem:

Implemented various improvements to the GPE support:

1) Dispatch all active GPEs at initialization time so that no GPEs are
lost.
2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
before devices are enumerated.
3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
IRQs are not lost.
4) Add parallel GPE handling to eliminate the possibility of dispatching
the same GPE twice.
5) Dispatch any pending GPEs after enabling for the first time.

AcpiGetObjectInfo - removed support for the _STA method. This was causing
problems on some platforms.

Added a new _OSI string, "Windows 2017.2".

Cleaned up and simplified the module-level code support. These changes
are in preparation for the eventual removal of the legacy MLC support
(deferred execution), replaced by the new MLC architecture which executes
the MLC as a table is loaded (DSDT/SSDTs).

Changed a compile-time option to a runtime option. Changes the option to
ignore ACPI table load-time package resolution errors into a runtime
option. Used only for platforms that generate many AE_NOT_FOUND errors
during boot. AcpiGbl_IgnorePackageResolutionErrors.

Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
compilation errors from unused variables (seen with some compilers).


2) iASL Compiler/Disassembler and Tools:

ASLTS: parallelized execution in order to achieve an (approximately) 2X
performance increase.

ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
error reporting.

----------------------------------------
09 February 2018. Summary of changes for version 20180209:


1) ACPICA kernel-resident subsystem:

Completed the final integration of the recent changes to Package Object
handling and the module-level AML code support. This allows forward
references from individual package elements when the package object is
declared from within module-level code blocks. Provides compatibility
with other ACPI implementations.

The new architecture for the AML module-level code has been completed and
is now the default for the ACPICA code. This new architecture executes
the module-level code in-line as the ACPI table is loaded/parsed instead
of the previous architecture which deferred this code until after the
table was fully loaded. This solves some ASL code ordering issues and
provides compatibility with other ACPI implementations. At this time,
there is an option to fallback to the earlier architecture, but this
support is deprecated and is planned to be completely removed later this
year.

Added a compile-time option to ignore AE_NOT_FOUND exceptions during
resolution of named reference elements within Package objects. Although
this is potentially a serious problem, it can generate a lot of
noise/errors on platforms whose firmware carries around a bunch of unused
Package objects. To disable these errors, define
ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
errors are always reported for ACPICA applications such as AcpiExec.

Fixed a regression related to the explicit type-conversion AML operators
(ToXXXX). The regression was introduced early in 2017 but was not seen
until recently because these operators are not fully supported by other
ACPI implementations and are thus rarely used by firmware developers. The
operators are defined by the ACPI specification to not implement the
"implicit result object conversion". The regression incorrectly
introduced this object conversion for the following explicit conversion
operators:
ToInteger
ToString
ToBuffer
ToDecimalString
ToHexString
ToBCD
FromBCD


2) iASL Compiler/Disassembler and Tools:

iASL: Fixed a problem with the compiler constant folding feature as
related to the ToXXXX explicit conversion operators. These operators do
not support the "implicit result object conversion" by definition. Thus,
ASL expressions that use these operators cannot be folded to a simple
Store operator because Store implements the implicit conversion. This
change uses the CopyObject operator for the ToXXXX operator folding
instead. CopyObject is defined to not implement implicit result
conversions and is thus appropriate for folding the ToXXXX operators.

iASL: Changed the severity of an error condition to a simple warning for
the case where a symbol is declared both locally and as an external
symbol. This accommodates existing ASL code.

AcpiExec: The -ep option to enable the new architecture for module-level
code has been removed. It is replaced by the -dp option which instead has
the opposite effect: it disables the new architecture (the default) and
enables the legacy architecture. When the legacy code is removed in the
future, the -dp option will be removed also.

----------------------------------------
05 January 2018. Summary of changes for version 20180105:


1) ACPICA kernel-resident subsystem:

Updated all copyrights to 2018. This affects all source code modules.

Fixed a possible build error caused by an unresolved reference to the
AcpiUtSafeStrncpy function.

Removed NULL pointer arithmetic in the various pointer manipulation
macros. All "(void *) NULL" constructs are converted to "(void *) 0".
This eliminates warnings/errors in newer C compilers. Jung-uk Kim.

Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
Mittal.


2) iASL Compiler/Disassembler and Tools:

ASLTS: Updated all copyrights to 2018.

Tools: Updated all signon copyrights to 2018.

AcpiXtract: Fixed a regression related to ACPI table signatures where the
signature was truncated to 3 characters (instead of 4).

AcpiExec: Restore the original terminal mode after the use of the -v and
-vd options.

ASLTS: Deployed the iASL __METHOD__ macro across the test suite.

----------------------------------------
14 December 2017. Summary of changes for version 20171214:


1) ACPICA kernel-resident subsystem:

Fixed a regression in the external (public) AcpiEvaluateObjectTyped
interface where the optional "pathname" argument had inadvertently become
a required argument returning an error if omitted (NULL pointer
argument).

Fixed two possible memory leaks related to the recently developed "late
resolution" of reference objects within ASL Package Object definitions.

Added two recently defined _OSI strings: "Windows 2016" and "Windows
2017". Mario Limonciello.

Implemented and deployed a safer version of the C library function
strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the
creation of unterminated strings as a possible result of a standard
strncpy.

Cleaned up and restructured the global variable file (acglobal.h). There
are many changes, but no functional changes.


2) iASL Compiler/Disassembler and Tools:

iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
optional OemData field at the end of the table was incorrectly required
for proper compilation. It is now correctly an optional field.

ASLTS: The entire suite was converted from standard ASL to the ASL+
language, using the ASL-to-ASL+ converter which is integrated into the
iASL compiler. A binary compare of all output files has verified the
correctness of the conversion.

iASL: Fixed the source code build for platforms where "char" is unsigned.
This affected the iASL lexer only. Jung-uk Kim.

show more ...


# ab389a9f 25-Jan-2017 christos <christos@NetBSD.org>

One more time in the right place...

----------------------------------------
19 January 2017. Summary of changes for version 20170119:

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

1)

One more time in the right place...

----------------------------------------
19 January 2017. Summary of changes for version 20170119:

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

1) General ACPICA software:

Entire source code base: Added the 2017 copyright to all source code
legal/licensing module headers and utility/tool signons. This includes
the standard Linux dual-license header. This affects virtually every file
in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
the ACPICA test suite.


2) iASL Compiler/Disassembler and Tools:

iASL: Removed/fixed an inadvertent remark when a method argument
containing a reference is used as a target operand within the method (and
never used as a simple argument), as in the example below. Jeffrey Hugo.

dsdt.asl 1507: Store(0x1, Arg0)
Remark 2146 - ^ Method Argument is never used (Arg0)

All tools: Removed the bit width of the compiler that generated the tool
from the common signon for all user space tools. This proved to be
confusing and unnecessary. This includes similar removal of HARDWARE_NAME
from the generic makefiles (Thomas Petazzoni). Example below.

Old:
ASL+ Optimizing Compiler version 20170119-32
ASL+ Optimizing Compiler version 20170119-64

New:
ASL+ Optimizing Compiler version 20170119

----------------------------------------
22 December 2016. Summary of changes for version 20161222:


1) ACPICA kernel-resident subsystem:

AML Debugger: Implemented a new mechanism to simplify and enhance
debugger integration into all environments, including kernel debuggers
and user-space utilities, as well as remote debug services. This
mechanism essentially consists of new OSL interfaces to support debugger
initialization/termination, as well as wait/notify interfaces to perform
the debugger handshake with the host. Lv Zheng.

New OSL interfaces:
AcpiOsInitializeDebugger (void)
AcpiOsTerminateDebugger (void)
AcpiOsWaitCommandReady (void)
AcpiOsNotifyCommandComplete (void)

New OS services layer:
osgendbg.c -- Example implementation, and used for AcpiExec

Update for Generic Address Space (GAS) support: Although the AccessWidth
and/or BitOffset fields of the GAS are not often used, this change now
fully supports these fields. This affects the internal support for FADT
registers, registers in other ACPI data tables, and the AcpiRead and
AcpiWrite public interfaces. Lv Zheng.

Sleep support: In order to simplify integration of ACPI sleep for the
various host operating systems, a new OSL interface has been introduced.
AcpiOsEnterSleep allows the host to perform any required operations
before the final write to the sleep control register(s) is performed by
ACPICA. Lv Zheng.

New OSL interface:
AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)

Called from these internal interfaces:
AcpiHwLegacySleep
AcpiHwExtendedSleep

EFI support: Added a very small EFI/ACPICA example application. Provides
a simple demo for EFI integration, as well as assisting with resolution
of issues related to customer ACPICA/EFI integration. Lv Zheng. See:

source/tools/efihello/efihello.c

Local C library: Implemented several new functions to enhance ACPICA
portability, for environments where these clib functions are not
available (such as EFI). Lv Zheng:
putchar
getchar
strpbrk
strtok
memmove

Fixed a regression where occasionally a valid resource descriptor was
incorrectly detected as invalid at runtime, and a
AE_AML_NO_RESOURCE_END_TAG was returned.

Fixed a problem with the recently implemented support that enables
control method invocations as Target operands to many ASL operators.
Warnings of this form: "Needed type [Reference], found [Processor]" were
seen at runtime for some method invocations.

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

Current Release:
Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
Debug Version: 201.7K Code, 82.7K Data, 284.4K Total
Previous Release:
Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
Debug Version: 201.3K Code, 82.7K Data, 284.0K Total


2) iASL Compiler/Disassembler and Tools:

Disassembler: Enhanced output by adding the capability to detect and
disassemble ASL Switch/Case statements back to the original ASL source
code instead of if/else blocks. David Box.

AcpiHelp: Split a large file into separate files based upon
functionality/purpose. New files are:
ahaml.c
ahasl.c

----------------------------------------
17 November 2016. Summary of changes for version 20161117:


1) ACPICA kernel-resident subsystem:

Table Manager: Fixed a regression introduced in 20160729, "FADT support
cleanup". This was an attempt to remove all references in the source to
the FADT version 2, which never was a legal version number. It was
skipped because it was an early version of 64-bit support that was
eventually abandoned for the current 64-bit support.

Interpreter: Fixed a problem where runtime implicit conversion was
incorrectly disabled for the ASL operators below. This brings the
behavior into compliance with the ACPI specification:
FromBCD
ToBCD
ToDecimalString
ToHexString
ToInteger
ToBuffer

Table Manager: Added a new public interface, AcpiPutTable, used to
release and free an ACPI table returned by AcpiGetTable and related
interfaces. Lv Zheng.

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

Current Release:
Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
Previous Release:
Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
Debug Version: 200.7K Code, 82.1K Data, 282.8K Total


2) iASL Compiler/Disassembler and Tools:

Disassembler: Fixed a regression for disassembly of Resource Template.
Detection of templates in the AML stream missed some types of templates.

iASL: Fixed a problem where an Access Size error was returned for the PCC
address space when the AccessSize of the GAS register is greater than a
DWORD. Hoan Tran.

iASL: Implemented several grammar changes for the operators below. These
changes are slated for the next version of the ACPI specification:
RefOf - Disallow method invocation as an operand
CondRefOf - Disallow method invocation as an operand
DerefOf - Disallow operands that use the result from operators
that
do not return a reference (Changed TermArg to
SuperName).

iASL: Control method invocations are now allowed for Target operands, as
per the ACPI specification. Removed error for using a control method
invocation as a Target operand.

Disassembler: Improved detection of Resource Templates, Unicode, and
Strings within Buffer objects. These subtypes do not contain a specific
opcode to indicate the originating ASL code, and they must be detected by
other means within the disassembler.

iASL: Implemented an optimization improvement for 32-bit ACPI tables
(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
only after 64-bit to 32-bit truncation. A truncation warning message is
still emitted, however.

AcpiXtract: Implemented handling for both types of line terminators (LF
or CR/LF) so that it can accept AcpiDump output files from any system.
Peter Wu.

AcpiBin: Added two new options for comparing AML files:
-a: compare and display ALL mismatches
-o: start compare at this offset into the second file

show more ...


# 5fe1040d 09-Jan-2016 christos <christos@NetBSD.org>

import new acpica:

----------------------------------------
8 January 2016. Summary of changes for version 20160108:

1) ACPICA kernel-resident subsystem:

Updated all ACPICA copyrights and signons

import new acpica:

----------------------------------------
8 January 2016. Summary of changes for version 20160108:

1) ACPICA kernel-resident subsystem:

Updated all ACPICA copyrights and signons to 2016: Added the 2016
copyright to all source code module headers and utility/tool signons.
This includes the standard Linux dual-license header. This affects
virtually every file in the ACPICA core subsystem, iASL compiler, all
ACPICA utilities, and the ACPICA test suite.

Fixed a regression introduced in version 20151218 concerning the
execution of so-called module-level ASL/AML code. Namespace objects
created under a module-level If() construct were not properly/fully
entered into the namespace and could cause an interpreter fault when
accessed.

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

Current Release:
Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
Debug Version: 200.4K Code, 81.9K Data, 282.4K Total
Previous Release:
Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
Debug Version: 200.3K Code, 81.9K Data, 282.3K Total


2) iASL Compiler/Disassembler and Tools:

Fixed a problem with the compilation of the GpioIo and GpioInt resource
descriptors. The _PIN field name was incorrectly defined to be an array
of 32-bit values, but the _PIN values are in fact 16 bits each. This
would cause incorrect bit width warnings when using Word (16-bit) fields
to access the descriptors.


----------------------------------------
18 December 2015. Summary of changes for version 20151218:

1) ACPICA kernel-resident subsystem:

Implemented per-AML-table execution of "module-level code" as individual
ACPI tables are loaded into the namespace during ACPICA initialization.
In other words, any module-level code within an AML table is executed
immediately after the table is loaded, instead of batched and executed
after all of the tables have been loaded. This provides compatibility
with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
David Box.

To fully support the feature above, the default operation region handlers
for the SystemMemory, SystemIO, and PCI_Config address spaces are now
installed before any ACPI tables are loaded. This enables module-level
code to access these address spaces during the table load and module-
level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
Box.

Implemented several changes to the internal _REG support in conjunction
with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
utilities for the changes above. Although these tools were changed, host
operating systems that simply use the default handlers for SystemMemory,
SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.

For example, in the code below, DEV1 is conditionally added to the
namespace by the DSDT via module-level code that accesses an operation
region. The SSDT references DEV1 via the Scope operator. DEV1 must be
created immediately after the DSDT is loaded in order for the SSDT to
successfully reference DEV1. Previously, this code would cause an
AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
fully supported by ACPICA.

DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
{
OperationRegion (OPR1, SystemMemory, 0x400, 32)
Field (OPR1, AnyAcc, NoLock, Preserve)
{
FLD1, 1
}
If (FLD1)
{
Device (\DEV1)
{
}
}
}
DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
{
External (\DEV1, DeviceObj)
Scope (\DEV1)
{
}
}

Fixed an AML interpreter problem where control method invocations were
not handled correctly when the invocation was itself a SuperName argument
to another ASL operator. In these cases, the method was not invoked.
ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
argument:
Store
Acquire, Wait
CondRefOf, RefOf
Decrement, Increment
Load, Unload
Notify
Signal, Release, Reset
SizeOf

Implemented automatic String-to-ObjectReference conversion support for
packages returned by predefined names (such as _DEP). A common BIOS error
is to add double quotes around an ObjectReference namepath, which turns
the reference into an unexpected string object. This support detects the
problem and corrects it before the package is returned to the caller that
invoked the method. Lv Zheng.

Implemented extensions to the Concatenate operator. Concatenate now
accepts any type of object, it is not restricted to simply
Integer/String/Buffer. For objects other than these 3 basic data types,
the argument is treated as a string containing the name of the object
type. This expands the utility of Concatenate and the Printf/Fprintf
macros. ACPICA BZ 1222.

Cleaned up the output of the ASL Debug object. The timer() value is now
optional and no longer emitted by default. Also, the basic data types of
Integer/String/Buffer are simply emitted as their values, without a data
type string -- since the data type is obvious from the output. ACPICA BZ
1221.

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

Current Release:
Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
Previous Release:
Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
Debug Version: 199.6K Code, 81.8K Data, 281.4K Total


2) iASL Compiler/Disassembler and Tools:

iASL: Fixed some issues with the ASL Include() operator. This operator
was incorrectly defined in the iASL parser rules, causing a new scope to
be opened for the code within the include file. This could lead to
several issues, including allowing ASL code that is technically illegal
and not supported by AML interpreters. Note, this does not affect the
related #include preprocessor operator. ACPICA BZ 1212.

iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
operator is essentially an ASL macro since there is no AML opcode
associated with it. The code emitted by the iASL compiler for ElseIf is
an Else opcode followed immediately by an If opcode. The disassembler
will now emit an ElseIf if it finds an Else immediately followed by an
If. This simplifies the decoded ASL, especially for deeply nested
If..Else and large Switch constructs. Thus, the disassembled code more
closely follows the original source ASL. ACPICA BZ 1211. Example:

Old disassembly:
Else
{
If (Arg0 == 0x02)
{
Local0 = 0x05
}
}

New disassembly:
ElseIf (Arg0 == 0x02)
{
Local0 = 0x05
}

AcpiExec: Added support for the new module level code behavior and the
early region installation. This required a small change to the
initialization, since AcpiExec must install its own operation region
handlers.

AcpiExec: Added support to make the debug object timer optional. Default
is timer disabled. This cleans up the debug object output -- the timer
data is rarely used.

AcpiExec: Multiple ACPI tables are now loaded in the order that they
appear on the command line. This can be important when there are
interdependencies/references between the tables.

iASL/Templates. Add support to generate template files with multiple
SSDTs within a single output file. Also added ommand line support to
specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
1223, 1225.


----------------------------------------
24 November 2015. Summary of changes for version 20151124:

1) ACPICA kernel-resident subsystem:

Fixed a possible regression for a previous update to FADT handling. The
FADT no longer has a fixed table ID, causing some issues with code that
was hardwired to a specific ID. Lv Zheng.

Fixed a problem where the method auto-serialization could interfere with
the current SyncLevel. This change makes the auto-serialization support
transparent to the SyncLevel support and management.

Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
interface is intended for early access to the namespace during the
initial namespace device discovery walk. The _SUB method has been seen to
access operation regions in some cases, causing errors because the
operation regions are not fully initialized.

AML Debugger: Fixed some issues with the terminate/quit/exit commands
that can cause faults. Lv Zheng.

AML Debugger: Add thread ID support so that single-step mode only applies
to the AML Debugger thread. This prevents runtime errors within some
kernels. Lv Zheng.

Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
methods that are invoked by this interface are optional, removed warnings
emitted for the case where one or more of these methods do not exist.
ACPICA BZ 1208, original change by Prarit Bhargava.

Made a major pass through the entire ACPICA source code base to
standardize formatting that has diverged a bit over time. There are no
functional changes, but this will of course cause quite a few code
differences from the previous ACPICA release.

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

Current Release:
Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
Previous Release:
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
Debug Version: 199.3K Code, 81.4K Data, 280.7K Total


2) iASL Compiler/Disassembler and Tools:

iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
definition blocks within a single ASL file and the resulting AML file.
Support for this type of file was also added to the various tools that
use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
example code below shows two definition blocks within the same file:

DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
0x12345678)
{
}
DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
{
}

iASL: Enhanced typechecking for the Name() operator. All expressions for
the value of the named object must be reduced/folded to a single constant
at compile time, as per the ACPI specification (the AML definition of
Name()).

iASL: Fixed some code indentation issues for the -ic and -ia options (C
and assembly headers). Now all emitted code correctly begins in column 1.

iASL: Added an error message for an attempt to open a Scope() on an
object defined in an SSDT. The DSDT is always loaded into the namespace
first, so any attempt to open a Scope on an SSDT object will fail at
runtime.


----------------------------------------
30 September 2015. Summary of changes for version 20150930:

1) ACPICA kernel-resident subsystem:

Debugger: Implemented several changes and bug fixes to assist support for
the in-kernel version of the AML debugger. Lv Zheng.
- Fix the "predefined" command for in-kernel debugger.
- Do not enter debug command loop for the help and version commands.
- Disallow "execute" command during execution/single-step of a method.

Interpreter: Updated runtime typechecking for all operators that have
target operands. The operand is resolved and validated that it is legal.
For example, the target cannot be a non-data object such as a Device,
Mutex, ThermalZone, etc., as per the ACPI specification.

Debugger: Fixed the double-mutex user I/O handshake to work when local
deadlock detection is enabled.

Debugger: limited display of method locals and arguments (LocalX and
ArgX) to only those that have actually been initialized. This prevents
lines of extraneous output.

Updated the definition of the NFIT table to correct the bit polarity of
one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED

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

Current Release:
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
Previous Release:
Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
Debug Version: 198.6K Code, 80.9K Data, 279.5K Total


2) iASL Compiler/Disassembler and Tools:

iASL: Improved the compile-time typechecking for operands of many of the
ASL operators:

-- Added an option to disable compiler operand/operator typechecking (-
ot).

-- For the following operators, the TermArg operands are now validated
when possible to be Integer data objects: BankField, OperationRegion,
DataTableRegion, Buffer, and Package.

-- Store (Source, Target): Both the source and target operands are
resolved and checked that the operands are both legal. For example,
neither operand can be a non-data object such as a Device, Mutex,
ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
operator can be used to store an object to any type of target object.

-- Store (Source, Target): If the source is a Package object, the target
must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
is a Package, the source must also be a Package.

-- Store (Source, Target): A warning is issued if the source and target
resolve to the identical named object.

-- Store (Source, <method invocation>): An error is generated for the
target method invocation, as this construct is not supported by the AML
interpreter.

-- For all ASL math and logic operators, the target operand must be a
data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
includes the function return value also.

-- External declarations are also included in the typechecking where
possible. External objects defined using the UnknownObj keyword cannot be
typechecked, however.

iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
operator:
- Legacy code: Index(PKG1, 3)
- New ASL+ code: PKG1[3]
This completes the ACPI 6.0 ASL+ support as it was the only operator not
supported.

iASL: Fixed the file suffix for the preprocessor output file (.i). Two
spaces were inadvertently appended to the filename, causing file access
and deletion problems on some systems.

ASL Test Suite (ASLTS): Updated the master makefile to generate all
possible compiler output files when building the test suite -- thus
exercising these features of the compiler. These files are automatically
deleted when the test suite exits.


----------------------------------------
18 August 2015. Summary of changes for version 20150818:

1) ACPICA kernel-resident subsystem:

Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
Zheng. ACPICA BZ 1186.

Completed development to ensure that the ACPICA Disassembler and Debugger
are fully standalone components of ACPICA. Removed cross-component
dependences. Lv Zheng.

The max-number-of-AML-loops is now runtime configurable (previously was
compile-time only). This is essentially a loop timeout to force-abort
infinite AML loops. ACPCIA BZ 1192.

Debugger: Cleanup output to dump ACPI names and namepaths without any
trailing underscores. Lv Zheng. ACPICA BZ 1135.

Removed unnecessary conditional compilations across the Debugger and
Disassembler components where entire modules could be left uncompiled.

The aapits test is deprecated and has been removed from the ACPICA git
tree. The test has never been completed and has not been maintained, thus
becoming rather useless. ACPICA BZ 1015, 794.

A batch of small changes to close bugzilla and other reports:
- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
Moore.
- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
ACPICA BZ 1184.
- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
operators.
- Debugger: Split debugger initialization/termination interfaces. Lv
Zheng.
- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
identification.
- AcpiExec: Add debug message during _REG method phase during table
load/init.
- AcpiNames: Fix a regression where some output was missing and no longer
emitted.
- Debugger: General cleanup and simplification. Lv Zheng.
- Disassembler: Cleanup use of several global option variables. Lv Zheng.

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

Current Release:
Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
Previous Release:
Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
Debug Version: 197.8K Code, 81.5K Data, 279.3K Total


2) iASL Compiler/Disassembler and Tools:

AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
were not handled properly and caused load errors. Now, properly invoke
and use the ACPICA auto-reallocate mechanism for ACPI table data
structures. ACPICA BZ 1188

AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
BZ 1190.

AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
executed during initialization. ACPICA BZ 1187, 1189.

iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
that corresponds to each disassembled ASL statement, to simplify
debugging. ACPICA BZ 1191.

Debugger: Add option to the "objects" command to display a summary of the
current namespace objects (Object type and count). This is displayed if
the command is entered with no arguments.

AcpiNames: Add -x option to specify debug level, similar to AcpiExec.


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

show more ...


# db5c6ae1 18-Aug-2015 christos <christos@NetBSD.org>

----------------------------------------
17 July 2015. Summary of changes for version 20150717:

1) ACPICA kernel-resident subsystem:

Improved the partitioning between the Debugger and Disassembler

----------------------------------------
17 July 2015. Summary of changes for version 20150717:

1) ACPICA kernel-resident subsystem:

Improved the partitioning between the Debugger and Disassembler
components. This allows the Debugger to be used standalone within kernel
code without the Disassembler (which is used for single stepping also).
This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.

Debugger: Implemented a new command to trace the execution of control
methods (Trace). This is especially useful for the in-kernel version of
the debugger when file I/O may not be available for method trace output.
See the ACPICA reference for more information. Lv Zheng.

Moved all C library prototypes (used for the local versions of these
functions when requested) to a new header, acclib.h
Cleaned up the use of non-ANSI C library functions. These functions are
implemented locally in ACPICA. Moved all such functions to a common
source file, utnonansi.c

Debugger: Fixed a problem with the "!!" command (get last command
executed) where the debugger could enter an infinite loop and eventually
crash.

Removed the use of local macros that were used for some of the standard C
library functions to automatically cast input parameters. This mostly
affected the is* functions where the input parameter is defined to be an
int. This required a few modifications to the main ACPICA source code to
provide casting for these functions and eliminate possible compiler
warnings for these parameters.

Across the source code, added additional status/error checking to resolve
issues discovered by static source code analysis tools such as Coverity.

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

Current Release:
Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
Previous Release:
Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
Debug Version: 196.2K Code, 81.0K Data, 277.2K Total


2) iASL Compiler/Disassembler and Tools:

iASL: Fixed a regression where the device map file feature no longer
worked properly when used in conjunction with the disassembler. It only
worked properly with the compiler itself.

iASL: Implemented a new warning for method LocalX variables that are set
but never used (similar to a C compiler such as gcc). This also applies
to ArgX variables that are not defined by the parent method, and are
instead (legally) used as local variables.

iASL/Preprocessor: Finished the pass-through of line numbers from the
preprocessor to the compiler. This ensures that compiler errors/warnings
have the correct original line numbers and filenames, regardless of any
#include files.

iASL/Preprocessor: Fixed a couple of issues with comment handling and the
pass-through of comments to the preprocessor output file (which becomes
the compiler input file). Also fixed a problem with // comments that
appear after a math expression.

iASL: Added support for the TCPA server table to the table compiler and
template generator. (The client table was already previously supported)

iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
identify the iASL compiler.

Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
multiple times. The new names are ACPI_SIGN_NEGATIVE and
ACPI_SIGN_POSITIVE.

AcpiHelp: Update to expand help messages for the iASL preprocessor
directives.


----------------------------------------
19 June 2015. Summary of changes for version 20150619:

Two regressions in version 20150616 have been addressed:

Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
etc.) This update changes ACPICA to only use the standard headers for
functions, or the prototypes for the local versions of the C library
functions. Across the source code, this required some additional casts
for some Clib invocations for portability. Moved all local prototypes to
a new file, acclib.h

Fixes several problems with recent changes to the handling of the FACS
table that could cause some systems not to boot.


----------------------------------------
16 June 2015. Summary of changes for version 20150616:


1) ACPICA kernel-resident subsystem:

Across the entire ACPICA source code base, the various macros for the C
library functions (such as ACPI_STRLEN, etc.) have been removed and
replaced by the standard C library names (strlen, etc.) The original
purpose for these macros is no longer applicable. This simplification
reduces the number of macros used in the ACPICA source code
significantly, improving readability and maintainability.

Implemented support for a new ACPI table, the OSDT. This table, the
"override" SDT, can be loaded directly by the host OS at boot time. It
enables the replacement of existing namespace objects that were installed
via the DSDT and/or SSDTs. The primary purpose for this is to replace
buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
Moore.

Added support for systems with (improperly) two FACS tables -- a "32-bit"
table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
X field). This change will support both automatically. There continues to
be systems found with this issue. This support requires a change to the
AcpiSetFirmwareWakingVector interface. Also, a public global variable has
been added to allow the host to select which FACS is desired
(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
details Lv Zheng.

Added a new feature to allow for systems that do not contain an FACS.
Although this is already supported on hardware-reduced platforms, the
feature has been extended for all platforms. The reasoning is that we do
not want to abort the entire ACPICA initialization just because the
system is seriously buggy and has no FACS.

Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
not correctly transcribed from the ACPI specification in ACPICA version
20150515.

Implemented support for the _CLS object in the AcpiGetObjectInfo external
interface.

Updated the definitions of the TCPA and TPM2 ACPI tables to the more
recent TCG ACPI Specification, December 14, 2014. Table disassembler and
compiler also updated. Note: The TCPA "server" table is not supported by
the disassembler/table-compiler at this time.

ACPI 6.0: Added definitions for the new GIC version field in the MADT.

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

Current Release:
Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
Previous Release:
Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
Debug Version: 195.2K Code, 80.8K Data, 276.0K Total


2) iASL Compiler/Disassembler and Tools:

Disassembler: Fixed a problem with the new symbolic operator disassembler
where incorrect ASL code could be emitted in some cases for the "non-
commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
ShiftRight. The actual problem cases seem to be rather unusual in common
ASL code, however. David Box.

Modified the linux version of acpidump to obtain ACPI tables from not
just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
Zheng.

iASL: Fixed a problem where the user preprocessor output file (.i)
contained extra data that was not expected. The compiler was using this
file as a temporary file and passed through #line directives in order to
keep compiler error messages in sync with the input file and line number
across multiple include files. The (.i) is no longer a temporary file as
the compiler uses a new, different file for the original purpose.

iASL: Fixed a problem where comments within the original ASL source code
file were not passed through to the preprocessor output file, nor any
listing files.

iASL: Fixed some issues for the handling of the "#include" preprocessor
directive and the similar (but not the same) "Include" ASL operator.

iASL: Add support for the new OSDT in both the disassembler and compiler.

iASL: Fixed a problem with the constant folding support where a Buffer
object could be incorrectly generated (incorrectly formed) during a
conversion to a Store() operator.

AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
description text for the _REV predefined name. _REV now permanently
returns 2, as per the ACPI 6.0 specification.

Debugger: Enhanced the output of the Debug ASL object for references
produced by the Index operator. For Buffers and strings, only output the
actual byte pointed to by the index. For packages, only print the single
package element decoded by the index. Previously, the entire
buffer/string/package was emitted.

iASL/Table-compiler: Fixed a regression where the "generic" data types
were no longer recognized, causing errors.


----------------------------------------
15 May 2015. Summary of changes for version 20150515:

This release implements most of ACPI 6.0 as described below.

1) ACPICA kernel-resident subsystem:

Implemented runtime argument checking and return value checking for all
new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
_MTL, _PRR, _RDI, _RST, _TFP, _TSN.

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

Current Release:
Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
Previous Release:
Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
Debug Version: 192.8K Code, 79.9K Data, 272.7K Total


2) iASL Compiler/Disassembler and Tools:

iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
names (argument count validation and return value typechecking.)

iASL disassembler and table compiler: implemented support for all new
ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.

iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
tables: FADT, MADT.

iASL preprocessor: Added a new directive to enable inclusion of binary
blobs into ASL code. The new directive is #includebuffer. It takes a
binary file as input and emits a named ascii buffer object into the ASL
code.

AcpiHelp: Added support for all new ACPI 6.0 predefined names.

AcpiHelp: Added a new option, -d, to display all iASL preprocessor
directives.

AcpiHelp: Added a new option, -t, to display all known/supported ACPI
tables.

show more ...


# 4e4949bd 13-Apr-2015 christos <christos@NetBSD.org>

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

Reverted a change introduced in version 20150408 that caused
a regression in the disassembler where i

----------------------------------------
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))

show more ...


# 038c9182 25-Oct-2014 christos <christos@NetBSD.org>

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

1) ACPICA kernel-resident subsystem:

Updated the GPIO operation region handler interface (Genera

----------------------------------------
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.

show more ...


# 73d4e80b 27-Dec-2013 christos <christos@NetBSD.org>

import new acpica


# 68471b32 17-Feb-2011 jruoho <jruoho@NetBSD.org>

Import 20110211.


# 149703c7 17-Feb-2011 jruoho <jruoho@NetBSD.org>

Reimport ACPICA 20100528 to a new location.