1 ----------------------------------------
2 24 April 2014. Summary of changes for version 20140424:
4 1) ACPICA kernel-resident subsystem:
6 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
7 Some of these tables are known to contain a trailing NULL entry. Lv
10 Removed an extraneous error message for the case where there are a large
11 number of system GPEs (> 124). This was the "32-bit FADT register is too
12 long to convert to GAS struct" message, which is irrelevant for GPEs
13 since the GPEx_BLK_LEN fields of the FADT are always used instead of the
14 (limited capacity) GAS bit length. Also, several changes to ensure proper
15 support for GPE numbers > 255, where some "GPE number" fields were 8-bits
18 Implemented and deployed additional configuration support for the public
19 ACPICA external interfaces. Entire classes of interfaces can now be
20 easily modified or configured out, replaced by stubbed inline functions
23 Moved all public ACPICA runtime configuration globals to the public
24 ACPICA external interface file for convenience. Also, removed some
25 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
27 Documentation: Added a new section to the ACPICA reference describing the
28 maximum number of GPEs that can be supported by the FADT-defined GPEs in
29 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
32 Example Code and Data Size: These are the sizes for the OS-independent
33 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
34 debug version of the code includes the debug output trace mechanism and
35 has a much larger code and data size.
38 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
39 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
41 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
42 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
45 2) iASL Compiler/Disassembler and Tools:
47 iASL and disassembler: Add full support for the LPIT table (Low Power
48 Idle Table). Includes support in the disassembler, data table compiler,
49 and template generator.
52 1) Add option to force the use of the RSDT (over the XSDT).
53 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
55 iASL: Add check for predefined packages that are too large. For
56 predefined names that contain subpackages, check if each subpackage is
57 too large. (Check for too small already exists.)
59 Debugger: Updated the GPE command (which simulates a GPE by executing the
60 GPE code paths in ACPICA). The GPE device is now optional, and defaults
61 to the GPE 0/1 FADT-defined blocks.
63 Unix application OSL: Update line-editing support. Add additional error
64 checking and take care not to reset terminal attributes on exit if they
65 were never set. This should help guarantee that the terminal is always
66 left in the previous state on program exit.
68 ----------------------------------------
69 25 March 2014. Summary of changes for version 20140325:
71 1) ACPICA kernel-resident subsystem:
73 Updated the auto-serialize feature for control methods. This feature
74 automatically serializes all methods that create named objects in order
75 to prevent runtime errors. The update adds support to ignore the
76 currently executing AML SyncLevel when invoking such a method, in order
77 to prevent disruption of any existing SyncLevel priorities that may exist
78 in the AML code. Although the use of SyncLevels is relatively rare, this
79 change fixes a regression where an AE_AML_MUTEX_ORDER exception can
80 appear on some machines starting with the 20140214 release.
82 Added a new external interface to allow the host to install ACPI tables
83 very early, before the namespace is even created. AcpiInstallTable gives
84 the host additional flexibility for ACPI table management. Tables can be
85 installed directly by the host as if they had originally appeared in the
86 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
87 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along
88 with additional internal restructuring and cleanup. See the ACPICA
89 Reference for interface details. Lv Zheng.
91 Added validation of the checksum for all incoming dynamically loaded
92 tables (via external interfaces or via AML Load/LoadTable operators). Lv
95 Updated the use of the AcpiOsWaitEventsComplete interface during Notify
96 and GPE handler removal. Restructured calls to eliminate possible race
99 Added a warning for the use/execution of the ASL/AML Unload (table)
100 operator. This will help detect and identify machines that use this
101 operator if and when it is ever used. This operator has never been seen
102 in the field and the usage model and possible side-effects of the drastic
103 runtime action of a full table removal are unknown.
105 Reverted the use of #pragma push/pop which was introduced in the 20140214
106 release. It appears that push and pop are not implemented by enough
107 compilers to make the use of this feature feasible for ACPICA at this
108 time. However, these operators may be deployed in a future ACPICA
111 Added the missing EXPORT_SYMBOL macros for the install and remove SCI
114 Source code generation:
115 1) Disabled the use of the "strchr" macro for the gcc-specific
116 generation. For some versions of gcc, this macro can periodically expose
117 a compiler bug which in turn causes compile-time error(s).
118 2) Added support for PPC64 compilation. Colin Ian King.
120 Example Code and Data Size: These are the sizes for the OS-independent
121 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
122 debug version of the code includes the debug output trace mechanism and
123 has a much larger code and data size.
126 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
127 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
129 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
130 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
133 2) iASL Compiler/Disassembler and Tools:
135 Disassembler: Added several new features to improve the readability of
136 the resulting ASL code. Extra information is emitted within comment
137 fields in the ASL code:
138 1) Known _HID/_CID values are decoded to descriptive text.
139 2) Standard values for the Notify() operator are decoded to descriptive
141 3) Target operands are expanded to full pathnames (in a comment) when
144 Disassembler: Miscellaneous updates for extern() handling:
145 1) Abort compiler if file specified by -fe option does not exist.
146 2) Silence unnecessary warnings about argument count mismatches.
147 3) Update warning messages concerning unresolved method externals.
148 4) Emit "UnknownObj" keyword for externals whose type cannot be
152 1) Added the -a option to display both the ASL syntax and the AML
153 encoding for an input ASL operator. This effectively displays all known
154 information about an ASL operator with one AcpiHelp invocation.
155 2) Added substring match support (similar to a wildcard) for the -i
156 (_HID/PNP IDs) option.
158 iASL/Disassembler: Since this tool does not yet support execution on big-
159 endian machines, added detection of endianness and an error message if
160 execution is attempted on big-endian. Support for big-endian within iASL
161 is a feature that is on the ACPICA to-be-done list.
164 1) Remove option to extract binary files from an acpidump; this function
165 is made obsolete by the AcpiXtract utility.
166 2) General cleanup of open files and allocated buffers.
168 ----------------------------------------
169 14 February 2014. Summary of changes for version 20140214:
171 1) ACPICA kernel-resident subsystem:
173 Implemented a new mechanism to proactively prevent problems with ill-
174 behaved reentrant control methods that create named ACPI objects. This
175 behavior is illegal as per the ACPI specification, but is nonetheless
176 frequently seen in the field. Previously, this could lead to an
177 AE_ALREADY_EXISTS exception if the method was actually entered by more
178 than one thread. This new mechanism detects such methods at table load
179 time and marks them "serialized" to prevent reentrancy. A new global
180 option, AcpiGbl_AutoSerializeMethods, has been added to disable this
181 feature if desired. This mechanism and global option obsoletes and
182 supersedes the previous AcpiGbl_SerializeAllMethods option.
184 Added the "Windows 2013" string to the _OSI support. ACPICA will now
185 respond TRUE to _OSI queries with this string. It is the stated policy of
186 ACPICA to add new strings to the _OSI support as soon as possible after
187 they are defined. See the full ACPICA _OSI policy which has been added to
188 the utilities/utosi.c file.
190 Hardened/updated the _PRT return value auto-repair code:
191 1) Do not abort the repair on a single subpackage failure, continue to
192 check all subpackages.
193 2) Add check for the minimum subpackage length (4).
194 3) Properly handle extraneous NULL package elements.
196 Added support to avoid the possibility of infinite loops when traversing
197 object linked lists. Never allow an infinite loop, even in the face of
198 corrupted object lists.
200 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
201 pack(pop) directives to ensure that the ACPICA headers are independent of
202 compiler settings or other host headers.
204 Example Code and Data Size: These are the sizes for the OS-independent
205 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
206 debug version of the code includes the debug output trace mechanism and
207 has a much larger code and data size.
210 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
211 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
213 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
214 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
217 2) iASL Compiler/Disassembler and Tools:
219 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
220 first reserved field was incorrectly forced to have a value of zero. This
221 change correctly forces the field to have a value of one. ACPICA BZ 1081.
223 Debugger: Added missing support for the "Extra" and "Data" subobjects
224 when displaying object data.
226 Debugger: Added support to display entire object linked lists when
227 displaying object data.
229 iASL: Removed the obsolete -g option to obtain ACPI tables from the
230 Windows registry. This feature has been superseded by the acpidump
233 ----------------------------------------
234 14 January 2014. Summary of changes for version 20140114:
236 1) ACPICA kernel-resident subsystem:
238 Updated all ACPICA copyrights and signons to 2014. Added the 2014
239 copyright to all module headers and signons, including the standard Linux
240 header. This affects virtually every file in the ACPICA core subsystem,
241 iASL compiler, all ACPICA utilities, and the test suites.
243 Improved parameter validation for AcpiInstallGpeBlock. Added the
245 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
246 2) There is not already a GPE block attached to the device.
247 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
250 Correctly support "references" in the ACPI_OBJECT. This change fixes the
251 support to allow references (namespace nodes) to be passed as arguments
252 to control methods via the evaluate object interface. This is probably
253 most useful for testing purposes, however.
255 Improved support for 32/64 bit physical addresses in printf()-like
256 output. This change improves the support for physical addresses in printf
257 debug statements and other output on both 32-bit and 64-bit hosts. It
258 consistently outputs the appropriate number of bytes for each host. The
259 %p specifier is unsatisfactory since it does not emit uniform output on
260 all hosts/clib implementations (on some, leading zeros are not supported,
261 leading to difficult-to-read output).
263 Example Code and Data Size: These are the sizes for the OS-independent
264 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
265 debug version of the code includes the debug output trace mechanism and
266 has a much larger code and data size.
269 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
270 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
272 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
273 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
276 2) iASL Compiler/Disassembler and Tools:
278 iASL: Fix a possible fault when using the Connection() operator. Fixes a
279 problem if the parent Field definition for the Connection operator refers
280 to an operation region that does not exist. ACPICA BZ 1064.
282 AcpiExec: Load of local test tables is now optional. The utility has the
283 capability to load some various tables to test features of ACPICA.
284 However, there are enough of them that the output of the utility became
285 confusing. With this change, only the required local tables are displayed
286 (RSDP, XSDT, etc.) along with the actual tables loaded via the command
287 line specification. This makes the default output simler and easier to
288 understand. The -el command line option restores the original behavior
289 for testing purposes.
291 AcpiExec: Added support for overlapping operation regions. This change
292 expands the simulation of operation regions by supporting regions that
293 overlap within the given address space. Supports SystemMemory and
294 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
296 AcpiExec: Added region handler support for PCI_Config and EC spaces. This
297 allows AcpiExec to simulate these address spaces, similar to the current
298 support for SystemMemory and SystemIO.
300 Debugger: Added new command to read/write/compare all namespace objects.
301 The command "test objects" will exercise the entire namespace by writing
302 new values to each data object, and ensuring that the write was
303 successful. The original value is then restored and verified.
305 Debugger: Added the "test predefined" command. This change makes this
306 test public and puts it under the new "test" command. The test executes
307 each and every predefined name within the current namespace.
309 ----------------------------------------
310 18 December 2013. Summary of changes for version 20131218:
312 Global note: The ACPI 5.0A specification was released this month. There
313 are no changes needed for ACPICA since this release of ACPI is an
314 errata/clarification release. The specification is available at
318 1) ACPICA kernel-resident subsystem:
320 Added validation of the XSDT root table if it is present. Some older
321 platforms contain an XSDT that is ill-formed or otherwise invalid (such
322 as containing some or all entries that are NULL pointers). This change
323 adds a new function to validate the XSDT before actually using it. If the
324 XSDT is found to be invalid, ACPICA will now automatically fall back to
325 using the RSDT instead. Original implementation by Zhao Yakui. Ported to
326 ACPICA and enhanced by Lv Zheng and Bob Moore.
328 Added a runtime option to ignore the XSDT and force the use of the RSDT.
329 This change adds a runtime option that will force ACPICA to use the RSDT
330 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
331 requires that an XSDT be used instead of the RSDT, the XSDT has been
332 found to be corrupt or ill-formed on some machines. Lv Zheng.
334 Added a runtime option to favor 32-bit FADT register addresses over the
335 64-bit addresses. This change adds an option to favor 32-bit FADT
336 addresses when there is a conflict between the 32-bit and 64-bit versions
337 of the same register. The default behavior is to use the 64-bit version
338 in accordance with the ACPI specification. This can now be overridden via
339 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
341 During the change above, the internal "Convert FADT" and "Verify FADT"
342 functions have been merged to simplify the code, making it easier to
343 understand and maintain. ACPICA BZ 933.
345 Improve exception reporting and handling for GPE block installation.
346 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
347 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
349 Added helper macros to extract bus/segment numbers from the HEST table.
350 This change adds two macros to extract the encoded bus and segment
351 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
352 Betty Dall <betty.dall@hp.com>
354 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
355 by ACPICA. It is not a public macro, so it should have no effect on
356 existing OSV code. Lv Zheng.
358 Example Code and Data Size: These are the sizes for the OS-independent
359 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
360 debug version of the code includes the debug output trace mechanism and
361 has a much larger code and data size.
364 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
365 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
367 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
368 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
371 2) iASL Compiler/Disassembler and Tools:
373 Disassembler: Improved pathname support for emitted External()
374 statements. This change adds full pathname support for external names
375 that have been resolved internally by the inclusion of additional ACPI
376 tables (via the iASL -e option). Without this change, the disassembler
377 can emit multiple externals for the same object, or it become confused
378 when the Scope() operator is used on an external object. Overall, greatly
379 improves the ability to actually recompile the emitted ASL code when
380 objects a referenced across multiple ACPI tables. Reported by Michael
381 Tsirkin (mst@redhat.com).
383 Tests/ASLTS: Updated functional control suite to execute with no errors.
384 David Box. Fixed several errors related to the testing of the interpreter
385 slack mode. Lv Zheng.
387 iASL: Added support to detect names that are declared within a control
388 method, but are unused (these are temporary names that are only valid
389 during the time the method is executing). A remark is issued for these
390 cases. ACPICA BZ 1022.
392 iASL: Added full support for the DBG2 table. Adds full disassembler,
393 table compiler, and template generator support for the DBG2 table (Debug
396 iASL: Added full support for the PCCT table, update the table definition.
397 Updates the PCCT table definition in the actbl3.h header and adds table
398 compiler and template generator support.
400 iASL: Added an option to emit only error messages (no warnings/remarks).
401 The -ve option will enable only error messages, warnings and remarks are
402 suppressed. This can simplify debugging when only the errors are
403 important, such as when an ACPI table is disassembled and there are many
404 warnings and remarks -- but only the actual errors are of real interest.
406 Example ACPICA code (source/tools/examples): Updated the example code so
407 that it builds to an actual working program, not just example code. Added
408 ACPI tables and execution of an example control method in the DSDT. Added
409 makefile support for Unix generation.
411 ----------------------------------------
412 15 November 2013. Summary of changes for version 20131115:
414 This release is available at https://acpica.org/downloads
417 1) ACPICA kernel-resident subsystem:
419 Resource Manager: Fixed loop termination for the "get AML length"
420 function. The loop previously had an error termination on a NULL resource
421 pointer, which can never happen since the loop simply increments a valid
422 resource pointer. This fix changes the loop to terminate with an error on
423 an invalid end-of-buffer condition. The problem can be seen as an
424 infinite loop by callers to AcpiSetCurrentResources with an invalid or
425 corrupted resource descriptor, or a resource descriptor that is missing
426 an END_TAG descriptor. Reported by Dan Carpenter
427 <dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
429 Table unload and ACPICA termination: Delete all attached data objects
430 during namespace node deletion. This fix updates namespace node deletion
431 to delete the entire list of attached objects (attached via
432 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
433 1024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
435 ACPICA termination: Added support to delete all objects attached to the
436 root namespace node. This fix deletes any and all objects that have been
437 attached to the root node via AcpiAttachData. Previously, none of these
438 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
440 Debug output: Do not emit the function nesting level for the in-kernel
441 build. The nesting level is really only useful during a single-thread
442 execution. Therefore, only enable this output for the AcpiExec utility.
443 Also, only emit the thread ID when executing under AcpiExec (Context
444 switches are still always detected and a message is emitted). ACPICA BZ
447 Example Code and Data Size: These are the sizes for the OS-independent
448 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
449 debug version of the code includes the debug output trace mechanism and
450 has a much larger code and data size.
453 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
454 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
456 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
457 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
460 2) iASL Compiler/Disassembler and Tools:
462 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
463 correct portable POSIX header for terminal control functions.
465 Disassembler: Fixed control method invocation issues related to the use
466 of the CondRefOf() operator. The problem is seen in the disassembly where
467 control method invocations may not be disassembled properly if the
468 control method name has been used previously as an argument to CondRefOf.
469 The solution is to not attempt to emit an external declaration for the
470 CondRefOf target (it is not necessary in the first place). This prevents
471 disassembler object type confusion. ACPICA BZ 988.
473 Unix Makefiles: Added an option to disable compiler optimizations and the
474 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
475 with optimizations (reportedly, gcc 4.4 for example). This change adds a
476 command line option for make (NOOPT) that disables all compiler
477 optimizations and the _FORTIFY_SOURCE compiler flag. The default
478 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
479 1034. Lv Zheng, Bob Moore.
481 Tests/ASLTS: Added options to specify individual test cases and modes.
482 This allows testers running aslts.sh to optionally specify individual
483 test modes and test cases. Also added an option to disable the forced
484 generation of the ACPICA tools from source if desired. Lv Zheng.
486 ----------------------------------------
487 27 September 2013. Summary of changes for version 20130927:
489 This release is available at https://acpica.org/downloads
492 1) ACPICA kernel-resident subsystem:
494 Fixed a problem with store operations to reference objects. This change
495 fixes a problem where a Store operation to an ArgX object that contained
497 reference to a field object did not complete the automatic dereference
499 then write to the actual field object. Instead, the object type of the
500 field object was inadvertently changed to match the type of the source
501 operand. The new behavior will actually write to the field object (buffer
502 field or field unit), thus matching the correct ACPI-defined behavior.
504 Implemented support to allow the host to redefine individual OSL
505 prototypes. This change enables the host to redefine OSL prototypes found
506 in the acpiosxf.h file. This allows the host to implement OSL interfaces
507 with a macro or inlined function. Further, it allows the host to add any
508 additional required modifiers such as __iomem, __init, __exit, etc., as
509 necessary on a per-interface basis. Enables maximum flexibility for the
510 OSL interfaces. Lv Zheng.
512 Hardcoded the access width for the FADT-defined reset register. The ACPI
513 specification requires the reset register width to be 8 bits. ACPICA now
514 hardcodes the width to 8 and ignores the FADT width value. This provides
515 compatibility with other ACPI implementations that have allowed BIOS code
516 with bad register width values to go unnoticed. Matthew Garett, Bob
520 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
522 in the OSL header (acpiosxf). The change modifies the position of this
523 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
524 build issues if the OSL defines the implementation of the interface to be
525 an inline stub function. Lv Zheng.
527 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
528 initialization interfaces. This change adds a new macro for the main init
529 and terminate external interfaces in order to support hosts that require
530 additional or different processing for these functions. Changed from
531 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
534 Cleaned up the memory allocation macros for configurability. In the
536 case, the ACPI_ALLOCATE and related macros now resolve directly to their
537 respective AcpiOs* OSL interfaces. Two options:
538 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
539 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
540 2) For AcpiExec (and for debugging), the macros can optionally be
542 to the local ACPICA interfaces that track each allocation (local tracking
543 is used to immediately detect memory leaks).
546 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
547 to predefine this macro to either TRUE or FALSE during the system build.
549 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
551 Example Code and Data Size: These are the sizes for the OS-independent
552 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
553 debug version of the code includes the debug output trace mechanism and
554 has a much larger code and data size.
557 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
558 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
560 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
561 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
564 2) iASL Compiler/Disassembler and Tools:
566 iASL: Implemented wildcard support for the -e option. This simplifies use
567 when there are many SSDTs that must be included to resolve external
569 declarations. ACPICA BZ 1041. Example:
570 iasl -e ssdt*.dat -d dsdt.dat
572 AcpiExec: Add history/line-editing for Unix/Linux systems. This change
573 adds a portable module that implements full history and limited line
574 editing for Unix and Linux systems. It does not use readline() due to
575 portability issues. Instead it uses the POSIX termio interface to put the
576 terminal in raw input mode so that the various special keys can be
578 (such as up/down-arrow for history support and left/right-arrow for line
579 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
581 AcpiXtract: Add support to handle (ignore) "empty" lines containing only
582 one or more spaces. This provides compatible with early or different
583 versions of the AcpiDump utility. ACPICA BZ 1044.
585 AcpiDump: Do not ignore tables that contain only an ACPI table header.
586 Apparently, some BIOSs create SSDTs that contain an ACPI table header but
587 no other data. This change adds support to dump these tables. Any tables
588 shorter than the length of an ACPI table header remain in error (an error
589 message is emitted). Reported by Yi Li.
591 Debugger: Echo actual command along with the "unknown command" message.
593 ----------------------------------------
594 23 August 2013. Summary of changes for version 20130823:
596 1) ACPICA kernel-resident subsystem:
598 Implemented support for host-installed System Control Interrupt (SCI)
599 handlers. Certain ACPI functionality requires the host to handle raw
600 SCIs. For example, the "SCI Doorbell" that is defined for memory power
601 state support requires the host device driver to handle SCIs to examine
602 if the doorbell has been activated. Multiple SCI handlers can be
603 installed to allow for future expansion. New external interfaces are
604 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
605 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
607 Operation region support: Never locally free the handler "context"
608 pointer. This change removes some dangerous code that attempts to free
609 the handler context pointer in some (rare) circumstances. The owner of
610 the handler owns this pointer and the ACPICA code should never touch it.
611 Although not seen to be an issue in any kernel, it did show up as a
612 problem (fault) under AcpiExec. Also, set the internal storage field for
613 the context pointer to zero when the region is deactivated, simply for
614 sanity. David Box. ACPICA BZ 1039.
616 AcpiRead: On error, do not modify the return value target location. If an
617 error happens in the middle of a split 32/32 64-bit I/O operation, do not
618 modify the target of the return value pointer. Makes the code consistent
619 with the rest of ACPICA. Bjorn Helgaas.
621 Example Code and Data Size: These are the sizes for the OS-independent
622 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
623 debug version of the code includes the debug output trace mechanism and
624 has a much larger code and data size.
627 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
628 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
630 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
631 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total
634 2) iASL Compiler/Disassembler and Tools:
636 AcpiDump: Implemented several new features and fixed some problems:
637 1) Added support to dump the RSDP, RSDT, and XSDT tables.
638 2) Added support for multiple table instances (SSDT, UEFI).
639 3) Added option to dump "customized" (overridden) tables (-c).
640 4) Fixed a problem where some table filenames were improperly
642 5) Improved some error messages, removed some unnecessary messages.
644 iASL: Implemented additional support for disassembly of ACPI tables that
645 contain invocations of external control methods. The -fe<file> option
646 allows the import of a file that specifies the external methods along
647 with the required number of arguments for each -- allowing for the
648 correct disassembly of the table. This is a workaround for a limitation
649 of AML code where the disassembler often cannot determine the number of
650 arguments required for an external control method and generates incorrect
651 ASL code. See the iASL reference for details. ACPICA BZ 1030.
653 Debugger: Implemented a new command (paths) that displays the full
654 pathnames (namepaths) and object types of all objects in the namespace.
655 This is an alternative to the namespace command.
657 Debugger: Implemented a new command (sci) that invokes the SCI dispatch
658 mechanism and any installed handlers.
660 iASL: Fixed a possible segfault for "too many parent prefixes" condition.
661 This can occur if there are too many parent prefixes in a namepath (for
662 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
664 Application OSLs: Set the return value for the PCI read functions. These
665 functions simply return AE_OK, but should set the return value to zero
666 also. This change implements this. ACPICA BZ 1038.
668 Debugger: Prevent possible command line buffer overflow. Increase the
669 size of a couple of the debugger line buffers, and ensure that overflow
670 cannot happen. ACPICA BZ 1037.
672 iASL: Changed to abort immediately on serious errors during the parsing
673 phase. Due to the nature of ASL, there is no point in attempting to
674 compile these types of errors, and they typically end up causing a
675 cascade of hundreds of errors which obscure the original problem.
677 ----------------------------------------
678 25 July 2013. Summary of changes for version 20130725:
680 1) ACPICA kernel-resident subsystem:
682 Fixed a problem with the DerefOf operator where references to FieldUnits
683 and BufferFields incorrectly returned the parent object, not the actual
684 value of the object. After this change, a dereference of a FieldUnit
685 reference results in a read operation on the field to get the value, and
686 likewise, the appropriate BufferField value is extracted from the target
689 Fixed a problem where the _WAK method could cause a fault under these
690 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
691 method returned no value. The problem is rarely seen because most kernels
692 run ACPICA in slack mode.
694 For the DerefOf operator, a fatal error now results if an attempt is made
695 to dereference a reference (created by the Index operator) to a NULL
696 package element. Provides compatibility with other ACPI implementations,
697 and this behavior will be added to a future version of the ACPI
700 The ACPI Power Management Timer (defined in the FADT) is now optional.
701 This provides compatibility with other ACPI implementations and will
702 appear in the next version of the ACPI specification. If there is no PM
703 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
704 zero in the FADT indicates no PM timer.
706 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
707 allows the host to globally enable/disable all vendor strings, all
708 feature strings, or both. Intended to be primarily used for debugging
709 purposes only. Lv Zheng.
711 Expose the collected _OSI data to the host via a global variable. This
712 data tracks the highest level vendor ID that has been invoked by the BIOS
713 so that the host (and potentially ACPICA itself) can change behaviors
714 based upon the age of the BIOS.
716 Example Code and Data Size: These are the sizes for the OS-independent
717 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
718 debug version of the code includes the debug output trace mechanism and
719 has a much larger code and data size.
722 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
723 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
725 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
726 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
729 2) iASL Compiler/Disassembler and Tools:
731 iASL: Created the following enhancements for the -so option (create
733 1)Add offsets for the last nameseg in each namepath for every supported
735 2)Add support for Processor, Device, Thermal Zone, and Scope objects
736 3)Add the actual AML opcode for the parent object of every supported
738 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
740 Disassembler: Emit all unresolved external symbols in a single block.
741 These are external references to control methods that could not be
742 resolved, and thus, the disassembler had to make a guess at the number of
745 iASL: The argument to the -T option (create table template) is now
746 optional. If not specified, the default table is a DSDT, typically the
749 ----------------------------------------
750 26 June 2013. Summary of changes for version 20130626:
752 1) ACPICA kernel-resident subsystem:
754 Fixed an issue with runtime repair of the _CST object. Null or invalid
755 elements were not always removed properly. Lv Zheng.
757 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
758 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
759 the maximum number of GPEs is 1016. Use of multiple GPE block devices
760 makes the system-wide number of GPEs essentially unlimited.
762 Example Code and Data Size: These are the sizes for the OS-independent
763 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
764 debug version of the code includes the debug output trace mechanism and
765 has a much larger code and data size.
768 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
769 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
771 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
772 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
775 2) iASL Compiler/Disassembler and Tools:
777 Portable AcpiDump: Implemented full support for the Linux and FreeBSD
778 hosts. Now supports Linux, FreeBSD, and Windows.
780 Disassembler: Added some missing types for the HEST and EINJ tables: "Set
781 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
783 iASL/Preprocessor: Implemented full support for nested
784 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
786 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
787 max. The original purpose of this constraint was to limit the amount of
788 debug output. However, the string function in question (UtPrintString) is
789 now used for the disassembler also, where 256 bytes is insufficient.
790 Reported by RehabMan@GitHub.
792 iASL/DataTables: Fixed some problems and issues with compilation of DMAR
793 tables. ACPICA BZ 999. Lv Zheng.
795 iASL: Fixed a couple of error exit issues that could result in a "Could
796 not delete <file>" message during ASL compilation.
798 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
799 the actual signatures for these tables are "FACP" and "APIC",
802 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
803 tables are allowed to have multiple instances.
805 ----------------------------------------
806 17 May 2013. Summary of changes for version 20130517:
808 1) ACPICA kernel-resident subsystem:
810 Fixed a regression introduced in version 20130328 for _INI methods. This
811 change fixes a problem introduced in 20130328 where _INI methods are no
812 longer executed properly because of a memory block that was not
813 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
814 <tomasz.nowicki@linaro.org>.
816 Fixed a possible problem with the new extended sleep registers in the
818 5.0 FADT. Do not use these registers (even if populated) unless the HW-
819 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
822 Implemented return value repair code for _CST predefined objects: Sort
824 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
826 Implemented a debug-only option to disable loading of SSDTs from the
827 RSDT/XSDT during ACPICA initialization. This can be useful for debugging
828 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
829 acglobal.h - ACPICA BZ 1005. Lv Zheng.
831 Fixed some issues in the ACPICA initialization and termination code:
832 Tomasz Nowicki <tomasz.nowicki@linaro.org>
833 1) Clear events initialized flag upon event component termination. ACPICA
835 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
836 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
837 4) Clear debug buffer global on termination to prevent possible multiple
838 delete. ACPICA BZ 1010.
840 Standardized all switch() blocks across the entire source base. After
842 years, different formatting for switch() had crept in. This change makes
843 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
845 Split some files to enhance ACPICA modularity and configurability:
846 1) Split buffer dump routines into utilities/utbuffer.c
847 2) Split internal error message routines into utilities/uterror.c
848 3) Split table print utilities into tables/tbprint.c
849 4) Split iASL command-line option processing into asloptions.c
851 Makefile enhancements:
852 1) Support for all new files above.
853 2) Abort make on errors from any subcomponent. Chao Guan.
854 3) Add build support for Apple Mac OS X. Liang Qi.
856 Example Code and Data Size: These are the sizes for the OS-independent
857 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
858 debug version of the code includes the debug output trace mechanism and
859 has a much larger code and data size.
862 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
863 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
865 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
866 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
869 2) iASL Compiler/Disassembler and Tools:
871 New utility: Implemented an easily portable version of the acpidump
872 utility to extract ACPI tables from the system (or a file) in an ASCII
874 dump format. The top-level code implements the various command line
875 options, file I/O, and table dump routines. To port to a new host, only
876 three functions need to be implemented to get tables -- since this
877 functionality is OS-dependent. See the tools/acpidump/apmain.c module and
878 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
879 1) The Windows version obtains the ACPI tables from the Registry.
880 2) The Linux version is under development.
881 3) Other hosts - If an OS-dependent module is submitted, it will be
882 distributed with ACPICA.
884 iASL: Fixed a regression for -D preprocessor option (define symbol). A
885 restructuring/change to the initialization sequence caused this option to
886 no longer work properly.
888 iASL: Implemented a mechanism to disable specific warnings and remarks.
889 Adds a new command line option, "-vw <messageid> as well as "#pragma
890 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
892 iASL: Fix for too-strict package object validation. The package object
893 validation for return values from the predefined names is a bit too
894 strict, it does not allow names references within the package (which will
895 be resolved at runtime.) These types of references cannot be validated at
896 compile time. This change ignores named references within package objects
897 for names that return or define static packages.
899 Debugger: Fixed the 80-character command line limitation for the History
900 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
902 iASL: Added control method and package support for the -so option
903 (generates AML offset table for BIOS support.)
905 iASL: issue a remark if a non-serialized method creates named objects. If
906 a thread blocks within the method for any reason, and another thread
907 enters the method, the method will fail because an attempt will be made
909 create the same (named) object twice. In this case, issue a remark that
910 the method should be marked serialized. NOTE: may become a warning later.
913 ----------------------------------------
914 18 April 2013. Summary of changes for version 20130418:
916 1) ACPICA kernel-resident subsystem:
918 Fixed a possible buffer overrun during some rare but specific field unit
919 read operations. This overrun can only happen if the DSDT version is 1 --
920 meaning that all AML integers are 32 bits -- and the field length is
921 between 33 and 55 bits long. During the read, an internal buffer object
923 created for the field unit because the field is larger than an integer
925 bits). However, in this case, the buffer will be incorrectly written
926 beyond the end because the buffer length is less than the internal
928 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
929 long, but a full 8 bytes will be written.
931 Updated the Embedded Controller "orphan" _REG method support. This refers
932 to _REG methods under the EC device that have no corresponding operation
933 region. This is allowed by the ACPI specification. This update removes a
934 dependency on the existence an ECDT table. It will execute an orphan _REG
935 method as long as the operation region handler for the EC is installed at
936 the EC device node and not the namespace root. Rui Zhang (original
937 update), Bob Moore (update/integrate).
939 Implemented run-time argument typechecking for all predefined ACPI names
940 (_STA, _BIF, etc.) This change performs object typechecking on all
941 incoming arguments for all predefined names executed via
942 AcpiEvaluateObject. This ensures that ACPI-related device drivers are
943 passing correct object types as well as the correct number of arguments
944 (therefore identifying any issues immediately). Also, the ASL/namespace
945 definition of the predefined name is checked against the ACPI
946 specification for the proper argument count. Adds one new file,
949 Changed an exception code for the ASL UnLoad() operator. Changed the
950 exception code for the case where the input DdbHandle is invalid, from
951 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
953 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
954 global makefile. The use of this flag causes compiler errors on earlier
955 versions of GCC, so it has been removed for compatibility.
957 Miscellaneous cleanup:
958 1) Removed some unused/obsolete macros
959 2) Fixed a possible memory leak in the _OSI support
960 3) Removed an unused variable in the predefined name support
961 4) Windows OSL: remove obsolete reference to a memory list field
963 Example Code and Data Size: These are the sizes for the OS-independent
964 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
965 debug version of the code includes the debug output trace mechanism and
966 has a much larger code and data size.
969 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
970 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
972 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
973 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
976 2) iASL Compiler/Disassembler and Tools:
978 AcpiExec: Added installation of a handler for the SystemCMOS address
979 space. This prevents control method abort if a method accesses this
982 AcpiExec: Added support for multiple EC devices, and now install EC
983 operation region handler(s) at the actual EC device instead of the
984 namespace root. This reflects the typical behavior of host operating
987 AcpiExec: Updated to ensure that all operation region handlers are
988 installed before the _REG methods are executed. This prevents a _REG
989 method from aborting if it accesses an address space has no handler.
990 AcpiExec installs a handler for every possible address space.
992 Debugger: Enhanced the "handlers" command to display non-root handlers.
993 This change enhances the handlers command to display handlers associated
994 with individual devices throughout the namespace, in addition to the
995 currently supported display of handlers associated with the root
999 ASL Test Suite: Several test suite errors have been identified and
1000 resolved, reducing the total error count during execution. Chao Guan.
1002 ----------------------------------------
1003 28 March 2013. Summary of changes for version 20130328:
1005 1) ACPICA kernel-resident subsystem:
1007 Fixed several possible race conditions with the internal object reference
1008 counting mechanism. Some of the external ACPICA interfaces update object
1009 reference counts without holding the interpreter or namespace lock. This
1010 change adds a spinlock to protect reference count updates on the internal
1011 ACPICA objects. Reported by and with assistance from Andriy Gapon
1014 FADT support: Removed an extraneous warning for very large GPE register
1015 sets. This change removes a size mismatch warning if the legacy length
1016 field for a GPE register set is larger than the 64-bit GAS structure can
1017 accommodate. GPE register sets can be larger than the 255-bit width
1018 limitation of the GAS structure. Linn Crosetto (linn@hp.com).
1020 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
1021 return from this interface. Handles a possible timeout case if
1022 ACPI_WAIT_FOREVER is modified by the host to be a value less than
1023 "forever". Jung-uk Kim.
1025 Predefined name support: Add allowed/required argument type information
1027 the master predefined info table. This change adds the infrastructure to
1028 enable typechecking on incoming arguments for all predefined
1029 methods/objects. It does not actually contain the code that will fully
1030 utilize this information, this is still under development. Also condenses
1031 some duplicate code for the predefined names into a new module,
1032 utilities/utpredef.c
1034 Example Code and Data Size: These are the sizes for the OS-independent
1035 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1036 debug version of the code includes the debug output trace mechanism and
1037 has a much larger code and data size.
1040 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
1041 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
1043 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
1044 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
1047 2) iASL Compiler/Disassembler and Tools:
1049 iASL: Implemented a new option to simplify the development of ACPI-
1051 BIOS code. Adds support for a new "offset table" output file. The -so
1052 option will create a C table containing the AML table offsets of various
1053 named objects in the namespace so that BIOS code can modify them easily
1055 boot time. This can simplify BIOS runtime code by eliminating expensive
1056 searches for "magic values", enhancing boot times and adding greater
1057 reliability. With assistance from Lee Hamel.
1059 iASL: Allow additional predefined names to return zero-length packages.
1060 Now, all predefined names that are defined by the ACPI specification to
1061 return a "variable-length package of packages" are allowed to return a
1062 zero length top-level package. This allows the BIOS to tell the host that
1063 the requested feature is not supported, and supports existing BIOS/ASL
1066 iASL: Changed the "result not used" warning to an error. This is the case
1067 where an ASL operator is effectively a NOOP because the result of the
1068 operation is not stored anywhere. For example:
1070 There is no target (missing 3rd argument), nor is the function return
1071 value used. This is potentially a very serious problem -- since the code
1072 was probably intended to do something, but for whatever reason, the value
1073 was not stored. Therefore, this issue has been upgraded from a warning to
1076 AcpiHelp: Added allowable/required argument types to the predefined names
1077 info display. This feature utilizes the recent update to the predefined
1078 names table (above).
1080 ----------------------------------------
1081 14 February 2013. Summary of changes for version 20130214:
1083 1) ACPICA Kernel-resident Subsystem:
1085 Fixed a possible regression on some hosts: Reinstated the safe return
1086 macros (return_ACPI_STATUS, etc.) that ensure that the argument is
1087 evaluated only once. Although these macros are not needed for the ACPICA
1088 code itself, they are often used by ACPI-related host device drivers
1090 the safe feature may be necessary.
1092 Fixed several issues related to the ACPI 5.0 reduced hardware support
1093 (SOC): Now ensure that if the platform declares itself as hardware-
1095 via the FADT, the following functions become NOOPs (and always return
1096 AE_OK) because ACPI is always enabled by definition on these machines:
1102 Dynamic Object Repair: Implemented additional runtime repairs for
1103 predefined name return values. Both of these repairs can simplify code in
1104 the related device drivers that invoke these methods:
1105 1) For the _STR and _MLS names, automatically repair/convert an ASCII
1106 string to a Unicode buffer.
1107 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
1109 lone end tag descriptor in the following cases: A Return(0) was executed,
1110 a null buffer was returned, or no object at all was returned (non-slack
1111 mode only). Adds a new file, nsconvert.c
1112 ACPICA BZ 998. Bob Moore, Lv Zheng.
1114 Resource Manager: Added additional code to prevent possible infinite
1116 while traversing corrupted or ill-formed resource template buffers. Check
1117 for zero-length resource descriptors in all code that loops through
1118 resource templates (the length field is used to index through the
1119 template). This change also hardens the external AcpiWalkResources and
1120 AcpiWalkResourceBuffer interfaces.
1122 Local Cache Manager: Enhanced the main data structure to eliminate an
1123 unnecessary mechanism to access the next object in the list. Actually
1124 provides a small performance enhancement for hosts that use the local
1125 ACPICA cache manager. Jung-uk Kim.
1127 Example Code and Data Size: These are the sizes for the OS-independent
1128 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1129 debug version of the code includes the debug output trace mechanism and
1130 has a much larger code and data size.
1133 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
1134 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
1136 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
1137 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
1140 2) iASL Compiler/Disassembler and Tools:
1142 iASL/Disassembler: Fixed several issues with the definition of the ACPI
1143 5.0 RASF table (RAS Feature Table). This change incorporates late changes
1144 that were made to the ACPI 5.0 specification.
1146 iASL/Disassembler: Added full support for the following new ACPI tables:
1147 1) The MTMR table (MID Timer Table)
1148 2) The VRTC table (Virtual Real Time Clock Table).
1149 Includes header file, disassembler, table compiler, and template support
1152 iASL: Implemented compile-time validation of package objects returned by
1153 predefined names. This new feature validates static package objects
1154 returned by the various predefined names defined to return packages. Both
1155 object types and package lengths are validated, for both parent packages
1156 and sub-packages, if any. The code is similar in structure and behavior
1158 the runtime repair mechanism within the AML interpreter and uses the
1159 existing predefined name information table. Adds a new file, aslprepkg.c.
1162 iASL: Implemented auto-detection of binary ACPI tables for disassembly.
1163 This feature detects a binary file with a valid ACPI table header and
1164 invokes the disassembler automatically. Eliminates the need to
1165 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
1167 iASL/Disassembler: Added several warnings for the case where there are
1168 unresolved control methods during the disassembly. This can potentially
1169 cause errors when the output file is compiled, because the disassembler
1170 assumes zero method arguments in these cases (it cannot determine the
1171 actual number of arguments without resolution/definition of the method).
1173 Debugger: Added support to display all resources with a single command.
1174 Invocation of the resources command with no arguments will now display
1176 resources within the current namespace.
1178 AcpiHelp: Added descriptive text for each ACPICA exception code displayed
1181 ----------------------------------------
1182 17 January 2013. Summary of changes for version 20130117:
1184 1) ACPICA Kernel-resident Subsystem:
1186 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
1187 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
1188 objects to return a package containing one integer, most BIOS code
1190 two integers and the previous code reflects that. However, we also need
1192 support BIOS code that actually implements to the ACPI spec, and this
1193 change reflects this.
1195 Fixed two issues with the ACPI_DEBUG_PRINT macros:
1196 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
1197 C compilers that require this support.
1198 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
1199 ACPI_DEBUG is already used by many of the various hosts.
1201 Updated all ACPICA copyrights and signons to 2013. Added the 2013
1202 copyright to all module headers and signons, including the standard Linux
1203 header. This affects virtually every file in the ACPICA core subsystem,
1204 iASL compiler, all ACPICA utilities, and the test suites.
1206 Example Code and Data Size: These are the sizes for the OS-independent
1207 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1208 debug version of the code includes the debug output trace mechanism and
1209 has a much larger code and data size.
1212 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
1213 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
1215 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
1216 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
1219 2) iASL Compiler/Disassembler and Tools:
1221 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
1222 prevent a possible fault on some hosts. Some C libraries modify the arg
1223 pointer parameter to vfprintf making it difficult to call it twice in the
1224 AcpiOsVprintf function. Use a local buffer to workaround this issue. This
1225 does not affect the Windows OSL since the Win C library does not modify
1226 the arg pointer. Chao Guan, Bob Moore.
1228 iASL: Fixed a possible infinite loop when the maximum error count is
1229 reached. If an output file other than the .AML file is specified (such as
1230 a listing file), and the maximum number of errors is reached, do not
1231 attempt to flush data to the output file(s) as the compiler is aborting.
1232 This can cause an infinite loop as the max error count code essentially
1233 keeps calling itself.
1235 iASL/Disassembler: Added an option (-in) to ignore NOOP
1237 Implemented for both the compiler and the disassembler. Often, the NOOP
1238 opcode is used as padding for packages that are changed dynamically by
1240 BIOS. When disassembled and recompiled, these NOOPs will cause syntax
1241 errors. This option causes the disassembler to ignore all NOOP opcodes
1242 (0xA3), and it also causes the compiler to ignore all ASL source code
1246 Debugger: Enhanced the Sleep command to execute all sleep states. This
1247 change allows Sleep to be invoked with no arguments and causes the
1248 debugger to execute all of the sleep states, 0-5, automatically.
1250 ----------------------------------------
1251 20 December 2012. Summary of changes for version 20121220:
1253 1) ACPICA Kernel-resident Subsystem:
1255 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
1256 alternate entry point for AcpiWalkResources and improves the usability of
1257 the resource manager by accepting as input a buffer containing the output
1258 of either a _CRS, _PRS, or _AEI method. The key functionality is that the
1259 input buffer is not deleted by this interface so that it can be used by
1260 the host later. See the ACPICA reference for details.
1262 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
1263 (DSDT version < 2). The constant will be truncated and this warning
1264 reflects that behavior.
1266 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
1267 ExtendedInterrupt, and GpioInt descriptors. This change adds support to
1268 both get and set the new wake bit in these descriptors, separately from
1269 the existing share bit. Reported by Aaron Lu.
1271 Interpreter: Fix Store() when an implicit conversion is not possible. For
1272 example, in the cases such as a store of a string to an existing package
1273 object, implement the store as a CopyObject(). This is a small departure
1274 from the ACPI specification which states that the control method should
1276 aborted in this case. However, the ASLTS suite depends on this behavior.
1278 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
1279 macros: check if debug output is currently enabled as soon as possible to
1280 minimize performance impact if debug is in fact not enabled.
1282 Source code restructuring: Cleanup to improve modularity. The following
1283 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
1284 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
1285 Associated makefiles and project files have been updated.
1287 Changed an exception code for LoadTable operator. For the case where one
1288 of the input strings is too long, change the returned exception code from
1289 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
1291 Fixed a possible memory leak in dispatcher error path. On error, delete
1292 the mutex object created during method mutex creation. Reported by
1293 tim.gardner@canonical.com.
1295 Example Code and Data Size: These are the sizes for the OS-independent
1296 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1297 debug version of the code includes the debug output trace mechanism and
1298 has a much larger code and data size.
1301 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
1302 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
1304 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
1305 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
1308 2) iASL Compiler/Disassembler and Tools:
1310 iASL: Disallow a method call as argument to the ObjectType ASL operator.
1311 This change tracks an errata to the ACPI 5.0 document. The AML grammar
1312 will not allow the interpreter to differentiate between a method and a
1313 method invocation when these are used as an argument to the ObjectType
1314 operator. The ACPI specification change is to disallow a method
1316 (UserTerm) for the ObjectType operator.
1318 Finish support for the TPM2 and CSRT tables in the headers, table
1319 compiler, and disassembler.
1321 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
1322 always expires immediately if the semaphore is not available. The
1324 code was using a relative-time timeout, but sem_timedwait requires the
1326 of an absolute time.
1328 iASL: Added a remark if the Timer() operator is used within a 32-bit
1329 table. This operator returns a 64-bit time value that will be truncated
1330 within a 32-bit table.
1332 iASL Source code restructuring: Cleanup to improve modularity. The
1333 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
1334 aslmethod.c, and aslfileio.c. Associated makefiles and project files have
1338 ----------------------------------------
1339 14 November 2012. Summary of changes for version 20121114:
1341 1) ACPICA Kernel-resident Subsystem:
1343 Implemented a performance enhancement for ACPI/AML Package objects. This
1344 change greatly increases the performance of Package objects within the
1345 interpreter. It changes the processing of reference counts for packages
1347 optimizing for the most common case where the package sub-objects are
1348 either Integers, Strings, or Buffers. Increases the overall performance
1350 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
1352 Chao Guan. ACPICA BZ 943.
1354 Implemented and deployed common macros to extract flag bits from resource
1355 descriptors. Improves readability and maintainability of the code. Fixes
1357 problem with the UART serial bus descriptor for the number of data bits
1358 flags (was incorrectly 2 bits, should be 3).
1360 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
1361 of the macros and changed the SETx macros to the style of (destination,
1362 source). Also added ACPI_CASTx companion macros. Lv Zheng.
1364 Example Code and Data Size: These are the sizes for the OS-independent
1365 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1366 debug version of the code includes the debug output trace mechanism and
1367 has a much larger code and data size.
1370 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
1371 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
1373 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
1374 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
1377 2) iASL Compiler/Disassembler and Tools:
1379 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
1380 adds the ShareAndWake and ExclusiveAndWake flags which were added to the
1381 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
1383 Disassembler: Fixed a problem with external declaration generation. Fixes
1384 a problem where an incorrect pathname could be generated for an external
1385 declaration if the original reference to the object includes leading
1386 carats (^). ACPICA BZ 984.
1388 Debugger: Completed a major update for the Disassemble<method> command.
1389 This command was out-of-date and did not properly disassemble control
1390 methods that had any reasonable complexity. This fix brings the command
1392 to the same level as the rest of the disassembler. Adds one new file,
1393 dmdeferred.c, which is existing code that is now common with the main
1394 disassembler and the debugger disassemble command. ACPICA MZ 978.
1396 iASL: Moved the parser entry prototype to avoid a duplicate declaration.
1397 Newer versions of Bison emit this prototype, so moved the prototype out
1399 the iASL header to where it is actually used in order to avoid a
1403 iASL/Tools: Standardized use of the stream I/O functions:
1404 1) Ensure check for I/O error after every fopen/fread/fwrite
1405 2) Ensure proper order of size/count arguments for fread/fwrite
1406 3) Use test of (Actual != Requested) after all fwrite, and most fread
1407 4) Standardize I/O error messages
1408 Improves reliability and maintainability of the code. Bob Moore, Lv
1412 Disassembler: Prevent duplicate External() statements. During generation
1413 of external statements, detect similar pathnames that are actually
1414 duplicates such as these:
1417 Remove all leading '\' characters from pathnames during the external
1418 statement generation so that duplicates will be detected and tossed.
1421 Tools: Replace low-level I/O with stream I/O functions. Replace
1422 open/read/write/close with the stream I/O equivalents
1423 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
1426 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
1427 name header so that AcpiXtract recognizes the output file/table.
1429 iASL: Remove obsolete -2 option flag. Originally intended to force the
1430 compiler/disassembler into an ACPI 2.0 mode, this was never implemented
1431 and the entire concept is now obsolete.
1433 ----------------------------------------
1434 18 October 2012. Summary of changes for version 20121018:
1437 1) ACPICA Kernel-resident Subsystem:
1439 Updated support for the ACPI 5.0 MPST table. Fixes some problems
1440 introduced by late changes to the table as it was added to the ACPI 5.0
1441 specification. Includes header, disassembler, and data table compiler
1442 support as well as a new version of the MPST template.
1444 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
1445 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
1446 methods: _HID, _CID, and _UID.
1448 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
1449 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
1450 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
1451 names for their various drivers. Affects the AcpiGetObjectInfo external
1452 interface, and other internal interfaces as well.
1454 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
1455 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
1456 on machines that support non-aligned transfers. Optimizes for this case
1457 rather than using a strncpy. With assistance from Zheng Lv.
1459 Resource Manager: Small fix for buffer size calculation. Fixed a one byte
1460 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
1462 Added a new debug print message for AML mutex objects that are force-
1463 released. At control method termination, any currently acquired mutex
1464 objects are force-released. Adds a new debug-only message for each one
1467 Audited/updated all ACPICA return macros and the function debug depth
1468 counter: 1) Ensure that all functions that use the various TRACE macros
1469 also use the appropriate ACPICA return macros. 2) Ensure that all normal
1470 return statements surround the return expression (value) with parens to
1471 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
1472 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
1474 Global source code changes/maintenance: All extra lines at the start and
1475 end of each source file have been removed for consistency. Also, within
1476 comments, all new sentences start with a single space instead of a double
1477 space, again for consistency across the code base.
1479 Example Code and Data Size: These are the sizes for the OS-independent
1480 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1481 debug version of the code includes the debug output trace mechanism and
1482 has a much larger code and data size.
1485 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
1486 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
1488 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
1489 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
1492 2) iASL Compiler/Disassembler and Tools:
1494 AcpiExec: Improved the algorithm used for memory leak/corruption
1495 detection. Added some intelligence to the code that maintains the global
1496 list of allocated memory. The list is now ordered by allocated memory
1497 address, significantly improving performance. When running AcpiExec on
1498 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
1499 on the platform and/or the environment. Note, this performance
1500 enhancement affects the AcpiExec utility only, not the kernel-resident
1503 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
1504 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
1505 incorrect table offset reported for invalid opcodes. Report the original
1506 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
1508 Disassembler: Enhanced the -vt option to emit the binary table data in
1509 hex format to assist with debugging.
1511 Fixed a potential filename buffer overflow in osunixdir.c. Increased the
1512 size of file structure. Colin Ian King.
1514 ----------------------------------------
1515 13 September 2012. Summary of changes for version 20120913:
1518 1) ACPICA Kernel-resident Subsystem:
1520 ACPI 5.0: Added two new notify types for the Hardware Error Notification
1521 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
1525 Table Manager: Merged/removed duplicate code in the root table resize
1526 functions. One function is external, the other is internal. Lv Zheng,
1530 Makefiles: Completely removed the obsolete "Linux" makefiles under
1531 acpica/generate/linux. These makefiles are obsolete and have been
1534 the generic unix makefiles under acpica/generate/unix.
1536 Makefiles: Ensure that binary files always copied properly. Minor rule
1538 to ensure that the final binary output files are always copied up to the
1539 appropriate binary directory (bin32 or bin64.)
1541 Example Code and Data Size: These are the sizes for the OS-independent
1542 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1544 version of the code includes the debug output trace mechanism and has a
1546 larger code and data size.
1549 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
1550 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
1552 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
1553 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
1556 2) iASL Compiler/Disassembler and Tools:
1558 Disassembler: Fixed a possible fault during the disassembly of resource
1559 descriptors when a second parse is required because of the invocation of
1560 external control methods within the table. With assistance from
1561 adq@lidskialf.net. ACPICA BZ 976.
1563 iASL: Fixed a namepath optimization problem. An error can occur if the
1565 node that contains the namepath to be optimized does not have a parent
1567 that is a named object. This change fixes the problem.
1569 iASL: Fixed a regression where the AML file is not deleted on errors. The
1571 output file should be deleted if there are any errors during the
1574 only exception is if the -f (force output) option is used. ACPICA BZ 974.
1576 iASL: Added a feature to automatically increase internal line buffer
1578 Via realloc(), automatically increase the internal line buffer sizes as
1579 necessary to support very long source code lines. The current version of
1581 preprocessor requires a buffer long enough to contain full source code
1583 This change increases the line buffer(s) if the input lines go beyond the
1584 current buffer size. This eliminates errors that occurred when a source
1586 line was longer than the buffer.
1588 iASL: Fixed a problem with constant folding in method declarations. The
1589 SyncLevel term is a ByteConstExpr, and incorrect code would be generated
1591 Type3 opcode was used.
1593 Debugger: Improved command help support. For incorrect argument count,
1595 full help for the command. For help command itself, allow an argument to
1598 Test Suites: Several bug fixes for the ASLTS suite reduces the number of
1599 errors during execution of the suite. Guan Chao.
1601 ----------------------------------------
1602 16 August 2012. Summary of changes for version 20120816:
1605 1) ACPICA Kernel-resident Subsystem:
1607 Removed all use of the deprecated _GTS and _BFS predefined methods. The
1609 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially
1610 deprecated and will probably be removed from the ACPI specification.
1612 does not invoke them, and reportedly never will. The final nail in the
1614 is that the ACPI specification states that these methods must be run with
1615 interrupts off, which is not going to happen in a kernel interpreter.
1617 Linux has removed all use of the methods also. It was discovered that
1618 invoking these functions caused failures on some machines, probably
1620 they were never tested since Windows does not call them. Affects two
1622 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
1625 Implemented support for complex bit-packed buffers returned from the _PLD
1626 (Physical Location of Device) predefined method. Adds a new external
1627 interface, AcpiDecodePldBuffer that parses the buffer into a more usable
1629 structure. Note: C Bitfields cannot be used for this type of predefined
1630 structure since the memory layout of individual bitfields is not defined
1632 the C language. In addition, there are endian concerns where a compiler
1634 change the bitfield ordering based on the machine type. The new ACPICA
1635 interface eliminates these issues, and should be called after _PLD is
1636 executed. ACPICA BZ 954.
1638 Implemented a change to allow a scope change to root (via "Scope (\)")
1640 execution of module-level ASL code (code that is executed at table load
1643 Added the Windows8/Server2012 string for the _OSI method. This change
1646 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
1649 Added header support for the new ACPI tables DBG2 (Debug Port Table Type
1651 and CSRT (Core System Resource Table).
1653 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
1654 names. This simplifies access to the buffers returned by these predefined
1655 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
1657 GPE support: Removed an extraneous parameter from the various low-level
1658 internal GPE functions. Tang Feng.
1660 Removed the linux makefiles from the unix packages. The generate/linux
1661 makefiles are obsolete and have been removed from the unix tarball
1663 packages. The replacement makefiles are under generate/unix, and there is
1665 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
1667 Updates for Unix makefiles:
1668 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
1669 2) Update linker flags (move to end of command line) for AcpiExec
1673 Split ACPICA initialization functions to new file, utxfinit.c. Split from
1674 utxface.c to improve modularity and reduce file size.
1676 Example Code and Data Size: These are the sizes for the OS-independent
1677 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1678 debug version of the code includes the debug output trace mechanism and
1680 much larger code and data size.
1683 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
1684 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
1686 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
1687 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
1690 2) iASL Compiler/Disassembler and Tools:
1692 iASL: Fixed a problem with constant folding for fixed-length constant
1693 expressions. The constant-folding code was not being invoked for constant
1694 expressions that allow the use of type 3/4/5 opcodes to generate
1696 for expressions such as ByteConstExpr, WordConstExpr, etc. This could
1698 in the generation of invalid AML bytecode. ACPICA BZ 970.
1700 iASL: Fixed a generation issue on newer versions of Bison. Newer versions
1701 apparently automatically emit some of the necessary externals. This
1703 handles these versions in order to eliminate generation warnings.
1705 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
1707 Disassembler: Add support to decode _PLD buffers. The decoded buffer
1709 within comments in the output file.
1711 Debugger: Fixed a regression with the "Threads" command where
1712 AE_BAD_PARAMETER was always returned.
1714 ----------------------------------------
1715 11 July 2012. Summary of changes for version 20120711:
1717 1) ACPICA Kernel-resident Subsystem:
1719 Fixed a possible fault in the return package object repair code. Fixes a
1720 problem that can occur when a lone package object is wrapped with an
1722 package object in order to force conformance to the ACPI specification.
1724 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
1728 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
1729 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
1730 ARB_DIS bit must be implemented in the host-dependent C3 processor power
1732 support. Note, ARB_DIS is obsolete and only applies to older chipsets,
1734 Intel and other vendors. (for Intel: ICH4-M and earlier)
1736 This change removes the code to disable/enable bus master arbitration
1738 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
1740 resume problems on some machines. The change has been in use for over
1744 Implemented two new external interfaces to support host-directed dynamic
1746 table load and unload. They are intended to simplify the host
1748 of hot-plug support:
1749 AcpiLoadTable: Load an SSDT from a buffer into the namespace.
1750 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
1752 See the ACPICA reference for additional details. Adds one new file,
1753 components/tables/tbxfload.c
1755 Implemented and deployed two new interfaces for errors and warnings that
1757 known to be caused by BIOS/firmware issues:
1758 AcpiBiosError: Prints "ACPI Firmware Error" message.
1759 AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
1760 Deployed these new interfaces in the ACPICA Table Manager code for ACPI
1762 and FADT errors. Additional deployment to be completed as appropriate in
1764 future. The associated conditional macros are ACPI_BIOS_ERROR and
1765 ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
1770 Implicit notify support: ensure that no memory allocation occurs within a
1771 critical region. This fix moves a memory allocation outside of the time
1773 spinlock is held. Fixes issues on systems that do not allow this
1777 Split exception code utilities and tables into a new file,
1780 Example Code and Data Size: These are the sizes for the OS-independent
1781 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1783 version of the code includes the debug output trace mechanism and has a
1785 larger code and data size.
1788 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
1789 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
1791 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
1792 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
1795 2) iASL Compiler/Disassembler and Tools:
1797 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
1801 Debugger: Enhanced the "tables" command to emit additional information
1803 the current set of ACPI tables, including the owner ID and flags decode.
1805 Debugger: Reimplemented the "unload" command to use the new
1806 AcpiUnloadParentTable external interface. This command was disable
1808 due to need for an unload interface.
1810 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
1812 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
1814 ----------------------------------------
1815 20 June 2012. Summary of changes for version 20120620:
1818 1) ACPICA Kernel-resident Subsystem:
1820 Implemented support to expand the "implicit notify" feature to allow
1822 devices to be notified by a single GPE. This feature automatically
1824 runtime device notification in the absence of a BIOS-provided GPE control
1825 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
1827 provided by ACPICA for Windows compatibility, and is a workaround for
1830 code errors. See the description of the AcpiSetupGpeForWake interface in
1832 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
1834 Changed some comments and internal function names to simplify and ensure
1835 correctness of the Linux code translation. No functional changes.
1837 Example Code and Data Size: These are the sizes for the OS-independent
1838 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1840 version of the code includes the debug output trace mechanism and has a
1842 larger code and data size.
1845 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
1846 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
1848 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
1849 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
1852 2) iASL Compiler/Disassembler and Tools:
1854 Disassembler: Added support to emit short, commented descriptions for the
1856 predefined names in order to improve the readability of the disassembled
1857 output. ACPICA BZ 959. Changes include:
1858 1) Emit descriptions for all standard predefined names (_INI, _STA,
1861 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
1862 3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
1865 AcpiSrc: Fixed several long-standing Linux code translation issues.
1867 descriptions in function headers are now translated properly to lower
1870 underscores. ACPICA BZ 961. Also fixes translation problems such as
1876 local_fADT -> local_FADT
1877 execute_oSI -> execute_OSI
1879 iASL: Fixed a problem where null bytes were inadvertently emitted into
1883 iASL: Added the existing debug options to the standard help screen. There
1885 no longer two different help screens. ACPICA BZ 957.
1887 AcpiHelp: Fixed some typos in the various predefined name descriptions.
1889 expand some of the descriptions where appropriate.
1891 iASL: Fixed the -ot option (display compile times/statistics). Was not
1893 properly for standard output; only worked for the debug file case.
1895 ----------------------------------------
1896 18 May 2012. Summary of changes for version 20120518:
1899 1) ACPICA Core Subsystem:
1901 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
1903 to block until asynchronous events such as notifies and GPEs have
1905 Within ACPICA, it is only called before a notify or GPE handler is
1906 removed/uninstalled. It also may be useful for the host OS within related
1907 drivers such as the Embedded Controller driver. See the ACPICA reference
1909 additional information. ACPICA BZ 868.
1911 ACPI Tables: Added a new error message for a possible overflow failure
1913 the conversion of FADT 32-bit legacy register addresses to internal
1916 bit GAS structure representation. The GAS has a one-byte "bit length"
1918 thus limiting the register length to 255 bits. ACPICA BZ 953.
1920 Example Code and Data Size: These are the sizes for the OS-independent
1921 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1923 version of the code includes the debug output trace mechanism and has a
1925 larger code and data size.
1928 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
1929 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
1931 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
1932 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
1935 2) iASL Compiler/Disassembler and Tools:
1937 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
1939 This keyword was added late in the ACPI 5.0 release cycle and was not
1940 implemented until now.
1942 Disassembler: Added support for Operation Region externals. Adds missing
1943 support for operation regions that are defined in another table, and
1944 referenced locally via a Field or BankField ASL operator. Now generates
1946 correct External statement.
1948 Disassembler: Several additional fixes for the External() statement
1950 related to some ASL operators. Also, order the External() statements
1951 alphabetically in the disassembler output. Fixes the External()
1954 the Create* field, Alias, and Scope operators:
1955 1) Create* buffer field operators - fix type mismatch warning on
1957 2) Alias - implement missing External support
1958 3) Scope - fix to make sure all necessary externals are emitted.
1960 iASL: Improved pathname support. For include files, merge the prefix
1962 with the file pathname and eliminate unnecessary components. Convert
1963 backslashes in all pathnames to forward slashes, for readability. Include
1965 pathname changes affect both #include and Include() type operators.
1967 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
1969 of a valid line by inserting a newline and then returning the EOF during
1971 next call to GetNextLine. Prevents the line from being ignored due to EOF
1974 iASL: Implemented some changes to enhance the IDE support (-vi option.)
1976 and Warning messages are now correctly recognized for both the source
1978 browser and the global error and warning counts.
1980 ----------------------------------------
1981 20 April 2012. Summary of changes for version 20120420:
1984 1) ACPICA Core Subsystem:
1986 Implemented support for multiple notify handlers. This change adds
1989 allow multiple system and device notify handlers on Device, Thermal Zone,
1991 Processor objects. This can simplify the host OS notification
1993 Also re-worked and restructured the entire notify support code to
1995 handler installation, handler removal, notify event queuing, and notify
1996 dispatch to handler(s). Note: there can still only be two global notify
1997 handlers - one for system notifies and one for device notifies. There are
1999 changes to the existing handler install/remove interfaces. Lin Ming, Bob
2000 Moore, Rafael Wysocki.
2002 Fixed a regression in the package repair code where the object reference
2003 count was calculated incorrectly. Regression was introduced in the commit
2004 "Support to add Package wrappers".
2006 Fixed a couple possible memory leaks in the AML parser, in the error
2008 path. Jesper Juhl, Lin Ming.
2010 Example Code and Data Size: These are the sizes for the OS-independent
2011 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2012 debug version of the code includes the debug output trace mechanism and
2014 much larger code and data size.
2017 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
2018 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
2020 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
2021 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
2024 2) iASL Compiler/Disassembler and Tools:
2026 iASL: Fixed a problem with the resource descriptor support where the
2028 of the StartDependentFn and StartDependentFnNoPrio descriptors were not
2029 included in cumulative descriptor offset, resulting in incorrect values
2031 resource tags within resource descriptors appearing after a
2033 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
2035 iASL and Preprocessor: Implemented full support for the #line directive
2037 correctly track original source file line numbers through the .i
2039 output file - for error and warning messages.
2041 iASL: Expand the allowable byte constants for address space IDs.
2043 the allowable range was 0x80-0xFF (user-defined spaces), now the range is
2044 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
2046 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
2048 iASL: Add option to completely disable the preprocessor (-Pn).
2050 iASL: Now emit all error/warning messages to standard error (stderr) by
2051 default (instead of the previous stdout).
2053 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
2055 for resource descriptor offset fix above. Update/cleanup error output
2056 routines. Enable and send iASL errors/warnings to an error logfile
2057 (error.txt). Send all other iASL output to a logfile (compiler.txt).
2059 several extraneous "unrecognized operator" messages.
2061 ----------------------------------------
2062 20 March 2012. Summary of changes for version 20120320:
2065 1) ACPICA Core Subsystem:
2067 Enhanced the sleep/wake interfaces to optionally execute the _GTS method
2068 (Going To Sleep) and the _BFS method (Back From Sleep). Windows
2070 does not execute these methods, and therefore these methods are often
2071 untested. It has been seen on some systems where the execution of these
2072 methods causes errors and also prevents the machine from entering S5. It
2074 therefore suggested that host operating systems do not execute these
2076 by default. In the future, perhaps these methods can be optionally
2078 based on the age of the system and/or what is the newest version of
2080 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
2082 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
2085 Fixed a problem where the length of the local/common FADT was set too
2087 The local FADT table length cannot be set to the common length until the
2088 original length has been examined. There is code that checks the table
2090 and sets various fields appropriately. This can affect older machines
2092 early FADT versions. For example, this can cause inadvertent writes to
2094 CST_CNT register. Julian Anastasov.
2096 Fixed a mapping issue related to a physical table override. Use the
2098 mapping mechanism for tables loaded via the physical override OSL
2100 This allows for early mapping before the virtual memory manager is
2102 Thomas Renninger, Bob Moore.
2104 Enhanced the automatic return-object repair code: Repair a common problem
2106 predefined methods that are defined to return a variable-length Package
2108 sub-objects. If there is only one sub-object, some BIOS ASL code
2110 simply returns the single object instead of a Package with one sub-
2112 This new support will repair this error by wrapping a Package object
2114 the original object, creating the correct and expected Package with one
2116 object. Names that can be repaired in this manner include: _ALR, _CSD,
2118 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
2121 Changed the exception code returned for invalid ACPI paths passed as
2122 parameters to external interfaces such as AcpiEvaluateObject. Was
2123 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
2125 Example Code and Data Size: These are the sizes for the OS-independent
2126 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2128 version of the code includes the debug output trace mechanism and has a
2130 larger code and data size.
2133 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
2134 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
2136 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
2137 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
2140 2) iASL Compiler/Disassembler and Tools:
2142 iASL: Added the infrastructure and initial implementation of a integrated
2144 like preprocessor. This will simplify BIOS development process by
2146 the need for a separate preprocessing step during builds. On Windows, it
2148 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
2149 features including full #define() macro support are still under
2151 These preprocessor directives are supported:
2164 In addition, these new command line options are supported:
2165 -D <symbol> Define symbol for preprocessor use
2166 -li Create preprocessed output file (*.i)
2167 -P Preprocess only and create preprocessor output file (*.i)
2169 Table Compiler: Fixed a problem where the equals operator within an
2171 did not work properly.
2173 Updated iASL to use the current versions of Bison/Flex. Updated the
2175 project file to invoke these tools from the standard location. ACPICA BZ
2178 Flex for Windows: V2.5.4
2179 Bison for Windows: V2.4.1
2181 ----------------------------------------
2182 15 February 2012. Summary of changes for version 20120215:
2185 1) ACPICA Core Subsystem:
2187 There have been some major changes to the sleep/wake support code, as
2188 described below (a - e).
2190 a) The AcpiLeaveSleepState has been split into two interfaces, similar to
2191 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
2192 AcpiLeaveSleepStatePrep. This allows the host to perform actions between
2194 time the _BFS method is called and the _WAK method is called. NOTE: all
2196 must update their wake/resume code or else sleep/wake will not work
2200 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
2202 method. Some machines require that the GPEs are enabled before the _WAK
2204 is executed. Thomas Renninger.
2206 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
2208 Some BIOS code assumes that WAK_STS will be cleared on resume and use it
2210 determine whether the system is rebooting or resuming. Matthew Garrett.
2212 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
2214 match the ACPI specification requirement. Rafael Wysocki.
2216 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
2217 registers within the V5 FADT. This support adds two new files:
2218 hardware/hwesleep.c implements the support for the new registers. Moved
2220 sleep/wake external interfaces to hardware/hwxfsleep.c.
2223 Added a new OSL interface for ACPI table overrides,
2224 AcpiOsPhysicalTableOverride. This interface allows the host to override a
2225 table via a physical address, instead of the logical address required by
2226 AcpiOsTableOverride. This simplifies the host implementation. Initial
2227 implementation by Thomas Renninger. The ACPICA implementation creates a
2229 shared function for table overrides that attempts both a logical and a
2232 Expanded the OSL memory read/write interfaces to 64-bit data
2233 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
2234 transfer support for GAS register structures passed to AcpiRead and
2237 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
2239 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
2241 See the ACPICA reference for details. ACPICA BZ 942. This option removes
2243 10% of the code and 5% of the static data, and the following hardware
2245 features become unavailable:
2246 PM Event and Control registers
2247 SCI interrupt (and handler)
2249 General Purpose Events (GPEs)
2252 FACS table (Waking vectors and Global Lock)
2254 Updated the unix tarball directory structure to match the ACPICA git
2256 tree. This ensures that the generic unix makefiles work properly (in
2257 generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
2260 Updated the return value of the _REV predefined method to integer value 5
2262 reflect ACPI 5.0 support.
2264 Moved the external ACPI PM timer interface prototypes to the public
2266 file where they belong.
2268 Example Code and Data Size: These are the sizes for the OS-independent
2269 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2271 version of the code includes the debug output trace mechanism and has a
2273 larger code and data size.
2276 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
2277 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
2279 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
2280 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
2283 2) iASL Compiler/Disassembler and Tools:
2285 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
2286 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
2287 incorrectly displayed.
2289 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
2292 ----------------------------------------
2293 11 January 2012. Summary of changes for version 20120111:
2296 1) ACPICA Core Subsystem:
2298 Implemented a new mechanism to allow host device drivers to check for
2300 range conflicts with ACPI Operation Regions. Both SystemMemory and
2302 address spaces are supported. A new external interface,
2303 AcpiCheckAddressRange,
2304 allows drivers to check an address range against the ACPI namespace. See
2306 ACPICA reference for additional details. Adds one new file,
2307 utilities/utaddress.c. Lin Ming, Bob Moore.
2309 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
2312 Status registers, update the ACPI 5.0 flags, and update internal data
2313 structures to handle an FADT larger than 256 bytes. The size of the ACPI
2317 Updated all ACPICA copyrights and signons to 2012. Added the 2012
2319 all module headers and signons, including the standard Linux header. This
2320 affects virtually every file in the ACPICA core subsystem, iASL compiler,
2322 all ACPICA utilities.
2324 Example Code and Data Size: These are the sizes for the OS-independent
2325 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2327 version of the code includes the debug output trace mechanism and has a
2329 larger code and data size.
2332 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
2333 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
2335 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
2336 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
2339 2) iASL Compiler/Disassembler and Tools:
2341 Disassembler: fixed a problem with the automatic resource tag generation
2342 support. Fixes a problem where the resource tags are inadvertently not
2343 constructed if the table being disassembled contains external references
2345 control methods. Moved the actual construction of the tags to after the
2347 namespace is constructed (after 2nd parse is invoked due to external
2349 method references.) ACPICA BZ 941.
2351 Table Compiler: Make all "generic" operators caseless. These are the
2353 like UINT8, String, etc. Making these caseless improves ease-of-use.
2357 ----------------------------------------
2358 23 November 2011. Summary of changes for version 20111123:
2360 0) ACPI 5.0 Support:
2362 This release contains full support for the ACPI 5.0 specification, as
2365 Reduced Hardware Support:
2366 -------------------------
2368 This support allows for ACPI systems without the usual ACPI hardware.
2370 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
2372 not attempt to initialize or use any of the usual ACPI hardware. Note,
2374 this flag is set, all of the following ACPI hardware is assumed to be not
2375 present and is not initialized or accessed:
2377 General Purpose Events (GPEs)
2378 Fixed Events (PM1a/PM1b and PM Control)
2379 Power Management Timer and Console Buttons (power/sleep)
2380 Real-time Clock Alarm
2382 System Control Interrupt (SCI)
2383 The FACS is assumed to be non-existent
2388 All new tables and updates to existing tables are fully supported in the
2389 ACPICA headers (for use by device drivers), the disassembler, and the
2391 Data Table Compiler. ACPI 5.0 defines these new tables:
2393 BGRT /* Boot Graphics Resource Table */
2394 DRTM /* Dynamic Root of Trust for Measurement table */
2395 FPDT /* Firmware Performance Data Table */
2396 GTDT /* Generic Timer Description Table */
2397 MPST /* Memory Power State Table */
2398 PCCT /* Platform Communications Channel Table */
2399 PMTT /* Platform Memory Topology Table */
2400 RASF /* RAS Feature table */
2402 Operation Regions/SpaceIDs:
2403 ---------------------------
2405 All new operation regions are fully supported by the iASL compiler, the
2406 disassembler, and the ACPICA runtime code (for dispatch to region
2408 The new operation region Space IDs are:
2413 Resource Descriptors:
2414 ---------------------
2416 All new ASL resource descriptors are fully supported by the iASL
2419 ASL/AML disassembler, and the ACPICA runtime Resource Manager code
2421 all new predefined resource tags). New descriptors are:
2430 ASL/AML Operators, New and Modified:
2431 ------------------------------------
2433 One new operator is added, the Connection operator, which is used to
2435 a GeneralPurposeIo or GenericSerialBus resource descriptor with
2437 field objects within an operation region. Several new protocols are
2439 with the AccessAs operator. All are fully supported by the iASL compiler,
2440 disassembler, and runtime ACPICA AML interpreter:
2442 Connection // Declare Field Connection
2444 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
2445 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
2447 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
2448 RawDataBuffer // Data type for Vendor Data
2451 Predefined ASL/AML Objects:
2452 ---------------------------
2454 All new predefined objects/control-methods are supported by the iASL
2456 and the ACPICA runtime validation/repair (arguments and return values.)
2458 predefined names include the following:
2460 Standard Predefined Names (Objects or Control Methods):
2461 _AEI, _CLS, _CPC, _CWS, _DEP,
2462 _DLM, _EVT, _GCP, _CRT, _GWS,
2463 _HRV, _PRE, _PSE, _SRT, _SUB.
2465 Resource Tags (Names used to access individual fields within resource
2467 _DBT, _DPL, _DRS, _END, _FLC,
2468 _IOR, _LIN, _MOD, _PAR, _PHA,
2469 _PIN, _PPI, _POL, _RXL, _SLV,
2470 _SPE, _STB, _TXL, _VEN.
2472 ACPICA External Interfaces:
2473 ---------------------------
2475 Several new interfaces have been defined for use by ACPI-related device
2476 drivers and other host OS services:
2478 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
2480 acquire and release AML mutexes that are defined in the DSDT/SSDT tables
2481 provided by the BIOS. They are intended to be used in conjunction with
2483 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
2484 mutual exclusion with the AML code/interpreter.
2486 AcpiGetEventResources: Returns the (formatted) resource descriptors as
2488 by the ACPI 5.0 _AEI object (ACPI Event Information). This object
2490 resource descriptors associated with hardware-reduced platform events,
2492 to the AcpiGetCurrentResources interface.
2494 Operation Region Handlers: For General Purpose IO and Generic Serial Bus
2495 operation regions, information about the Connection() object and any
2497 length information is passed to the region handler within the Context
2500 AcpiBufferToResource: This interface converts a raw AML buffer containing
2502 resource template or resource descriptor to the ACPI_RESOURCE internal
2504 suitable for use by device drivers. Can be used by an operation region
2506 to convert the Connection() buffer object into a ACPI_RESOURCE.
2508 Miscellaneous/Tools/TestSuites:
2509 -------------------------------
2511 Support for extended _HID names (Four alpha characters instead of three).
2512 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
2513 Support for ACPI 5.0 features in the ASLTS test suite.
2514 Fully updated documentation (ACPICA and iASL reference documents.)
2516 ACPI Table Definition Language:
2517 -------------------------------
2519 Support for this language was implemented and released as a subsystem of
2521 iASL compiler in 2010. (See the iASL compiler User Guide.)
2524 Non-ACPI 5.0 changes for this release:
2525 --------------------------------------
2527 1) ACPICA Core Subsystem:
2529 Fix a problem with operation region declarations where a failure can
2532 the region name and an argument that evaluates to an object (such as the
2533 region address) are in different namespace scopes. Lin Ming, ACPICA BZ
2536 Do not abort an ACPI table load if an invalid space ID is found within.
2538 will be caught later if the offending method is executed. ACPICA BZ 925.
2540 Fixed an issue with the FFixedHW space ID where the ID was not always
2541 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
2543 Fixed a problem with the 32-bit generation of the unix-specific OSL
2544 (osunixxf.c). Lin Ming, ACPICA BZ 936.
2546 Several changes made to enable generation with the GCC 4.6 compiler.
2550 New error messages: Unsupported I/O requests (not 8/16/32 bit), and
2552 field registers out-of-range.
2554 2) iASL Compiler/Disassembler and Tools:
2556 iASL: Implemented the __PATH__ operator, which returns the full pathname
2558 the current source file.
2560 AcpiHelp: Automatically display expanded keyword information for all ASL
2563 Debugger: Add "Template" command to disassemble/dump resource template
2566 Added a new master script to generate and execute the ASLTS test suite.
2567 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
2569 iASL: Fix problem with listing generation during processing of the
2571 operator where AML listing was disabled until the entire Switch block was
2574 iASL: Improve support for semicolon statement terminators. Fix "invalid
2575 character" message for some cases when the semicolon is used. Semicolons
2577 now allowed after every <Term> grammar element. ACPICA BZ 927.
2579 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
2582 Disassembler: Fix problem with disassembly of the DataTableRegion
2584 where an inadvertent "Unhandled deferred opcode" message could be
2587 3) Example Code and Data Size
2589 These are the sizes for the OS-independent acpica.lib produced by the
2590 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
2591 includes the debug output trace mechanism and has a much larger code and
2596 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
2597 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
2599 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
2600 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
2602 ----------------------------------------
2603 22 September 2011. Summary of changes for version 20110922:
2607 Support for ACPI 5.0 in ACPICA has been underway for several months and
2609 be released at the same time that ACPI 5.0 is officially released.
2611 The ACPI 5.0 specification is on track for release in the next few
2614 1) ACPICA Core Subsystem:
2616 Fixed a problem where the maximum sleep time for the Sleep() operator was
2617 intended to be limited to two seconds, but was inadvertently limited to
2621 Linux and Unix makefiles: Added header file dependencies to ensure
2623 generation of ACPICA core code and utilities. Also simplified the
2625 considerably through the use of the vpath variable to specify search
2629 2) iASL Compiler/Disassembler and Tools:
2631 iASL: Implemented support to check the access length for all fields
2633 access named Resource Descriptor fields. For example, if a resource field
2635 defined to be two bits, a warning is issued if a CreateXxxxField() is
2637 with an incorrect bit length. This is implemented for all current
2639 descriptor names. ACPICA BZ 930.
2641 Disassembler: Fixed a byte ordering problem with the output of 24-bit and
2645 iASL: Fixed a couple of issues associated with variable-length package
2646 objects. 1) properly handle constants like One, Ones, Zero -- do not make
2648 VAR_PACKAGE when these are used as a package length. 2) Allow the
2650 opcode (in addition to PACKAGE) when validating object types for
2654 iASL: Emit statistics for all output files (instead of just the ASL input
2656 AML output). Includes listings, hex files, etc.
2658 iASL: Added -G option to the table compiler to allow the compilation of
2660 ACPI tables. The only part of a table that is required is the standard
2665 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
2667 which also adds correct 64-bit support. Also, now all output filenames
2669 completely lower case.
2671 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
2672 loading table files. A warning is issued for any such tables. The only
2673 exception is an FADT. This also fixes a possible fault when attempting to
2675 non-AML tables. ACPICA BZ 932.
2677 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
2679 missing table terminator could cause a fault when using the -p option.
2681 AcpiSrc: Fixed a possible divide-by-zero fault when generating file
2684 3) Example Code and Data Size
2686 These are the sizes for the OS-independent acpica.lib produced by the
2687 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
2688 includes the debug output trace mechanism and has a much larger code and
2692 Previous Release (VC 9.0):
2693 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
2694 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
2695 Current Release (VC 9.0):
2696 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
2697 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
2700 ----------------------------------------
2701 23 June 2011. Summary of changes for version 20110623:
2703 1) ACPI CA Core Subsystem:
2705 Updated the predefined name repair mechanism to not attempt repair of a
2707 return object if a _PSS object is present. We can only sort the _TSS
2709 package if there is no _PSS within the same scope. This is because if
2712 present, the ACPI specification dictates that the _TSS Power Dissipation
2714 is to be ignored, and therefore some BIOSs leave garbage values in the
2716 Power field(s). In this case, it is best to just return the _TSS package
2718 is. Reported by, and fixed with assistance from Fenghua Yu.
2720 Added an option to globally disable the control method return value
2722 and repair. This runtime option can be used to disable return value
2725 this is causing a problem on a particular machine. Also added an option
2727 AcpiExec (-dr) to set this disable flag.
2729 All makefiles and project files: Major changes to improve generation of
2731 tools. ACPICA BZ 912:
2732 Reduce default optimization levels to improve compatibility
2733 For Linux, add strict-aliasing=0 for gcc 4
2734 Cleanup and simplify use of command line defines
2735 Cleanup multithread library support
2736 Improve usage messages
2738 Linux-specific header: update handling of THREAD_ID and pthread. For the
2740 bit case, improve casting to eliminate possible warnings, especially with
2744 Example Code and Data Size: These are the sizes for the OS-independent
2745 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2747 version of the code includes the debug output trace mechanism and has a
2749 larger code and data size.
2751 Previous Release (VC 9.0):
2752 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
2753 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
2754 Current Release (VC 9.0):
2755 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
2756 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
2758 2) iASL Compiler/Disassembler and Tools:
2760 With this release, a new utility named "acpihelp" has been added to the
2762 package. This utility summarizes the ACPI specification chapters for the
2764 and AML languages. It generates under Linux/Unix as well as Windows, and
2765 provides the following functionality:
2766 Find/display ASL operator(s) -- with description and syntax.
2767 Find/display ASL keyword(s) -- with exact spelling and descriptions.
2768 Find/display ACPI predefined name(s) -- with description, number
2769 of arguments, and the return value data type.
2770 Find/display AML opcode name(s) -- with opcode, arguments, and
2772 Decode/display AML opcode -- with opcode name, arguments, and
2775 Service Layers: Make multi-thread support configurable. Conditionally
2777 the multi-thread support so that threading libraries will not be linked
2780 necessary. The only tool that requires multi-thread support is AcpiExec.
2782 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
2784 Bison appear to want the interface to yyerror to be a const char * (or at
2785 least this is a problem when generating iASL on some systems.) ACPICA BZ
2789 Tools: Fix for systems where O_BINARY is not defined. Only used for
2791 versions of the tools.
2793 ----------------------------------------
2794 27 May 2011. Summary of changes for version 20110527:
2796 1) ACPI CA Core Subsystem:
2798 ASL Load() operator: Reinstate most restrictions on the incoming ACPI
2800 signature. Now, only allow SSDT, OEMx, and a null signature. History:
2801 1) Originally, we checked the table signature for "SSDT" or "PSDT".
2802 (PSDT is now obsolete.)
2803 2) We added support for OEMx tables, signature "OEM" plus a fourth
2804 "don't care" character.
2805 3) Valid tables were encountered with a null signature, so we just
2806 gave up on validating the signature, (05/2008).
2807 4) We encountered non-AML tables such as the MADT, which caused
2808 interpreter errors and kernel faults. So now, we once again allow
2809 only SSDT, OEMx, and now, also a null signature. (05/2011).
2811 Added the missing _TDL predefined name to the global name list in order
2813 enable validation. Affects both the core ACPICA code and the iASL
2816 Example Code and Data Size: These are the sizes for the OS-independent
2817 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2819 version of the code includes the debug output trace mechanism and has a
2821 larger code and data size.
2823 Previous Release (VC 9.0):
2824 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
2825 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
2826 Current Release (VC 9.0):
2827 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
2828 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
2830 2) iASL Compiler/Disassembler and Tools:
2832 Debugger/AcpiExec: Implemented support for "complex" method arguments on
2834 debugger command line. This adds support beyond simple integers --
2836 Strings, Buffers, and Packages. Includes support for nested packages.
2837 Increased the default command line buffer size to accommodate these
2839 See the ACPICA reference for details and syntax. ACPICA BZ 917.
2841 Debugger/AcpiExec: Implemented support for "default" method arguments for
2843 Execute/Debug command. Now, the debugger will always invoke a control
2845 with the required number of arguments -- even if the command line
2847 none or insufficient arguments. It uses default integer values for any
2849 arguments. Also fixes a bug where only six method arguments maximum were
2850 supported instead of the required seven.
2852 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
2854 also return status in order to prevent buffer overruns. See the ACPICA
2855 reference for details and syntax. ACPICA BZ 921
2857 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
2858 makefiles to simplify support for the two different but similar parser
2859 generators, bison and yacc.
2861 Updated the generic unix makefile for gcc 4. The default gcc version is
2863 expected to be 4 or greater, since options specific to gcc 4 are used.
2865 ----------------------------------------
2866 13 April 2011. Summary of changes for version 20110413:
2868 1) ACPI CA Core Subsystem:
2870 Implemented support to execute a so-called "orphan" _REG method under the
2872 device. This change will force the execution of a _REG method underneath
2875 device even if there is no corresponding operation region of type
2876 EmbeddedControl. Fixes a problem seen on some machines and apparently is
2877 compatible with Windows behavior. ACPICA BZ 875.
2879 Added more predefined methods that are eligible for automatic NULL
2881 element removal. This change adds another group of predefined names to
2884 of names that can be repaired by having NULL package elements dynamically
2885 removed. This group are those methods that return a single variable-
2887 package containing simple data types such as integers, buffers, strings.
2889 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
2892 and _TZD. ACPICA BZ 914.
2894 Split and segregated all internal global lock functions to a new file,
2897 Updated internal address SpaceID for DataTable regions. Moved this
2900 id in preparation for ACPI 5.0 changes that will include some new space
2903 change should not affect user/host code.
2905 Example Code and Data Size: These are the sizes for the OS-independent
2907 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
2909 the code includes the debug output trace mechanism and has a much larger
2914 Previous Release (VC 9.0):
2915 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
2916 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
2917 Current Release (VC 9.0):
2918 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
2919 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
2921 2) iASL Compiler/Disassembler and Tools:
2923 iASL/DTC: Major update for new grammar features. Allow generic data types
2925 custom ACPI tables. Field names are now optional. Any line can be split
2927 multiple lines using the continuation char (\). Large buffers now use
2929 continuation character(s) and no colon on the continuation lines. See the
2931 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
2934 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
2936 Since the parser stuffs a "zero" as the return value for these statements
2939 the underlying AML grammar), they were seen as "return with value" by the
2941 semantic checking. They are now seen correctly as "null" return
2944 iASL: Check if a_REG declaration has a corresponding Operation Region.
2946 check for each _REG to ensure that there is in fact a corresponding
2948 region declaration in the same scope. If not, the _REG method is not very
2950 since it probably won't be executed. ACPICA BZ 915.
2952 iASL/DTC: Finish support for expression evaluation. Added a new
2955 that implements c-style operator precedence and parenthesization. ACPICA
2959 Disassembler/DTC: Remove support for () and <> style comments in data
2962 that DTC has full expression support, we don't want to have comment
2965 start with a parentheses or a less-than symbol. Now, only the standard /*
2968 comments are supported, as well as the bracket [] comments.
2970 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
2972 headers in the acpidump file. Update the header validation to support
2974 tables. Problem introduced in previous AcpiXtract version in the change
2976 support "wrong checksum" error messages emitted by acpidump utility.
2978 iASL: Add a * option to generate all template files (as a synonym for
2982 "iasl -T *" or "iasl -T ALL".
2984 iASL/DTC: Do not abort compiler on fatal errors. We do not want to
2986 abort the compiler on "fatal" errors, simply should abort the current
2988 This allows multiple compiles with a single (possibly wildcard) compiler
2991 ----------------------------------------
2992 16 March 2011. Summary of changes for version 20110316:
2994 1) ACPI CA Core Subsystem:
2996 Fixed a problem caused by a _PRW method appearing at the namespace root
2998 during the setup of wake GPEs. A fault could occur if a _PRW directly
3001 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
3003 Implemented support for "spurious" Global Lock interrupts. On some
3005 global lock interrupt can occur without the pending flag being set. Upon
3008 interrupt, we now ensure that a thread is actually waiting for the lock
3010 signaling GL availability. Rafael Wysocki, Bob Moore.
3012 Example Code and Data Size: These are the sizes for the OS-independent
3014 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3016 the code includes the debug output trace mechanism and has a much larger
3021 Previous Release (VC 9.0):
3022 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
3023 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
3024 Current Release (VC 9.0):
3025 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
3026 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
3028 2) iASL Compiler/Disassembler and Tools:
3030 Implemented full support for the "SLIC" ACPI table. Includes support in
3032 header files, disassembler, table compiler, and template generator. Bob
3036 AcpiXtract: Correctly handle embedded comments and messages from
3038 Apparently some or all versions of acpidump will occasionally emit a
3041 "Wrong checksum", etc., into the dump file. This was causing problems for
3042 AcpiXtract. ACPICA BZ 905.
3044 iASL: Fix the Linux makefile by removing an inadvertent double file
3048 AcpiExec: Update installation of operation region handlers. Install one
3050 for a user-defined address space. This is used by the ASL test suite
3053 ----------------------------------------
3054 11 February 2011. Summary of changes for version 20110211:
3056 1) ACPI CA Core Subsystem:
3058 Added a mechanism to defer _REG methods for some early-installed
3060 Most user handlers should be installed before call to
3061 AcpiEnableSubsystem.
3062 However, Event handlers and region handlers should be installed after
3063 AcpiInitializeObjects. Override handlers for the "default" regions should
3065 installed early, however. This change executes all _REG methods for the
3066 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
3067 chicken/egg issues between them. ACPICA BZ 848.
3069 Implemented an optimization for GPE detection. This optimization will
3071 ignore GPE registers that contain no enabled GPEs -- there is no need to
3072 read the register since this information is available internally. This
3073 becomes more important on machines with a large GPE space. ACPICA
3075 884. Lin Ming. Suggestion from Joe Liu.
3077 Removed all use of the highly unreliable FADT revision field. The
3079 number in the FADT has been found to be completely unreliable and cannot
3081 trusted. Only the actual table length can be used to infer the version.
3083 change updates the ACPICA core and the disassembler so that both no
3085 even look at the FADT version and instead depend solely upon the FADT
3088 Fix an unresolved name issue for the no-debug and no-error-message source
3089 generation cases. The _AcpiModuleName was left undefined in these cases,
3091 it is actually needed as a parameter to some interfaces. Define
3092 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
3094 Split several large files (makefiles and project files updated)
3095 utglobal.c -> utdecode.c
3096 dbcomds.c -> dbmethod.c dbnames.c
3097 dsopcode.c -> dsargs.c dscontrol.c
3098 dsload.c -> dsload2.c
3099 aslanalyze.c -> aslbtypes.c aslwalks.c
3101 Example Code and Data Size: These are the sizes for the OS-independent
3102 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3103 debug version of the code includes the debug output trace mechanism and
3105 a much larger code and data size.
3107 Previous Release (VC 9.0):
3108 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
3109 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
3110 Current Release (VC 9.0):
3111 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
3112 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
3114 2) iASL Compiler/Disassembler and Tools:
3116 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
3117 These are useful C-style macros with the standard definitions. ACPICA
3120 iASL/DTC: Added support for integer expressions and labels. Support for
3122 expressions for all integer fields in all ACPI tables. Support for labels
3124 "generic" portions of tables such as UEFI. See the iASL reference manual.
3126 Debugger: Added a command to display the status of global handlers. The
3127 "handlers" command will display op region, fixed event, and miscellaneous
3128 global handlers. installation status -- and for op regions, whether
3130 or user-installed handler will be used.
3132 iASL: Warn if reserved method incorrectly returns a value. Many
3134 names are defined such that they do not return a value. If implemented as
3136 method, issue a warning if such a name explicitly returns a value. ACPICA
3139 iASL: Added detection of GPE method name conflicts. Detects a conflict
3141 there are two GPE methods of the form _Lxy and _Exy in the same scope.
3143 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
3145 iASL/DTC: Fixed a couple input scanner issues with comments and line
3146 numbers. Comment remover could get confused and miss a comment ending.
3148 a problem with line counter maintenance.
3150 iASL/DTC: Reduced the severity of some errors from fatal to error. There
3152 no need to abort on simple errors within a field definition.
3154 Debugger: Simplified the output of the help command. All help output now
3156 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
3158 ----------------------------------------
3159 12 January 2011. Summary of changes for version 20110112:
3161 1) ACPI CA Core Subsystem:
3163 Fixed a race condition between method execution and namespace walks that
3165 possibly cause a fault. The problem was apparently introduced in version
3166 20100528 as a result of a performance optimization that reduces the
3169 namespace walks upon method exit by using the delete_namespace_subtree
3170 function instead of the delete_namespace_by_owner function used
3172 Bug is a missing namespace lock in the delete_namespace_subtree function.
3173 dana.myers@oracle.com
3175 Fixed several issues and a possible fault with the automatic "serialized"
3176 method support. History: This support changes a method to "serialized" on
3178 fly if the method generates an AE_ALREADY_EXISTS error, indicating the
3179 possibility that it cannot handle reentrancy. This fix repairs a couple
3181 issues seen in the field, especially on machines with many cores:
3183 1) Delete method children only upon the exit of the last thread,
3184 so as to not delete objects out from under other running threads
3185 (and possibly causing a fault.)
3186 2) Set the "serialized" bit for the method only upon the exit of the
3187 Last thread, so as to not cause deadlock when running threads
3189 3) Cleanup the use of the AML "MethodFlags" and internal method flags
3190 so that there is no longer any confusion between the two.
3192 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
3194 Debugger: Now lock the namespace for duration of a namespace dump.
3196 issues if the namespace is changing dynamically underneath the debugger.
3197 Especially affects temporary namespace nodes, since the debugger displays
3200 Updated the ordering of include files. The ACPICA headers should appear
3201 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
3203 any necessary compiler-specific defines, etc. Affects the ACPI-related
3207 Updated all ACPICA copyrights and signons to 2011. Added the 2011
3209 to all module headers and signons, including the Linux header. This
3211 virtually every file in the ACPICA core subsystem, iASL compiler, and all
3214 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
3215 project files for VC++ 6.0 are now obsolete. New project files can be
3217 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
3220 Example Code and Data Size: These are the sizes for the OS-independent
3221 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3222 debug version of the code includes the debug output trace mechanism and
3224 much larger code and data size.
3226 Previous Release (VC 6.0):
3227 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
3228 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
3229 Current Release (VC 9.0):
3230 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
3231 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
3233 2) iASL Compiler/Disassembler and Tools:
3235 iASL: Added generic data types to the Data Table compiler. Add "generic"
3237 types such as UINT32, String, Unicode, etc., to simplify the generation
3239 platform-defined tables such as UEFI. Lin Ming.
3241 iASL: Added listing support for the Data Table Compiler. Adds listing
3243 (-l) to display actual binary output for each line of input code.
3245 ----------------------------------------
3246 09 December 2010. Summary of changes for version 20101209:
3248 1) ACPI CA Core Subsystem:
3250 Completed the major overhaul of the GPE support code that was begun in
3252 2010. Major features include: removal of _PRW execution in ACPICA (host
3253 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
3254 changes to existing interfaces, simplification of GPE handler operation,
3256 a handful of new interfaces:
3262 One new file, evxfgpe.c to consolidate all external GPE interfaces.
3264 See the ACPICA Programmer Reference for full details and programming
3265 information. See the new section 4.4 "General Purpose Event (GPE)
3267 for a full overview, and section 8.7 "ACPI General Purpose Event
3269 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
3271 Bob Moore, Rafael Wysocki.
3273 Implemented a new GPE feature for Windows compatibility, the "Implicit
3275 GPE Notify". This feature will automatically issue a Notify(2) on a
3277 when a Wake GPE is received if there is no corresponding GPE method or
3278 handler. ACPICA BZ 870.
3280 Fixed a problem with the Scope() operator during table parse and load
3282 During load phase (table load or method execution), the scope operator
3284 not enter the target into the namespace. Instead, it should open a new
3286 at the target location. Linux BZ 19462, ACPICA BZ 882.
3288 Example Code and Data Size: These are the sizes for the OS-independent
3289 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3290 debug version of the code includes the debug output trace mechanism and
3292 much larger code and data size.
3295 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
3296 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
3298 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
3299 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
3301 2) iASL Compiler/Disassembler and Tools:
3303 iASL: Relax the alphanumeric restriction on _CID strings. These strings
3305 "bus-specific" per the ACPI specification, and therefore any characters
3307 acceptable. The only checks that can be performed are for a null string
3309 perhaps for a leading asterisk. ACPICA BZ 886.
3311 iASL: Fixed a problem where a syntax error that caused a premature EOF
3312 condition on the source file emitted a very confusing error message. The
3313 premature EOF is now detected correctly. ACPICA BZ 891.
3315 Disassembler: Decode the AccessSize within a Generic Address Structure
3317 access, word access, etc.) Note, this field does not allow arbitrary bit
3318 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
3320 New: AcpiNames utility - Example namespace dump utility. Shows an example
3322 ACPICA configuration for a minimal namespace dump utility. Uses table and
3323 namespace managers, but no AML interpreter. Does not add any
3325 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
3326 partition and configure ACPICA. ACPICA BZ 883.
3328 AML Debugger: Increased the debugger buffer size for method return
3330 Was 4K, increased to 16K. Also enhanced error messages for debugger
3332 execution, including the buffer overflow case.
3334 ----------------------------------------
3335 13 October 2010. Summary of changes for version 20101013:
3337 1) ACPI CA Core Subsystem:
3339 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
3341 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
3342 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
3344 Changed the type of the predefined namespace object _TZ from ThermalZone
3346 Device. This was found to be confusing to the host software that
3348 the various thermal zones, since _TZ is not really a ThermalZone.
3351 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
3354 Added Windows Vista SP2 to the list of supported _OSI strings. The actual
3355 string is "Windows 2006 SP2".
3357 Eliminated duplicate code in AcpiUtExecute* functions. Now that the
3359 code automatically repairs _HID-related strings, this type of code is no
3360 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
3363 Example Code and Data Size: These are the sizes for the OS-independent
3364 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3365 debug version of the code includes the debug output trace mechanism and
3367 much larger code and data size.
3370 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
3371 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
3373 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
3374 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
3376 2) iASL Compiler/Disassembler and Tools:
3378 iASL: Implemented additional compile-time validation for _HID strings.
3380 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
3383 the string must be exactly seven or eight characters. For both _HID and
3385 strings, all characters must be alphanumeric. ACPICA BZ 874.
3387 iASL: Allow certain "null" resource descriptors. Some BIOS code creates
3388 descriptors that are mostly or all zeros, with the expectation that they
3390 be filled in at runtime. iASL now allows this as long as there is a
3392 tag" (name) associated with the descriptor, which gives the ASL a handle
3393 needed to modify the descriptor. ACPICA BZ 873.
3395 Added single-thread support to the generic Unix application OSL.
3397 for iASL support, this change removes the use of semaphores in the
3399 threaded ACPICA tools/applications - increasing performance. The
3400 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
3401 option. ACPICA BZ 879.
3403 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
3405 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
3407 iASL: Moved all compiler messages to a new file, aslmessages.h.
3409 ----------------------------------------
3410 15 September 2010. Summary of changes for version 20100915:
3412 1) ACPI CA Core Subsystem:
3414 Removed the AcpiOsDerivePciId OSL interface. The various host
3416 of this function were not OS-dependent and are now obsolete and can be
3417 removed from all host OSLs. This function has been replaced by
3418 AcpiHwDerivePciId, which is now part of the ACPICA core code.
3419 AcpiHwDerivePciId has been implemented without recursion. Adds one new
3420 module, hwpci.c. ACPICA BZ 857.
3422 Implemented a dynamic repair for _HID and _CID strings. The following
3423 problems are now repaired at runtime: 1) Remove a leading asterisk in the
3424 string, and 2) the entire string is uppercased. Both repairs are in
3425 accordance with the ACPI specification and will simplify host driver
3429 The ACPI_THREAD_ID type is no longer configurable, internally it is now
3430 always UINT64. This simplifies the ACPICA code, especially any printf
3432 UINT64 is the only common data type for all thread_id types across all
3433 operating systems. It is now up to the host OSL to cast the native
3435 type to UINT64 before returning the value to ACPICA (via
3437 Lin Ming, Bob Moore.
3439 Added the ACPI_INLINE type to enhance the ACPICA configuration. The
3441 keyword is not standard across compilers, and this type allows inline to
3443 configured on a per-compiler basis. Lin Ming.
3445 Made the system global AcpiGbl_SystemAwakeAndRunning publically
3447 Added an extern for this boolean in acpixf.h. Some hosts utilize this
3449 during suspend/restore operations. ACPICA BZ 869.
3451 All code that implements error/warning messages with the "ACPI:" prefix
3453 been moved to a new module, utxferror.c.
3455 The UINT64_OVERLAY was moved to utmath.c, which is the only module where
3457 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
3459 Example Code and Data Size: These are the sizes for the OS-independent
3460 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3461 debug version of the code includes the debug output trace mechanism and
3463 much larger code and data size.
3466 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
3467 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
3469 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
3470 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
3472 2) iASL Compiler/Disassembler and Tools:
3474 iASL/Disassembler: Write ACPI errors to stderr instead of the output
3476 This keeps the output files free of random error messages that may
3478 from within the namespace/interpreter code. Used this opportunity to
3480 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
3481 866. Lin Ming, Bob Moore.
3483 Tools: update some printfs for ansi warnings on size_t. Handle width
3485 of size_t on 32-bit versus 64-bit generations. Lin Ming.
3487 ----------------------------------------
3488 06 August 2010. Summary of changes for version 20100806:
3490 1) ACPI CA Core Subsystem:
3492 Designed and implemented a new host interface to the _OSI support code.
3494 will allow the host to dynamically add or remove multiple _OSI strings,
3496 well as install an optional handler that is called for each _OSI
3498 Also added a new AML debugger command, 'osi' to display and modify the
3500 _OSI string table, and test support in the AcpiExec utility. See the
3502 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
3504 AcpiInstallInterface - Add an _OSI string.
3505 AcpiRemoveInterface - Delete an _OSI string.
3506 AcpiInstallInterfaceHandler - Install optional _OSI handler.
3508 AcpiOsValidateInterface - no longer used.
3510 source/components/utilities/utosi.c
3512 Re-introduced the support to enable multi-byte transfers for Embedded
3513 Controller (EC) operation regions. A reported problem was found to be a
3515 in the host OS, not in the multi-byte support. Previously, the maximum
3517 size passed to the EC operation region handler was a single byte. There
3519 often EC Fields larger than one byte that need to be transferred, and it
3521 useful for the EC driver to lock these as a single transaction. This
3523 enables single transfers larger than 8 bits. This effectively changes the
3524 access to the EC space from ByteAcc to AnyAcc, and will probably require
3525 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
3527 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
3529 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
3530 prototype in acpiosxf.h had the output value pointer as a (void *).
3531 It should be a (UINT64 *). This may affect some host OSL code.
3533 Fixed a couple problems with the recently modified Linux makefiles for
3535 and AcpiExec. These new makefiles place the generated object files in the
3536 local directory so that there can be no collisions between the files that
3538 shared between them that are compiled with different options.
3540 Example Code and Data Size: These are the sizes for the OS-independent
3541 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3542 debug version of the code includes the debug output trace mechanism and
3544 much larger code and data size.
3547 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
3548 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
3550 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
3551 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
3553 2) iASL Compiler/Disassembler and Tools:
3555 iASL/Disassembler: Added a new option (-da, "disassemble all") to load
3557 namespace from and disassemble an entire group of AML files. Useful for
3558 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
3560 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
3562 iASL: Allow multiple invocations of -e option. This change allows
3564 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
3568 ----------------------------------------
3569 02 July 2010. Summary of changes for version 20100702:
3571 1) ACPI CA Core Subsystem:
3573 Implemented several updates to the recently added GPE reference count
3574 support. The model for "wake" GPEs is changing to give the host OS
3576 control of these GPEs. Eventually, the ACPICA core will not execute any
3578 methods, since the host already must execute them. Also, additional
3580 were made to help ensure that the reference counts are kept in proper
3581 synchronization with reality. Rafael J. Wysocki.
3583 1) Ensure that GPEs are not enabled twice during initialization.
3584 2) Ensure that GPE enable masks stay in sync with the reference count.
3585 3) Do not inadvertently enable GPEs when writing GPE registers.
3586 4) Remove the internal wake reference counter and add new AcpiGpeWakeup
3587 interface. This interface will set or clear individual GPEs for wakeup.
3588 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These
3590 are now used for "runtime" GPEs only.
3592 Changed the behavior of the GPE install/remove handler interfaces. The
3595 no longer disabled during this process, as it was found to cause problems
3597 some machines. Rafael J. Wysocki.
3599 Reverted a change introduced in version 20100528 to enable Embedded
3600 Controller multi-byte transfers. This change was found to cause problems
3602 Index Fields and possibly Bank Fields. It will be reintroduced when these
3603 problems have been resolved.
3605 Fixed a problem with references to Alias objects within Package Objects.
3607 reference to an Alias within the definition of a Package was not always
3608 resolved properly. Aliases to objects like Processors, Thermal zones,
3610 were resolved to the actual object instead of a reference to the object
3613 should be. Package objects are only allowed to contain integer, string,
3614 buffer, package, and reference objects. Redhat bugzilla 608648.
3616 Example Code and Data Size: These are the sizes for the OS-independent
3617 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3618 debug version of the code includes the debug output trace mechanism and
3620 much larger code and data size.
3623 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
3624 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
3626 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
3627 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
3629 2) iASL Compiler/Disassembler and Tools:
3631 iASL: Implemented a new compiler subsystem to allow definition and
3632 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
3634 are called "ACPI Data Tables", and the new compiler is the "Data Table
3635 Compiler". This compiler is intended to simplify the existing error-prone
3636 process of creating these tables for the BIOS, as well as allowing the
3637 disassembly, modification, recompilation, and override of existing ACPI
3639 tables. See the iASL User Guide for detailed information.
3641 iASL: Implemented a new Template Generator option in support of the new
3643 Table Compiler. This option will create examples of all known ACPI tables
3644 that can be used as the basis for table development. See the iASL
3645 documentation and the -T option.
3647 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
3650 Updated the Linux makefiles for iASL and AcpiExec to place the generated
3651 object files in the local directory so that there can be no collisions
3652 between the shared files between them that are generated with different
3655 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
3657 the #define __APPLE__ to enable this support.
3659 ----------------------------------------
3660 28 May 2010. Summary of changes for version 20100528:
3662 Note: The ACPI 4.0a specification was released on April 5, 2010 and is
3663 available at www.acpi.info. This is primarily an errata release.
3665 1) ACPI CA Core Subsystem:
3667 Undefined ACPI tables: We are looking for the definitions for the
3669 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
3671 Implemented support to enable multi-byte transfers for Embedded
3673 (EC) operation regions. Previously, the maximum data size passed to the
3675 operation region handler was a single byte. There are often EC Fields
3677 than one byte that need to be transferred, and it is useful for the EC
3679 to lock these as a single transaction. This change enables single
3681 larger than 8 bits. This effectively changes the access to the EC space
3683 ByteAcc to AnyAcc, and will probably require changes to the host OS
3685 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
3687 transfers. Alexey Starikovskiy, Lin Ming
3689 Implemented a performance enhancement for namespace search and access.
3691 change enhances the performance of namespace searches and walks by adding
3693 backpointer to the parent in each namespace node. On large namespaces,
3695 change can improve overall ACPI performance by up to 9X. Adding a pointer
3697 each namespace node increases the overall size of the internal namespace
3699 about 5%, since each namespace entry usually consists of both a namespace
3700 node and an ACPI operand object. However, this is the first growth of the
3701 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
3703 Implemented a performance optimization that reduces the number of
3705 walks. On control method exit, only walk the namespace if the method is
3707 to have created namespace objects outside of its local scope. Previously,
3709 entire namespace was traversed on each control method exit. This change
3711 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
3714 Added support to truncate I/O addresses to 16 bits for Windows
3716 Some ASL code has been seen in the field that inadvertently has bits set
3717 above bit 15. This feature is optional and is enabled if the BIOS
3719 any Windows OSI strings. It can also be enabled by the host OS. Matthew
3722 Added support to limit the maximum time for the ASL Sleep() operator. To
3723 prevent accidental deep sleeps, limit the maximum time that Sleep() will
3724 actually sleep. Configurable, the default maximum is two seconds. ACPICA
3727 Added run-time validation support for the _WDG and_WED Microsoft
3729 methods. These objects are defined by "Windows Instrumentation", and are
3731 part of the ACPI spec. ACPICA BZ 860.
3733 Expanded all statistic counters used during namespace and device
3734 initialization from 16 to 32 bits in order to support very large
3737 Replaced all instances of %d in printf format specifiers with %u since
3739 all integers in ACPICA are unsigned.
3741 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
3745 Example Code and Data Size: These are the sizes for the OS-independent
3746 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3747 debug version of the code includes the debug output trace mechanism and
3749 much larger code and data size.
3752 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
3753 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
3755 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
3756 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
3758 2) iASL Compiler/Disassembler and Tools:
3760 iASL: Added compiler support for the _WDG and_WED Microsoft predefined
3761 methods. These objects are defined by "Windows Instrumentation", and are
3763 part of the ACPI spec. ACPICA BZ 860.
3765 AcpiExec: added option to disable the memory tracking mechanism. The -dt
3766 option will disable the tracking mechanism, which improves performance
3769 AcpiExec: Restructured the command line options into -d (disable) and -e
3772 ----------------------------------------
3773 28 April 2010. Summary of changes for version 20100428:
3775 1) ACPI CA Core Subsystem:
3777 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
3778 including FADT-based and GPE Block Devices, execute any _PRW methods in
3780 new table, and process any _Lxx/_Exx GPE methods in the new table. Any
3781 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
3782 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
3783 Devices. Provides compatibility with other ACPI implementations. Two new
3784 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
3787 Fixed a regression introduced in version 20100331 within the table
3789 where initial table loading could fail. This was introduced in the fix
3791 AcpiReallocateRootTable. Also, renamed some of fields in the table
3793 data structures to clarify their meaning and use.
3795 Fixed a possible allocation overrun during internal object copy in
3796 AcpiUtCopySimpleObject. The original code did not correctly handle the
3798 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
3801 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
3802 possible access beyond end-of-allocation. Also, now fully validate
3804 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
3806 Example Code and Data Size: These are the sizes for the OS-independent
3807 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3808 debug version of the code includes the debug output trace mechanism and
3810 much larger code and data size.
3813 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
3814 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
3816 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
3817 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
3819 2) iASL Compiler/Disassembler and Tools:
3821 iASL: Implemented Min/Max/Len/Gran validation for address resource
3822 descriptors. This change implements validation for the address fields
3824 are common to all address-type resource descriptors. These checks are
3825 implemented: Checks for valid Min/Max, length within the Min/Max window,
3826 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
3828 table 6-40 in the ACPI 4.0a specification. Also split the large
3830 and aslrestype2.c files into five new files. ACPICA BZ 840.
3832 iASL: Added support for the _Wxx predefined names. This support was
3834 and these names were not recognized by the compiler as valid predefined
3835 names. ACPICA BZ 851.
3837 iASL: Added an error for all predefined names that are defined to return
3839 value and thus must be implemented as Control Methods. These include all
3841 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
3842 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
3844 iASL: Implemented the -ts option to emit hex AML data in ASL format, as
3846 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
3848 dynamically loaded via the Load() operator. Also cleaned up output for
3851 ta and -tc options. ACPICA BZ 853.
3853 Tests: Added a new file with examples of extended iASL error checking.
3854 Demonstrates the advanced error checking ability of the iASL compiler.
3855 Available at tests/misc/badcode.asl.
3857 ----------------------------------------
3858 31 March 2010. Summary of changes for version 20100331:
3860 1) ACPI CA Core Subsystem:
3862 Completed a major update for the GPE support in order to improve support
3864 shared GPEs and to simplify both host OS and ACPICA code. Added a
3866 count mechanism to support shared GPEs that require multiple device
3868 Several external interfaces have changed. One external interface has been
3869 removed. One new external interface was added. Most of the GPE external
3870 interfaces now use the GPE spinlock instead of the events mutex (and the
3871 Flags parameter for many GPE interfaces has been removed.) See the
3873 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
3875 Wysocki. ACPICA BZ 831.
3878 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
3884 Implemented write support for DataTable operation regions. These regions
3886 defined via the DataTableRegion() operator. Previously, only read support
3888 implemented. The ACPI specification allows DataTableRegions to be
3892 Implemented a new subsystem option to force a copy of the DSDT to local
3893 memory. Optionally copy the entire DSDT to local memory (instead of
3895 mapping it.) There are some (albeit very rare) BIOSs that corrupt or
3897 the original DSDT, creating the need for this option. Default is FALSE,
3901 Implemented detection of a corrupted or replaced DSDT. This change adds
3902 support to detect a DSDT that has been corrupted and/or replaced from
3904 the OS (by firmware). This is typically catastrophic for the system, but
3906 been seen on some machines. Once this problem has been detected, the DSDT
3907 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
3909 Fixed two problems with AcpiReallocateRootTable during the root table
3911 When copying the root table to the new allocation, the length used was
3912 incorrect. The new size was used instead of the current table size,
3914 too much data was copied. Also, the count of available slots for ACPI
3916 was not set correctly. Alexey Starikovskiy, Bob Moore.
3918 Example Code and Data Size: These are the sizes for the OS-independent
3919 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3920 debug version of the code includes the debug output trace mechanism and
3922 much larger code and data size.
3925 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
3926 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
3928 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
3929 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
3931 2) iASL Compiler/Disassembler and Tools:
3933 iASL: Implement limited typechecking for values returned from predefined
3934 control methods. The type of any returned static (unnamed) object is now
3935 validated. For example, Return(1). ACPICA BZ 786.
3937 iASL: Fixed a predefined name object verification regression. Fixes a
3939 introduced in version 20100304. An error is incorrectly generated if a
3940 predefined name is declared as a static named object with a value defined
3941 using the keywords "Zero", "One", or "Ones". Lin Ming.
3943 iASL: Added Windows 7 support for the -g option (get local ACPI tables)
3945 reducing the requested registry access rights. ACPICA BZ 842.
3947 Disassembler: fixed a possible fault when generating External()
3949 Introduced in commit ae7d6fd: Properly handle externals with parent-
3951 (carat). Fixes a string length allocation calculation. Lin Ming.
3953 ----------------------------------------
3954 04 March 2010. Summary of changes for version 20100304:
3956 1) ACPI CA Core Subsystem:
3958 Fixed a possible problem with the AML Mutex handling function
3959 AcpiExReleaseMutex where the function could fault under the very rare
3960 condition when the interpreter has blocked, the interpreter lock is
3962 the interpreter is then reentered via the same thread, and attempts to
3963 acquire an AML mutex that was previously acquired. FreeBSD report 140979.
3967 Implemented additional configuration support for the AML "Debug Object".
3968 Output from the debug object can now be enabled via a global variable,
3969 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
3971 This debug output is now available in the release version of ACPICA
3973 of just the debug version. Also, the entire debug output module can now
3975 configured out of the ACPICA build if desired. One new file added,
3976 executer/exdebug.c. Lin Ming, Bob Moore.
3978 Added header support for the ACPI MCHI table (Management Controller Host
3979 Interface Table). This table was added in ACPI 4.0, but the defining
3981 has only recently become available.
3983 Standardized output of integer values for ACPICA warnings/errors. Always
3985 0x prefix for hex output, always use %u for unsigned integer decimal
3987 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
3989 invocations.) These invocations were converted from the original
3990 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
3992 Example Code and Data Size: These are the sizes for the OS-independent
3993 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3994 debug version of the code includes the debug output trace mechanism and
3996 much larger code and data size.
3999 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
4000 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
4002 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
4003 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
4005 2) iASL Compiler/Disassembler and Tools:
4007 iASL: Implemented typechecking support for static (non-control method)
4008 predefined named objects that are declared with the Name() operator. For
4009 example, the type of this object is now validated to be of type Integer:
4010 Name(_BBN, 1). This change migrates the compiler to using the core
4012 name table instead of maintaining a local version. Added a new file,
4013 aslpredef.c. ACPICA BZ 832.
4015 Disassembler: Added support for the ACPI 4.0 MCHI table.
4017 ----------------------------------------
4018 21 January 2010. Summary of changes for version 20100121:
4020 1) ACPI CA Core Subsystem:
4022 Added the 2010 copyright to all module headers and signons. This affects
4023 virtually every file in the ACPICA core subsystem, the iASL compiler, the
4024 tools/utilities, and the test suites.
4026 Implemented a change to the AcpiGetDevices interface to eliminate
4028 invocations of the _STA method. In the case where a specific _HID is
4029 requested, do not run _STA until a _HID match is found. This eliminates
4030 potentially dozens of _STA calls during a search for a particular
4032 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
4034 Implemented an additional repair for predefined method return values.
4036 to repair unexpected NULL elements within returned Package objects.
4039 Integer of value zero, a NULL String, or a zero-length Buffer as
4041 ACPICA BZ 818. Lin Ming, Bob Moore.
4043 Removed the obsolete ACPI_INTEGER data type. This type was introduced as
4045 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
4047 64-bit AML integers). It is now obsolete and this change removes it from
4049 ACPICA code base, replaced by UINT64. The original typedef has been
4051 for now for compatibility with existing device driver code. ACPICA BZ
4054 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
4056 the parse tree object.
4058 Added additional warning options for the gcc-4 generation. Updated the
4060 accordingly. This includes some code restructuring to eliminate
4062 code, elimination of some gotos, elimination of unused return values,
4064 additional casting, and removal of redundant declarations.
4066 Example Code and Data Size: These are the sizes for the OS-independent
4067 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4068 debug version of the code includes the debug output trace mechanism and
4070 much larger code and data size.
4073 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
4074 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
4076 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
4077 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
4079 2) iASL Compiler/Disassembler and Tools:
4081 No functional changes for this release.
4083 ----------------------------------------
4084 14 December 2009. Summary of changes for version 20091214:
4086 1) ACPI CA Core Subsystem:
4088 Enhanced automatic data type conversions for predefined name repairs.
4090 change expands the automatic repairs/conversions for predefined name
4092 values to make Integers, Strings, and Buffers fully interchangeable.
4095 Buffer can be converted to a Package of Integers if necessary. The
4097 module was completely restructured. Lin Ming, Bob Moore.
4099 Implemented automatic removal of null package elements during predefined
4101 repairs. This change will automatically remove embedded and trailing NULL
4102 package elements from returned package objects that are defined to
4105 variable number of sub-packages. The driver is then presented with a
4107 with no null elements to deal with. ACPICA BZ 819.
4109 Implemented a repair for the predefined _FDE and _GTM names. The expected
4110 return value for both names is a Buffer of 5 DWORDs. This repair fixes
4112 possible problems (both seen in the field), where a package of integers
4114 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
4117 Implemented additional module-level code support. This change will
4119 execute module-level code that is not at the root of the namespace (under
4121 Device object, etc.). Now executes the code within the current scope
4123 of the root. ACPICA BZ 762. Lin Ming.
4125 Fixed possible mutex acquisition errors when running _REG methods. Fixes
4127 problem where mutex errors can occur when running a _REG method that is
4129 the same scope as a method-defined operation region or an operation
4131 under a module-level IF block. This type of code is rare, so the problem
4133 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
4135 Fixed a possible memory leak during module-level code execution. An
4137 could be leaked for each block of executed module-level code if the
4138 interpreter slack mode is enabled This change deletes any implicitly
4140 object from the module-level code block. Lin Ming.
4142 Removed messages for successful predefined repair(s). The repair
4144 was considered too wordy. Now, messages are only unconditionally emitted
4146 the return object cannot be repaired. Existing messages for successful
4147 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
4150 Example Code and Data Size: These are the sizes for the OS-independent
4151 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4152 debug version of the code includes the debug output trace mechanism and
4154 much larger code and data size.
4157 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
4158 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
4160 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
4161 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
4163 2) iASL Compiler/Disassembler and Tools:
4165 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
4167 were no longer automatically removed at the termination of the compile.
4169 acpiexec: Implemented the -f option to specify default region fill value.
4170 This option specifies the value used to initialize buffers that simulate
4171 operation regions. Default value is zero. Useful for debugging problems
4173 depend on a specific initial value for a region or field.
4175 ----------------------------------------
4176 12 November 2009. Summary of changes for version 20091112:
4178 1) ACPI CA Core Subsystem:
4180 Implemented a post-order callback to AcpiWalkNamespace. The existing
4181 interface only has a pre-order callback. This change adds an additional
4182 parameter for a post-order callback which will be more useful for bus
4184 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
4186 Modified the behavior of the operation region memory mapping cache for
4187 SystemMemory. Ensure that the memory mappings created for operation
4189 do not cross 4K page boundaries. Crossing a page boundary while mapping
4190 regions can cause kernel warnings on some hosts if the pages have
4192 attributes. Such regions are probably BIOS bugs, and this is the
4194 Linux BZ 14445. Lin Ming.
4196 Implemented an automatic repair for predefined methods that must return
4197 sorted lists. This change will repair (by sorting) packages returned by
4199 _PSS, and _TSS. Drivers can now assume that the packages are correctly
4201 and do not contain NULL package elements. Adds one new file,
4202 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
4204 Fixed a possible fault during predefined name validation if a return
4206 object contains NULL elements. Also adds a warning if a NULL element is
4207 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
4209 include repair or removal of all such NULL elements where possible.
4211 Implemented additional module-level executable AML code support. This
4213 will execute module-level code that is not at the root of the namespace
4214 (under a Device object, etc.) at table load time. Module-level executable
4216 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
4218 Implemented a new internal function to create Integer objects. This
4220 simplifies miscellaneous object creation code. ACPICA BZ 823.
4222 Reduced the severity of predefined repair messages, Warning to Info.
4224 the object was successfully repaired, a warning is too severe. Reduced to
4226 info message for now. These messages may eventually be changed to debug-
4230 Example Code and Data Size: These are the sizes for the OS-independent
4231 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4232 debug version of the code includes the debug output trace mechanism and
4234 much larger code and data size.
4237 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
4238 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
4240 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
4241 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
4243 2) iASL Compiler/Disassembler and Tools:
4245 iASL: Implemented Switch() with While(1) so that Break works correctly.
4247 change correctly implements the Switch operator with a surrounding
4249 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
4251 iASL: Added a message if a package initializer list is shorter than
4253 length. Adds a new remark for a Package() declaration if an initializer
4255 exists, but is shorter than the declared length of the package. Although
4256 technically legal, this is probably a coding error and it is seen in the
4257 field. ACPICA BZ 815. Lin Ming, Bob Moore.
4259 iASL: Fixed a problem where the compiler could fault after the maximum
4261 of errors was reached (200).
4263 acpixtract: Fixed a possible warning for pointer cast if the compiler
4265 level set very high.
4267 ----------------------------------------
4268 13 October 2009. Summary of changes for version 20091013:
4270 1) ACPI CA Core Subsystem:
4272 Fixed a problem where an Operation Region _REG method could be executed
4274 than once. If a custom address space handler is installed by the host
4276 the "initialize operation regions" phase of the ACPICA initialization,
4278 _REG methods for that address space could be executed twice. This change
4279 fixes the problem. ACPICA BZ 427. Lin Ming.
4281 Fixed a possible memory leak for the Scope() ASL operator. When the exact
4282 invocation of "Scope(\)" is executed (change scope to root), one internal
4283 operand object was leaked. Lin Ming.
4285 Implemented a run-time repair for the _MAT predefined method. If the _MAT
4286 return value is defined as a Field object in the AML, and the field
4287 size is less than or equal to the default width of an integer (32 or
4289 can incorrectly return an Integer instead of a Buffer. ACPICA now
4290 automatically repairs this problem. ACPICA BZ 810.
4292 Implemented a run-time repair for the _BIF and _BIX predefined methods.
4294 "OEM Information" field is often incorrectly returned as an Integer with
4295 value zero if the field is not supported by the platform. This is due to
4297 ambiguity in the ACPI specification. The field should always be a string.
4298 ACPICA now automatically repairs this problem by returning a NULL string
4299 within the returned Package. ACPICA BZ 807.
4301 Example Code and Data Size: These are the sizes for the OS-independent
4302 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4303 debug version of the code includes the debug output trace mechanism and
4305 much larger code and data size.
4308 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
4309 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
4311 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
4312 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
4314 2) iASL Compiler/Disassembler and Tools:
4316 Disassembler: Fixed a problem where references to external symbols that
4317 contained one or more parent-prefixes (carats) were not handled
4319 possibly causing a fault. ACPICA BZ 806. Lin Ming.
4321 Disassembler: Restructured the code so that all functions that handle
4322 external symbols are in a single module. One new file is added,
4325 AML Debugger: Added a max count argument for the Batch command (which