Feature #4150


update to acpica-20130823

Added by Richard PALO over 9 years ago. Updated almost 5 years ago.

Start date:
Due date:
% Done:


Estimated time:
Gerrit CR:
External Bug:


This is a placeholder for the RTI of acpica-20130823.

I have prepared webrev(s) of this update which in the first place is based on top of Yuri PANKOVs preliminary webrev:

I also have a comprehensive webrev if need be, as well as an 'acpica-20130823' branch at git://


changes.txt (553 KB) changes.txt comprehensive changes (upstream) acpica-unix2-20140114 Richard PALO, 2014-01-17 09:12 AM

Related issues

Related to illumos gate - Feature #4498: update to ACPI version 6.xClosedJerry Jelinek2014-01-17

Actions #2

Updated by Richard PALO over 9 years ago

The attached is a differential webrev of above updating to acpica-unix2-20130927

extract from changes:

1) ACPICA kernel-resident subsystem:

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

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

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

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

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

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

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

Actions #3

Updated by Richard PALO over 9 years ago

update to acpica-unix2-20131218 with comprehensive webrev
(incremental updates are getting out of hand).

reminder of bugfixes/features contained in this webrev:

- add 64-bit memory reads/writes (courtesy of Joyent)
- add ddi_taskq_wait for new AcpiOsWaitEventsComplete routine

remove deprecated usr/src/uts/intel/sys/acpi/acpi_pci.h and update dependant source files to now use ACPICA definitions for 'Memory mapped config space address description table' (MCFG)
namely usr/src/uts/i86pc/io/pciex/npe_misc.c

fix length tags of resource buffers used in usr/src/uts/i86pc/io/psm/psm_common.c

below is a changelog since last webrev for acpica-unix2-20131118

18 December 2013. Summary of changes for version 20131218:

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

1) ACPICA kernel-resident subsystem:

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

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

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

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

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

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

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

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

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

2) iASL Compiler/Disassembler and Tools:

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

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

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

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

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

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

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

Actions #4

Updated by Richard PALO over 9 years ago

update to acpica-unix2-20140114 with comprehensive webrev including all previous acpica update at

github clone is updated and branch acpica-20140114 is added:

Actions #5

Updated by Richard PALO over 9 years ago

I'll refrain from updating webrev's given the apparent lack of interest. will remain updated when upstream acpica updates come or illumos-gate issues are dealt with... just look into the latest 'acpica-*' branch...

A recent illumos patch addresses two issues where the ACPI CA spec was not quite being followed:
  • Ensure that interrupts are disabled for AcpiEnterSleepState; and
  • AcpiLeaveSleepStatePrep must be invoked prior to AcpiLeaveSleepState.
Actions #6

Updated by Richard PALO over 9 years ago

May I ask the moderator to change the title to simply

update to acpica-unix2-<latest>

Actions #7

Updated by Richard PALO about 9 years ago has been updated with a single branch 'il_4150' to track acpica v5 when upstream acpica updates come or illumos-gate issues are dealt with...

Latest update is acpica-unix2-20140325 and the cumulative change log is found here:

PM: acpica-unix2-20140214 was skipped due to the gcc #pragma push/pop issue. Upstream has momentarily reverted this usage. Illumos-gcc has added support, but is not (as of yet) generally used.

Actions #8

Updated by Yuri Pankov over 6 years ago

  • Status changed from New to Closed

Not going to happen, superseded by #4498.


Also available in: Atom PDF