1 ----------------------------------------
2 10 January 2020. Summary of changes for version 20200110:
5 1) ACPICA kernel-resident subsystem:
7 Updated all copyrights to 2020. This affects all ACPICA source code
11 2) iASL Compiler/Disassembler and ACPICA tools:
13 ASL test suite (ASLTS): Updated all copyrights to 2020.
15 Tools and utilities: Updated all signon copyrights to 2020.
17 iASL: fix forward reference analysis for field declarations. Fixes
18 forward reference analysis for field declarations by searching the
19 parent scope for the named object when the object is not present in
22 iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
23 full pathname of the name that already exists is printed.
25 iASL: Enhance duplicate Case() detection for buffers. Add check for
26 buffers with no initializer list (these buffers will be filled with
30 ----------------------------------------
31 13 December 2019. Summary of changes for version 20191213:
34 1) ACPICA kernel-resident subsystem:
36 Return a Buffer object for all fields created via the CreateField
37 operator. Previously, an Integer would be returned if the size of
38 the field was less than or equal to the current size of an Integer.
39 Although this goes against the ACPI specification, it provides
40 compatibility with other ACPI implementations. Also updated the
41 ASLTS test suite to reflect this new behavior.
43 2) iASL Compiler/Disassembler and ACPICA tools:
45 iASL: Implemented detection of (and throw an error for) duplicate
46 values for Case statements within a single Switch statement. Duplicate
47 Integers, Strings, and Buffers are supported.
49 iASL: Fix error logging issue during multiple file compilation --
50 Switch to the correct input file during error node creation.
52 iASL: For duplicate named object creation, now emit an error instead
53 of a warning - since this will cause a runtime error.
55 AcpiSrc: Add unix line-ending support for non-Windows builds.
57 iASL: Add an error condition for an attempt to create a NameString
58 with > 255 NameSegs (the max allowable via the AML definition).
61 ----------------------------------------
62 18 October 2019. Summary of changes for version 20191018:
65 1) ACPICA kernel-resident subsystem:
67 Debugger: added a new command: ?Fields [address space ID]?. This command
68 dumps the contents of all field units that are defined within the
69 namespace with a particular address space ID.
71 Modified the external interface AcpiLoadTable() to return a table index.
72 This table index can be used for unloading a table for debugging.
75 ACPI_TABLE_HEADER *Table,
78 Implemented a new external interface: AcpiUnloadTable() This new function
79 takes a table index as an argument and unloads the table. Useful for
85 Ported the AcpiNames utility to use the new table initialization
86 sequence. The utility was broken before this change. Also, it was
87 required to include most of the AML interpreter into the utility in order
88 to process table initialization (module-level code execution.)
90 Update for results from running Clang V8.0.1. This fixes all "dead
91 assignment" warnings. There are still several "Dereference of NULL
92 pointer" warnings, but these have been found to be false positive
96 2) iASL Compiler/Disassembler and ACPICA tools:
98 iASL: numerous table compiler changes to ensure that the usage of
99 yacc/bison syntax is POSIX-compliant.
101 iASL/disassembler: several simple bug fixes in the data table
104 Acpiexec: expanded the initialization file (the -fi option) to initialize
105 strings, buffers, packages, and field units.
108 ----------------------------------------
109 16 August 2019. Summary of changes for version 20190816:
111 This release is available at https://acpica.org/downloads
114 1) ACPICA kernel-resident subsystem:
116 Modified the OwnerId mechanism to allow for more Owner Ids. The previous
117 limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
118 exceptions on machines with a large number of initialization threads,
119 many CPU cores and nested initialization control methods.
121 Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
122 checking if the given GPE (as represented by a GPE device handle and a
123 GPE number) is currently active and dispatching it (if that's the case)
124 outside of interrupt context.
126 Table load: exit the interpreter before initializing objects within the
127 new table This prevents re-acquiring the interpreter lock when loading
130 Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
133 Macros: removed pointer math on a null pointer. Causes warnings on some
134 compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
135 instead of using arithmetic.
137 Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
138 across all "printf-like" internal functions. Also, cleanup all calls to
139 such functions (both in 32-bit mode and 64-bit mode) now that they are
140 analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
143 2) iASL Compiler/Disassembler and ACPICA tools:
145 iASL: implemented a new data table compiler flex/bison front-end. This
146 change is internal and is not intended to result in changes to the
147 compiled code. This new compiler front-end can be invoked using the -tp
148 option for now, until the old mechanism is removed.
150 ASLTS: Implemented a new data table compiler test suite. This test suite
151 generates all table templates and compile/disassemble/re-compile/binary-
154 iASL: return -1 if AML files were not generated due to compiler errors
156 iASL: added a warning on use of the now-legacy ASL Processor () keyword.
158 iASL: added an error on _UID object declaration that returns a String
159 within a Processor () declaration. A _UID for a processor must be an
162 iASL: added a null terminator to name strings that consist only of
163 multiple parent prefixes (^)
165 iASL: added support to compile both ASL and data table files in a single
168 Updated the tool generation project files that were recently migrated to
169 MSVC 2017 to eliminate all new warnings. The new project files appear in
170 the directory \acpica\generate\msvc2017. This change effectively
171 deprecates the older project files in \acpica\generate\msvc9.
174 ----------------------------------------
175 03 July 2019. Summary of changes for version 20190703:
178 1) ACPICA kernel-resident subsystem:
180 Remove legacy module-level support code. There were still some remnants
181 of the legacy module-level code executions. Since we no longer support
182 this option, this is essentially dead code and has been removed from the
185 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
186 scope. If these named objects are declared outside the root scope, they
187 will not be invoked by any host Operating System.
189 Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
190 one) can be enabled in two situations. First, the GPEs with existing _Lxx
191 and _Exx methods are enabled implicitly by ACPICA during system
192 initialization. Second, the GPEs without these methods (like GPEs listed
193 by _PRW objects for wakeup devices) need to be enabled directly by the
194 code that is going to use them (e.g. ACPI power management or device
197 In the former case, if the status of a given GPE is set to start with,
198 its handler method (either _Lxx or _Exx) needs to be invoked to take care
199 of the events (possibly) signaled before the GPE was enabled. In the
200 latter case, however, the first caller of AcpiEnableGpe() for a given GPE
201 should not be expected to care about any events that might be signaled
202 through it earlier. In that case, it is better to clear the status of
203 the GPE before enabling it, to prevent stale events from triggering
204 unwanted actions (like spurious system resume, for example).
206 For this reason, modify AcpiEvAddGpeReference() to take an additional
207 boolean argument indicating whether or not the GPE status needs to be
208 cleared when its reference counter changes from zero to one and make
209 AcpiEnableGpe() pass TRUE to it through that new argument.
212 2) iASL Compiler/Disassembler and ACPICA tools:
214 The tool generation process has been migrated to MSVC 2017, and all
215 project files have been upgraded. The new project files appear in the
216 directory \acpica\generate\msvc2017. This change effectively deprecates
217 the older project files in \acpica\generate\msvc9.
219 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
220 scope. If these named objects are declared outside the root scope, they
221 will not be invoked by any host Operating System
223 ----------------------------------------
224 09 May 2019. Summary of changes for version 20190509:
227 1) ACPICA kernel-resident subsystem:
229 Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling
230 them") that causes problems with Thunderbolt controllers to occur if a
231 dock device is connected at init time (the xhci_hcd and thunderbolt
232 modules crash which prevents peripherals connected through them from
233 working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
234 Dispatch active GPEs at init time") to get undone, so the problem
235 addressed by commit ecc1165b8b74 appears again as a result of it.
238 2) iASL Compiler/Disassembler and ACPICA tools:
240 Reverted iASL: Additional forward reference detection. This change
241 reverts forward reference detection for field declarations. The feature
242 unintentionally emitted AML bytecode with incorrect package lengths for
243 some ASL code related to Fields and OperationRegions. This malformed AML
244 can cause systems to crash
245 during boot. The malformed AML bytecode is emitted in iASL version
246 20190329 and 20190405.
248 iASL: improve forward reference detection. This change improves forward
249 reference detection for named objects inside of scopes. If a parse object
250 has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
251 a named object that is declared later in the AML bytecode. This is
252 allowed if the reference is inside of a method and the declaration is
253 outside of a method like so:
264 However, if the declaration and reference are both in the same method or
265 outside any methods, this is a forward reference and should be marked as
266 an error because it would result in runtime errors.
270 Name (BUFF, Buffer (NUM0) {}) // Forward reference
276 Name (NUM1, 0x1) // Forward reference
281 iASL: Implemented additional buffer overflow analysis for BufferField
282 declarations. Check if a buffer index argument to a create buffer field
283 operation is beyond the end of the target buffer.
285 This affects these AML operators:
288 AML_CREATE_BIT_FIELD_OP
289 AML_CREATE_BYTE_FIELD_OP
290 AML_CREATE_WORD_FIELD_OP
291 AML_CREATE_DWORD_FIELD_OP
292 AML_CREATE_QWORD_FIELD_OP
294 There are three conditions that must be satisfied in order to allow this
295 validation at compile time:
297 1) The length of the target buffer must be an integer constant
298 2) The index specified in the create* must be an integer constant
299 3) For CreateField, the bit length argument must be non-zero.
302 Name (BUF1, Buffer() {1,2})
303 CreateField (BUF1, 7, 9, CF03) // 3: ERR
305 dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR
306 Error 6165 - ^ Buffer index beyond end of
310 ----------------------------------------
311 05 April 2019. Summary of changes for version 20190405:
314 1) ACPICA kernel-resident subsystem:
316 Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
317 unconditionally clearing ACPI IRQs during suspend/resume") was added
318 earlier to stop clearing of event status bits unconditionally on suspend
319 and resume paths. Though this change fixed an issue on suspend path, it
320 introduced regressions on several resume paths. In the case of S0ix,
321 events are enabled as part of device suspend path. If status bits for the
322 events are set when they are enabled, it could result in premature wake
323 from S0ix. If status is cleared for any event that is being enabled so
324 that any stale events are cleared out. In case of S0ix, events are
325 enabled as part of device suspend path. If status bits for the events are
326 set when they are enabled, it could result in premature wake from S0ix.
328 This change ensures that status is cleared for any event that is being
329 enabled so that any stale events are cleared out.
332 2) iASL Compiler/Disassembler and ACPICA tools:
334 iASL: Implemented an enhanced multiple file compilation that combines
335 named objects from all input files to a single namespace. With this
336 feature, any unresolved external declarations as well as duplicate named
337 object declarations can be detected during compilation rather than
338 generating errors much later at runtime. The following commands are
339 examples that utilize this feature:
340 iasl dsdt.asl ssdt.asl
341 iasl dsdt.asl ssdt1.asl ssdt2.asl
342 iasl dsdt.asl ssdt*.asl
344 ----------------------------------------
345 29 March 2019. Summary of changes for version 20190329:
348 1) ACPICA kernel-resident subsystem:
350 Namespace support: Remove the address nodes from global list after method
351 termination. The global address list contains pointers to namespace nodes
352 that represent Operation Regions. This change properly removes Operation
353 Region namespace nodes that are declared dynamically during method
356 Linux: Use a different debug default than ACPICA. There was a divergence
357 between Linux and the ACPICA codebases. In order to resolve this
358 divergence, Linux now declares its own debug default in aclinux.h
360 Renamed some internal macros to improve code understanding and
361 maintenance. The macros below all operate on single 4-character ACPI
362 NameSegs, not generic strings (old -> new):
363 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE
364 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
365 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG
367 Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
370 Test suite: Update makefiles, add PCC operation region support
373 2) iASL Compiler/Disassembler and Tools:
375 iASL: Implemented additional illegal forward reference detection. Now
376 detect and emit an error upon detection of a forward reference from a
377 Field to an Operation Region. This will fail at runtime if allowed to
380 AcpiExec: Add an address list check for dynamic Operation Regions. This
381 feature performs a sanity test for each node the global address list.
382 This is done in order to ensure that all dynamic operation regions are
383 properly removed from the global address list and no dangling pointers
386 Disassembler: Improved generation of resource pathnames. This change
387 improves the code that generates resource descriptor and resource tag
388 pathnames. The original code used a bunch of str* C library functions
389 that caused warnings on some compilers.
391 iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
392 function can overwrite buffers if the calling code is not very careful.
393 In the case of generating a module/table header, use of memmove is a
394 better implementation.
397 3) Status of new features that have not been completed at this time:
399 iASL: Implementing an enhanced multiple file compilation into a single
400 namespace feature (Status): This feature will be released soon, and
401 allows multiple ASL files to be compiled into the same single namespace.
402 By doing so, any unresolved external declarations as well as duplicate
403 named object declarations can be detected during compilation (rather than
404 later during runtime). The following commands are examples that utilize
406 iasl dsdt.asl ssdt.asl
407 iasl dsdt.asl ssdt1.asl ssdt2.asl
408 iasl dsdt.asl ssdt*.asl
410 ASL tutorial status: Feedback is being gathered internally and the
411 current plan is to publish this tutorial on the ACPICA website after a
412 final review by a tech writer.
414 ----------------------------------------
415 15 February 2019. Summary of changes for version 20190215:
418 0) Support for ACPI specification version 6.3:
420 Add PCC operation region support for the AML interpreter. This adds PCC
421 operation region support in the AML interpreter and a default handler for
422 acpiexec. The change also renames the PCC region address space keyword to
425 Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
426 These methods provide OSPM with health information and device boot
429 PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
430 defines if the trigger needs to be invoked by OSPM before or at the end
431 of kernel crash dump processing/handling operation.
433 SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
434 is used for describing devices such as heterogeneous processors,
435 accelerators, GPUs, and IO devices with integrated compute or DMA
438 MADT: Add support for statistical profiling in GICC. Statistical
439 profiling extension (SPE) is an architecture-specific feature for ARM.
441 MADT: Add online capable flag. If this bit is set, system hardware
442 supports enabling this processor during OS runtime.
444 New Error Disconnect Recover Notification value. There are a number of
445 scenarios where system Firmware in collaboration with hardware may
446 disconnect one or more devices from the rest of the system for purposes
447 of error containment. Firmware can use this new notification value to
448 alert OSPM of such a removal.
450 PPTT: New additional fields in Processor Structure Flags. These flags
451 provide more information about processor topology.
453 NFIT/Disassembler: Change a field name from "Address Range" to "Region
456 HMAT updates: make several existing fields to be reserved as well as
457 rename subtable 0 to "memory proximity domain attributes".
459 GTDT: Add support for new GTDT Revision 3. This revision adds information
462 iASL: Update the HMAT example template for new fields.
464 iASL: Add support for the new revision of the GTDT (Rev 3).
467 1) ACPICA kernel-resident subsystem:
469 AML Parser: fix the main AML parse loop to correctly skip erroneous
470 extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
471 byte extended opcodes. If an error occurs during an AML table load, the
472 AML parser will continue loading the table by skipping the offending
473 opcode. This implements a "load table at any cost" philosophy.
476 2) iASL Compiler/Disassembler and Tools:
478 iASL: Add checks for illegal object references, such as a reference
479 outside of method to an object within a method. Such an object is only
482 iASL: Emit error for creation of a zero-length operation region. Such a
483 region is rather pointless. If encountered, a runtime error is also
484 implemented in the interpeter.
486 Debugger: Fix a possible fault with the "test objects" command.
488 iASL: Makefile: support parent directory filenames containing embedded
491 iASL: Update the TPM2 template to revision 4.
493 iASL: Add the ability to report specific warnings or remarks as errors.
495 Disassembler: Disassemble OEMx tables as actual AML byte code.
496 Previously, these tables were treated as "unknown table".
498 iASL: Add definition and disassembly for TPM2 revision 3.
500 iASL: Add support for TPM2 rev 3 compilation.
503 ----------------------------------------
504 08 January 2019. Summary of changes for version 20190108:
507 1) ACPICA kernel-resident subsystem:
509 Updated all copyrights to 2019. This affects all source code modules.
512 2) iASL Compiler/Disassembler and Tools:
514 ASL test suite (ASLTS): Updated all copyrights to 2019.
516 Tools: Updated all signon copyrights to 2019.
518 AcpiExec: Added a new option to dump extra information concerning any
519 memory leaks detected by the internal object/cache tracking mechanism. -
522 iASL: Updated the table template for the TPM2 table to the newest version
523 of the table (Revision 4)
526 ----------------------------------------
527 13 December 2018. Summary of changes for version 20181213:
530 1) ACPICA Kernel-resident Subsystem:
532 Fixed some buffer length issues with the GenericSerialBus, related to two
533 of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
534 which are rarely seen in the field. For these, the LEN field of the ASL
535 buffer is now ignored. Hans de Goede
537 Implemented a new object evaluation trace mechanism for control methods
538 and data objects. This includes nested control methods. It is
539 particularly useful for examining the ACPI execution during system
540 initialization since the output is relatively terse. The flag below
541 enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
542 #define ACPI_LV_EVALUATION 0x00080000
545 Enter evaluation : _SB.PCI0._INI (Method)
546 Exit evaluation : _SB.PCI0._INI
547 Enter evaluation : _OSI (Method)
548 Exit evaluation : _OSI
549 Enter evaluation : _SB.PCI0.TEST (Method)
550 Nested method call : _SB.PCI0.NST1
551 Exit nested method : _SB.PCI0.NST1
552 Exit evaluation : _SB.PCI0.TEST
554 Added two recently-defined _OSI strings. See
555 https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
560 Update for buffer-to-string conversions via the ToHexString ASL operator.
561 A "0x" is now prepended to each of the hex values in the output string.
562 This provides compatibility with other ACPI implementations. The ACPI
563 specification is somewhat vague on this issue.
564 Example output string after conversion:
565 "0x01,0x02,0x03,0x04,0x05,0x06"
567 Return a run-time error for TermArg expressions within individual package
568 elements. Although this is technically supported by the ASL grammar,
569 other ACPI implementations do not support this either. Also, this fixes a
570 fault if this type of construct is ever encountered (it never has been).
573 2) iASL Compiler/Disassembler and Tools:
575 iASL: Implemented a new compile option (-ww) that will promote individual
576 warnings and remarks to errors. This is intended to enhance the firmware
579 AcpiExec: Implemented a new command-line option (-eo) to support the new
580 object evaluation trace mechanism described above.
582 Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
583 instead of a "unknown table" message.
585 AcpiHelp: Improved support for the "special" predefined names such as
586 _Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
587 used for "xx" and "x".
589 ----------------------------------------
590 31 October 2018. Summary of changes for version 20181031:
593 An Operation Region regression was fixed by properly adding address
594 ranges to a global list during initialization. This allows OS to
595 accurately check for overlapping regions between native devices (such as
596 PCI) and Operation regions as well as checking for region conflicts
597 between two Operation Regions.
599 Added support for the 2-byte extended opcodes in the code/feature that
600 attempts to continue parsing during the table load phase. Skip parsing
601 Device declarations (and other extended opcodes) when an error occurs
602 during parsing. Previously, only single-byte opcodes were supported.
604 Cleanup: Simplified the module-level code support by eliminating a
605 useless global variable (AcpiGbl_GroupModuleLeveCode).
608 2) iASL Compiler/Disassembler and Tools:
610 iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
611 could cause a fault in the preprocessor. This was an inadvertent side-
612 effect from moving more allocations/frees to the local cache/memory
615 iASL: Enhanced error detection by validating that all NameSeg elements
616 within a NamePatch actually exist. The previous behavior was spotty at
617 best, and such errors could be improperly ignored at compiler time (never
618 at runtime, however. There are two new error messages, as shown in the
621 dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1)
622 Error 6161 - ^ One or more objects within
623 the Pathname do not exist (TTTT.BXXX)
625 dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
626 Error 6160 - One or more prefix Scopes do not exist ^
629 iASL: Disassembler/table-compiler: Added support for the static data
630 table TPM2 revision 3 (an older version of TPM2). The support has been
631 added for the compiler and the disassembler.
633 Fixed compilation of DOS format data table file on Unix/Linux systems.
634 iASL now properly detects line continuations (\) for DOS format data
635 table definition language files on when executing on Unix/Linux.
637 ----------------------------------------
638 03 October 2018. Summary of changes for version 20181003:
641 2) iASL Compiler/Disassembler and Tools:
643 Fixed a regression introduced in version 20180927 that could cause the
644 compiler to fault, especially with NamePaths containing one or more
645 carats (^). Such as: ^^_SB_PCI0
647 Added a new remark for the Sleep() operator when the sleep time operand
648 is larger than one second. This is a very long time for the ASL/BIOS code
649 and may not be what was intended by the ASL writer.
651 ----------------------------------------
652 27 September 2018. Summary of changes for version 20180927:
655 1) ACPICA kernel-resident subsystem:
657 Updated the GPE support to clear the status of all ACPI events when
658 entering any/all sleep states in order to avoid premature wakeups. In
659 theory, this may cause some wakeup events to be missed, but the
660 likelihood of this is small. This change restores the original behavior
661 of the ACPICA code in order to fix a regression seen from the previous
662 "Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
663 This regression could cause some systems to incorrectly wake immediately.
665 Updated the execution of the _REG methods during initialization and
666 namespace loading to bring the behavior into closer conformance to the
667 ACPI specification and other ACPI implementations:
669 From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
670 "Control methods must assume all operation regions are inaccessible
671 until the _REG(RegionSpace, 1) method is executed"
673 "The exceptions to this rule are:
674 1. OSPM must guarantee that the following operation regions are always
676 SystemIO operation regions.
677 SystemMemory operation regions when accessing memory returned by the
678 System Address Map reporting interfaces."
680 Since the state of both the SystemIO and SystemMemory address spaces are
681 defined by the specification to never change, this ACPICA change ensures
682 that now _REG is never called on them. This solves some problems seen in
683 the field and provides compatibility with other ACPI implementations. An
684 update to the upcoming new version of the ACPI specification will help
685 clarify this behavior.
687 Updated the implementation of support for the Generic Serial Bus. For the
688 "bidirectional" protocols, the internal implementation now automatically
689 creates a return data buffer of the maximum size (255). This handles the
690 worst-case for data that is returned from the serial bus handler, and
691 fixes some problems seen in the field. This new buffer is directly
692 returned to the ASL. As such, there is no true "bidirectional" buffer,
693 which matches the ACPI specification. This is the reason for the "double
694 store" seen in the example ASL code in the specification, shown below:
696 Word Process Call (AttribProcessCall):
697 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
698 Field(TOP1, BufferAcc, NoLock, Preserve)
700 FLD1, 8, // Virtual register at command value 1.
703 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
705 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
707 Store(0x5416, DATA) // Save 0x5416 into the data buffer
708 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call
710 // This is the "double store". The write to
711 // FLD1 returns a new buffer, which is stored
712 // back into BUFF with the second Store.
715 2) iASL Compiler/Disassembler and Tools:
717 iASL: Implemented detection of extraneous/redundant uses of the Offset()
718 operator within a Field Unit list. A remark is now issued for these. For
719 example, the first two of the Offset() operators below are extraneous.
720 Because both the compiler and the interpreter track the offsets
721 automatically, these Offsets simply refer to the current offset and are
722 unnecessary. Note, when optimization is enabled, the iASL compiler will
723 in fact remove the redundant Offset operators and will not emit any AML
726 OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
729 Offset (0), // Never needed
731 Offset (4), // Redundant, offset is already 4 (bytes)
733 Offset (64), // OK use of Offset.
736 dsdt.asl 14: Offset (0),
737 Remark 2158 - ^ Unnecessary/redundant use of Offset
740 dsdt.asl 16: Offset (4),
741 Remark 2158 - ^ Unnecessary/redundant use of Offset
744 ----------------------------------------
745 10 August 2018. Summary of changes for version 20180810:
748 1) ACPICA kernel-resident subsystem:
750 Initial ACPI table loading: Attempt to continue loading ACPI tables
751 regardless of malformed AML. Since migrating table initialization to the
752 new module-level code support, the AML interpreter rejected tables upon
753 any ACPI error encountered during table load. This is a problem because
754 non-serious ACPI errors during table load do not necessarily mean that
755 the entire definition block (DSDT or SSDT) is invalid. This change
756 improves the table loading by ignoring some types of errors that can be
757 generated by incorrect AML. This can range from object type errors, scope
758 errors, and index errors.
760 Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
761 during suspend/resume. The status of ACPI events is no longer cleared
762 when entering the ACPI S5 system state (power off) which caused some
763 systems to power up immediately after turning off power in certain
764 situations. This was a functional regression. It was fixed by clearing
765 the status of all ACPI events again when entering S5 (for system-wide
766 suspend or hibernation the clearing of the status of all events is not
767 desirable, as it might cause the kernel to miss wakeup events sometimes).
771 2) iASL Compiler/Disassembler and Tools:
773 AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
774 elements listed in the initialization file were previously initialized
775 after the table load and before executing module-level code blocks.
776 Recent changes in the module-level code support means that the table load
777 becomes a large control method execution. If fields are used within
778 module-level code and we are executing with the -fi option, the
779 initialization values were used to initialize the namespace object(s)
780 only after the table was finished loading. This change Provides an early
781 initialization of objects specified in the initialization file so that
782 field unit values are populated during the table load (not after the
785 AcpiExec: Fixed a small memory leak regression that could result in
786 warnings during exit of the utility. These warnings were similar to
788 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
789 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
791 ----------------------------------------
792 29 June 2018. Summary of changes for version 20180629:
795 1) iASL Compiler/Disassembler and Tools:
797 iASL: Fixed a regression related to the use of the ASL External
798 statement. Error checking for the use of the External() statement has
799 been relaxed. Previously, a restriction on the use of External meant that
800 the referenced named object was required to be defined in a different
801 table (an SSDT). Thus it would be an error to declare an object as an
802 external and then define the same named object in the same table. For
804 DefinitionBlock (...)
807 Device (DEV1){...} // This was an error
809 However, this behavior has caused regressions in some existing ASL code,
810 because there is code that depends on named objects and externals (with
811 the same name) being declared in the same table. This change will allow
812 the ASL code above to compile without errors or warnings.
814 iASL: Implemented ASL language extensions for four operators to make some
815 of their arguments optional instead of required:
816 1) Field (RegionName, AccessType, LockRule, UpdateRule)
817 2) BankField (RegionName, BankName, BankValue,
818 AccessType, LockRule, UpdateRule)
819 3) IndexField (IndexName, DataName,
820 AccessType, LockRule, UpdateRule)
821 For the Field operators above, the AccessType, LockRule, and UpdateRule
822 are now optional arguments. The default values are:
826 4) Mutex (MutexName, SyncLevel)
827 For this operator, the SyncLevel argument is now optional. This argument
828 is rarely used in any meaningful way by ASL code, and thus it makes sense
829 to make it optional. The default value is:
832 iASL: Attempted use of the ASL Unload() operator now results in the
834 "Unload is not supported by all operating systems"
835 This is in fact very true, and the Unload operator may be completely
836 deprecated in the near future.
838 AcpiExec: Fixed a regression for the -fi option (Namespace initialization
839 file. Recent changes in the ACPICA module-level code support altered the
840 table load/initialization sequence . This means that the table load has
841 become a large method execution of the table itself. If Operation Region
842 Fields are used within any module-level code and the -fi option was
843 specified, the initialization values were populated only after the table
844 had completely finished loading (and thus the module-level code had
845 already been executed). This change moves the initialization of objects
846 listed in the initialization file to before the table is executed as a
847 method. Field unit values are now initialized before the table execution
850 ----------------------------------------
851 31 May 2018. Summary of changes for version 20180531:
854 1) ACPICA kernel-resident Subsystem:
856 Implemented additional support to help ensure that a DSDT or SSDT is
857 fully loaded even if errors are incurred during the load. The majority of
858 the problems that are seen is the failure of individual AML operators
859 that occur during execution of any module-level code (MLC) existing in
860 the table. This support adds a mechanism to abort the current ASL
861 statement (AML opcode), emit an error message, and to simply move on to
862 the next opcode -- instead of aborting the entire table load. This is
863 different than the execution of a control method where the entire method
864 is aborted upon any error. The goal is to perform a very "best effort" to
865 load the ACPI tables. The most common MLC errors that have been seen in
866 the field are direct references to unresolved ASL/AML symbols (referenced
867 directly without the use of the CondRefOf operator to validate the
868 symbol). This new ACPICA behavior is now compatible with other ACPI
871 Interpreter: The Unload AML operator is no longer supported for the
872 reasons below. An AE_NOT_IMPLEMENTED exception is returned.
873 1) A correct implementation on at least some hosts may not be possible.
874 2) Other ACPI implementations do not correctly/fully support it.
875 3) It requires host device driver support which is not known to exist.
876 (To properly support namespace unload out from underneath.)
877 4) This AML operator has never been seen in the field.
879 Parser: Added a debug option to dump AML parse sub-trees as they are
880 being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
883 Debugger: Reduced the verbosity for errors incurred during table load and
884 module-level code execution.
886 Completed an investigation into adding a namespace node "owner list"
887 instead of the current "owner ID" associated with namespace nodes. This
888 list would link together all nodes that are owned by an individual
889 control method. The purpose would be to enhance control method execution
890 by speeding up cleanup during method exit (all namespace nodes created by
891 a method are deleted upon method termination.) Currently, the entire
892 namespace must be searched for matching owner IDs if (and only if) the
893 method creates named objects outside of the local scope. However, by far
894 the most common case is that methods create objects locally, not outside
895 the method scope. There is already an ACPICA optimization in place that
896 only searches the entire namespace in the rare case of a method creating
897 objects elsewhere in the namespace. Therefore, it is felt that the
898 overhead of adding an additional pointer to each namespace node to
899 implement the owner list makes this feature unnecessary.
902 2) iASL Compiler/Disassembler and Tools:
904 iASL, Disassembler, and Template generator: Implemented support for
905 Revision D of the IORT table. Adds a new subtable that is used to specify
906 SMMUv3 PMCGs. rmurphy-arm.
908 Disassembler: Restored correct table header validation for the "special"
909 ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
910 table header and must be special-cased. This was a regression that has
911 been present for apparently a long time.
913 AcpiExec: Reduced verbosity of the local exception handler implemented
914 within acpiexec. This handler is invoked by ACPICA upon any exceptions
915 generated during control method execution. A new option was added: -vh
916 restores the original verbosity level if desired.
918 AcpiExec: Changed the default base from decimal to hex for the -x option
919 (set debug level). This simplifies the use of this option and matches the
920 behavior of the corresponding iASL -x option.
922 AcpiExec: Restored a force-exit on multiple control-c (sigint)
923 interrupts. This allows program termination even if other issues cause
924 the control-c to fail.
926 ASL test suite (ASLTS): Added tests for the recently implemented package
927 element resolution mechanism that allows forward references to named
928 objects from individual package elements (this mechanism provides
929 compatibility with other ACPI implementations.)
932 ----------------------------------------
933 8 May 2018. Summary of changes for version 20180508:
936 1) ACPICA kernel-resident subsystem:
938 Completed the new (recently deployed) package resolution mechanism for
939 the Load and LoadTable ASL/AML operators. This fixes a regression that
940 was introduced in version 20180209 that could result in an
941 AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
942 (SSDT) that contains package objects.
945 2) iASL Compiler/Disassembler and Tools:
947 AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
948 1 MB. This change allows for table offsets within the acpidump file to be
949 up to 8 characters. These changes are backwards compatible with existing
953 ----------------------------------------
954 27 April 2018. Summary of changes for version 20180427:
957 1) ACPICA kernel-resident subsystem:
959 Debugger: Added support for Package objects in the "Test Objects"
960 command. This command walks the entire namespace and evaluates all named
961 data objects (Integers, Strings, Buffers, and now Packages).
963 Improved error messages for the namespace root node. Originally, the root
964 was referred to by the confusing string "\___". This has been replaced by
965 "Namespace Root" for clarification.
967 Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
968 Ian King <colin.king@canonical.com>.
971 2) iASL Compiler/Disassembler and Tools:
973 iASL: Implemented support to detect and flag illegal forward references.
974 For compatibility with other ACPI implementations, these references are
975 now illegal at the root level of the DSDT or SSDTs. Forward references
976 have always been illegal within control methods. This change should not
977 affect existing ASL/AML code because of the fact that these references
978 have always been illegal in the other ACPI implementation.
980 iASL: Added error messages for the case where a table OEM ID and OEM
981 TABLE ID strings are longer than the ACPI-defined length. Previously,
982 these strings were simply silently truncated.
984 iASL: Enhanced the -tc option (which creates an AML hex file in C,
985 suitable for import into a firmware project):
986 1) Create a unique name for the table, to simplify use of multiple
988 2) Add a protection #ifdef in the file, similar to a .h header file.
989 With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
992 AcpiExec: Added a new option, -df, to disable the local fault handler.
993 This is useful during debugging, where it may be desired to drop into a
996 ----------------------------------------
997 13 March 2018. Summary of changes for version 20180313:
1000 1) ACPICA kernel-resident subsystem:
1002 Implemented various improvements to the GPE support:
1004 1) Dispatch all active GPEs at initialization time so that no GPEs are
1006 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1007 before devices are enumerated.
1008 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1010 4) Add parallel GPE handling to eliminate the possibility of dispatching
1012 5) Dispatch any pending GPEs after enabling for the first time.
1014 AcpiGetObjectInfo - removed support for the _STA method. This was causing
1015 problems on some platforms.
1017 Added a new _OSI string, "Windows 2017.2".
1019 Cleaned up and simplified the module-level code support. These changes
1020 are in preparation for the eventual removal of the legacy MLC support
1021 (deferred execution), replaced by the new MLC architecture which executes
1022 the MLC as a table is loaded (DSDT/SSDTs).
1024 Changed a compile-time option to a runtime option. Changes the option to
1025 ignore ACPI table load-time package resolution errors into a runtime
1026 option. Used only for platforms that generate many AE_NOT_FOUND errors
1027 during boot. AcpiGbl_IgnorePackageResolutionErrors.
1029 Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1030 ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1031 compilation errors from unused variables (seen with some compilers).
1034 2) iASL Compiler/Disassembler and Tools:
1036 ASLTS: parallelized execution in order to achieve an (approximately) 2X
1037 performance increase.
1039 ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1042 ----------------------------------------
1043 09 February 2018. Summary of changes for version 20180209:
1046 1) ACPICA kernel-resident subsystem:
1048 Completed the final integration of the recent changes to Package Object
1049 handling and the module-level AML code support. This allows forward
1050 references from individual package elements when the package object is
1051 declared from within module-level code blocks. Provides compatibility
1052 with other ACPI implementations.
1054 The new architecture for the AML module-level code has been completed and
1055 is now the default for the ACPICA code. This new architecture executes
1056 the module-level code in-line as the ACPI table is loaded/parsed instead
1057 of the previous architecture which deferred this code until after the
1058 table was fully loaded. This solves some ASL code ordering issues and
1059 provides compatibility with other ACPI implementations. At this time,
1060 there is an option to fallback to the earlier architecture, but this
1061 support is deprecated and is planned to be completely removed later this
1064 Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1065 resolution of named reference elements within Package objects. Although
1066 this is potentially a serious problem, it can generate a lot of
1067 noise/errors on platforms whose firmware carries around a bunch of unused
1068 Package objects. To disable these errors, define
1069 ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1070 errors are always reported for ACPICA applications such as AcpiExec.
1072 Fixed a regression related to the explicit type-conversion AML operators
1073 (ToXXXX). The regression was introduced early in 2017 but was not seen
1074 until recently because these operators are not fully supported by other
1075 ACPI implementations and are thus rarely used by firmware developers. The
1076 operators are defined by the ACPI specification to not implement the
1077 "implicit result object conversion". The regression incorrectly
1078 introduced this object conversion for the following explicit conversion
1089 2) iASL Compiler/Disassembler and Tools:
1091 iASL: Fixed a problem with the compiler constant folding feature as
1092 related to the ToXXXX explicit conversion operators. These operators do
1093 not support the "implicit result object conversion" by definition. Thus,
1094 ASL expressions that use these operators cannot be folded to a simple
1095 Store operator because Store implements the implicit conversion. This
1096 change uses the CopyObject operator for the ToXXXX operator folding
1097 instead. CopyObject is defined to not implement implicit result
1098 conversions and is thus appropriate for folding the ToXXXX operators.
1100 iASL: Changed the severity of an error condition to a simple warning for
1101 the case where a symbol is declared both locally and as an external
1102 symbol. This accommodates existing ASL code.
1104 AcpiExec: The -ep option to enable the new architecture for module-level
1105 code has been removed. It is replaced by the -dp option which instead has
1106 the opposite effect: it disables the new architecture (the default) and
1107 enables the legacy architecture. When the legacy code is removed in the
1108 future, the -dp option will be removed also.
1110 ----------------------------------------
1111 05 January 2018. Summary of changes for version 20180105:
1114 1) ACPICA kernel-resident subsystem:
1116 Updated all copyrights to 2018. This affects all source code modules.
1118 Fixed a possible build error caused by an unresolved reference to the
1119 AcpiUtSafeStrncpy function.
1121 Removed NULL pointer arithmetic in the various pointer manipulation
1122 macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1123 This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1125 Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1129 2) iASL Compiler/Disassembler and Tools:
1131 ASLTS: Updated all copyrights to 2018.
1133 Tools: Updated all signon copyrights to 2018.
1135 AcpiXtract: Fixed a regression related to ACPI table signatures where the
1136 signature was truncated to 3 characters (instead of 4).
1138 AcpiExec: Restore the original terminal mode after the use of the -v and
1141 ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1143 ----------------------------------------
1144 14 December 2017. Summary of changes for version 20171214:
1147 1) ACPICA kernel-resident subsystem:
1149 Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1150 interface where the optional "pathname" argument had inadvertently become
1151 a required argument returning an error if omitted (NULL pointer
1154 Fixed two possible memory leaks related to the recently developed "late
1155 resolution" of reference objects within ASL Package Object definitions.
1157 Added two recently defined _OSI strings: "Windows 2016" and "Windows
1158 2017". Mario Limonciello.
1160 Implemented and deployed a safer version of the C library function
1161 strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the
1162 creation of unterminated strings as a possible result of a standard
1165 Cleaned up and restructured the global variable file (acglobal.h). There
1166 are many changes, but no functional changes.
1169 2) iASL Compiler/Disassembler and Tools:
1171 iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1172 optional OemData field at the end of the table was incorrectly required
1173 for proper compilation. It is now correctly an optional field.
1175 ASLTS: The entire suite was converted from standard ASL to the ASL+
1176 language, using the ASL-to-ASL+ converter which is integrated into the
1177 iASL compiler. A binary compare of all output files has verified the
1178 correctness of the conversion.
1180 iASL: Fixed the source code build for platforms where "char" is unsigned.
1181 This affected the iASL lexer only. Jung-uk Kim.
1183 ----------------------------------------
1184 10 November 2017. Summary of changes for version 20171110:
1187 1) ACPICA kernel-resident subsystem:
1189 This release implements full support for ACPI 6.2A:
1190 NFIT - Added a new subtable, "Platform Capabilities Structure"
1191 No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1192 errata release of the specification.
1194 Other ACPI table changes:
1195 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1196 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1199 Utilities: Modified the string/integer conversion functions to use
1200 internal 64-bit divide support instead of a native divide. On 32-bit
1201 platforms, a 64-bit divide typically requires a library function which
1202 may not be present in the build (kernel or otherwise).
1204 Implemented a targeted error message for timeouts returned from the
1205 Embedded Controller device driver. This is seen frequently enough to
1206 special-case an AE_TIME returned from an EC operation region access:
1207 "Timeout from EC hardware or EC device driver"
1209 Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1210 runtime error messages have the identical prefix.
1213 2) iASL Compiler/Disassembler and Tools:
1215 AcpiXtract: Fixed a problem with table header detection within the
1216 acpidump file. Processing a table could be ended early if a 0x40 (@)
1217 appears in the original binary table, resulting in the @ symbol appearing
1218 in the decoded ASCII field at the end of the acpidump text line. The
1219 symbol caused acpixtract to incorrectly think it had reached the end of
1220 the current table and the beginning of a new table.
1222 AcpiXtract: Added an option (-f) to ignore some errors during table
1223 extraction. This initial implementation ignores non-ASCII and non-
1224 printable characters found in the acpidump text file.
1226 TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1227 for ASLTS. This feature is used to track memory allocations from
1228 different memory caches within the ACPICA code. At the end of an ASLTS
1229 run, these memory statistics are recorded and stored in a log file.
1231 Debugger (user-space version): Implemented a simple "Background" command.
1232 Creates a new thread to execute a control method in the background, while
1233 control returns to the debugger prompt to allow additional commands.
1234 Syntax: Background <Namepath> [Arguments]
1236 ----------------------------------------
1237 29 September 2017. Summary of changes for version 20170929:
1240 1) ACPICA kernel-resident subsystem:
1242 Redesigned and implemented an improved ASL While() loop timeout
1243 mechanism. This mechanism is used to prevent infinite loops in the kernel
1244 AML interpreter caused by either non-responsive hardware or incorrect AML
1245 code. The new implementation uses AcpiOsGetTimer instead of a simple
1246 maximum loop count, and is thus more accurate and constant across
1247 different machines. The default timeout is currently 30 seconds, but this
1248 may be adjusted later.
1250 Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1251 better reflect the new implementation of the loop timeout mechanism.
1253 Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1254 and to fix an off-by-one error. Jung-uk Kim.
1256 Fixed an EFI build problem by updating the makefiles to for a new file
1257 that was added, utstrsuppt.c
1260 2) iASL Compiler/Disassembler and Tools:
1262 Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1263 includes support in the table disassembler, compiler, and template
1266 iASL: Added an exception for an illegal type of recursive method
1267 invocation. If a method creates named objects, the first recursive call
1268 will fail at runtime. This change adds an error detection at compile time
1269 to catch the problem up front. Note: Marking such a method as
1270 "serialized" will not help with this problem, because the same thread can
1271 acquire the method mutex more than once. Example compiler and runtime
1280 dsdt.asl 22: MTH1 ()
1281 Error 6152 - ^ Illegal recursive call to method
1282 that creates named objects (MTH1)
1284 Previous runtime exception:
1285 ACPI Error: [INT1] Namespace lookup failure,
1286 AE_ALREADY_EXISTS (20170831/dswload2-465)
1288 iASL: Updated support for External() opcodes to improve namespace
1289 management and error detection. These changes are related to issues seen
1290 with multiple-segment namespace pathnames within External declarations,
1293 External(\_SB.PCI0.GFX0, DeviceObj)
1294 External(\_SB.PCI0.GFX0.ALSI)
1296 iASL: Implemented support for multi-line error/warning messages. This
1297 enables more detailed and helpful error messages as below, from the
1298 initial deployment for the duplicate names error:
1300 DSDT.iiii 1692: Device(PEG2) {
1301 Error 6074 - ^ Name already exists in scope
1304 Original name creation/declaration below:
1305 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj)
1307 AcpiXtract: Added additional flexibility to support differing input hex
1308 dump formats. Specifically, hex dumps that contain partial disassembly
1309 and/or comments within the ACPI table data definition. There exist some
1310 dump utilities seen in the field that create this type of hex dump (such
1311 as Simics). For example:
1313 DSDT @ 0xdfffd0c0 (10999 bytes)
1321 Creator_id 1280593481
1322 Creator_revision 537399345
1323 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1325 2af0: 5f 4c 30 46 00 a4 01
1327 Test suite: Miscellaneous changes/fixes:
1328 More cleanup and simplification of makefiles
1329 Continue compilation of test cases after a compile failure
1330 Do not perform binary compare unless both files actually exist
1332 iASL: Performed some code/module restructuring. Moved all memory
1333 allocation functions to new modules. Two new files, aslallocate.c and
1336 ----------------------------------------
1337 31 August 2017. Summary of changes for version 20170831:
1340 1) ACPICA kernel-resident subsystem:
1342 Implemented internal support for full 64-bit addresses that appear in all
1343 Generic Address Structure (GAS) structures. Previously, only the lower 32
1344 bits were used. Affects the use of GAS structures in the FADT and other
1345 tables, as well as the GAS structures passed to the AcpiRead and
1346 AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1348 Added header support for the PDTT ACPI table (Processor Debug Trigger
1349 Table). Full support in the iASL Data Table Compiler and disassembler is
1353 2) iASL Compiler/Disassembler and Tools:
1355 iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1356 Properties Topology Table) where a flag bit was specified in the wrong
1357 bit position ("Line Size Valid", bit 6).
1359 iASL: Implemented support for Octal integer constants as defined by the
1360 ASL language grammar, per the ACPI specification. Any integer constant
1361 that starts with a zero is an octal constant. For example,
1362 Store (037777, Local0) /* Octal constant */
1363 Store (0x3FFF, Local0) /* Hex equivalent */
1364 Store (16383, Local0) /* Decimal equivalent */
1366 iASL: Improved overflow detection for 64-bit string conversions during
1367 compilation of integer constants. "Overflow" in this case means a string
1368 that represents an integer that is too large to fit into a 64-bit value.
1369 Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1370 the low-order 32 bits with a warning, as previously implemented. Several
1371 new exceptions are defined that indicate a 64-bit overflow, as well as
1372 the base (radix) that was used during the attempted conversion. Examples:
1373 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW
1374 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW
1375 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW
1377 iASL: Added a warning for the case where a ResourceTemplate is declared
1378 with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1379 this case, the resulting template is created with a single END_TAG
1380 descriptor, which is essentially useless.
1382 iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1383 include compilation error codes as well.
1385 ----------------------------------------
1386 28 July 2017. Summary of changes for version 20170728:
1389 1) ACPICA kernel-resident subsystem:
1391 Fixed a regression seen with small resource descriptors that could cause
1392 an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1394 AML interpreter: Implemented a new feature that allows forward references
1395 from individual named references within package objects that are
1396 contained within blocks of "module-level code". This provides
1397 compatibility with other ACPI implementations and supports existing
1398 firmware that depends on this feature. Example:
1401 If (ABCD) /* An If() at module-level */
1403 Name (PKG1, Package()
1405 INT1 /* Forward reference to object INT1
1411 AML Interpreter: Fixed a problem with the Alias() operator where aliases
1412 to some ASL objects were not handled properly. Objects affected are:
1413 Mutex, Event, and OperationRegion.
1415 AML Debugger: Enhanced to properly handle AML Alias objects. These
1416 objects have one level of indirection which was not fully supported by
1419 Table Manager: Added support to detect and ignore duplicate SSDTs within
1420 the XSDT/RSDT. This error in the XSDT has been seen in the field.
1422 EFI and EDK2 support:
1423 Enabled /WX flag for MSVC builds
1424 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1425 Added local support for 64-bit multiply and shift operations
1426 Added support to compile acpidump.efi on Windows
1427 Added OSL function stubs for interfaces not used under EFI
1429 Added additional support for the _DMA predefined name. _DMA returns a
1430 buffer containing a resource template. This change add support within the
1431 resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1432 resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1435 2) iASL Compiler/Disassembler and Tools:
1437 iASL: Fixed a problem where the internal input line buffer(s) could
1438 overflow if there are very long lines in the input ASL source code file.
1439 Implemented buffer management that automatically increases the size of
1440 the buffers as necessary.
1442 iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1443 errors. If the specified exception is not raised during compilation, the
1444 compiler emits an error. This is intended to support the ASL test suite,
1445 but may be useful in other contexts.
1447 iASL: Implemented a new predefined macro, __METHOD__, which returns a
1448 string containing the name of the current control method that is being
1451 iASL: Implemented debugger and table compiler support for the SDEI ACPI
1452 table (Software Delegated Exception Interface). James Morse
1453 <james.morse@arm.com>
1455 Unix/Linux makefiles: Added an option to disable compile optimizations.
1456 The disable occurs when the NOOPT flag is set to TRUE.
1457 theracermaster@gmail.com
1459 Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1460 when there are different tables for 32-bit versus 64-bit.
1462 Enhanced error reporting for the ASL test suite (ASLTS) by removing
1463 unnecessary/verbose text, and emit the actual line number where an error
1464 has occurred. These changes are intended to improve the usefulness of the
1467 ----------------------------------------
1468 29 June 2017. Summary of changes for version 20170629:
1471 1) ACPICA kernel-resident subsystem:
1473 Tables: Implemented a deferred ACPI table verification. This is useful
1474 for operating systems where the tables cannot be verified in the early
1475 initialization stage due to early memory mapping limitations on some
1476 architectures. Lv Zheng.
1478 Tables: Removed the signature validation for dynamically loaded tables.
1479 Provides compatibility with other ACPI implementations. Previously, only
1480 SSDT tables were allowed, as per the ACPI specification. Now, any table
1481 signature can be used via the Load() operator. Lv Zheng.
1483 Tables: Fixed several mutex issues that could cause errors during table
1484 acquisition. Lv Zheng.
1486 Tables: Fixed a problem where an ACPI warning could be generated if a
1487 null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1489 Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1490 AcpiPutTable interfaces. This applies to the "late stage" table loading
1491 when the use of AcpiPutTable is no longer required (since the system
1492 memory manager is fully running and available). Lv Zheng.
1494 Fixed/Reverted a regression during processing of resource descriptors
1495 that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1496 exception in this case.
1498 Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1499 I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1501 Interpreter: Fixed a possible fault if an Alias operator with an invalid
1502 or duplicate target is encountered during Alias creation in
1503 AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1505 Added an option to use designated initializers for function pointers.
1506 Kees Cook <keescook@google.com>
1509 2) iASL Compiler/Disassembler and Tools:
1511 iASL: Allow compilation of External declarations with target pathnames
1512 that refer to existing named objects within the table. Erik Schmauss.
1514 iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1515 FieldUnit name also is declared via External in the same table. Erik
1518 iASL: Allow existing scope names within pathnames used in External
1519 statements. For example:
1520 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1523 iASL: IORT ACPI table: Implemented changes required to decode the new
1524 Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1525 compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1527 Disassembler: Don't abort disassembly on errors from External()
1528 statements. Erik Schmauss.
1530 Disassembler: fixed a possible fault when one of the Create*Field
1531 operators references a Resource Template. ACPICA Bugzilla 1396.
1533 iASL: In the source code, resolved some naming inconsistences across the
1534 parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1535 Adds a new file, aslparseop.c
1537 ----------------------------------------
1538 31 May 2017. Summary of changes for version 20170531:
1541 0) ACPI 6.2 support:
1543 The ACPI specification version 6.2 has been released and is available at
1544 http://uefi.org/specifications
1546 This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1547 are summarized below.
1549 New ACPI tables (Table Compiler/Disassembler/Templates):
1550 HMAT (Heterogeneous Memory Attributes Table)
1551 WSMT (Windows SMM Security Mitigation Table)
1552 PPTT (Processor Properties Topology Table)
1554 New subtables for existing ACPI tables:
1555 HEST (New subtable, Arch-deferred machine check)
1556 SRAT (New subtable, Arch-specific affinity structure)
1557 PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1559 Simple updates for existing ACPI tables:
1560 BGRT (two new flag bits)
1561 HEST (New bit defined for several subtables, GHES_ASSIST)
1563 New Resource Descriptors and Resource macros (Compiler/Disassembler):
1569 New type for hardware error notification (section 18.3.2.9)
1571 New predefined names/methods (Compiler/Interpreter):
1572 _HMA (Heterogeneous Memory Attributes)
1573 _LSI (Label Storage Information)
1574 _LSR (Label Storage Read)
1575 _LSW (Label Storage Write)
1577 ASL grammar/macro changes (Compiler):
1578 For() ASL macro, implemented with the AML while operator
1579 Extensions to Concatenate operator
1580 Support for multiple definition blocks in same ASL file
1581 Clarification for Buffer operator
1582 Allow executable AML code underneath all scopes (Devices, etc.)
1583 Clarification/change for the _OSI return value
1584 ASL grammar update for reference operators
1585 Allow a zero-length string for AML filename in DefinitionBlock
1588 New device object notification value
1589 Remove a notify value (0x0C) for graceful shutdown
1590 New UUIDs for processor/cache properties and
1591 physical package property
1592 New _HID, ACPI0014 (Wireless Power Calibration Device)
1595 1) ACPICA kernel-resident subsystem:
1597 Added support to disable ACPI events on hardware-reduced platforms.
1598 Eliminates error messages of the form "Could not enable fixed event". Lv
1601 Fixed a problem using Device/Thermal objects with the ObjectType and
1602 DerefOf ASL operators. This support had not been fully/properly
1605 Fixed a problem where if a Buffer object containing a resource template
1606 was longer than the actual resource template, an error was generated --
1607 even though the AML is legal. This case has been seen in the field.
1609 Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1610 The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1612 Added header file changes for the TPM2 ACPI table. Update to new version
1613 of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1615 Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1616 These interfaces are intended to be used only in conjunction with the
1617 predefined _DLM method (Device Lock Method). "This object appears in a
1618 device scope when AML access to the device must be synchronized with the
1621 Example Code and Data Size: These are the sizes for the OS-independent
1622 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1623 debug version of the code includes the debug output trace mechanism and
1624 has a much larger code and data size.
1627 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1628 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total
1630 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1631 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
1634 2) iASL Compiler/Disassembler and Tools:
1636 iASL: Fixed a problem where an External() declaration could not refer to
1637 a Field Unit. Erik Schmauss.
1639 Disassembler: Improved support for the Switch/Case operators. This
1640 feature will disassemble AML code back to the original Switch operators
1641 when possible, instead of an If..Else sequence. David Box
1643 iASL and disassembler: Improved the handling of multiple extraneous
1644 parentheses for both ASL input and disassembled ASL output.
1646 Improved the behavior of the iASL compiler and disassembler to detect
1647 improper use of external declarations
1649 Disassembler: Now aborts immediately upon detection of an unknown AML
1650 opcode. The AML parser has no real way to recover from this, and can
1651 result in the creation of an ill-formed parse tree that causes errors
1652 later during the disassembly.
1654 All tools: Fixed a problem where the Unix application OSL did not handle
1655 control-c correctly. For example, a control-c could incorrectly wake the
1658 AcpiExec: Improved the Control-C handling and added a handler for
1659 segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1662 Reduced the verbosity of the generic unix makefiles. Previously, each
1663 compilation displayed the full set of compiler options. This has been
1664 eliminated as the options are easily inspected within the makefiles. Each
1665 compilation now results in a single line of output.
1667 ----------------------------------------
1668 03 March 2017. Summary of changes for version 20170303:
1671 0) ACPICA licensing:
1673 The licensing information at the start of each source code module has
1674 been updated. In addition to the Intel license, the dual GPLv2/BSD
1675 license has been added for completeness. Now, a single version of the
1676 source code should be suitable for all ACPICA customers. This is the
1677 major change for this release since it affects all source code modules.
1680 1) ACPICA kernel-resident subsystem:
1682 Fixed two issues with the common asltypes.h header that could cause
1683 problems in some environments: (Kim Jung-uk)
1684 Removed typedef for YY_BUFFER_STATE ?
1685 Fixes an error with earlier versions of Flex.
1686 Removed use of FILE typedef (which is only defined in stdio.h)
1689 2) iASL Compiler/Disassembler and Tools:
1691 Disassembler: fixed a regression introduced in 20170224. A fix for a
1692 memory leak related to resource descriptor tags (names) could fault when
1693 the disassembler was generated with 64-bit compilers.
1695 The ASLTS test suite has been updated to implement a new testing
1696 architecture. During generation of the suite from ASL source, both the
1697 ASL and ASL+ compilers are now validated, as well as the disassembler
1698 itself (Erik Schmauss). The architecture executes as follows:
1700 For every ASL source module:
1701 Compile (legacy ASL compilation)
1702 Disassemble the resulting AML to ASL+ source code
1703 Compile the new ASL+ module
1704 Perform a binary compare on the legacy AML and the new ASL+ AML
1705 The ASLTS suite then executes normally using the AML binaries.
1707 ----------------------------------------
1708 24 February 2017. Summary of changes for version 20170224:
1711 1) ACPICA kernel-resident subsystem:
1713 Interpreter: Fixed two issues with the control method return value auto-
1714 repair feature, where an attempt to double-delete an internal object
1715 could result in an ACPICA warning (for _CID repair and others). No fault
1716 occurs, however, because the attempted deletion (actually a release to an
1717 internal cache) is detected and ignored via object poisoning.
1719 Debugger: Fixed an AML interpreter mutex issue during the single stepping
1720 of control methods. If certain debugger commands are executed during
1721 stepping, a mutex acquire/release error could occur. Lv Zheng.
1723 Fixed some issues generating ACPICA with the Intel C compiler by
1724 restoring the original behavior and compiler-specific include file in
1727 Example Code and Data Size: These are the sizes for the OS-independent
1728 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1729 debug version of the code includes the debug output trace mechanism and
1730 has a much larger code and data size.
1733 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1734 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
1736 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1737 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
1740 2) iASL Compiler/Disassembler and Tools:
1742 iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1743 tool has been designed, implemented, and included in this release. The
1744 key feature of this utility is that the original comments within the
1745 input ASL file are preserved during the conversion process, and included
1746 within the converted ASL+ file -- thus creating a transparent conversion
1747 of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1749 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with
1752 iASL/Disassembler: Improved the detection and correct disassembly of
1753 Switch/Case operators. This feature detects sequences of if/elseif/else
1754 operators that originated from ASL Switch/Case/Default operators and
1755 emits the original operators. David Box.
1757 iASL: Improved the IORT ACPI table support in the following areas. Lv
1759 Clear MappingOffset if the MappingCount is zero.
1760 Fix the disassembly of the SMMU GSU interrupt offset.
1761 Update the template file for the IORT table.
1763 Disassembler: Enhanced the detection and disassembly of resource
1764 template/descriptor within a Buffer object. An EndTag descriptor is now
1765 required to have a zero second byte, since all known ASL compilers emit
1766 this. This helps eliminate incorrect decisions when a buffer is
1767 disassembled (false positives on resource templates).
1769 ----------------------------------------
1770 19 January 2017. Summary of changes for version 20170119:
1773 1) General ACPICA software:
1775 Entire source code base: Added the 2017 copyright to all source code
1776 legal/licensing module headers and utility/tool signons. This includes
1777 the standard Linux dual-license header. This affects virtually every file
1778 in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
1779 the ACPICA test suite.
1782 2) iASL Compiler/Disassembler and Tools:
1784 iASL: Removed/fixed an inadvertent remark when a method argument
1785 containing a reference is used as a target operand within the method (and
1786 never used as a simple argument), as in the example below. Jeffrey Hugo.
1788 dsdt.asl 1507: Store(0x1, Arg0)
1789 Remark 2146 - ^ Method Argument is never used (Arg0)
1791 All tools: Removed the bit width of the compiler that generated the tool
1792 from the common signon for all user space tools. This proved to be
1793 confusing and unnecessary. This includes similar removal of HARDWARE_NAME
1794 from the generic makefiles (Thomas Petazzoni). Example below.
1797 ASL+ Optimizing Compiler version 20170119-32
1798 ASL+ Optimizing Compiler version 20170119-64
1801 ASL+ Optimizing Compiler version 20170119
1803 ----------------------------------------
1804 22 December 2016. Summary of changes for version 20161222:
1807 1) ACPICA kernel-resident subsystem:
1809 AML Debugger: Implemented a new mechanism to simplify and enhance
1810 debugger integration into all environments, including kernel debuggers
1811 and user-space utilities, as well as remote debug services. This
1812 mechanism essentially consists of new OSL interfaces to support debugger
1813 initialization/termination, as well as wait/notify interfaces to perform
1814 the debugger handshake with the host. Lv Zheng.
1817 AcpiOsInitializeDebugger (void)
1818 AcpiOsTerminateDebugger (void)
1819 AcpiOsWaitCommandReady (void)
1820 AcpiOsNotifyCommandComplete (void)
1822 New OS services layer:
1823 osgendbg.c -- Example implementation, and used for AcpiExec
1825 Update for Generic Address Space (GAS) support: Although the AccessWidth
1826 and/or BitOffset fields of the GAS are not often used, this change now
1827 fully supports these fields. This affects the internal support for FADT
1828 registers, registers in other ACPI data tables, and the AcpiRead and
1829 AcpiWrite public interfaces. Lv Zheng.
1831 Sleep support: In order to simplify integration of ACPI sleep for the
1832 various host operating systems, a new OSL interface has been introduced.
1833 AcpiOsEnterSleep allows the host to perform any required operations
1834 before the final write to the sleep control register(s) is performed by
1838 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1840 Called from these internal interfaces:
1844 EFI support: Added a very small EFI/ACPICA example application. Provides
1845 a simple demo for EFI integration, as well as assisting with resolution
1846 of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1848 source/tools/efihello/efihello.c
1850 Local C library: Implemented several new functions to enhance ACPICA
1851 portability, for environments where these clib functions are not
1852 available (such as EFI). Lv Zheng:
1859 Fixed a regression where occasionally a valid resource descriptor was
1860 incorrectly detected as invalid at runtime, and a
1861 AE_AML_NO_RESOURCE_END_TAG was returned.
1863 Fixed a problem with the recently implemented support that enables
1864 control method invocations as Target operands to many ASL operators.
1865 Warnings of this form: "Needed type [Reference], found [Processor]" were
1866 seen at runtime for some method invocations.
1868 Example Code and Data Size: These are the sizes for the OS-independent
1869 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1870 debug version of the code includes the debug output trace mechanism and
1871 has a much larger code and data size.
1874 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1875 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total
1877 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1878 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
1881 2) iASL Compiler/Disassembler and Tools:
1883 Disassembler: Enhanced output by adding the capability to detect and
1884 disassemble ASL Switch/Case statements back to the original ASL source
1885 code instead of if/else blocks. David Box.
1887 AcpiHelp: Split a large file into separate files based upon
1888 functionality/purpose. New files are:
1892 ----------------------------------------
1893 17 November 2016. Summary of changes for version 20161117:
1896 1) ACPICA kernel-resident subsystem:
1898 Table Manager: Fixed a regression introduced in 20160729, "FADT support
1899 cleanup". This was an attempt to remove all references in the source to
1900 the FADT version 2, which never was a legal version number. It was
1901 skipped because it was an early version of 64-bit support that was
1902 eventually abandoned for the current 64-bit support.
1904 Interpreter: Fixed a problem where runtime implicit conversion was
1905 incorrectly disabled for the ASL operators below. This brings the
1906 behavior into compliance with the ACPI specification:
1914 Table Manager: Added a new public interface, AcpiPutTable, used to
1915 release and free an ACPI table returned by AcpiGetTable and related
1916 interfaces. Lv Zheng.
1918 Example Code and Data Size: These are the sizes for the OS-independent
1919 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1920 debug version of the code includes the debug output trace mechanism and
1921 has a much larger code and data size.
1924 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1925 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
1927 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1928 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
1931 2) iASL Compiler/Disassembler and Tools:
1933 Disassembler: Fixed a regression for disassembly of Resource Template.
1934 Detection of templates in the AML stream missed some types of templates.
1936 iASL: Fixed a problem where an Access Size error was returned for the PCC
1937 address space when the AccessSize of the GAS register is greater than a
1940 iASL: Implemented several grammar changes for the operators below. These
1941 changes are slated for the next version of the ACPI specification:
1942 RefOf - Disallow method invocation as an operand
1943 CondRefOf - Disallow method invocation as an operand
1944 DerefOf - Disallow operands that use the result from operators
1946 do not return a reference (Changed TermArg to
1949 iASL: Control method invocations are now allowed for Target operands, as
1950 per the ACPI specification. Removed error for using a control method
1951 invocation as a Target operand.
1953 Disassembler: Improved detection of Resource Templates, Unicode, and
1954 Strings within Buffer objects. These subtypes do not contain a specific
1955 opcode to indicate the originating ASL code, and they must be detected by
1956 other means within the disassembler.
1958 iASL: Implemented an optimization improvement for 32-bit ACPI tables
1959 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
1960 only after 64-bit to 32-bit truncation. A truncation warning message is
1961 still emitted, however.
1963 AcpiXtract: Implemented handling for both types of line terminators (LF
1964 or CR/LF) so that it can accept AcpiDump output files from any system.
1967 AcpiBin: Added two new options for comparing AML files:
1968 -a: compare and display ALL mismatches
1969 -o: start compare at this offset into the second file
1971 ----------------------------------------
1972 30 September 2016. Summary of changes for version 20160930:
1975 1) ACPICA kernel-resident subsystem:
1977 Fixed a regression in the internal AcpiTbFindTable function where a non
1978 AE_OK exception could inadvertently be returned even if the function did
1979 not fail. This problem affects the following operators:
1983 Fixed a regression in the LoadTable operator where a load to any
1984 namespace location other than the root no longer worked properly.
1986 Increased the maximum loop count value that will result in the
1987 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
1988 prevent infinite loops within the AML interpreter and thus the host OS
1989 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
1992 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
1993 acpixf.h file. This allows hosts to easily configure the maximum loop
1996 Removed an illegal character in the strtoul64.c file. This character
1997 caused errors with some C compilers.
1999 Example Code and Data Size: These are the sizes for the OS-independent
2000 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2001 debug version of the code includes the debug output trace mechanism and
2002 has a much larger code and data size.
2005 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2006 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
2008 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2009 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
2012 2) iASL Compiler/Disassembler and Tools:
2014 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2015 the simpler ASL ElseIf keyword. During the conversion, a trailing If
2016 block could be lost and missing from the disassembled output.
2018 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2019 the missing rule caused a parse error when using the Index operator as an
2020 operand to ObjectType. This construct now compiles properly. Example:
2021 ObjectType(PKG1[4]).
2023 iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2024 option). Previously, unresolved symbols could cause a protection fault.
2025 Such symbols are now marked as unresolved in the map file.
2027 iASL: Implemented support to allow control method invocations as an
2028 operand to the ASL DeRefOf operator. Example:
2029 DeRefOf(MTH1(Local0))
2031 Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2032 possible _PLD buffer now includes examination of both the normal buffer
2033 length (16 or 20) as well as the surrounding AML package length.
2035 Disassembler: Fixed a problem with the decoding of complex expressions
2036 within the Divide operator for ASL+. For the case where both the quotient
2037 and remainder targets are specified, the entire statement cannot be
2038 disassembled. Previously, the output incorrectly contained a mix of ASL-
2039 and ASL+ operators. This mixed statement causes a syntax error when
2041 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly
2043 Divide (INT1 + 6, 128, RSLT, QUOT)
2045 iASL/Tools: Added support to process AML and non-AML ACPI tables
2046 consistently. For the disassembler and AcpiExec, allow all types of ACPI
2047 tables (AML and data tables). For the iASL -e option, allow only AML
2050 ----------------------------------------
2051 31 August 2016. Summary of changes for version 20160831:
2054 1) ACPICA kernel-resident subsystem:
2056 Improve support for the so-called "module-level code", which is defined
2057 to be math, logical and control AML opcodes that appear outside of any
2058 control method. This change improves the support by adding more opcodes
2059 that can be executed in the manner. Some other issues have been solved,
2060 and the ASL grammar changes to support such code under all scope
2061 operators (Device, etc.) are complete. Lv Zheng.
2063 UEFI support: these OSL functions have been implemented. This is an
2064 additional step toward supporting the AcpiExec utility natively (with
2065 full hardware access) under UEFI. Marcelo Ferreira.
2066 AcpiOsReadPciConfiguration
2067 AcpiOsWritePciConfiguration
2069 Fixed a possible mutex error during control method auto-serialization. Lv
2072 Updated support for the Generic Address Structure by fully implementing
2073 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2076 Updated the return value for the internal _OSI method. Instead of
2077 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2078 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2079 implementations, and will be reflected and clarified in the next version
2080 of the ACPI specification.
2082 Implemented two new table events that can be passed to an ACPICA table
2083 handler. These events are used to indicate a table installation or
2084 uninstallation. These events are used in addition to existed table load
2085 and unload events. Lv Zheng.
2087 Implemented a cleanup for all internal string-to-integer conversions.
2088 Consolidate multiple versions of this functionality and limit possible
2089 bases to either 10 or 16 to simplify the code. Adds a new file,
2092 Cleanup the inclusion order of the various compiler-specific headers.
2093 This simplifies build configuration management. The compiler-specific
2094 headers are now split out from the host-specific headers. Lv Zheng.
2096 Example Code and Data Size: These are the sizes for the OS-independent
2097 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2098 debug version of the code includes the debug output trace mechanism and
2099 has a much larger code and data size.
2102 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2103 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
2106 2) iASL Compiler/Disassembler and Tools:
2108 iASL/AcpiExec: Added a command line option to display the build date/time
2109 of the tool (-vd). This can be useful to verify that the correct version
2110 of the tools are being used.
2112 AML Debugger: Implemented a new subcommand ("execute predef") to execute
2113 all predefined control methods and names within the current namespace.
2114 This can be useful for debugging problems with ACPI tables and the ACPI
2117 ----------------------------------------
2118 29 July 2016. Summary of changes for version 20160729:
2121 1) ACPICA kernel-resident subsystem:
2123 Implemented basic UEFI support for the various ACPICA tools. This
2125 1) An OSL to implement the various AcpiOs* interfaces on UEFI.
2126 2) Support to obtain the ACPI tables on UEFI.
2127 3) Local implementation of required C library functions not available on
2129 4) A front-end (main) function for the tools for UEFI-related
2132 The initial deployment of this support is the AcpiDump utility executing
2133 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2134 Current environments supported are Linux/Unix. MSVC generation is not
2135 supported at this time. See the generate/efi/README file for build
2136 instructions. Lv Zheng.
2138 Future plans include porting the AcpiExec utility to execute natively on
2139 the platform with I/O and memory access. This will allow viewing/dump of
2140 the platform namespace and native execution of ACPI control methods that
2141 access the actual hardware. To fully implement this support, the OSL
2142 functions below must be implemented with UEFI interfaces. Any community
2143 help in the implementation of these functions would be appreciated:
2148 AcpiOsReadPciConfiguration
2149 AcpiOsWritePciConfiguration
2151 Restructured and standardized the C library configuration for ACPICA,
2152 resulting in the various configuration options below. This includes a
2153 global restructuring of the compiler-dependent and platform-dependent
2154 include files. These changes may affect the existing platform-dependent
2155 configuration files on some hosts. Lv Zheng.
2157 The current C library configuration options appear below. For any issues,
2158 it may be helpful to examine the existing compiler-dependent and
2159 platform-dependent files as examples. Lv Zheng.
2162 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2164 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2165 2) Unix/Windows/BSD applications:
2166 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2168 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2169 3) UEFI applications:
2170 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2172 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
2173 4) UEFI applications (EDK2/StdLib):
2174 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2175 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2178 AML interpreter: "module-level code" support. Allows for execution of so-
2179 called "executable" AML code (math/logical operations, etc.) outside of
2180 control methods not just at the module level (top level) but also within
2181 any scope declared outside of a control method - Scope{}, Device{},
2182 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2184 Simplified the configuration of the "maximum AML loops" global option by
2185 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2186 modified at runtime.
2189 Example Code and Data Size: These are the sizes for the OS-independent
2190 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2191 debug version of the code includes the debug output trace mechanism and
2192 has a much larger code and data size.
2195 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2196 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total
2199 2) iASL Compiler/Disassembler and Tools:
2201 iASL: Add full support for the RASF ACPI table (RAS Features Table).
2202 Includes disassembler, data table compiler, and header support.
2204 iASL Expand "module-level code" support. Allows for
2205 compilation/disassembly of so-called "executable" AML code (math/logical
2206 operations, etc.) outside of control methods not just at the module level
2207 (top level) but also within any scope declared outside of a control
2208 method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2211 AcpiDump: Added support for dumping all SSDTs on newer versions of
2212 Windows. These tables are now easily available -- SSDTs are not available
2213 through the registry on older versions.
2215 ----------------------------------------
2216 27 May 2016. Summary of changes for version 20160527:
2219 1) ACPICA kernel-resident subsystem:
2221 Temporarily reverted the new arbitrary bit length/alignment support in
2222 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2223 a number of regressions with the new code that need to be fully resolved
2224 and tested before this support can be finally integrated into ACPICA.
2225 Apologies for any inconveniences these issues may have caused.
2227 The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2228 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2229 and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2231 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2232 option. Adds a new return macro, return_STR. Junk-uk Kim.
2234 Example Code and Data Size: These are the sizes for the OS-independent
2235 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2236 debug version of the code includes the debug output trace mechanism and
2237 has a much larger code and data size.
2240 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2241 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
2243 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2244 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total
2246 ----------------------------------------
2247 22 April 2016. Summary of changes for version 20160422:
2249 1) ACPICA kernel-resident subsystem:
2251 Fixed a regression in the GAS (generic address structure) arbitrary bit
2252 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2253 and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2255 ACPI 6.0: Added support for new/renamed resource macros. One new argument
2256 was added to each of these macros, and the original name has been
2257 deprecated. The AML disassembler will always disassemble to the new
2258 names. Support for the new macros was added to iASL, disassembler,
2259 resource manager, and the acpihelp utility. ACPICA BZ 1274.
2261 I2cSerialBus -> I2cSerialBusV2
2262 SpiSerialBus -> SpiSerialBusV2
2263 UartSerialBus -> UartSerialBusV2
2265 ACPI 6.0: Added support for a new integer field that was appended to the
2266 package object returned by the _BIX method. This adds iASL compile-time
2267 and AML runtime error checking. ACPICA BZ 1273.
2269 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2270 Subspace Type2" (Headers, Disassembler, and data table compiler).
2272 Example Code and Data Size: These are the sizes for the OS-independent
2273 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2274 debug version of the code includes the debug output trace mechanism and
2275 has a much larger code and data size.
2278 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2279 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
2281 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2282 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
2285 2) iASL Compiler/Disassembler and Tools:
2287 iASL: Implemented an ASL grammar extension to allow/enable executable
2288 "module-level code" to be created and executed under the various
2289 operators that create new scopes. This type of AML code is already
2290 supported in all known AML interpreters, and the grammar change will
2291 appear in the next version of the ACPI specification. Simplifies the
2292 conditional runtime creation of named objects under these object types:
2300 iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2301 ease-of-use to the ASL language. The syntax is similar to the
2302 corresponding C operator, and is implemented with the existing AML While
2303 opcode -- thus requiring no changes to existing AML interpreters.
2305 For (Initialize, Predicate, Update) {TermList}
2310 Initializer // Nothing | TermArg => ComputationalData
2311 Predicate // Nothing | TermArg => ComputationalData
2312 Update // Nothing | TermArg => ComputationalData
2316 iASL: The _HID/_ADR detection and validation has been enhanced to search
2317 under conditionals in order to allow these objects to be conditionally
2320 iASL: Fixed several issues with the constant folding feature. The
2321 improvement allows better detection and resolution of statements that can
2322 be folded at compile time. ACPICA BZ 1266.
2324 iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2325 conversion to the ASL ElseIf operator where incorrect ASL code could be
2328 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2329 sometimes an extra (and extraneous) set of parentheses were emitted for
2330 some combinations of operators. Although this did not cause any problems
2331 with recompilation of the disassembled code, it made the code more
2332 difficult to read. David Box. ACPICA BZ 1231.
2334 iASL: Changed to ignore the unreferenced detection for predefined names
2335 of resource descriptor elements, when the resource descriptor is
2336 created/defined within a control method.
2338 iASL: Disassembler: Fix a possible fault with externally declared Buffer
2341 ----------------------------------------
2342 18 March 2016. Summary of changes for version 20160318:
2344 1) ACPICA kernel-resident subsystem:
2346 Added support for arbitrary bit lengths and bit offsets for registers
2347 defined by the Generic Address Structure. Previously, only aligned bit
2348 lengths of 8/16/32/64 were supported. This was sufficient for many years,
2349 but recently some machines have been seen that require arbitrary bit-
2350 level support. ACPICA BZ 1240. Lv Zheng.
2352 Fixed an issue where the \_SB._INI method sometimes must be evaluated
2353 before any _REG methods are evaluated. Lv Zheng.
2355 Implemented several changes related to ACPI table support
2356 (Headers/Disassembler/TableCompiler):
2357 NFIT: For ACPI 6.1, updated to add some additional new fields and
2359 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
2361 DMAR: Added new constants per the 10/2014 DMAR spec.
2362 IORT: Added new subtable per the 10/2015 IORT spec.
2363 HEST: For ACPI 6.1, added new constants and new subtable.
2364 DBG2: Added new constants per the 12/2015 DBG2 spec.
2365 FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2367 ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2369 Updated header support for the DMAR table to match the current version of
2372 Added extensions to the ASL Concatenate operator to allow any ACPI object
2373 to be passed as an operand. Any object other than Integer/String/Buffer
2374 simply returns a string containing the object type. This extends the
2375 usefulness of the Printf macros. Previously, Concatenate would abort the
2376 control method if a non-data object was encountered.
2378 ACPICA source code: Deployed the C "const" keyword across the source code
2379 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2381 Example Code and Data Size: These are the sizes for the OS-independent
2382 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2383 debug version of the code includes the debug output trace mechanism and
2384 has a much larger code and data size.
2387 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2388 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
2390 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2391 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
2394 2) iASL Compiler/Disassembler and Tools:
2396 iASL/Disassembler: Improved the heuristic used to determine the number of
2397 arguments for an externally defined control method (a method in another
2398 table). Although this is an improvement, there is no deterministic way to
2399 "guess" the number of method arguments. Only the ACPI 6.0 External opcode
2400 will completely solve this problem as it is deployed (automatically) in
2403 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2404 statements that could cause errors when the disassembled file is
2405 compiled. ACPICA BZ 1243. David Box.
2407 iASL: Fixed a regression caused by the merger of the two versions of the
2408 local strtoul64. Because of a dependency on a global variable, strtoul64
2409 could return an error for integers greater than a 32-bit value. ACPICA BZ
2412 iASL: Fixed a regression where a fault could occur for an ASL Return
2413 statement if it invokes a control method that is not resolved. ACPICA BZ
2416 AcpiXtract: Improved input file validation: detection of binary files and
2417 non-acpidump text files.
2419 ----------------------------------------
2420 12 February 2016. Summary of changes for version 20160212:
2422 1) ACPICA kernel-resident subsystem:
2424 Implemented full support for the ACPI 6.1 specification (released in
2425 January). This version of the specification is available at:
2426 http://www.uefi.org/specifications
2428 Only a relatively small number of changes were required in ACPICA to
2429 support ACPI 6.1, in these areas:
2430 - New predefined names
2432 - A new subtable for HEST
2433 - A few other header changes for new values
2435 Ensure \_SB_._INI is executed before any _REG methods are executed. There
2436 appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2438 Reverted a change made in version 20151218 which enabled method
2439 invocations to be targets of various ASL operators (SuperName and Target
2440 grammar elements). While the new behavior is supported by the ACPI
2441 specification, other AML interpreters do not support this behavior and
2442 never will. The ACPI specification will be updated for ACPI 6.2 to remove
2443 this support. Therefore, the change was reverted to the original ACPICA
2446 ACPICA now supports the GCC 6 compiler.
2448 Current Release: (Note: build changes increased sizes)
2449 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2450 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
2452 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2453 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total
2456 2) iASL Compiler/Disassembler and Tools:
2458 Completed full support for the ACPI 6.0 External() AML opcode. The
2459 compiler emits an external AML opcode for each ASL External statement.
2460 This opcode is used by the disassembler to assist with the disassembly of
2461 external control methods by specifying the required number of arguments
2462 for the method. AML interpreters do not use this opcode. To ensure that
2463 interpreters do not even see the opcode, a block of one or more external
2464 opcodes is surrounded by an "If(0)" construct. As this feature becomes
2465 commonly deployed in BIOS code, the ability of disassemblers to correctly
2466 disassemble AML code will be greatly improved. David Box.
2468 iASL: Implemented support for an optional cross-reference output file.
2469 The -lx option will create a the cross-reference file with the suffix
2470 "xrf". Three different types of cross-reference are created in this file:
2471 - List of object references made from within each control method
2472 - Invocation (caller) list for each user-defined control method
2473 - List of references to each non-method object in the namespace
2475 iASL: Method invocations as ASL Target operands are now disallowed and
2476 flagged as errors in preparation for ACPI 6.2 (see the description of the
2479 ----------------------------------------
2480 8 January 2016. Summary of changes for version 20160108:
2482 1) ACPICA kernel-resident subsystem:
2484 Updated all ACPICA copyrights and signons to 2016: Added the 2016
2485 copyright to all source code module headers and utility/tool signons.
2486 This includes the standard Linux dual-license header. This affects
2487 virtually every file in the ACPICA core subsystem, iASL compiler, all
2488 ACPICA utilities, and the ACPICA test suite.
2490 Fixed a regression introduced in version 20151218 concerning the
2491 execution of so-called module-level ASL/AML code. Namespace objects
2492 created under a module-level If() construct were not properly/fully
2493 entered into the namespace and could cause an interpreter fault when
2496 Example Code and Data Size: These are the sizes for the OS-independent
2497 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2498 debug version of the code includes the debug output trace mechanism and
2499 has a much larger code and data size.
2502 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2503 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total
2505 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2506 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
2509 2) iASL Compiler/Disassembler and Tools:
2511 Fixed a problem with the compilation of the GpioIo and GpioInt resource
2512 descriptors. The _PIN field name was incorrectly defined to be an array
2513 of 32-bit values, but the _PIN values are in fact 16 bits each. This
2514 would cause incorrect bit width warnings when using Word (16-bit) fields
2515 to access the descriptors.
2518 ----------------------------------------
2519 18 December 2015. Summary of changes for version 20151218:
2521 1) ACPICA kernel-resident subsystem:
2523 Implemented per-AML-table execution of "module-level code" as individual
2524 ACPI tables are loaded into the namespace during ACPICA initialization.
2525 In other words, any module-level code within an AML table is executed
2526 immediately after the table is loaded, instead of batched and executed
2527 after all of the tables have been loaded. This provides compatibility
2528 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2531 To fully support the feature above, the default operation region handlers
2532 for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2533 installed before any ACPI tables are loaded. This enables module-level
2534 code to access these address spaces during the table load and module-
2535 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2538 Implemented several changes to the internal _REG support in conjunction
2539 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2540 utilities for the changes above. Although these tools were changed, host
2541 operating systems that simply use the default handlers for SystemMemory,
2542 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2544 For example, in the code below, DEV1 is conditionally added to the
2545 namespace by the DSDT via module-level code that accesses an operation
2546 region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2547 created immediately after the DSDT is loaded in order for the SSDT to
2548 successfully reference DEV1. Previously, this code would cause an
2549 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2550 fully supported by ACPICA.
2552 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2554 OperationRegion (OPR1, SystemMemory, 0x400, 32)
2555 Field (OPR1, AnyAcc, NoLock, Preserve)
2566 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2568 External (\DEV1, DeviceObj)
2574 Fixed an AML interpreter problem where control method invocations were
2575 not handled correctly when the invocation was itself a SuperName argument
2576 to another ASL operator. In these cases, the method was not invoked.
2577 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2582 Decrement, Increment
2585 Signal, Release, Reset
2588 Implemented automatic String-to-ObjectReference conversion support for
2589 packages returned by predefined names (such as _DEP). A common BIOS error
2590 is to add double quotes around an ObjectReference namepath, which turns
2591 the reference into an unexpected string object. This support detects the
2592 problem and corrects it before the package is returned to the caller that
2593 invoked the method. Lv Zheng.
2595 Implemented extensions to the Concatenate operator. Concatenate now
2596 accepts any type of object, it is not restricted to simply
2597 Integer/String/Buffer. For objects other than these 3 basic data types,
2598 the argument is treated as a string containing the name of the object
2599 type. This expands the utility of Concatenate and the Printf/Fprintf
2600 macros. ACPICA BZ 1222.
2602 Cleaned up the output of the ASL Debug object. The timer() value is now
2603 optional and no longer emitted by default. Also, the basic data types of
2604 Integer/String/Buffer are simply emitted as their values, without a data
2605 type string -- since the data type is obvious from the output. ACPICA BZ
2608 Example Code and Data Size: These are the sizes for the OS-independent
2609 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2610 debug version of the code includes the debug output trace mechanism and
2611 has a much larger code and data size.
2614 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2615 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
2617 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2618 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
2621 2) iASL Compiler/Disassembler and Tools:
2623 iASL: Fixed some issues with the ASL Include() operator. This operator
2624 was incorrectly defined in the iASL parser rules, causing a new scope to
2625 be opened for the code within the include file. This could lead to
2626 several issues, including allowing ASL code that is technically illegal
2627 and not supported by AML interpreters. Note, this does not affect the
2628 related #include preprocessor operator. ACPICA BZ 1212.
2630 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2631 operator is essentially an ASL macro since there is no AML opcode
2632 associated with it. The code emitted by the iASL compiler for ElseIf is
2633 an Else opcode followed immediately by an If opcode. The disassembler
2634 will now emit an ElseIf if it finds an Else immediately followed by an
2635 If. This simplifies the decoded ASL, especially for deeply nested
2636 If..Else and large Switch constructs. Thus, the disassembled code more
2637 closely follows the original source ASL. ACPICA BZ 1211. Example:
2649 ElseIf (Arg0 == 0x02)
2654 AcpiExec: Added support for the new module level code behavior and the
2655 early region installation. This required a small change to the
2656 initialization, since AcpiExec must install its own operation region
2659 AcpiExec: Added support to make the debug object timer optional. Default
2660 is timer disabled. This cleans up the debug object output -- the timer
2661 data is rarely used.
2663 AcpiExec: Multiple ACPI tables are now loaded in the order that they
2664 appear on the command line. This can be important when there are
2665 interdependencies/references between the tables.
2667 iASL/Templates. Add support to generate template files with multiple
2668 SSDTs within a single output file. Also added ommand line support to
2669 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
2673 ----------------------------------------
2674 24 November 2015. Summary of changes for version 20151124:
2676 1) ACPICA kernel-resident subsystem:
2678 Fixed a possible regression for a previous update to FADT handling. The
2679 FADT no longer has a fixed table ID, causing some issues with code that
2680 was hardwired to a specific ID. Lv Zheng.
2682 Fixed a problem where the method auto-serialization could interfere with
2683 the current SyncLevel. This change makes the auto-serialization support
2684 transparent to the SyncLevel support and management.
2686 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2687 interface is intended for early access to the namespace during the
2688 initial namespace device discovery walk. The _SUB method has been seen to
2689 access operation regions in some cases, causing errors because the
2690 operation regions are not fully initialized.
2692 AML Debugger: Fixed some issues with the terminate/quit/exit commands
2693 that can cause faults. Lv Zheng.
2695 AML Debugger: Add thread ID support so that single-step mode only applies
2696 to the AML Debugger thread. This prevents runtime errors within some
2699 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2700 methods that are invoked by this interface are optional, removed warnings
2701 emitted for the case where one or more of these methods do not exist.
2702 ACPICA BZ 1208, original change by Prarit Bhargava.
2704 Made a major pass through the entire ACPICA source code base to
2705 standardize formatting that has diverged a bit over time. There are no
2706 functional changes, but this will of course cause quite a few code
2707 differences from the previous ACPICA release.
2709 Example Code and Data Size: These are the sizes for the OS-independent
2710 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2711 debug version of the code includes the debug output trace mechanism and
2712 has a much larger code and data size.
2715 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2716 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
2718 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2719 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
2722 2) iASL Compiler/Disassembler and Tools:
2724 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2725 definition blocks within a single ASL file and the resulting AML file.
2726 Support for this type of file was also added to the various tools that
2727 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2728 example code below shows two definition blocks within the same file:
2730 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
2734 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2738 iASL: Enhanced typechecking for the Name() operator. All expressions for
2739 the value of the named object must be reduced/folded to a single constant
2740 at compile time, as per the ACPI specification (the AML definition of
2743 iASL: Fixed some code indentation issues for the -ic and -ia options (C
2744 and assembly headers). Now all emitted code correctly begins in column 1.
2746 iASL: Added an error message for an attempt to open a Scope() on an
2747 object defined in an SSDT. The DSDT is always loaded into the namespace
2748 first, so any attempt to open a Scope on an SSDT object will fail at
2752 ----------------------------------------
2753 30 September 2015. Summary of changes for version 20150930:
2755 1) ACPICA kernel-resident subsystem:
2757 Debugger: Implemented several changes and bug fixes to assist support for
2758 the in-kernel version of the AML debugger. Lv Zheng.
2759 - Fix the "predefined" command for in-kernel debugger.
2760 - Do not enter debug command loop for the help and version commands.
2761 - Disallow "execute" command during execution/single-step of a method.
2763 Interpreter: Updated runtime typechecking for all operators that have
2764 target operands. The operand is resolved and validated that it is legal.
2765 For example, the target cannot be a non-data object such as a Device,
2766 Mutex, ThermalZone, etc., as per the ACPI specification.
2768 Debugger: Fixed the double-mutex user I/O handshake to work when local
2769 deadlock detection is enabled.
2771 Debugger: limited display of method locals and arguments (LocalX and
2772 ArgX) to only those that have actually been initialized. This prevents
2773 lines of extraneous output.
2775 Updated the definition of the NFIT table to correct the bit polarity of
2776 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2778 Example Code and Data Size: These are the sizes for the OS-independent
2779 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2780 debug version of the code includes the debug output trace mechanism and
2781 has a much larger code and data size.
2784 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2785 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
2787 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2788 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
2791 2) iASL Compiler/Disassembler and Tools:
2793 iASL: Improved the compile-time typechecking for operands of many of the
2796 -- Added an option to disable compiler operand/operator typechecking (-
2799 -- For the following operators, the TermArg operands are now validated
2800 when possible to be Integer data objects: BankField, OperationRegion,
2801 DataTableRegion, Buffer, and Package.
2803 -- Store (Source, Target): Both the source and target operands are
2804 resolved and checked that the operands are both legal. For example,
2805 neither operand can be a non-data object such as a Device, Mutex,
2806 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
2807 operator can be used to store an object to any type of target object.
2809 -- Store (Source, Target): If the source is a Package object, the target
2810 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
2811 is a Package, the source must also be a Package.
2813 -- Store (Source, Target): A warning is issued if the source and target
2814 resolve to the identical named object.
2816 -- Store (Source, <method invocation>): An error is generated for the
2817 target method invocation, as this construct is not supported by the AML
2820 -- For all ASL math and logic operators, the target operand must be a
2821 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
2822 includes the function return value also.
2824 -- External declarations are also included in the typechecking where
2825 possible. External objects defined using the UnknownObj keyword cannot be
2826 typechecked, however.
2828 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
2830 - Legacy code: Index(PKG1, 3)
2831 - New ASL+ code: PKG1[3]
2832 This completes the ACPI 6.0 ASL+ support as it was the only operator not
2835 iASL: Fixed the file suffix for the preprocessor output file (.i). Two
2836 spaces were inadvertently appended to the filename, causing file access
2837 and deletion problems on some systems.
2839 ASL Test Suite (ASLTS): Updated the master makefile to generate all
2840 possible compiler output files when building the test suite -- thus
2841 exercising these features of the compiler. These files are automatically
2842 deleted when the test suite exits.
2845 ----------------------------------------
2846 18 August 2015. Summary of changes for version 20150818:
2848 1) ACPICA kernel-resident subsystem:
2850 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
2851 Zheng. ACPICA BZ 1186.
2853 Completed development to ensure that the ACPICA Disassembler and Debugger
2854 are fully standalone components of ACPICA. Removed cross-component
2855 dependences. Lv Zheng.
2857 The max-number-of-AML-loops is now runtime configurable (previously was
2858 compile-time only). This is essentially a loop timeout to force-abort
2859 infinite AML loops. ACPCIA BZ 1192.
2861 Debugger: Cleanup output to dump ACPI names and namepaths without any
2862 trailing underscores. Lv Zheng. ACPICA BZ 1135.
2864 Removed unnecessary conditional compilations across the Debugger and
2865 Disassembler components where entire modules could be left uncompiled.
2867 The aapits test is deprecated and has been removed from the ACPICA git
2868 tree. The test has never been completed and has not been maintained, thus
2869 becoming rather useless. ACPICA BZ 1015, 794.
2871 A batch of small changes to close bugzilla and other reports:
2872 - Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2873 - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2874 - iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2875 - ACPI table support: general cleanup and simplification. Lv Zheng, Bob
2877 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
2879 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
2881 - Debugger: Split debugger initialization/termination interfaces. Lv
2883 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table
2885 - AcpiExec: Add debug message during _REG method phase during table
2887 - AcpiNames: Fix a regression where some output was missing and no longer
2889 - Debugger: General cleanup and simplification. Lv Zheng.
2890 - Disassembler: Cleanup use of several global option variables. Lv Zheng.
2892 Example Code and Data Size: These are the sizes for the OS-independent
2893 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2894 debug version of the code includes the debug output trace mechanism and
2895 has a much larger code and data size.
2898 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2899 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
2901 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2902 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
2905 2) iASL Compiler/Disassembler and Tools:
2907 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
2908 were not handled properly and caused load errors. Now, properly invoke
2909 and use the ACPICA auto-reallocate mechanism for ACPI table data
2910 structures. ACPICA BZ 1188
2912 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
2915 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
2916 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
2917 executed during initialization. ACPICA BZ 1187, 1189.
2919 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
2920 that corresponds to each disassembled ASL statement, to simplify
2921 debugging. ACPICA BZ 1191.
2923 Debugger: Add option to the "objects" command to display a summary of the
2924 current namespace objects (Object type and count). This is displayed if
2925 the command is entered with no arguments.
2927 AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2930 ----------------------------------------
2931 17 July 2015. Summary of changes for version 20150717:
2933 1) ACPICA kernel-resident subsystem:
2935 Improved the partitioning between the Debugger and Disassembler
2936 components. This allows the Debugger to be used standalone within kernel
2937 code without the Disassembler (which is used for single stepping also).
2938 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2940 Debugger: Implemented a new command to trace the execution of control
2941 methods (Trace). This is especially useful for the in-kernel version of
2942 the debugger when file I/O may not be available for method trace output.
2943 See the ACPICA reference for more information. Lv Zheng.
2945 Moved all C library prototypes (used for the local versions of these
2946 functions when requested) to a new header, acclib.h
2947 Cleaned up the use of non-ANSI C library functions. These functions are
2948 implemented locally in ACPICA. Moved all such functions to a common
2949 source file, utnonansi.c
2951 Debugger: Fixed a problem with the "!!" command (get last command
2952 executed) where the debugger could enter an infinite loop and eventually
2955 Removed the use of local macros that were used for some of the standard C
2956 library functions to automatically cast input parameters. This mostly
2957 affected the is* functions where the input parameter is defined to be an
2958 int. This required a few modifications to the main ACPICA source code to
2959 provide casting for these functions and eliminate possible compiler
2960 warnings for these parameters.
2962 Across the source code, added additional status/error checking to resolve
2963 issues discovered by static source code analysis tools such as Coverity.
2965 Example Code and Data Size: These are the sizes for the OS-independent
2966 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2967 debug version of the code includes the debug output trace mechanism and
2968 has a much larger code and data size.
2971 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2972 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
2974 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2975 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
2978 2) iASL Compiler/Disassembler and Tools:
2980 iASL: Fixed a regression where the device map file feature no longer
2981 worked properly when used in conjunction with the disassembler. It only
2982 worked properly with the compiler itself.
2984 iASL: Implemented a new warning for method LocalX variables that are set
2985 but never used (similar to a C compiler such as gcc). This also applies
2986 to ArgX variables that are not defined by the parent method, and are
2987 instead (legally) used as local variables.
2989 iASL/Preprocessor: Finished the pass-through of line numbers from the
2990 preprocessor to the compiler. This ensures that compiler errors/warnings
2991 have the correct original line numbers and filenames, regardless of any
2994 iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2995 pass-through of comments to the preprocessor output file (which becomes
2996 the compiler input file). Also fixed a problem with // comments that
2997 appear after a math expression.
2999 iASL: Added support for the TCPA server table to the table compiler and
3000 template generator. (The client table was already previously supported)
3002 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3003 identify the iASL compiler.
3005 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3006 multiple times. The new names are ACPI_SIGN_NEGATIVE and
3009 AcpiHelp: Update to expand help messages for the iASL preprocessor
3013 ----------------------------------------
3014 19 June 2015. Summary of changes for version 20150619:
3016 Two regressions in version 20150616 have been addressed:
3018 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3019 etc.) This update changes ACPICA to only use the standard headers for
3020 functions, or the prototypes for the local versions of the C library
3021 functions. Across the source code, this required some additional casts
3022 for some Clib invocations for portability. Moved all local prototypes to
3023 a new file, acclib.h
3025 Fixes several problems with recent changes to the handling of the FACS
3026 table that could cause some systems not to boot.
3029 ----------------------------------------
3030 16 June 2015. Summary of changes for version 20150616:
3033 1) ACPICA kernel-resident subsystem:
3035 Across the entire ACPICA source code base, the various macros for the C
3036 library functions (such as ACPI_STRLEN, etc.) have been removed and
3037 replaced by the standard C library names (strlen, etc.) The original
3038 purpose for these macros is no longer applicable. This simplification
3039 reduces the number of macros used in the ACPICA source code
3040 significantly, improving readability and maintainability.
3042 Implemented support for a new ACPI table, the OSDT. This table, the
3043 "override" SDT, can be loaded directly by the host OS at boot time. It
3044 enables the replacement of existing namespace objects that were installed
3045 via the DSDT and/or SSDTs. The primary purpose for this is to replace
3046 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3047 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3050 Added support for systems with (improperly) two FACS tables -- a "32-bit"
3051 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3052 X field). This change will support both automatically. There continues to
3053 be systems found with this issue. This support requires a change to the
3054 AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3055 been added to allow the host to select which FACS is desired
3056 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3059 Added a new feature to allow for systems that do not contain an FACS.
3060 Although this is already supported on hardware-reduced platforms, the
3061 feature has been extended for all platforms. The reasoning is that we do
3062 not want to abort the entire ACPICA initialization just because the
3063 system is seriously buggy and has no FACS.
3065 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3066 not correctly transcribed from the ACPI specification in ACPICA version
3069 Implemented support for the _CLS object in the AcpiGetObjectInfo external
3072 Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3073 recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3074 compiler also updated. Note: The TCPA "server" table is not supported by
3075 the disassembler/table-compiler at this time.
3077 ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3079 Example Code and Data Size: These are the sizes for the OS-independent
3080 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3081 debug version of the code includes the debug output trace mechanism and
3082 has a much larger code and data size.
3085 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3086 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
3088 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
3089 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
3092 2) iASL Compiler/Disassembler and Tools:
3094 Disassembler: Fixed a problem with the new symbolic operator disassembler
3095 where incorrect ASL code could be emitted in some cases for the "non-
3096 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3097 ShiftRight. The actual problem cases seem to be rather unusual in common
3098 ASL code, however. David Box.
3100 Modified the linux version of acpidump to obtain ACPI tables from not
3101 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3104 iASL: Fixed a problem where the user preprocessor output file (.i)
3105 contained extra data that was not expected. The compiler was using this
3106 file as a temporary file and passed through #line directives in order to
3107 keep compiler error messages in sync with the input file and line number
3108 across multiple include files. The (.i) is no longer a temporary file as
3109 the compiler uses a new, different file for the original purpose.
3111 iASL: Fixed a problem where comments within the original ASL source code
3112 file were not passed through to the preprocessor output file, nor any
3115 iASL: Fixed some issues for the handling of the "#include" preprocessor
3116 directive and the similar (but not the same) "Include" ASL operator.
3118 iASL: Add support for the new OSDT in both the disassembler and compiler.
3120 iASL: Fixed a problem with the constant folding support where a Buffer
3121 object could be incorrectly generated (incorrectly formed) during a
3122 conversion to a Store() operator.
3124 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3125 description text for the _REV predefined name. _REV now permanently
3126 returns 2, as per the ACPI 6.0 specification.
3128 Debugger: Enhanced the output of the Debug ASL object for references
3129 produced by the Index operator. For Buffers and strings, only output the
3130 actual byte pointed to by the index. For packages, only print the single
3131 package element decoded by the index. Previously, the entire
3132 buffer/string/package was emitted.
3134 iASL/Table-compiler: Fixed a regression where the "generic" data types
3135 were no longer recognized, causing errors.
3138 ----------------------------------------
3139 15 May 2015. Summary of changes for version 20150515:
3141 This release implements most of ACPI 6.0 as described below.
3143 1) ACPICA kernel-resident subsystem:
3145 Implemented runtime argument checking and return value checking for all
3146 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3147 _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3149 Example Code and Data Size: These are the sizes for the OS-independent
3150 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3151 debug version of the code includes the debug output trace mechanism and
3152 has a much larger code and data size.
3155 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
3156 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
3158 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
3159 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
3162 2) iASL Compiler/Disassembler and Tools:
3164 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3165 names (argument count validation and return value typechecking.)
3167 iASL disassembler and table compiler: implemented support for all new
3168 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3170 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3173 iASL preprocessor: Added a new directive to enable inclusion of binary
3174 blobs into ASL code. The new directive is #includebuffer. It takes a
3175 binary file as input and emits a named ascii buffer object into the ASL
3178 AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3180 AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3183 AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3187 ----------------------------------------
3188 10 April 2015. Summary of changes for version 20150410:
3190 Reverted a change introduced in version 20150408 that caused
3191 a regression in the disassembler where incorrect operator
3192 symbols could be emitted.
3195 ----------------------------------------
3196 08 April 2015. Summary of changes for version 20150408:
3199 1) ACPICA kernel-resident subsystem:
3201 Permanently set the return value for the _REV predefined name. It now
3202 returns 2 (was 5). This matches other ACPI implementations. _REV will be
3203 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3204 for ACPI 2.0 and later. It should never be used to differentiate or
3205 identify operating systems.
3207 Added the "Windows 2015" string to the _OSI support. ACPICA will now
3208 return TRUE to a query with this string.
3210 Fixed several issues with the local version of the printf function.
3212 Added the C99 compiler option (-std=c99) to the Unix makefiles.
3215 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
3216 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total
3218 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3219 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3222 2) iASL Compiler/Disassembler and Tools:
3224 iASL: Implemented an enhancement to the constant folding feature to
3225 transform the parse tree to a simple Store operation whenever possible:
3226 Add (2, 3, X) ==> is converted to: Store (5, X)
3227 X = 2 + 3 ==> is converted to: Store (5, X)
3229 Updated support for the SLIC table (Software Licensing Description Table)
3230 in both the Data Table compiler and the disassembler. The SLIC table
3231 support now conforms to "Microsoft Software Licensing Tables (SLIC and
3232 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3233 following the ACPI header is now defined to be "Proprietary Data", and as
3234 such, can only be entered or displayed as a hex data block.
3236 Implemented full support for the MSDM table as described in the document
3237 above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3238 following the ACPI header is defined to be "Proprietary Data", and can
3239 only be entered or displayed as a hex data block.
3241 Implemented the -Pn option for the iASL Table Compiler (was only
3242 implemented for the ASL compiler). This option disables the iASL
3245 Disassembler: For disassembly of Data Tables, added a comment field
3246 around the Ascii equivalent data that is emitted as part of the "Raw
3247 Table Data" block. This prevents the iASL Preprocessor from possible
3248 confusion if/when the table is compiled.
3250 Disassembler: Added an option (-df) to force the disassembler to assume
3251 that the table being disassembled contains valid AML. This feature is
3252 useful for disassembling AML files that contain ACPI signatures other
3253 than DSDT or SSDT (such as OEMx or other signatures).
3255 Changes for the EFI version of the tools:
3256 1) Fixed a build error/issue
3257 2) Fixed a cast warning
3259 iASL: Fixed a path issue with the __FILE__ operator by making the
3260 directory prefix optional within the internal SplitInputFilename
3263 Debugger: Removed some unused global variables.
3265 Tests: Updated the makefile for proper generation of the AAPITS suite.
3268 ----------------------------------------
3269 04 February 2015. Summary of changes for version 20150204:
3271 ACPICA kernel-resident subsystem:
3273 Updated all ACPICA copyrights and signons to 2014. Added the 2014
3274 copyright to all module headers and signons, including the standard Linux
3275 header. This affects virtually every file in the ACPICA core subsystem,
3276 iASL compiler, all ACPICA utilities, and the test suites.
3278 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3279 A raw gpe handling mechanism was created to allow better handling of GPE
3280 storms that aren't easily managed by the normal handler. The raw handler
3281 allows disabling/renabling of the the GPE so that interrupt storms can be
3282 avoided in cases where events cannot be timely serviced. In this
3283 scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3284 GPE. This API will leave the reference counts undisturbed, thereby
3285 preventing unintentional clearing of the GPE when the intent in only to
3286 temporarily disable it. Raw handlers allow enabling and disabling of a
3287 GPE by removing GPE register locking. As such, raw handlers much provide
3288 their own locks while using GPE API's to protect access to GPE data
3292 Events: Always modify GPE registers under the GPE lock.
3293 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3294 values. Reported as bug by joe.liu@apple.com.
3296 Unix makefiles: Separate option to disable optimizations and
3297 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3298 NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3299 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3300 errors when building ACPICA. This allows disabling the option without
3301 also having to disable optimazations.
3305 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3306 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
3309 --------------------------------------
3310 07 November 2014. Summary of changes for version 20141107:
3312 This release is available at https://acpica.org/downloads
3314 This release introduces and implements language extensions to ASL that
3315 provide support for symbolic ("C-style") operators and expressions. These
3316 language extensions are known collectively as ASL+.
3319 1) iASL Compiler/Disassembler and Tools:
3321 Disassembler: Fixed a problem with disassembly of the UartSerialBus
3322 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3325 Disassembler: Fixed the Unicode macro support to add escape sequences.
3326 All non-printable ASCII values are emitted as escape sequences, as well
3327 as the standard escapes for quote and backslash. Ensures that the
3328 disassembled macro can be correctly recompiled.
3330 iASL: Added Printf/Fprintf macros for formatted output. These macros are
3331 translated to existing AML Concatenate and Store operations. Printf
3332 writes to the ASL Debug object. Fprintf allows the specification of an
3333 ASL name as the target. Only a single format specifier is required, %o,
3334 since the AML interpreter dynamically converts objects to the required
3337 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
3338 (Concatenate (Concatenate (Concatenate ("", Arg0),
3339 ": Unexpected value for "), Arg1), ", "), Arg2),
3340 " at line "), Arg3), Debug)
3342 (new) Printf ("%o: Unexpected value for %o, %o at line %o",
3343 Arg0, Arg1, Arg2, Arg3)
3345 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
3346 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3348 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3350 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3351 ASL parse tree before the AML code is generated. This allows blocks of
3352 ASL code to be removed in order to help locate and identify problem
3353 devices and/or code. David E. Box.
3355 AcpiExec: Added support (-fi) for an optional namespace object
3356 initialization file. This file specifies initial values for namespace
3357 objects as necessary for debugging and testing different ASL code paths
3358 that may be taken as a result of BIOS options.
3361 2) Overview of symbolic operator support for ASL (ASL+)
3362 -------------------------------------------------------
3364 As an extension to the ASL language, iASL implements support for symbolic
3365 (C-style) operators for math and logical expressions. This can greatly
3366 simplify ASL code as well as improve both readability and
3367 maintainability. These language extensions can exist concurrently with
3368 all legacy ASL code and expressions.
3370 The symbolic extensions are 100% compatible with existing AML
3371 interpreters, since no new AML opcodes are created. To implement the
3372 extensions, the iASL compiler transforms the symbolic expressions into
3373 the legacy ASL/AML equivalents at compile time.
3375 Full symbolic expressions are supported, along with the standard C
3376 precedence and associativity rules.
3378 Full disassembler support for the symbolic expressions is provided, and
3379 creates an automatic migration path for existing ASL code to ASL+ code
3380 via the disassembly process. By default, the disassembler now emits ASL+
3381 code with symbolic expressions. An option (-dl) is provided to force the
3382 disassembler to emit legacy ASL code if desired.
3384 Below is the complete list of the currently supported symbolic operators
3385 with examples. See the iASL User Guide for additional information.
3388 ASL+ Syntax Legacy ASL Equivalent
3389 ----------- ---------------------
3393 Z = X + Y Add (X, Y, Z)
3394 Z = X - Y Subtract (X, Y, Z)
3395 Z = X * Y Multiply (X, Y, Z)
3396 Z = X / Y Divide (X, Y, , Z)
3397 Z = X % Y Mod (X, Y, Z)
3398 Z = X << Y ShiftLeft (X, Y, Z)
3399 Z = X >> Y ShiftRight (X, Y, Z)
3400 Z = X & Y And (X, Y, Z)
3401 Z = X | Y Or (X, Y, Z)
3402 Z = X ^ Y Xor (X, Y, Z)
3407 // Logical operators
3409 (X == Y) LEqual (X, Y)
3410 (X != Y) LNotEqual (X, Y)
3411 (X < Y) LLess (X, Y)
3412 (X > Y) LGreater (X, Y)
3413 (X <= Y) LLessEqual (X, Y)
3414 (X >= Y) LGreaterEqual (X, Y)
3415 (X && Y) LAnd (X, Y)
3419 // Assignment and compound assignment operations
3422 X += Y Add (X, Y, X)
3423 X -= Y Subtract (X, Y, X)
3424 X *= Y Multiply (X, Y, X)
3425 X /= Y Divide (X, Y, , X)
3426 X %= Y Mod (X, Y, X)
3427 X <<= Y ShiftLeft (X, Y, X)
3428 X >>= Y ShiftRight (X, Y, X)
3429 X &= Y And (X, Y, X)
3431 X ^= Y Xor (X, Y, X)
3438 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3439 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
3441 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3443 And (MEMB, 0xFFFFFFF0, SRMB)
3444 Store (MEMB, Local2)
3445 Store (PDBM, Local1)
3446 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3448 Or (PDBM, 0x02, PDBM)
3452 If (((R510 & 0x03FB) == 0x02E0) ||
3453 ((R520 & 0x03FB) == 0x02E0) ||
3454 ((R530 & 0x03FB) == 0x02E0) ||
3455 ((R540 & 0x03FB) == 0x02E0))
3457 SRMB = (MEMB & 0xFFFFFFF0)
3460 PDBM &= 0xFFFFFFFFFFFFFFF9
3466 Store (0x1234, Local1)
3467 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3468 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3469 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3470 Store (Index (PKG1, 0x03), Local6)
3471 Store (Add (Local3, Local2), Debug)
3472 Add (Local1, 0x0F, Local2)
3473 Add (Local1, Multiply (Local2, Local3), Local2)
3474 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3478 Local3 = (((Local1 + TEST) + 0x20) * Local2)
3479 Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3480 Local3 = (Local1 + (TEST + (0x20 * Local2)))
3481 Local6 = Index (PKG1, 0x03)
3482 Debug = (Local3 + Local2)
3483 Local2 = (Local1 + 0x0F)
3484 Local2 = (Local1 + (Local2 * Local3))
3485 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3488 ----------------------------------------
3489 26 September 2014. Summary of changes for version 20140926:
3491 1) ACPICA kernel-resident subsystem:
3493 Updated the GPIO operation region handler interface (GeneralPurposeIo).
3494 In order to support GPIO Connection objects with multiple pins, along
3495 with the related Field objects, the following changes to the interface
3496 have been made: The Address is now defined to be the offset in bits of
3497 the field unit from the previous invocation of a Connection. It can be
3498 viewed as a "Pin Number Index" into the connection resource descriptor.
3499 The BitWidth is the exact bit width of the field. It is usually one bit,
3500 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3501 additional information and examples.
3503 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3504 corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3505 by the firmware), so that they cannot fire until they are enabled via
3506 AcpiUpdateAllGpes. Rafael J. Wysocki.
3508 Added a new return flag for the Event/GPE status interfaces --
3509 AcpiGetEventStatus and AcpiGetGpeStatus. The new
3510 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3511 GPE currently has a handler associated with it, and can thus actually
3512 affect the system. Lv Zheng.
3514 Example Code and Data Size: These are the sizes for the OS-independent
3515 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3516 debug version of the code includes the debug output trace mechanism and
3517 has a much larger code and data size.
3520 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
3521 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
3523 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3524 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3526 2) iASL Compiler/Disassembler and Tools:
3528 iASL: Fixed a memory allocation/free regression introduced in 20140828
3529 that could cause the compiler to crash. This was introduced inadvertently
3530 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
3533 iASL: Removed two error messages that have been found to create false
3534 positives, until they can be fixed and fully validated (ACPICA BZ 1112):
3535 1) Illegal forward reference within a method
3536 2) Illegal reference across two methods
3538 iASL: Implemented a new option (-lm) to create a hardware mapping file
3539 that summarizes all GPIO, I2C, SPI, and UART connections. This option
3540 works for both the compiler and disassembler. See the iASL compiler user
3541 guide for additional information and examples (section 6.4.6).
3543 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3544 version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3545 a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3547 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3548 unless STDIN is actually a terminal. Assists with batch-mode processing.
3551 Disassembler/AcpiHelp: Added another large group of recognized _HID
3555 ----------------------------------------
3556 28 August 2014. Summary of changes for version 20140828:
3558 1) ACPICA kernel-resident subsystem:
3560 Fixed a problem related to the internal use of the Timer() operator where
3561 a 64-bit divide could cause an attempted link to a double-precision math
3562 library. This divide is not actually necessary, so the code was
3563 restructured to eliminate it. Lv Zheng.
3565 ACPI 5.1: Added support for the runtime validation of the _DSD package
3566 (similar to the iASL support).
3568 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3569 SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3571 Example Code and Data Size: These are the sizes for the OS-independent
3572 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3573 debug version of the code includes the debug output trace mechanism and
3574 has a much larger code and data size.
3577 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3578 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3580 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1
3581 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
3583 2) iASL Compiler/Disassembler and Tools:
3585 AcpiExec: Fixed a problem on unix systems where the original terminal
3586 state was not always properly restored upon exit. Seen when using the -v
3587 option. ACPICA BZ 1104.
3589 iASL: Fixed a problem with the validation of the ranges/length within the
3590 Memory24 resource descriptor. There was a boundary condition when the
3591 range was equal to the (length -1) caused by the fact that these values
3592 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3594 Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3596 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3598 now supported properly.
3600 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3601 in the disassembler, data table compiler, and table template generator.
3603 iASL: Added a requirement for Device() objects that one of either a _HID
3604 or _ADR must exist within the scope of a Device, as per the ACPI
3605 specification. Remove a similar requirement that was incorrectly in place
3606 for the _DSD object.
3608 iASL: Added error detection for illegal named references within control
3609 methods that would cause runtime failures. Now trapped as errors are: 1)
3610 References to objects within a non-parent control method. 2) Forward
3611 references (within a method) -- for control methods, AML interpreters use
3612 a one-pass parse of control methods. ACPICA BZ 1008.
3614 iASL: Added error checking for dependencies related to the _PSx power
3615 methods. ACPICA BZ 1029.
3616 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3618 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3621 iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3622 deploying the existing object and string caches and adding new caches for
3625 iASL: Split the huge parser source file into multiple subfiles to improve
3626 manageability. Generation now requires the M4 macro preprocessor, which
3627 is part of the Bison distribution on both unix and windows platforms.
3629 AcpiSrc: Fixed and removed all extraneous warnings generated during
3630 entire ACPICA source code scan and/or conversion.
3633 ----------------------------------------
3635 24 July 2014. Summary of changes for version 20140724:
3637 The ACPI 5.1 specification has been released and is available at:
3638 http://uefi.org/specs/access
3641 0) ACPI 5.1 support in ACPICA:
3643 ACPI 5.1 is fully supported in ACPICA as of this release.
3645 New predefined names. Support includes iASL and runtime ACPICA
3647 _CCA (Cache Coherency Attribute).
3648 _DSD (Device-Specific Data). David Box.
3650 Modifications to existing ACPI tables. Support includes headers, iASL
3651 Data Table compiler, disassembler, and the template generator.
3652 FADT - New fields and flags. Graeme Gregory.
3653 GTDT - One new subtable and new fields. Tomasz Nowicki.
3654 MADT - Two new subtables. Tomasz Nowicki.
3655 PCCT - One new subtable.
3658 New notification type for System Resource Affinity change events.
3661 1) ACPICA kernel-resident subsystem:
3663 Fixed a regression introduced in 20140627 where a fault can happen during
3664 the deletion of Alias AML namespace objects. The problem affected both
3665 the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3667 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3668 simple mechanism to enable wake GPEs that have no associated handler or
3669 control method. Rafael Wysocki.
3671 Updated the AcpiEnableGpe interface to disallow the enable if there is no
3672 handler or control method associated with the particular GPE. This will
3673 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3675 Updated GPE handling and dispatch by disabling the GPE before clearing
3676 the status bit for edge-triggered GPEs. Lv Zheng.
3678 Added Timer() support to the AML Debug object. The current timer value is
3679 now displayed with each invocation of (Store to) the debug object to
3680 enable simple generation of execution times for AML code (method
3681 execution for example.) ACPICA BZ 1093.
3683 Example Code and Data Size: These are the sizes for the OS-independent
3684 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3685 debug version of the code includes the debug output trace mechanism and
3686 has a much larger code and data size.
3689 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total
3690 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
3692 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
3693 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
3696 2) iASL Compiler/Disassembler and Tools:
3698 Fixed an issue with the recently added local printf implementation,
3699 concerning width/precision specifiers that could cause incorrect output.
3700 Lv Zheng. ACPICA BZ 1094.
3702 Disassembler: Added support to detect buffers that contain UUIDs and
3703 disassemble them to an invocation of the ToUUID operator. Also emit
3704 commented descriptions of known ACPI-related UUIDs.
3706 AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3707 -u. Adds three new files.
3709 iASL: Update table compiler and disassembler for DMAR table changes that
3710 were introduced in September 2013. With assistance by David Woodhouse.
3712 ----------------------------------------
3713 27 June 2014. Summary of changes for version 20140627:
3715 1) ACPICA kernel-resident subsystem:
3717 Formatted Output: Implemented local versions of standard formatted output
3718 utilities such as printf, etc. Over time, it has been discovered that
3719 there are in fact many portability issues with printf, and the addition
3720 of this feature will fix/prevent these issues once and for all. Some
3721 known issues are summarized below:
3723 1) Output of 64-bit values is not portable. For example, UINT64 is %ull
3724 for the Linux kernel and is %uI64 for some MSVC versions.
3725 2) Invoking printf consistently in a manner that is portable across both
3726 32-bit and 64-bit platforms is difficult at best in many situations.
3727 3) The output format for pointers varies from system to system (leading
3728 zeros especially), and leads to inconsistent output from ACPICA across
3730 4) Certain platform-specific printf formats may conflict with ACPICA use.
3731 5) If there is no local C library available, ACPICA now has local support
3734 -- To address these printf issues in a complete manner, ACPICA now
3735 directly implements a small subset of printf format specifiers, only
3736 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3738 Implemented support for ACPICA generation within the EFI environment.
3739 Initially, the AcpiDump utility is supported in the UEFI shell
3740 environment. Lv Zheng.
3742 Added a new external interface, AcpiLogError, to improve ACPICA
3743 portability. This allows the host to redirect error messages from the
3744 ACPICA utilities. Lv Zheng.
3746 Added and deployed new OSL file I/O interfaces to improve ACPICA
3754 There are C library implementations of these functions in the new file
3755 service_layers/oslibcfs.c -- however, the functions can be implemented by
3756 the local host in any way necessary. Lv Zheng.
3758 Implemented a mechanism to disable/enable ACPI table checksum validation
3759 at runtime. This can be useful when loading tables very early during OS
3760 initialization when it may not be possible to map the entire table in
3761 order to compute the checksum. Lv Zheng.
3763 Fixed a buffer allocation issue for the Generic Serial Bus support.
3764 Originally, a fixed buffer length was used. This change allows for
3765 variable-length buffers based upon the protocol indicated by the field
3766 access attributes. Reported by Lan Tianyu. Lv Zheng.
3768 Fixed a problem where an object detached from a namespace node was not
3769 properly terminated/cleared and could cause a circular list problem if
3770 reattached. ACPICA BZ 1063. David Box.
3772 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3774 Fixed a possible memory leak in an error return path within the function
3775 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3777 Example Code and Data Size: These are the sizes for the OS-independent
3778 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3779 debug version of the code includes the debug output trace mechanism and
3780 has a much larger code and data size.
3783 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
3784 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
3786 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
3787 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
3790 2) iASL Compiler/Disassembler and Tools:
3792 Disassembler: Add dump of ASCII equivalent text within a comment at the
3793 end of each line of the output for the Buffer() ASL operator.
3795 AcpiDump: Miscellaneous changes:
3796 Fixed repetitive table dump in -n mode.
3797 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
3798 the ACPI 2.0 GUID fails.
3800 iASL: Fixed a problem where the compiler could fault if incorrectly given
3801 an acpidump output file as input. ACPICA BZ 1088. David Box.
3803 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
3804 they are invoked without any arguments.
3806 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
3807 1086. Colin Ian King.
3809 Disassembler: Cleaned up a block of code that extracts a parent Op
3810 object. Added a comment that explains that the parent is guaranteed to be
3811 valid in this case. ACPICA BZ 1069.
3814 ----------------------------------------
3815 24 April 2014. Summary of changes for version 20140424:
3817 1) ACPICA kernel-resident subsystem:
3819 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
3820 Some of these tables are known to contain a trailing NULL entry. Lv
3823 Removed an extraneous error message for the case where there are a large
3824 number of system GPEs (> 124). This was the "32-bit FADT register is too
3825 long to convert to GAS struct" message, which is irrelevant for GPEs
3826 since the GPEx_BLK_LEN fields of the FADT are always used instead of the
3827 (limited capacity) GAS bit length. Also, several changes to ensure proper
3828 support for GPE numbers > 255, where some "GPE number" fields were 8-bits
3831 Implemented and deployed additional configuration support for the public
3832 ACPICA external interfaces. Entire classes of interfaces can now be
3833 easily modified or configured out, replaced by stubbed inline functions
3834 by default. Lv Zheng.
3836 Moved all public ACPICA runtime configuration globals to the public
3837 ACPICA external interface file for convenience. Also, removed some
3838 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3840 Documentation: Added a new section to the ACPICA reference describing the
3841 maximum number of GPEs that can be supported by the FADT-defined GPEs in
3842 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
3845 Example Code and Data Size: These are the sizes for the OS-independent
3846 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3847 debug version of the code includes the debug output trace mechanism and
3848 has a much larger code and data size.
3851 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
3852 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
3854 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
3855 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
3858 2) iASL Compiler/Disassembler and Tools:
3860 iASL and disassembler: Add full support for the LPIT table (Low Power
3861 Idle Table). Includes support in the disassembler, data table compiler,
3862 and template generator.
3865 1) Add option to force the use of the RSDT (over the XSDT).
3866 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
3868 iASL: Add check for predefined packages that are too large. For
3869 predefined names that contain subpackages, check if each subpackage is
3870 too large. (Check for too small already exists.)
3872 Debugger: Updated the GPE command (which simulates a GPE by executing the
3873 GPE code paths in ACPICA). The GPE device is now optional, and defaults
3874 to the GPE 0/1 FADT-defined blocks.
3876 Unix application OSL: Update line-editing support. Add additional error
3877 checking and take care not to reset terminal attributes on exit if they
3878 were never set. This should help guarantee that the terminal is always
3879 left in the previous state on program exit.
3882 ----------------------------------------
3883 25 March 2014. Summary of changes for version 20140325:
3885 1) ACPICA kernel-resident subsystem:
3887 Updated the auto-serialize feature for control methods. This feature
3888 automatically serializes all methods that create named objects in order
3889 to prevent runtime errors. The update adds support to ignore the
3890 currently executing AML SyncLevel when invoking such a method, in order
3891 to prevent disruption of any existing SyncLevel priorities that may exist
3892 in the AML code. Although the use of SyncLevels is relatively rare, this
3893 change fixes a regression where an AE_AML_MUTEX_ORDER exception can
3894 appear on some machines starting with the 20140214 release.
3896 Added a new external interface to allow the host to install ACPI tables
3897 very early, before the namespace is even created. AcpiInstallTable gives
3898 the host additional flexibility for ACPI table management. Tables can be
3899 installed directly by the host as if they had originally appeared in the
3900 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
3901 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along
3902 with additional internal restructuring and cleanup. See the ACPICA
3903 Reference for interface details. Lv Zheng.
3905 Added validation of the checksum for all incoming dynamically loaded
3906 tables (via external interfaces or via AML Load/LoadTable operators). Lv
3909 Updated the use of the AcpiOsWaitEventsComplete interface during Notify
3910 and GPE handler removal. Restructured calls to eliminate possible race
3911 conditions. Lv Zheng.
3913 Added a warning for the use/execution of the ASL/AML Unload (table)
3914 operator. This will help detect and identify machines that use this
3915 operator if and when it is ever used. This operator has never been seen
3916 in the field and the usage model and possible side-effects of the drastic
3917 runtime action of a full table removal are unknown.
3919 Reverted the use of #pragma push/pop which was introduced in the 20140214
3920 release. It appears that push and pop are not implemented by enough
3921 compilers to make the use of this feature feasible for ACPICA at this
3922 time. However, these operators may be deployed in a future ACPICA
3925 Added the missing EXPORT_SYMBOL macros for the install and remove SCI
3928 Source code generation:
3929 1) Disabled the use of the "strchr" macro for the gcc-specific
3930 generation. For some versions of gcc, this macro can periodically expose
3931 a compiler bug which in turn causes compile-time error(s).
3932 2) Added support for PPC64 compilation. Colin Ian King.
3934 Example Code and Data Size: These are the sizes for the OS-independent
3935 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3936 debug version of the code includes the debug output trace mechanism and
3937 has a much larger code and data size.
3940 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
3941 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
3943 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
3944 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
3947 2) iASL Compiler/Disassembler and Tools:
3949 Disassembler: Added several new features to improve the readability of
3950 the resulting ASL code. Extra information is emitted within comment
3951 fields in the ASL code:
3952 1) Known _HID/_CID values are decoded to descriptive text.
3953 2) Standard values for the Notify() operator are decoded to descriptive
3955 3) Target operands are expanded to full pathnames (in a comment) when
3958 Disassembler: Miscellaneous updates for extern() handling:
3959 1) Abort compiler if file specified by -fe option does not exist.
3960 2) Silence unnecessary warnings about argument count mismatches.
3961 3) Update warning messages concerning unresolved method externals.
3962 4) Emit "UnknownObj" keyword for externals whose type cannot be
3966 1) Added the -a option to display both the ASL syntax and the AML
3967 encoding for an input ASL operator. This effectively displays all known
3968 information about an ASL operator with one AcpiHelp invocation.
3969 2) Added substring match support (similar to a wildcard) for the -i
3970 (_HID/PNP IDs) option.
3972 iASL/Disassembler: Since this tool does not yet support execution on big-
3973 endian machines, added detection of endianness and an error message if
3974 execution is attempted on big-endian. Support for big-endian within iASL
3975 is a feature that is on the ACPICA to-be-done list.
3978 1) Remove option to extract binary files from an acpidump; this function
3979 is made obsolete by the AcpiXtract utility.
3980 2) General cleanup of open files and allocated buffers.
3983 ----------------------------------------
3984 14 February 2014. Summary of changes for version 20140214:
3986 1) ACPICA kernel-resident subsystem:
3988 Implemented a new mechanism to proactively prevent problems with ill-
3989 behaved reentrant control methods that create named ACPI objects. This
3990 behavior is illegal as per the ACPI specification, but is nonetheless
3991 frequently seen in the field. Previously, this could lead to an
3992 AE_ALREADY_EXISTS exception if the method was actually entered by more
3993 than one thread. This new mechanism detects such methods at table load
3994 time and marks them "serialized" to prevent reentrancy. A new global
3995 option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3996 feature if desired. This mechanism and global option obsoletes and
3997 supersedes the previous AcpiGbl_SerializeAllMethods option.
3999 Added the "Windows 2013" string to the _OSI support. ACPICA will now
4000 respond TRUE to _OSI queries with this string. It is the stated policy of
4001 ACPICA to add new strings to the _OSI support as soon as possible after
4002 they are defined. See the full ACPICA _OSI policy which has been added to
4003 the utilities/utosi.c file.
4005 Hardened/updated the _PRT return value auto-repair code:
4006 1) Do not abort the repair on a single subpackage failure, continue to
4007 check all subpackages.
4008 2) Add check for the minimum subpackage length (4).
4009 3) Properly handle extraneous NULL package elements.
4011 Added support to avoid the possibility of infinite loops when traversing
4012 object linked lists. Never allow an infinite loop, even in the face of
4013 corrupted object lists.
4015 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4016 pack(pop) directives to ensure that the ACPICA headers are independent of
4017 compiler settings or other host headers.
4019 Example Code and Data Size: These are the sizes for the OS-independent
4020 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4021 debug version of the code includes the debug output trace mechanism and
4022 has a much larger code and data size.
4025 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
4026 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
4028 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
4029 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
4032 2) iASL Compiler/Disassembler and Tools:
4034 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4035 first reserved field was incorrectly forced to have a value of zero. This
4036 change correctly forces the field to have a value of one. ACPICA BZ 1081.
4038 Debugger: Added missing support for the "Extra" and "Data" subobjects
4039 when displaying object data.
4041 Debugger: Added support to display entire object linked lists when
4042 displaying object data.
4044 iASL: Removed the obsolete -g option to obtain ACPI tables from the
4045 Windows registry. This feature has been superseded by the acpidump
4049 ----------------------------------------
4050 14 January 2014. Summary of changes for version 20140114:
4052 1) ACPICA kernel-resident subsystem:
4054 Updated all ACPICA copyrights and signons to 2014. Added the 2014
4055 copyright to all module headers and signons, including the standard Linux
4056 header. This affects virtually every file in the ACPICA core subsystem,
4057 iASL compiler, all ACPICA utilities, and the test suites.
4059 Improved parameter validation for AcpiInstallGpeBlock. Added the
4061 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
4062 2) There is not already a GPE block attached to the device.
4063 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4066 Correctly support "references" in the ACPI_OBJECT. This change fixes the
4067 support to allow references (namespace nodes) to be passed as arguments
4068 to control methods via the evaluate object interface. This is probably
4069 most useful for testing purposes, however.
4071 Improved support for 32/64 bit physical addresses in printf()-like
4072 output. This change improves the support for physical addresses in printf
4073 debug statements and other output on both 32-bit and 64-bit hosts. It
4074 consistently outputs the appropriate number of bytes for each host. The
4075 %p specifier is unsatisfactory since it does not emit uniform output on
4076 all hosts/clib implementations (on some, leading zeros are not supported,
4077 leading to difficult-to-read output).
4079 Example Code and Data Size: These are the sizes for the OS-independent
4080 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4081 debug version of the code includes the debug output trace mechanism and
4082 has a much larger code and data size.
4085 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
4086 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
4088 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
4089 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
4092 2) iASL Compiler/Disassembler and Tools:
4094 iASL: Fix a possible fault when using the Connection() operator. Fixes a
4095 problem if the parent Field definition for the Connection operator refers
4096 to an operation region that does not exist. ACPICA BZ 1064.
4098 AcpiExec: Load of local test tables is now optional. The utility has the
4099 capability to load some various tables to test features of ACPICA.
4100 However, there are enough of them that the output of the utility became
4101 confusing. With this change, only the required local tables are displayed
4102 (RSDP, XSDT, etc.) along with the actual tables loaded via the command
4103 line specification. This makes the default output simler and easier to
4104 understand. The -el command line option restores the original behavior
4105 for testing purposes.
4107 AcpiExec: Added support for overlapping operation regions. This change
4108 expands the simulation of operation regions by supporting regions that
4109 overlap within the given address space. Supports SystemMemory and
4110 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4112 AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4113 allows AcpiExec to simulate these address spaces, similar to the current
4114 support for SystemMemory and SystemIO.
4116 Debugger: Added new command to read/write/compare all namespace objects.
4117 The command "test objects" will exercise the entire namespace by writing
4118 new values to each data object, and ensuring that the write was
4119 successful. The original value is then restored and verified.
4121 Debugger: Added the "test predefined" command. This change makes this
4122 test public and puts it under the new "test" command. The test executes
4123 each and every predefined name within the current namespace.
4126 ----------------------------------------
4127 18 December 2013. Summary of changes for version 20131218:
4129 Global note: The ACPI 5.0A specification was released this month. There
4130 are no changes needed for ACPICA since this release of ACPI is an
4131 errata/clarification release. The specification is available at
4135 1) ACPICA kernel-resident subsystem:
4137 Added validation of the XSDT root table if it is present. Some older
4138 platforms contain an XSDT that is ill-formed or otherwise invalid (such
4139 as containing some or all entries that are NULL pointers). This change
4140 adds a new function to validate the XSDT before actually using it. If the
4141 XSDT is found to be invalid, ACPICA will now automatically fall back to
4142 using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4143 ACPICA and enhanced by Lv Zheng and Bob Moore.
4145 Added a runtime option to ignore the XSDT and force the use of the RSDT.
4146 This change adds a runtime option that will force ACPICA to use the RSDT
4147 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4148 requires that an XSDT be used instead of the RSDT, the XSDT has been
4149 found to be corrupt or ill-formed on some machines. Lv Zheng.
4151 Added a runtime option to favor 32-bit FADT register addresses over the
4152 64-bit addresses. This change adds an option to favor 32-bit FADT
4153 addresses when there is a conflict between the 32-bit and 64-bit versions
4154 of the same register. The default behavior is to use the 64-bit version
4155 in accordance with the ACPI specification. This can now be overridden via
4156 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4158 During the change above, the internal "Convert FADT" and "Verify FADT"
4159 functions have been merged to simplify the code, making it easier to
4160 understand and maintain. ACPICA BZ 933.
4162 Improve exception reporting and handling for GPE block installation.
4163 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4164 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4166 Added helper macros to extract bus/segment numbers from the HEST table.
4167 This change adds two macros to extract the encoded bus and segment
4168 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4169 Betty Dall <betty.dall@hp.com>
4171 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4172 by ACPICA. It is not a public macro, so it should have no effect on
4173 existing OSV code. Lv Zheng.
4175 Example Code and Data Size: These are the sizes for the OS-independent
4176 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4177 debug version of the code includes the debug output trace mechanism and
4178 has a much larger code and data size.
4181 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
4182 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
4184 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
4185 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
4188 2) iASL Compiler/Disassembler and Tools:
4190 Disassembler: Improved pathname support for emitted External()
4191 statements. This change adds full pathname support for external names
4192 that have been resolved internally by the inclusion of additional ACPI
4193 tables (via the iASL -e option). Without this change, the disassembler
4194 can emit multiple externals for the same object, or it become confused
4195 when the Scope() operator is used on an external object. Overall, greatly
4196 improves the ability to actually recompile the emitted ASL code when
4197 objects a referenced across multiple ACPI tables. Reported by Michael
4198 Tsirkin (mst@redhat.com).
4200 Tests/ASLTS: Updated functional control suite to execute with no errors.
4201 David Box. Fixed several errors related to the testing of the interpreter
4202 slack mode. Lv Zheng.
4204 iASL: Added support to detect names that are declared within a control
4205 method, but are unused (these are temporary names that are only valid
4206 during the time the method is executing). A remark is issued for these
4207 cases. ACPICA BZ 1022.
4209 iASL: Added full support for the DBG2 table. Adds full disassembler,
4210 table compiler, and template generator support for the DBG2 table (Debug
4213 iASL: Added full support for the PCCT table, update the table definition.
4214 Updates the PCCT table definition in the actbl3.h header and adds table
4215 compiler and template generator support.
4217 iASL: Added an option to emit only error messages (no warnings/remarks).
4218 The -ve option will enable only error messages, warnings and remarks are
4219 suppressed. This can simplify debugging when only the errors are
4220 important, such as when an ACPI table is disassembled and there are many
4221 warnings and remarks -- but only the actual errors are of real interest.
4223 Example ACPICA code (source/tools/examples): Updated the example code so
4224 that it builds to an actual working program, not just example code. Added
4225 ACPI tables and execution of an example control method in the DSDT. Added
4226 makefile support for Unix generation.
4229 ----------------------------------------
4230 15 November 2013. Summary of changes for version 20131115:
4232 This release is available at https://acpica.org/downloads
4235 1) ACPICA kernel-resident subsystem:
4237 Resource Manager: Fixed loop termination for the "get AML length"
4238 function. The loop previously had an error termination on a NULL resource
4239 pointer, which can never happen since the loop simply increments a valid
4240 resource pointer. This fix changes the loop to terminate with an error on
4241 an invalid end-of-buffer condition. The problem can be seen as an
4242 infinite loop by callers to AcpiSetCurrentResources with an invalid or
4243 corrupted resource descriptor, or a resource descriptor that is missing
4244 an END_TAG descriptor. Reported by Dan Carpenter
4245 <dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4247 Table unload and ACPICA termination: Delete all attached data objects
4248 during namespace node deletion. This fix updates namespace node deletion
4249 to delete the entire list of attached objects (attached via
4250 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
4251 1024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4253 ACPICA termination: Added support to delete all objects attached to the
4254 root namespace node. This fix deletes any and all objects that have been
4255 attached to the root node via AcpiAttachData. Previously, none of these
4256 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4258 Debug output: Do not emit the function nesting level for the in-kernel
4259 build. The nesting level is really only useful during a single-thread
4260 execution. Therefore, only enable this output for the AcpiExec utility.
4261 Also, only emit the thread ID when executing under AcpiExec (Context
4262 switches are still always detected and a message is emitted). ACPICA BZ
4265 Example Code and Data Size: These are the sizes for the OS-independent
4266 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4267 debug version of the code includes the debug output trace mechanism and
4268 has a much larger code and data size.
4271 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
4272 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
4274 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
4275 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
4278 2) iASL Compiler/Disassembler and Tools:
4280 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4281 correct portable POSIX header for terminal control functions.
4283 Disassembler: Fixed control method invocation issues related to the use
4284 of the CondRefOf() operator. The problem is seen in the disassembly where
4285 control method invocations may not be disassembled properly if the
4286 control method name has been used previously as an argument to CondRefOf.
4287 The solution is to not attempt to emit an external declaration for the
4288 CondRefOf target (it is not necessary in the first place). This prevents
4289 disassembler object type confusion. ACPICA BZ 988.
4291 Unix Makefiles: Added an option to disable compiler optimizations and the
4292 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4293 with optimizations (reportedly, gcc 4.4 for example). This change adds a
4294 command line option for make (NOOPT) that disables all compiler
4295 optimizations and the _FORTIFY_SOURCE compiler flag. The default
4296 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
4297 1034. Lv Zheng, Bob Moore.
4299 Tests/ASLTS: Added options to specify individual test cases and modes.
4300 This allows testers running aslts.sh to optionally specify individual
4301 test modes and test cases. Also added an option to disable the forced
4302 generation of the ACPICA tools from source if desired. Lv Zheng.
4304 ----------------------------------------
4305 27 September 2013. Summary of changes for version 20130927:
4307 This release is available at https://acpica.org/downloads
4310 1) ACPICA kernel-resident subsystem:
4312 Fixed a problem with store operations to reference objects. This change
4313 fixes a problem where a Store operation to an ArgX object that contained
4315 reference to a field object did not complete the automatic dereference
4317 then write to the actual field object. Instead, the object type of the
4318 field object was inadvertently changed to match the type of the source
4319 operand. The new behavior will actually write to the field object (buffer
4320 field or field unit), thus matching the correct ACPI-defined behavior.
4322 Implemented support to allow the host to redefine individual OSL
4323 prototypes. This change enables the host to redefine OSL prototypes found
4324 in the acpiosxf.h file. This allows the host to implement OSL interfaces
4325 with a macro or inlined function. Further, it allows the host to add any
4326 additional required modifiers such as __iomem, __init, __exit, etc., as
4327 necessary on a per-interface basis. Enables maximum flexibility for the
4328 OSL interfaces. Lv Zheng.
4330 Hardcoded the access width for the FADT-defined reset register. The ACPI
4331 specification requires the reset register width to be 8 bits. ACPICA now
4332 hardcodes the width to 8 and ignores the FADT width value. This provides
4333 compatibility with other ACPI implementations that have allowed BIOS code
4334 with bad register width values to go unnoticed. Matthew Garett, Bob
4338 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4340 in the OSL header (acpiosxf). The change modifies the position of this
4341 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4342 build issues if the OSL defines the implementation of the interface to be
4343 an inline stub function. Lv Zheng.
4345 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4346 initialization interfaces. This change adds a new macro for the main init
4347 and terminate external interfaces in order to support hosts that require
4348 additional or different processing for these functions. Changed from
4349 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4352 Cleaned up the memory allocation macros for configurability. In the
4354 case, the ACPI_ALLOCATE and related macros now resolve directly to their
4355 respective AcpiOs* OSL interfaces. Two options:
4356 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4357 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
4358 2) For AcpiExec (and for debugging), the macros can optionally be
4360 to the local ACPICA interfaces that track each allocation (local tracking
4361 is used to immediately detect memory leaks).
4364 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4365 to predefine this macro to either TRUE or FALSE during the system build.
4367 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4369 Example Code and Data Size: These are the sizes for the OS-independent
4370 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4371 debug version of the code includes the debug output trace mechanism and
4372 has a much larger code and data size.
4375 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
4376 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
4378 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
4379 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4382 2) iASL Compiler/Disassembler and Tools:
4384 iASL: Implemented wildcard support for the -e option. This simplifies use
4385 when there are many SSDTs that must be included to resolve external
4387 declarations. ACPICA BZ 1041. Example:
4388 iasl -e ssdt*.dat -d dsdt.dat
4390 AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4391 adds a portable module that implements full history and limited line
4392 editing for Unix and Linux systems. It does not use readline() due to
4393 portability issues. Instead it uses the POSIX termio interface to put the
4394 terminal in raw input mode so that the various special keys can be
4396 (such as up/down-arrow for history support and left/right-arrow for line
4397 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4399 AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4400 one or more spaces. This provides compatible with early or different
4401 versions of the AcpiDump utility. ACPICA BZ 1044.
4403 AcpiDump: Do not ignore tables that contain only an ACPI table header.
4404 Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4405 no other data. This change adds support to dump these tables. Any tables
4406 shorter than the length of an ACPI table header remain in error (an error
4407 message is emitted). Reported by Yi Li.
4409 Debugger: Echo actual command along with the "unknown command" message.
4411 ----------------------------------------
4412 23 August 2013. Summary of changes for version 20130823:
4414 1) ACPICA kernel-resident subsystem:
4416 Implemented support for host-installed System Control Interrupt (SCI)
4417 handlers. Certain ACPI functionality requires the host to handle raw
4418 SCIs. For example, the "SCI Doorbell" that is defined for memory power
4419 state support requires the host device driver to handle SCIs to examine
4420 if the doorbell has been activated. Multiple SCI handlers can be
4421 installed to allow for future expansion. New external interfaces are
4422 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4423 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4425 Operation region support: Never locally free the handler "context"
4426 pointer. This change removes some dangerous code that attempts to free
4427 the handler context pointer in some (rare) circumstances. The owner of
4428 the handler owns this pointer and the ACPICA code should never touch it.
4429 Although not seen to be an issue in any kernel, it did show up as a
4430 problem (fault) under AcpiExec. Also, set the internal storage field for
4431 the context pointer to zero when the region is deactivated, simply for
4432 sanity. David Box. ACPICA BZ 1039.
4434 AcpiRead: On error, do not modify the return value target location. If an
4435 error happens in the middle of a split 32/32 64-bit I/O operation, do not
4436 modify the target of the return value pointer. Makes the code consistent
4437 with the rest of ACPICA. Bjorn Helgaas.
4439 Example Code and Data Size: These are the sizes for the OS-independent
4440 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4441 debug version of the code includes the debug output trace mechanism and
4442 has a much larger code and data size.
4445 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
4446 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4448 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
4449 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total
4452 2) iASL Compiler/Disassembler and Tools:
4454 AcpiDump: Implemented several new features and fixed some problems:
4455 1) Added support to dump the RSDP, RSDT, and XSDT tables.
4456 2) Added support for multiple table instances (SSDT, UEFI).
4457 3) Added option to dump "customized" (overridden) tables (-c).
4458 4) Fixed a problem where some table filenames were improperly
4460 5) Improved some error messages, removed some unnecessary messages.
4462 iASL: Implemented additional support for disassembly of ACPI tables that
4463 contain invocations of external control methods. The -fe<file> option
4464 allows the import of a file that specifies the external methods along
4465 with the required number of arguments for each -- allowing for the
4466 correct disassembly of the table. This is a workaround for a limitation
4467 of AML code where the disassembler often cannot determine the number of
4468 arguments required for an external control method and generates incorrect
4469 ASL code. See the iASL reference for details. ACPICA BZ 1030.
4471 Debugger: Implemented a new command (paths) that displays the full
4472 pathnames (namepaths) and object types of all objects in the namespace.
4473 This is an alternative to the namespace command.
4475 Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4476 mechanism and any installed handlers.
4478 iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4479 This can occur if there are too many parent prefixes in a namepath (for
4480 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4482 Application OSLs: Set the return value for the PCI read functions. These
4483 functions simply return AE_OK, but should set the return value to zero
4484 also. This change implements this. ACPICA BZ 1038.
4486 Debugger: Prevent possible command line buffer overflow. Increase the
4487 size of a couple of the debugger line buffers, and ensure that overflow
4488 cannot happen. ACPICA BZ 1037.
4490 iASL: Changed to abort immediately on serious errors during the parsing
4491 phase. Due to the nature of ASL, there is no point in attempting to
4492 compile these types of errors, and they typically end up causing a
4493 cascade of hundreds of errors which obscure the original problem.
4495 ----------------------------------------
4496 25 July 2013. Summary of changes for version 20130725:
4498 1) ACPICA kernel-resident subsystem:
4500 Fixed a problem with the DerefOf operator where references to FieldUnits
4501 and BufferFields incorrectly returned the parent object, not the actual
4502 value of the object. After this change, a dereference of a FieldUnit
4503 reference results in a read operation on the field to get the value, and
4504 likewise, the appropriate BufferField value is extracted from the target
4507 Fixed a problem where the _WAK method could cause a fault under these
4508 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4509 method returned no value. The problem is rarely seen because most kernels
4510 run ACPICA in slack mode.
4512 For the DerefOf operator, a fatal error now results if an attempt is made
4513 to dereference a reference (created by the Index operator) to a NULL
4514 package element. Provides compatibility with other ACPI implementations,
4515 and this behavior will be added to a future version of the ACPI
4518 The ACPI Power Management Timer (defined in the FADT) is now optional.
4519 This provides compatibility with other ACPI implementations and will
4520 appear in the next version of the ACPI specification. If there is no PM
4521 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4522 zero in the FADT indicates no PM timer.
4524 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4525 allows the host to globally enable/disable all vendor strings, all
4526 feature strings, or both. Intended to be primarily used for debugging
4527 purposes only. Lv Zheng.
4529 Expose the collected _OSI data to the host via a global variable. This
4530 data tracks the highest level vendor ID that has been invoked by the BIOS
4531 so that the host (and potentially ACPICA itself) can change behaviors
4532 based upon the age of the BIOS.
4534 Example Code and Data Size: These are the sizes for the OS-independent
4535 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4536 debug version of the code includes the debug output trace mechanism and
4537 has a much larger code and data size.
4540 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
4541 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4543 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
4544 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
4547 2) iASL Compiler/Disassembler and Tools:
4549 iASL: Created the following enhancements for the -so option (create
4551 1)Add offsets for the last nameseg in each namepath for every supported
4553 2)Add support for Processor, Device, Thermal Zone, and Scope objects
4554 3)Add the actual AML opcode for the parent object of every supported
4556 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4558 Disassembler: Emit all unresolved external symbols in a single block.
4559 These are external references to control methods that could not be
4560 resolved, and thus, the disassembler had to make a guess at the number of
4563 iASL: The argument to the -T option (create table template) is now
4564 optional. If not specified, the default table is a DSDT, typically the
4567 ----------------------------------------
4568 26 June 2013. Summary of changes for version 20130626:
4570 1) ACPICA kernel-resident subsystem:
4572 Fixed an issue with runtime repair of the _CST object. Null or invalid
4573 elements were not always removed properly. Lv Zheng.
4575 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4576 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4577 the maximum number of GPEs is 1016. Use of multiple GPE block devices
4578 makes the system-wide number of GPEs essentially unlimited.
4580 Example Code and Data Size: These are the sizes for the OS-independent
4581 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4582 debug version of the code includes the debug output trace mechanism and
4583 has a much larger code and data size.
4586 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
4587 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
4589 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
4590 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
4593 2) iASL Compiler/Disassembler and Tools:
4595 Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4596 hosts. Now supports Linux, FreeBSD, and Windows.
4598 Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4599 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4601 iASL/Preprocessor: Implemented full support for nested
4602 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4604 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4605 max. The original purpose of this constraint was to limit the amount of
4606 debug output. However, the string function in question (UtPrintString) is
4607 now used for the disassembler also, where 256 bytes is insufficient.
4608 Reported by RehabMan@GitHub.
4610 iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4611 tables. ACPICA BZ 999. Lv Zheng.
4613 iASL: Fixed a couple of error exit issues that could result in a "Could
4614 not delete <file>" message during ASL compilation.
4616 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4617 the actual signatures for these tables are "FACP" and "APIC",
4620 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4621 tables are allowed to have multiple instances.
4623 ----------------------------------------
4624 17 May 2013. Summary of changes for version 20130517:
4626 1) ACPICA kernel-resident subsystem:
4628 Fixed a regression introduced in version 20130328 for _INI methods. This
4629 change fixes a problem introduced in 20130328 where _INI methods are no
4630 longer executed properly because of a memory block that was not
4631 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4632 <tomasz.nowicki@linaro.org>.
4634 Fixed a possible problem with the new extended sleep registers in the
4636 5.0 FADT. Do not use these registers (even if populated) unless the HW-
4637 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
4640 Implemented return value repair code for _CST predefined objects: Sort
4642 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4644 Implemented a debug-only option to disable loading of SSDTs from the
4645 RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4646 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4647 acglobal.h - ACPICA BZ 1005. Lv Zheng.
4649 Fixed some issues in the ACPICA initialization and termination code:
4650 Tomasz Nowicki <tomasz.nowicki@linaro.org>
4651 1) Clear events initialized flag upon event component termination. ACPICA
4653 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
4654 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
4655 4) Clear debug buffer global on termination to prevent possible multiple
4656 delete. ACPICA BZ 1010.
4658 Standardized all switch() blocks across the entire source base. After
4660 years, different formatting for switch() had crept in. This change makes
4661 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4663 Split some files to enhance ACPICA modularity and configurability:
4664 1) Split buffer dump routines into utilities/utbuffer.c
4665 2) Split internal error message routines into utilities/uterror.c
4666 3) Split table print utilities into tables/tbprint.c
4667 4) Split iASL command-line option processing into asloptions.c
4669 Makefile enhancements:
4670 1) Support for all new files above.
4671 2) Abort make on errors from any subcomponent. Chao Guan.
4672 3) Add build support for Apple Mac OS X. Liang Qi.
4674 Example Code and Data Size: These are the sizes for the OS-independent
4675 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4676 debug version of the code includes the debug output trace mechanism and
4677 has a much larger code and data size.
4680 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
4681 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
4683 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
4684 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
4687 2) iASL Compiler/Disassembler and Tools:
4689 New utility: Implemented an easily portable version of the acpidump
4690 utility to extract ACPI tables from the system (or a file) in an ASCII
4692 dump format. The top-level code implements the various command line
4693 options, file I/O, and table dump routines. To port to a new host, only
4694 three functions need to be implemented to get tables -- since this
4695 functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4696 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
4697 1) The Windows version obtains the ACPI tables from the Registry.
4698 2) The Linux version is under development.
4699 3) Other hosts - If an OS-dependent module is submitted, it will be
4700 distributed with ACPICA.
4702 iASL: Fixed a regression for -D preprocessor option (define symbol). A
4703 restructuring/change to the initialization sequence caused this option to
4704 no longer work properly.
4706 iASL: Implemented a mechanism to disable specific warnings and remarks.
4707 Adds a new command line option, "-vw <messageid> as well as "#pragma
4708 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4710 iASL: Fix for too-strict package object validation. The package object
4711 validation for return values from the predefined names is a bit too
4712 strict, it does not allow names references within the package (which will
4713 be resolved at runtime.) These types of references cannot be validated at
4714 compile time. This change ignores named references within package objects
4715 for names that return or define static packages.
4717 Debugger: Fixed the 80-character command line limitation for the History
4718 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4720 iASL: Added control method and package support for the -so option
4721 (generates AML offset table for BIOS support.)
4723 iASL: issue a remark if a non-serialized method creates named objects. If
4724 a thread blocks within the method for any reason, and another thread
4725 enters the method, the method will fail because an attempt will be made
4727 create the same (named) object twice. In this case, issue a remark that
4728 the method should be marked serialized. NOTE: may become a warning later.
4731 ----------------------------------------
4732 18 April 2013. Summary of changes for version 20130418:
4734 1) ACPICA kernel-resident subsystem:
4736 Fixed a possible buffer overrun during some rare but specific field unit
4737 read operations. This overrun can only happen if the DSDT version is 1 --
4738 meaning that all AML integers are 32 bits -- and the field length is
4739 between 33 and 55 bits long. During the read, an internal buffer object
4741 created for the field unit because the field is larger than an integer
4743 bits). However, in this case, the buffer will be incorrectly written
4744 beyond the end because the buffer length is less than the internal
4746 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4747 long, but a full 8 bytes will be written.
4749 Updated the Embedded Controller "orphan" _REG method support. This refers
4750 to _REG methods under the EC device that have no corresponding operation
4751 region. This is allowed by the ACPI specification. This update removes a
4752 dependency on the existence an ECDT table. It will execute an orphan _REG
4753 method as long as the operation region handler for the EC is installed at
4754 the EC device node and not the namespace root. Rui Zhang (original
4755 update), Bob Moore (update/integrate).
4757 Implemented run-time argument typechecking for all predefined ACPI names
4758 (_STA, _BIF, etc.) This change performs object typechecking on all
4759 incoming arguments for all predefined names executed via
4760 AcpiEvaluateObject. This ensures that ACPI-related device drivers are
4761 passing correct object types as well as the correct number of arguments
4762 (therefore identifying any issues immediately). Also, the ASL/namespace
4763 definition of the predefined name is checked against the ACPI
4764 specification for the proper argument count. Adds one new file,
4767 Changed an exception code for the ASL UnLoad() operator. Changed the
4768 exception code for the case where the input DdbHandle is invalid, from
4769 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4771 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
4772 global makefile. The use of this flag causes compiler errors on earlier
4773 versions of GCC, so it has been removed for compatibility.
4775 Miscellaneous cleanup:
4776 1) Removed some unused/obsolete macros
4777 2) Fixed a possible memory leak in the _OSI support
4778 3) Removed an unused variable in the predefined name support
4779 4) Windows OSL: remove obsolete reference to a memory list field
4781 Example Code and Data Size: These are the sizes for the OS-independent
4782 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4783 debug version of the code includes the debug output trace mechanism and
4784 has a much larger code and data size.
4787 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
4788 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
4790 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
4791 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
4794 2) iASL Compiler/Disassembler and Tools:
4796 AcpiExec: Added installation of a handler for the SystemCMOS address
4797 space. This prevents control method abort if a method accesses this
4800 AcpiExec: Added support for multiple EC devices, and now install EC
4801 operation region handler(s) at the actual EC device instead of the
4802 namespace root. This reflects the typical behavior of host operating
4805 AcpiExec: Updated to ensure that all operation region handlers are
4806 installed before the _REG methods are executed. This prevents a _REG
4807 method from aborting if it accesses an address space has no handler.
4808 AcpiExec installs a handler for every possible address space.
4810 Debugger: Enhanced the "handlers" command to display non-root handlers.
4811 This change enhances the handlers command to display handlers associated
4812 with individual devices throughout the namespace, in addition to the
4813 currently supported display of handlers associated with the root
4817 ASL Test Suite: Several test suite errors have been identified and
4818 resolved, reducing the total error count during execution. Chao Guan.
4820 ----------------------------------------
4821 28 March 2013. Summary of changes for version 20130328:
4823 1) ACPICA kernel-resident subsystem:
4825 Fixed several possible race conditions with the internal object reference
4826 counting mechanism. Some of the external ACPICA interfaces update object
4827 reference counts without holding the interpreter or namespace lock. This
4828 change adds a spinlock to protect reference count updates on the internal
4829 ACPICA objects. Reported by and with assistance from Andriy Gapon
4832 FADT support: Removed an extraneous warning for very large GPE register
4833 sets. This change removes a size mismatch warning if the legacy length
4834 field for a GPE register set is larger than the 64-bit GAS structure can
4835 accommodate. GPE register sets can be larger than the 255-bit width
4836 limitation of the GAS structure. Linn Crosetto (linn@hp.com).
4838 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
4839 return from this interface. Handles a possible timeout case if
4840 ACPI_WAIT_FOREVER is modified by the host to be a value less than
4841 "forever". Jung-uk Kim.
4843 Predefined name support: Add allowed/required argument type information
4845 the master predefined info table. This change adds the infrastructure to
4846 enable typechecking on incoming arguments for all predefined
4847 methods/objects. It does not actually contain the code that will fully
4848 utilize this information, this is still under development. Also condenses
4849 some duplicate code for the predefined names into a new module,
4850 utilities/utpredef.c
4852 Example Code and Data Size: These are the sizes for the OS-independent
4853 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4854 debug version of the code includes the debug output trace mechanism and
4855 has a much larger code and data size.
4858 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
4859 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
4861 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
4862 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
4865 2) iASL Compiler/Disassembler and Tools:
4867 iASL: Implemented a new option to simplify the development of ACPI-
4869 BIOS code. Adds support for a new "offset table" output file. The -so
4870 option will create a C table containing the AML table offsets of various
4871 named objects in the namespace so that BIOS code can modify them easily
4873 boot time. This can simplify BIOS runtime code by eliminating expensive
4874 searches for "magic values", enhancing boot times and adding greater
4875 reliability. With assistance from Lee Hamel.
4877 iASL: Allow additional predefined names to return zero-length packages.
4878 Now, all predefined names that are defined by the ACPI specification to
4879 return a "variable-length package of packages" are allowed to return a
4880 zero length top-level package. This allows the BIOS to tell the host that
4881 the requested feature is not supported, and supports existing BIOS/ASL
4884 iASL: Changed the "result not used" warning to an error. This is the case
4885 where an ASL operator is effectively a NOOP because the result of the
4886 operation is not stored anywhere. For example:
4888 There is no target (missing 3rd argument), nor is the function return
4889 value used. This is potentially a very serious problem -- since the code
4890 was probably intended to do something, but for whatever reason, the value
4891 was not stored. Therefore, this issue has been upgraded from a warning to
4894 AcpiHelp: Added allowable/required argument types to the predefined names
4895 info display. This feature utilizes the recent update to the predefined
4896 names table (above).
4898 ----------------------------------------
4899 14 February 2013. Summary of changes for version 20130214:
4901 1) ACPICA Kernel-resident Subsystem:
4903 Fixed a possible regression on some hosts: Reinstated the safe return
4904 macros (return_ACPI_STATUS, etc.) that ensure that the argument is
4905 evaluated only once. Although these macros are not needed for the ACPICA
4906 code itself, they are often used by ACPI-related host device drivers
4908 the safe feature may be necessary.
4910 Fixed several issues related to the ACPI 5.0 reduced hardware support
4911 (SOC): Now ensure that if the platform declares itself as hardware-
4913 via the FADT, the following functions become NOOPs (and always return
4914 AE_OK) because ACPI is always enabled by definition on these machines:
4920 Dynamic Object Repair: Implemented additional runtime repairs for
4921 predefined name return values. Both of these repairs can simplify code in
4922 the related device drivers that invoke these methods:
4923 1) For the _STR and _MLS names, automatically repair/convert an ASCII
4924 string to a Unicode buffer.
4925 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
4927 lone end tag descriptor in the following cases: A Return(0) was executed,
4928 a null buffer was returned, or no object at all was returned (non-slack
4929 mode only). Adds a new file, nsconvert.c
4930 ACPICA BZ 998. Bob Moore, Lv Zheng.
4932 Resource Manager: Added additional code to prevent possible infinite
4934 while traversing corrupted or ill-formed resource template buffers. Check
4935 for zero-length resource descriptors in all code that loops through
4936 resource templates (the length field is used to index through the
4937 template). This change also hardens the external AcpiWalkResources and
4938 AcpiWalkResourceBuffer interfaces.
4940 Local Cache Manager: Enhanced the main data structure to eliminate an
4941 unnecessary mechanism to access the next object in the list. Actually
4942 provides a small performance enhancement for hosts that use the local
4943 ACPICA cache manager. Jung-uk Kim.
4945 Example Code and Data Size: These are the sizes for the OS-independent
4946 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4947 debug version of the code includes the debug output trace mechanism and
4948 has a much larger code and data size.
4951 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
4952 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
4954 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
4955 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
4958 2) iASL Compiler/Disassembler and Tools:
4960 iASL/Disassembler: Fixed several issues with the definition of the ACPI
4961 5.0 RASF table (RAS Feature Table). This change incorporates late changes
4962 that were made to the ACPI 5.0 specification.
4964 iASL/Disassembler: Added full support for the following new ACPI tables:
4965 1) The MTMR table (MID Timer Table)
4966 2) The VRTC table (Virtual Real Time Clock Table).
4967 Includes header file, disassembler, table compiler, and template support
4970 iASL: Implemented compile-time validation of package objects returned by
4971 predefined names. This new feature validates static package objects
4972 returned by the various predefined names defined to return packages. Both
4973 object types and package lengths are validated, for both parent packages
4974 and sub-packages, if any. The code is similar in structure and behavior
4976 the runtime repair mechanism within the AML interpreter and uses the
4977 existing predefined name information table. Adds a new file, aslprepkg.c.
4980 iASL: Implemented auto-detection of binary ACPI tables for disassembly.
4981 This feature detects a binary file with a valid ACPI table header and
4982 invokes the disassembler automatically. Eliminates the need to
4983 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4985 iASL/Disassembler: Added several warnings for the case where there are
4986 unresolved control methods during the disassembly. This can potentially
4987 cause errors when the output file is compiled, because the disassembler
4988 assumes zero method arguments in these cases (it cannot determine the
4989 actual number of arguments without resolution/definition of the method).
4991 Debugger: Added support to display all resources with a single command.
4992 Invocation of the resources command with no arguments will now display
4994 resources within the current namespace.
4996 AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4999 ----------------------------------------
5000 17 January 2013. Summary of changes for version 20130117:
5002 1) ACPICA Kernel-resident Subsystem:
5004 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5005 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5006 objects to return a package containing one integer, most BIOS code
5008 two integers and the previous code reflects that. However, we also need
5010 support BIOS code that actually implements to the ACPI spec, and this
5011 change reflects this.
5013 Fixed two issues with the ACPI_DEBUG_PRINT macros:
5014 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5015 C compilers that require this support.
5016 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5017 ACPI_DEBUG is already used by many of the various hosts.
5019 Updated all ACPICA copyrights and signons to 2013. Added the 2013
5020 copyright to all module headers and signons, including the standard Linux
5021 header. This affects virtually every file in the ACPICA core subsystem,
5022 iASL compiler, all ACPICA utilities, and the test suites.
5024 Example Code and Data Size: These are the sizes for the OS-independent
5025 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5026 debug version of the code includes the debug output trace mechanism and
5027 has a much larger code and data size.
5030 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
5031 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
5033 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
5034 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
5037 2) iASL Compiler/Disassembler and Tools:
5039 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5040 prevent a possible fault on some hosts. Some C libraries modify the arg
5041 pointer parameter to vfprintf making it difficult to call it twice in the
5042 AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5043 does not affect the Windows OSL since the Win C library does not modify
5044 the arg pointer. Chao Guan, Bob Moore.
5046 iASL: Fixed a possible infinite loop when the maximum error count is
5047 reached. If an output file other than the .AML file is specified (such as
5048 a listing file), and the maximum number of errors is reached, do not
5049 attempt to flush data to the output file(s) as the compiler is aborting.
5050 This can cause an infinite loop as the max error count code essentially
5051 keeps calling itself.
5053 iASL/Disassembler: Added an option (-in) to ignore NOOP
5055 Implemented for both the compiler and the disassembler. Often, the NOOP
5056 opcode is used as padding for packages that are changed dynamically by
5058 BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5059 errors. This option causes the disassembler to ignore all NOOP opcodes
5060 (0xA3), and it also causes the compiler to ignore all ASL source code
5064 Debugger: Enhanced the Sleep command to execute all sleep states. This
5065 change allows Sleep to be invoked with no arguments and causes the
5066 debugger to execute all of the sleep states, 0-5, automatically.
5068 ----------------------------------------
5069 20 December 2012. Summary of changes for version 20121220:
5071 1) ACPICA Kernel-resident Subsystem:
5073 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5074 alternate entry point for AcpiWalkResources and improves the usability of
5075 the resource manager by accepting as input a buffer containing the output
5076 of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5077 input buffer is not deleted by this interface so that it can be used by
5078 the host later. See the ACPICA reference for details.
5080 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5081 (DSDT version < 2). The constant will be truncated and this warning
5082 reflects that behavior.
5084 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5085 ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5086 both get and set the new wake bit in these descriptors, separately from
5087 the existing share bit. Reported by Aaron Lu.
5089 Interpreter: Fix Store() when an implicit conversion is not possible. For
5090 example, in the cases such as a store of a string to an existing package
5091 object, implement the store as a CopyObject(). This is a small departure
5092 from the ACPI specification which states that the control method should
5094 aborted in this case. However, the ASLTS suite depends on this behavior.
5096 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5097 macros: check if debug output is currently enabled as soon as possible to
5098 minimize performance impact if debug is in fact not enabled.
5100 Source code restructuring: Cleanup to improve modularity. The following
5101 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5102 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5103 Associated makefiles and project files have been updated.
5105 Changed an exception code for LoadTable operator. For the case where one
5106 of the input strings is too long, change the returned exception code from
5107 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5109 Fixed a possible memory leak in dispatcher error path. On error, delete
5110 the mutex object created during method mutex creation. Reported by
5111 tim.gardner@canonical.com.
5113 Example Code and Data Size: These are the sizes for the OS-independent
5114 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5115 debug version of the code includes the debug output trace mechanism and
5116 has a much larger code and data size.
5119 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
5120 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5122 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
5123 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
5126 2) iASL Compiler/Disassembler and Tools:
5128 iASL: Disallow a method call as argument to the ObjectType ASL operator.
5129 This change tracks an errata to the ACPI 5.0 document. The AML grammar
5130 will not allow the interpreter to differentiate between a method and a
5131 method invocation when these are used as an argument to the ObjectType
5132 operator. The ACPI specification change is to disallow a method
5134 (UserTerm) for the ObjectType operator.
5136 Finish support for the TPM2 and CSRT tables in the headers, table
5137 compiler, and disassembler.
5139 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5140 always expires immediately if the semaphore is not available. The
5142 code was using a relative-time timeout, but sem_timedwait requires the
5144 of an absolute time.
5146 iASL: Added a remark if the Timer() operator is used within a 32-bit
5147 table. This operator returns a 64-bit time value that will be truncated
5148 within a 32-bit table.
5150 iASL Source code restructuring: Cleanup to improve modularity. The
5151 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5152 aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5156 ----------------------------------------
5157 14 November 2012. Summary of changes for version 20121114:
5159 1) ACPICA Kernel-resident Subsystem:
5161 Implemented a performance enhancement for ACPI/AML Package objects. This
5162 change greatly increases the performance of Package objects within the
5163 interpreter. It changes the processing of reference counts for packages
5165 optimizing for the most common case where the package sub-objects are
5166 either Integers, Strings, or Buffers. Increases the overall performance
5168 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
5170 Chao Guan. ACPICA BZ 943.
5172 Implemented and deployed common macros to extract flag bits from resource
5173 descriptors. Improves readability and maintainability of the code. Fixes
5175 problem with the UART serial bus descriptor for the number of data bits
5176 flags (was incorrectly 2 bits, should be 3).
5178 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5179 of the macros and changed the SETx macros to the style of (destination,
5180 source). Also added ACPI_CASTx companion macros. Lv Zheng.
5182 Example Code and Data Size: These are the sizes for the OS-independent
5183 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5184 debug version of the code includes the debug output trace mechanism and
5185 has a much larger code and data size.
5188 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
5189 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5191 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
5192 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5195 2) iASL Compiler/Disassembler and Tools:
5197 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5198 adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5199 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5201 Disassembler: Fixed a problem with external declaration generation. Fixes
5202 a problem where an incorrect pathname could be generated for an external
5203 declaration if the original reference to the object includes leading
5204 carats (^). ACPICA BZ 984.
5206 Debugger: Completed a major update for the Disassemble<method> command.
5207 This command was out-of-date and did not properly disassemble control
5208 methods that had any reasonable complexity. This fix brings the command
5210 to the same level as the rest of the disassembler. Adds one new file,
5211 dmdeferred.c, which is existing code that is now common with the main
5212 disassembler and the debugger disassemble command. ACPICA MZ 978.
5214 iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5215 Newer versions of Bison emit this prototype, so moved the prototype out
5217 the iASL header to where it is actually used in order to avoid a
5221 iASL/Tools: Standardized use of the stream I/O functions:
5222 1) Ensure check for I/O error after every fopen/fread/fwrite
5223 2) Ensure proper order of size/count arguments for fread/fwrite
5224 3) Use test of (Actual != Requested) after all fwrite, and most fread
5225 4) Standardize I/O error messages
5226 Improves reliability and maintainability of the code. Bob Moore, Lv
5230 Disassembler: Prevent duplicate External() statements. During generation
5231 of external statements, detect similar pathnames that are actually
5232 duplicates such as these:
5235 Remove all leading '\' characters from pathnames during the external
5236 statement generation so that duplicates will be detected and tossed.
5239 Tools: Replace low-level I/O with stream I/O functions. Replace
5240 open/read/write/close with the stream I/O equivalents
5241 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5244 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5245 name header so that AcpiXtract recognizes the output file/table.
5247 iASL: Remove obsolete -2 option flag. Originally intended to force the
5248 compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5249 and the entire concept is now obsolete.
5251 ----------------------------------------
5252 18 October 2012. Summary of changes for version 20121018:
5255 1) ACPICA Kernel-resident Subsystem:
5257 Updated support for the ACPI 5.0 MPST table. Fixes some problems
5258 introduced by late changes to the table as it was added to the ACPI 5.0
5259 specification. Includes header, disassembler, and data table compiler
5260 support as well as a new version of the MPST template.
5262 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
5263 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5264 methods: _HID, _CID, and _UID.
5266 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5267 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5268 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5269 names for their various drivers. Affects the AcpiGetObjectInfo external
5270 interface, and other internal interfaces as well.
5272 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5273 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5274 on machines that support non-aligned transfers. Optimizes for this case
5275 rather than using a strncpy. With assistance from Zheng Lv.
5277 Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5278 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5280 Added a new debug print message for AML mutex objects that are force-
5281 released. At control method termination, any currently acquired mutex
5282 objects are force-released. Adds a new debug-only message for each one
5285 Audited/updated all ACPICA return macros and the function debug depth
5286 counter: 1) Ensure that all functions that use the various TRACE macros
5287 also use the appropriate ACPICA return macros. 2) Ensure that all normal
5288 return statements surround the return expression (value) with parens to
5289 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5290 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5292 Global source code changes/maintenance: All extra lines at the start and
5293 end of each source file have been removed for consistency. Also, within
5294 comments, all new sentences start with a single space instead of a double
5295 space, again for consistency across the code base.
5297 Example Code and Data Size: These are the sizes for the OS-independent
5298 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5299 debug version of the code includes the debug output trace mechanism and
5300 has a much larger code and data size.
5303 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
5304 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
5306 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
5307 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5310 2) iASL Compiler/Disassembler and Tools:
5312 AcpiExec: Improved the algorithm used for memory leak/corruption
5313 detection. Added some intelligence to the code that maintains the global
5314 list of allocated memory. The list is now ordered by allocated memory
5315 address, significantly improving performance. When running AcpiExec on
5316 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5317 on the platform and/or the environment. Note, this performance
5318 enhancement affects the AcpiExec utility only, not the kernel-resident
5321 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5322 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5323 incorrect table offset reported for invalid opcodes. Report the original
5324 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5326 Disassembler: Enhanced the -vt option to emit the binary table data in
5327 hex format to assist with debugging.
5329 Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5330 size of file structure. Colin Ian King.
5332 ----------------------------------------
5333 13 September 2012. Summary of changes for version 20120913:
5336 1) ACPICA Kernel-resident Subsystem:
5338 ACPI 5.0: Added two new notify types for the Hardware Error Notification
5339 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5343 Table Manager: Merged/removed duplicate code in the root table resize
5344 functions. One function is external, the other is internal. Lv Zheng,
5348 Makefiles: Completely removed the obsolete "Linux" makefiles under
5349 acpica/generate/linux. These makefiles are obsolete and have been
5352 the generic unix makefiles under acpica/generate/unix.
5354 Makefiles: Ensure that binary files always copied properly. Minor rule
5356 to ensure that the final binary output files are always copied up to the
5357 appropriate binary directory (bin32 or bin64.)
5359 Example Code and Data Size: These are the sizes for the OS-independent
5360 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5362 version of the code includes the debug output trace mechanism and has a
5364 larger code and data size.
5367 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
5368 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
5370 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
5371 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
5374 2) iASL Compiler/Disassembler and Tools:
5376 Disassembler: Fixed a possible fault during the disassembly of resource
5377 descriptors when a second parse is required because of the invocation of
5378 external control methods within the table. With assistance from
5379 adq@lidskialf.net. ACPICA BZ 976.
5381 iASL: Fixed a namepath optimization problem. An error can occur if the
5383 node that contains the namepath to be optimized does not have a parent
5385 that is a named object. This change fixes the problem.
5387 iASL: Fixed a regression where the AML file is not deleted on errors. The
5389 output file should be deleted if there are any errors during the
5392 only exception is if the -f (force output) option is used. ACPICA BZ 974.
5394 iASL: Added a feature to automatically increase internal line buffer
5396 Via realloc(), automatically increase the internal line buffer sizes as
5397 necessary to support very long source code lines. The current version of
5399 preprocessor requires a buffer long enough to contain full source code
5401 This change increases the line buffer(s) if the input lines go beyond the
5402 current buffer size. This eliminates errors that occurred when a source
5404 line was longer than the buffer.
5406 iASL: Fixed a problem with constant folding in method declarations. The
5407 SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5409 Type3 opcode was used.
5411 Debugger: Improved command help support. For incorrect argument count,
5413 full help for the command. For help command itself, allow an argument to
5416 Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5417 errors during execution of the suite. Guan Chao.
5419 ----------------------------------------
5420 16 August 2012. Summary of changes for version 20120816:
5423 1) ACPICA Kernel-resident Subsystem:
5425 Removed all use of the deprecated _GTS and _BFS predefined methods. The
5427 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5428 deprecated and will probably be removed from the ACPI specification.
5430 does not invoke them, and reportedly never will. The final nail in the
5432 is that the ACPI specification states that these methods must be run with
5433 interrupts off, which is not going to happen in a kernel interpreter.
5435 Linux has removed all use of the methods also. It was discovered that
5436 invoking these functions caused failures on some machines, probably
5438 they were never tested since Windows does not call them. Affects two
5440 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5443 Implemented support for complex bit-packed buffers returned from the _PLD
5444 (Physical Location of Device) predefined method. Adds a new external
5445 interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5447 structure. Note: C Bitfields cannot be used for this type of predefined
5448 structure since the memory layout of individual bitfields is not defined
5450 the C language. In addition, there are endian concerns where a compiler
5452 change the bitfield ordering based on the machine type. The new ACPICA
5453 interface eliminates these issues, and should be called after _PLD is
5454 executed. ACPICA BZ 954.
5456 Implemented a change to allow a scope change to root (via "Scope (\)")
5458 execution of module-level ASL code (code that is executed at table load
5461 Added the Windows8/Server2012 string for the _OSI method. This change
5464 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
5467 Added header support for the new ACPI tables DBG2 (Debug Port Table Type
5469 and CSRT (Core System Resource Table).
5471 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5472 names. This simplifies access to the buffers returned by these predefined
5473 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5475 GPE support: Removed an extraneous parameter from the various low-level
5476 internal GPE functions. Tang Feng.
5478 Removed the linux makefiles from the unix packages. The generate/linux
5479 makefiles are obsolete and have been removed from the unix tarball
5481 packages. The replacement makefiles are under generate/unix, and there is
5483 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5485 Updates for Unix makefiles:
5486 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
5487 2) Update linker flags (move to end of command line) for AcpiExec
5491 Split ACPICA initialization functions to new file, utxfinit.c. Split from
5492 utxface.c to improve modularity and reduce file size.
5494 Example Code and Data Size: These are the sizes for the OS-independent
5495 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5496 debug version of the code includes the debug output trace mechanism and
5498 much larger code and data size.
5501 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
5502 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
5504 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
5505 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
5508 2) iASL Compiler/Disassembler and Tools:
5510 iASL: Fixed a problem with constant folding for fixed-length constant
5511 expressions. The constant-folding code was not being invoked for constant
5512 expressions that allow the use of type 3/4/5 opcodes to generate
5514 for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5516 in the generation of invalid AML bytecode. ACPICA BZ 970.
5518 iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5519 apparently automatically emit some of the necessary externals. This
5521 handles these versions in order to eliminate generation warnings.
5523 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5525 Disassembler: Add support to decode _PLD buffers. The decoded buffer
5527 within comments in the output file.
5529 Debugger: Fixed a regression with the "Threads" command where
5530 AE_BAD_PARAMETER was always returned.
5532 ----------------------------------------
5533 11 July 2012. Summary of changes for version 20120711:
5535 1) ACPICA Kernel-resident Subsystem:
5537 Fixed a possible fault in the return package object repair code. Fixes a
5538 problem that can occur when a lone package object is wrapped with an
5540 package object in order to force conformance to the ACPI specification.
5542 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5546 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5547 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5548 ARB_DIS bit must be implemented in the host-dependent C3 processor power
5550 support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5552 Intel and other vendors. (for Intel: ICH4-M and earlier)
5554 This change removes the code to disable/enable bus master arbitration
5556 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5558 resume problems on some machines. The change has been in use for over
5562 Implemented two new external interfaces to support host-directed dynamic
5564 table load and unload. They are intended to simplify the host
5566 of hot-plug support:
5567 AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5568 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5570 See the ACPICA reference for additional details. Adds one new file,
5571 components/tables/tbxfload.c
5573 Implemented and deployed two new interfaces for errors and warnings that
5575 known to be caused by BIOS/firmware issues:
5576 AcpiBiosError: Prints "ACPI Firmware Error" message.
5577 AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5578 Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5580 and FADT errors. Additional deployment to be completed as appropriate in
5582 future. The associated conditional macros are ACPI_BIOS_ERROR and
5583 ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5588 Implicit notify support: ensure that no memory allocation occurs within a
5589 critical region. This fix moves a memory allocation outside of the time
5591 spinlock is held. Fixes issues on systems that do not allow this
5595 Split exception code utilities and tables into a new file,
5598 Example Code and Data Size: These are the sizes for the OS-independent
5599 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5601 version of the code includes the debug output trace mechanism and has a
5603 larger code and data size.
5606 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
5607 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
5609 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
5610 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
5613 2) iASL Compiler/Disassembler and Tools:
5615 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5619 Debugger: Enhanced the "tables" command to emit additional information
5621 the current set of ACPI tables, including the owner ID and flags decode.
5623 Debugger: Reimplemented the "unload" command to use the new
5624 AcpiUnloadParentTable external interface. This command was disable
5626 due to need for an unload interface.
5628 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5630 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5632 ----------------------------------------
5633 20 June 2012. Summary of changes for version 20120620:
5636 1) ACPICA Kernel-resident Subsystem:
5638 Implemented support to expand the "implicit notify" feature to allow
5640 devices to be notified by a single GPE. This feature automatically
5642 runtime device notification in the absence of a BIOS-provided GPE control
5643 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5645 provided by ACPICA for Windows compatibility, and is a workaround for
5648 code errors. See the description of the AcpiSetupGpeForWake interface in
5650 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5652 Changed some comments and internal function names to simplify and ensure
5653 correctness of the Linux code translation. No functional changes.
5655 Example Code and Data Size: These are the sizes for the OS-independent
5656 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5658 version of the code includes the debug output trace mechanism and has a
5660 larger code and data size.
5663 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
5664 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
5666 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
5667 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
5670 2) iASL Compiler/Disassembler and Tools:
5672 Disassembler: Added support to emit short, commented descriptions for the
5674 predefined names in order to improve the readability of the disassembled
5675 output. ACPICA BZ 959. Changes include:
5676 1) Emit descriptions for all standard predefined names (_INI, _STA,
5679 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5680 3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5683 AcpiSrc: Fixed several long-standing Linux code translation issues.
5685 descriptions in function headers are now translated properly to lower
5688 underscores. ACPICA BZ 961. Also fixes translation problems such as
5694 local_fADT -> local_FADT
5695 execute_oSI -> execute_OSI
5697 iASL: Fixed a problem where null bytes were inadvertently emitted into
5701 iASL: Added the existing debug options to the standard help screen. There
5703 no longer two different help screens. ACPICA BZ 957.
5705 AcpiHelp: Fixed some typos in the various predefined name descriptions.
5707 expand some of the descriptions where appropriate.
5709 iASL: Fixed the -ot option (display compile times/statistics). Was not
5711 properly for standard output; only worked for the debug file case.
5713 ----------------------------------------
5714 18 May 2012. Summary of changes for version 20120518:
5717 1) ACPICA Core Subsystem:
5719 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5721 to block until asynchronous events such as notifies and GPEs have
5723 Within ACPICA, it is only called before a notify or GPE handler is
5724 removed/uninstalled. It also may be useful for the host OS within related
5725 drivers such as the Embedded Controller driver. See the ACPICA reference
5727 additional information. ACPICA BZ 868.
5729 ACPI Tables: Added a new error message for a possible overflow failure
5731 the conversion of FADT 32-bit legacy register addresses to internal
5734 bit GAS structure representation. The GAS has a one-byte "bit length"
5736 thus limiting the register length to 255 bits. ACPICA BZ 953.
5738 Example Code and Data Size: These are the sizes for the OS-independent
5739 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5741 version of the code includes the debug output trace mechanism and has a
5743 larger code and data size.
5746 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5747 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
5749 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
5750 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
5753 2) iASL Compiler/Disassembler and Tools:
5755 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
5757 This keyword was added late in the ACPI 5.0 release cycle and was not
5758 implemented until now.
5760 Disassembler: Added support for Operation Region externals. Adds missing
5761 support for operation regions that are defined in another table, and
5762 referenced locally via a Field or BankField ASL operator. Now generates
5764 correct External statement.
5766 Disassembler: Several additional fixes for the External() statement
5768 related to some ASL operators. Also, order the External() statements
5769 alphabetically in the disassembler output. Fixes the External()
5772 the Create* field, Alias, and Scope operators:
5773 1) Create* buffer field operators - fix type mismatch warning on
5775 2) Alias - implement missing External support
5776 3) Scope - fix to make sure all necessary externals are emitted.
5778 iASL: Improved pathname support. For include files, merge the prefix
5780 with the file pathname and eliminate unnecessary components. Convert
5781 backslashes in all pathnames to forward slashes, for readability. Include
5783 pathname changes affect both #include and Include() type operators.
5785 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
5787 of a valid line by inserting a newline and then returning the EOF during
5789 next call to GetNextLine. Prevents the line from being ignored due to EOF
5792 iASL: Implemented some changes to enhance the IDE support (-vi option.)
5794 and Warning messages are now correctly recognized for both the source
5796 browser and the global error and warning counts.
5798 ----------------------------------------
5799 20 April 2012. Summary of changes for version 20120420:
5802 1) ACPICA Core Subsystem:
5804 Implemented support for multiple notify handlers. This change adds
5807 allow multiple system and device notify handlers on Device, Thermal Zone,
5809 Processor objects. This can simplify the host OS notification
5811 Also re-worked and restructured the entire notify support code to
5813 handler installation, handler removal, notify event queuing, and notify
5814 dispatch to handler(s). Note: there can still only be two global notify
5815 handlers - one for system notifies and one for device notifies. There are
5817 changes to the existing handler install/remove interfaces. Lin Ming, Bob
5818 Moore, Rafael Wysocki.
5820 Fixed a regression in the package repair code where the object reference
5821 count was calculated incorrectly. Regression was introduced in the commit
5822 "Support to add Package wrappers".
5824 Fixed a couple possible memory leaks in the AML parser, in the error
5826 path. Jesper Juhl, Lin Ming.
5828 Example Code and Data Size: These are the sizes for the OS-independent
5829 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5830 debug version of the code includes the debug output trace mechanism and
5832 much larger code and data size.
5835 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5836 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5838 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5839 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
5842 2) iASL Compiler/Disassembler and Tools:
5844 iASL: Fixed a problem with the resource descriptor support where the
5846 of the StartDependentFn and StartDependentFnNoPrio descriptors were not
5847 included in cumulative descriptor offset, resulting in incorrect values
5849 resource tags within resource descriptors appearing after a
5851 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5853 iASL and Preprocessor: Implemented full support for the #line directive
5855 correctly track original source file line numbers through the .i
5857 output file - for error and warning messages.
5859 iASL: Expand the allowable byte constants for address space IDs.
5861 the allowable range was 0x80-0xFF (user-defined spaces), now the range is
5862 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
5864 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5866 iASL: Add option to completely disable the preprocessor (-Pn).
5868 iASL: Now emit all error/warning messages to standard error (stderr) by
5869 default (instead of the previous stdout).
5871 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
5873 for resource descriptor offset fix above. Update/cleanup error output
5874 routines. Enable and send iASL errors/warnings to an error logfile
5875 (error.txt). Send all other iASL output to a logfile (compiler.txt).
5877 several extraneous "unrecognized operator" messages.
5879 ----------------------------------------
5880 20 March 2012. Summary of changes for version 20120320:
5883 1) ACPICA Core Subsystem:
5885 Enhanced the sleep/wake interfaces to optionally execute the _GTS method
5886 (Going To Sleep) and the _BFS method (Back From Sleep). Windows
5888 does not execute these methods, and therefore these methods are often
5889 untested. It has been seen on some systems where the execution of these
5890 methods causes errors and also prevents the machine from entering S5. It
5892 therefore suggested that host operating systems do not execute these
5894 by default. In the future, perhaps these methods can be optionally
5896 based on the age of the system and/or what is the newest version of
5898 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
5900 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
5903 Fixed a problem where the length of the local/common FADT was set too
5905 The local FADT table length cannot be set to the common length until the
5906 original length has been examined. There is code that checks the table
5908 and sets various fields appropriately. This can affect older machines
5910 early FADT versions. For example, this can cause inadvertent writes to
5912 CST_CNT register. Julian Anastasov.
5914 Fixed a mapping issue related to a physical table override. Use the
5916 mapping mechanism for tables loaded via the physical override OSL
5918 This allows for early mapping before the virtual memory manager is
5920 Thomas Renninger, Bob Moore.
5922 Enhanced the automatic return-object repair code: Repair a common problem
5924 predefined methods that are defined to return a variable-length Package
5926 sub-objects. If there is only one sub-object, some BIOS ASL code
5928 simply returns the single object instead of a Package with one sub-
5930 This new support will repair this error by wrapping a Package object
5932 the original object, creating the correct and expected Package with one
5934 object. Names that can be repaired in this manner include: _ALR, _CSD,
5936 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
5939 Changed the exception code returned for invalid ACPI paths passed as
5940 parameters to external interfaces such as AcpiEvaluateObject. Was
5941 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
5943 Example Code and Data Size: These are the sizes for the OS-independent
5944 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5946 version of the code includes the debug output trace mechanism and has a
5948 larger code and data size.
5951 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
5952 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5954 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5955 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5958 2) iASL Compiler/Disassembler and Tools:
5960 iASL: Added the infrastructure and initial implementation of a integrated
5962 like preprocessor. This will simplify BIOS development process by
5964 the need for a separate preprocessing step during builds. On Windows, it
5966 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
5967 features including full #define() macro support are still under
5969 These preprocessor directives are supported:
5982 In addition, these new command line options are supported:
5983 -D <symbol> Define symbol for preprocessor use
5984 -li Create preprocessed output file (*.i)
5985 -P Preprocess only and create preprocessor output file (*.i)
5987 Table Compiler: Fixed a problem where the equals operator within an
5989 did not work properly.
5991 Updated iASL to use the current versions of Bison/Flex. Updated the
5993 project file to invoke these tools from the standard location. ACPICA BZ
5996 Flex for Windows: V2.5.4
5997 Bison for Windows: V2.4.1
5999 ----------------------------------------
6000 15 February 2012. Summary of changes for version 20120215:
6003 1) ACPICA Core Subsystem:
6005 There have been some major changes to the sleep/wake support code, as
6006 described below (a - e).
6008 a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6009 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6010 AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6012 time the _BFS method is called and the _WAK method is called. NOTE: all
6014 must update their wake/resume code or else sleep/wake will not work
6018 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6020 method. Some machines require that the GPEs are enabled before the _WAK
6022 is executed. Thomas Renninger.
6024 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6026 Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6028 determine whether the system is rebooting or resuming. Matthew Garrett.
6030 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6032 match the ACPI specification requirement. Rafael Wysocki.
6034 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6035 registers within the V5 FADT. This support adds two new files:
6036 hardware/hwesleep.c implements the support for the new registers. Moved
6038 sleep/wake external interfaces to hardware/hwxfsleep.c.
6041 Added a new OSL interface for ACPI table overrides,
6042 AcpiOsPhysicalTableOverride. This interface allows the host to override a
6043 table via a physical address, instead of the logical address required by
6044 AcpiOsTableOverride. This simplifies the host implementation. Initial
6045 implementation by Thomas Renninger. The ACPICA implementation creates a
6047 shared function for table overrides that attempts both a logical and a
6050 Expanded the OSL memory read/write interfaces to 64-bit data
6051 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6052 transfer support for GAS register structures passed to AcpiRead and
6055 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6057 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6059 See the ACPICA reference for details. ACPICA BZ 942. This option removes
6061 10% of the code and 5% of the static data, and the following hardware
6063 features become unavailable:
6064 PM Event and Control registers
6065 SCI interrupt (and handler)
6067 General Purpose Events (GPEs)
6070 FACS table (Waking vectors and Global Lock)
6072 Updated the unix tarball directory structure to match the ACPICA git
6074 tree. This ensures that the generic unix makefiles work properly (in
6075 generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
6078 Updated the return value of the _REV predefined method to integer value 5
6080 reflect ACPI 5.0 support.
6082 Moved the external ACPI PM timer interface prototypes to the public
6084 file where they belong.
6086 Example Code and Data Size: These are the sizes for the OS-independent
6087 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6089 version of the code includes the debug output trace mechanism and has a
6091 larger code and data size.
6094 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
6095 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
6097 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
6098 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
6101 2) iASL Compiler/Disassembler and Tools:
6103 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6104 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6105 incorrectly displayed.
6107 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6110 ----------------------------------------
6111 11 January 2012. Summary of changes for version 20120111:
6114 1) ACPICA Core Subsystem:
6116 Implemented a new mechanism to allow host device drivers to check for
6118 range conflicts with ACPI Operation Regions. Both SystemMemory and
6120 address spaces are supported. A new external interface,
6121 AcpiCheckAddressRange,
6122 allows drivers to check an address range against the ACPI namespace. See
6124 ACPICA reference for additional details. Adds one new file,
6125 utilities/utaddress.c. Lin Ming, Bob Moore.
6127 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6130 Status registers, update the ACPI 5.0 flags, and update internal data
6131 structures to handle an FADT larger than 256 bytes. The size of the ACPI
6135 Updated all ACPICA copyrights and signons to 2012. Added the 2012
6137 all module headers and signons, including the standard Linux header. This
6138 affects virtually every file in the ACPICA core subsystem, iASL compiler,
6140 all ACPICA utilities.
6142 Example Code and Data Size: These are the sizes for the OS-independent
6143 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6145 version of the code includes the debug output trace mechanism and has a
6147 larger code and data size.
6150 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
6151 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
6153 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
6154 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
6157 2) iASL Compiler/Disassembler and Tools:
6159 Disassembler: fixed a problem with the automatic resource tag generation
6160 support. Fixes a problem where the resource tags are inadvertently not
6161 constructed if the table being disassembled contains external references
6163 control methods. Moved the actual construction of the tags to after the
6165 namespace is constructed (after 2nd parse is invoked due to external
6167 method references.) ACPICA BZ 941.
6169 Table Compiler: Make all "generic" operators caseless. These are the
6171 like UINT8, String, etc. Making these caseless improves ease-of-use.
6175 ----------------------------------------
6176 23 November 2011. Summary of changes for version 20111123:
6178 0) ACPI 5.0 Support:
6180 This release contains full support for the ACPI 5.0 specification, as
6183 Reduced Hardware Support:
6184 -------------------------
6186 This support allows for ACPI systems without the usual ACPI hardware.
6188 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6190 not attempt to initialize or use any of the usual ACPI hardware. Note,
6192 this flag is set, all of the following ACPI hardware is assumed to be not
6193 present and is not initialized or accessed:
6195 General Purpose Events (GPEs)
6196 Fixed Events (PM1a/PM1b and PM Control)
6197 Power Management Timer and Console Buttons (power/sleep)
6198 Real-time Clock Alarm
6200 System Control Interrupt (SCI)
6201 The FACS is assumed to be non-existent
6206 All new tables and updates to existing tables are fully supported in the
6207 ACPICA headers (for use by device drivers), the disassembler, and the
6209 Data Table Compiler. ACPI 5.0 defines these new tables:
6211 BGRT /* Boot Graphics Resource Table */
6212 DRTM /* Dynamic Root of Trust for Measurement table */
6213 FPDT /* Firmware Performance Data Table */
6214 GTDT /* Generic Timer Description Table */
6215 MPST /* Memory Power State Table */
6216 PCCT /* Platform Communications Channel Table */
6217 PMTT /* Platform Memory Topology Table */
6218 RASF /* RAS Feature table */
6220 Operation Regions/SpaceIDs:
6221 ---------------------------
6223 All new operation regions are fully supported by the iASL compiler, the
6224 disassembler, and the ACPICA runtime code (for dispatch to region
6226 The new operation region Space IDs are:
6231 Resource Descriptors:
6232 ---------------------
6234 All new ASL resource descriptors are fully supported by the iASL
6237 ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6239 all new predefined resource tags). New descriptors are:
6248 ASL/AML Operators, New and Modified:
6249 ------------------------------------
6251 One new operator is added, the Connection operator, which is used to
6253 a GeneralPurposeIo or GenericSerialBus resource descriptor with
6255 field objects within an operation region. Several new protocols are
6257 with the AccessAs operator. All are fully supported by the iASL compiler,
6258 disassembler, and runtime ACPICA AML interpreter:
6260 Connection // Declare Field Connection
6262 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
6263 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
6265 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6266 RawDataBuffer // Data type for Vendor Data
6269 Predefined ASL/AML Objects:
6270 ---------------------------
6272 All new predefined objects/control-methods are supported by the iASL
6274 and the ACPICA runtime validation/repair (arguments and return values.)
6276 predefined names include the following:
6278 Standard Predefined Names (Objects or Control Methods):
6279 _AEI, _CLS, _CPC, _CWS, _DEP,
6280 _DLM, _EVT, _GCP, _CRT, _GWS,
6281 _HRV, _PRE, _PSE, _SRT, _SUB.
6283 Resource Tags (Names used to access individual fields within resource
6285 _DBT, _DPL, _DRS, _END, _FLC,
6286 _IOR, _LIN, _MOD, _PAR, _PHA,
6287 _PIN, _PPI, _POL, _RXL, _SLV,
6288 _SPE, _STB, _TXL, _VEN.
6290 ACPICA External Interfaces:
6291 ---------------------------
6293 Several new interfaces have been defined for use by ACPI-related device
6294 drivers and other host OS services:
6296 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6298 acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6299 provided by the BIOS. They are intended to be used in conjunction with
6301 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6302 mutual exclusion with the AML code/interpreter.
6304 AcpiGetEventResources: Returns the (formatted) resource descriptors as
6306 by the ACPI 5.0 _AEI object (ACPI Event Information). This object
6308 resource descriptors associated with hardware-reduced platform events,
6310 to the AcpiGetCurrentResources interface.
6312 Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6313 operation regions, information about the Connection() object and any
6315 length information is passed to the region handler within the Context
6318 AcpiBufferToResource: This interface converts a raw AML buffer containing
6320 resource template or resource descriptor to the ACPI_RESOURCE internal
6322 suitable for use by device drivers. Can be used by an operation region
6324 to convert the Connection() buffer object into a ACPI_RESOURCE.
6326 Miscellaneous/Tools/TestSuites:
6327 -------------------------------
6329 Support for extended _HID names (Four alpha characters instead of three).
6330 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6331 Support for ACPI 5.0 features in the ASLTS test suite.
6332 Fully updated documentation (ACPICA and iASL reference documents.)
6334 ACPI Table Definition Language:
6335 -------------------------------
6337 Support for this language was implemented and released as a subsystem of
6339 iASL compiler in 2010. (See the iASL compiler User Guide.)
6342 Non-ACPI 5.0 changes for this release:
6343 --------------------------------------
6345 1) ACPICA Core Subsystem:
6347 Fix a problem with operation region declarations where a failure can
6350 the region name and an argument that evaluates to an object (such as the
6351 region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6354 Do not abort an ACPI table load if an invalid space ID is found within.
6356 will be caught later if the offending method is executed. ACPICA BZ 925.
6358 Fixed an issue with the FFixedHW space ID where the ID was not always
6359 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6361 Fixed a problem with the 32-bit generation of the unix-specific OSL
6362 (osunixxf.c). Lin Ming, ACPICA BZ 936.
6364 Several changes made to enable generation with the GCC 4.6 compiler.
6368 New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6370 field registers out-of-range.
6372 2) iASL Compiler/Disassembler and Tools:
6374 iASL: Implemented the __PATH__ operator, which returns the full pathname
6376 the current source file.
6378 AcpiHelp: Automatically display expanded keyword information for all ASL
6381 Debugger: Add "Template" command to disassemble/dump resource template
6384 Added a new master script to generate and execute the ASLTS test suite.
6385 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6387 iASL: Fix problem with listing generation during processing of the
6389 operator where AML listing was disabled until the entire Switch block was
6392 iASL: Improve support for semicolon statement terminators. Fix "invalid
6393 character" message for some cases when the semicolon is used. Semicolons
6395 now allowed after every <Term> grammar element. ACPICA BZ 927.
6397 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6400 Disassembler: Fix problem with disassembly of the DataTableRegion
6402 where an inadvertent "Unhandled deferred opcode" message could be
6405 3) Example Code and Data Size
6407 These are the sizes for the OS-independent acpica.lib produced by the
6408 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6409 includes the debug output trace mechanism and has a much larger code and
6414 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6415 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6417 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
6418 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
6420 ----------------------------------------
6421 22 September 2011. Summary of changes for version 20110922:
6425 Support for ACPI 5.0 in ACPICA has been underway for several months and
6427 be released at the same time that ACPI 5.0 is officially released.
6429 The ACPI 5.0 specification is on track for release in the next few
6432 1) ACPICA Core Subsystem:
6434 Fixed a problem where the maximum sleep time for the Sleep() operator was
6435 intended to be limited to two seconds, but was inadvertently limited to
6439 Linux and Unix makefiles: Added header file dependencies to ensure
6441 generation of ACPICA core code and utilities. Also simplified the
6443 considerably through the use of the vpath variable to specify search
6447 2) iASL Compiler/Disassembler and Tools:
6449 iASL: Implemented support to check the access length for all fields
6451 access named Resource Descriptor fields. For example, if a resource field
6453 defined to be two bits, a warning is issued if a CreateXxxxField() is
6455 with an incorrect bit length. This is implemented for all current
6457 descriptor names. ACPICA BZ 930.
6459 Disassembler: Fixed a byte ordering problem with the output of 24-bit and
6463 iASL: Fixed a couple of issues associated with variable-length package
6464 objects. 1) properly handle constants like One, Ones, Zero -- do not make
6466 VAR_PACKAGE when these are used as a package length. 2) Allow the
6468 opcode (in addition to PACKAGE) when validating object types for
6472 iASL: Emit statistics for all output files (instead of just the ASL input
6474 AML output). Includes listings, hex files, etc.
6476 iASL: Added -G option to the table compiler to allow the compilation of
6478 ACPI tables. The only part of a table that is required is the standard
6483 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6485 which also adds correct 64-bit support. Also, now all output filenames
6487 completely lower case.
6489 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6490 loading table files. A warning is issued for any such tables. The only
6491 exception is an FADT. This also fixes a possible fault when attempting to
6493 non-AML tables. ACPICA BZ 932.
6495 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6497 missing table terminator could cause a fault when using the -p option.
6499 AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6502 3) Example Code and Data Size
6504 These are the sizes for the OS-independent acpica.lib produced by the
6505 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6506 includes the debug output trace mechanism and has a much larger code and
6510 Previous Release (VC 9.0):
6511 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6512 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6513 Current Release (VC 9.0):
6514 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6515 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6518 ----------------------------------------
6519 23 June 2011. Summary of changes for version 20110623:
6521 1) ACPI CA Core Subsystem:
6523 Updated the predefined name repair mechanism to not attempt repair of a
6525 return object if a _PSS object is present. We can only sort the _TSS
6527 package if there is no _PSS within the same scope. This is because if
6530 present, the ACPI specification dictates that the _TSS Power Dissipation
6532 is to be ignored, and therefore some BIOSs leave garbage values in the
6534 Power field(s). In this case, it is best to just return the _TSS package
6536 is. Reported by, and fixed with assistance from Fenghua Yu.
6538 Added an option to globally disable the control method return value
6540 and repair. This runtime option can be used to disable return value
6543 this is causing a problem on a particular machine. Also added an option
6545 AcpiExec (-dr) to set this disable flag.
6547 All makefiles and project files: Major changes to improve generation of
6549 tools. ACPICA BZ 912:
6550 Reduce default optimization levels to improve compatibility
6551 For Linux, add strict-aliasing=0 for gcc 4
6552 Cleanup and simplify use of command line defines
6553 Cleanup multithread library support
6554 Improve usage messages
6556 Linux-specific header: update handling of THREAD_ID and pthread. For the
6558 bit case, improve casting to eliminate possible warnings, especially with
6562 Example Code and Data Size: These are the sizes for the OS-independent
6563 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6565 version of the code includes the debug output trace mechanism and has a
6567 larger code and data size.
6569 Previous Release (VC 9.0):
6570 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
6571 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6572 Current Release (VC 9.0):
6573 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6574 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6576 2) iASL Compiler/Disassembler and Tools:
6578 With this release, a new utility named "acpihelp" has been added to the
6580 package. This utility summarizes the ACPI specification chapters for the
6582 and AML languages. It generates under Linux/Unix as well as Windows, and
6583 provides the following functionality:
6584 Find/display ASL operator(s) -- with description and syntax.
6585 Find/display ASL keyword(s) -- with exact spelling and descriptions.
6586 Find/display ACPI predefined name(s) -- with description, number
6587 of arguments, and the return value data type.
6588 Find/display AML opcode name(s) -- with opcode, arguments, and
6590 Decode/display AML opcode -- with opcode name, arguments, and
6593 Service Layers: Make multi-thread support configurable. Conditionally
6595 the multi-thread support so that threading libraries will not be linked
6598 necessary. The only tool that requires multi-thread support is AcpiExec.
6600 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6602 Bison appear to want the interface to yyerror to be a const char * (or at
6603 least this is a problem when generating iASL on some systems.) ACPICA BZ
6607 Tools: Fix for systems where O_BINARY is not defined. Only used for
6609 versions of the tools.
6611 ----------------------------------------
6612 27 May 2011. Summary of changes for version 20110527:
6614 1) ACPI CA Core Subsystem:
6616 ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6618 signature. Now, only allow SSDT, OEMx, and a null signature. History:
6619 1) Originally, we checked the table signature for "SSDT" or "PSDT".
6620 (PSDT is now obsolete.)
6621 2) We added support for OEMx tables, signature "OEM" plus a fourth
6622 "don't care" character.
6623 3) Valid tables were encountered with a null signature, so we just
6624 gave up on validating the signature, (05/2008).
6625 4) We encountered non-AML tables such as the MADT, which caused
6626 interpreter errors and kernel faults. So now, we once again allow
6627 only SSDT, OEMx, and now, also a null signature. (05/2011).
6629 Added the missing _TDL predefined name to the global name list in order
6631 enable validation. Affects both the core ACPICA code and the iASL
6634 Example Code and Data Size: These are the sizes for the OS-independent
6635 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6637 version of the code includes the debug output trace mechanism and has a
6639 larger code and data size.
6641 Previous Release (VC 9.0):
6642 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
6643 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
6644 Current Release (VC 9.0):
6645 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
6646 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6648 2) iASL Compiler/Disassembler and Tools:
6650 Debugger/AcpiExec: Implemented support for "complex" method arguments on
6652 debugger command line. This adds support beyond simple integers --
6654 Strings, Buffers, and Packages. Includes support for nested packages.
6655 Increased the default command line buffer size to accommodate these
6657 See the ACPICA reference for details and syntax. ACPICA BZ 917.
6659 Debugger/AcpiExec: Implemented support for "default" method arguments for
6661 Execute/Debug command. Now, the debugger will always invoke a control
6663 with the required number of arguments -- even if the command line
6665 none or insufficient arguments. It uses default integer values for any
6667 arguments. Also fixes a bug where only six method arguments maximum were
6668 supported instead of the required seven.
6670 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6672 also return status in order to prevent buffer overruns. See the ACPICA
6673 reference for details and syntax. ACPICA BZ 921
6675 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6676 makefiles to simplify support for the two different but similar parser
6677 generators, bison and yacc.
6679 Updated the generic unix makefile for gcc 4. The default gcc version is
6681 expected to be 4 or greater, since options specific to gcc 4 are used.
6683 ----------------------------------------
6684 13 April 2011. Summary of changes for version 20110413:
6686 1) ACPI CA Core Subsystem:
6688 Implemented support to execute a so-called "orphan" _REG method under the
6690 device. This change will force the execution of a _REG method underneath
6693 device even if there is no corresponding operation region of type
6694 EmbeddedControl. Fixes a problem seen on some machines and apparently is
6695 compatible with Windows behavior. ACPICA BZ 875.
6697 Added more predefined methods that are eligible for automatic NULL
6699 element removal. This change adds another group of predefined names to
6702 of names that can be repaired by having NULL package elements dynamically
6703 removed. This group are those methods that return a single variable-
6705 package containing simple data types such as integers, buffers, strings.
6707 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6710 and _TZD. ACPICA BZ 914.
6712 Split and segregated all internal global lock functions to a new file,
6715 Updated internal address SpaceID for DataTable regions. Moved this
6718 id in preparation for ACPI 5.0 changes that will include some new space
6721 change should not affect user/host code.
6723 Example Code and Data Size: These are the sizes for the OS-independent
6725 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6727 the code includes the debug output trace mechanism and has a much larger
6732 Previous Release (VC 9.0):
6733 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
6734 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
6735 Current Release (VC 9.0):
6736 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
6737 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
6739 2) iASL Compiler/Disassembler and Tools:
6741 iASL/DTC: Major update for new grammar features. Allow generic data types
6743 custom ACPI tables. Field names are now optional. Any line can be split
6745 multiple lines using the continuation char (\). Large buffers now use
6747 continuation character(s) and no colon on the continuation lines. See the
6749 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
6752 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
6754 Since the parser stuffs a "zero" as the return value for these statements
6757 the underlying AML grammar), they were seen as "return with value" by the
6759 semantic checking. They are now seen correctly as "null" return
6762 iASL: Check if a_REG declaration has a corresponding Operation Region.
6764 check for each _REG to ensure that there is in fact a corresponding
6766 region declaration in the same scope. If not, the _REG method is not very
6768 since it probably won't be executed. ACPICA BZ 915.
6770 iASL/DTC: Finish support for expression evaluation. Added a new
6773 that implements c-style operator precedence and parenthesization. ACPICA
6777 Disassembler/DTC: Remove support for () and <> style comments in data
6780 that DTC has full expression support, we don't want to have comment
6783 start with a parentheses or a less-than symbol. Now, only the standard /*
6786 comments are supported, as well as the bracket [] comments.
6788 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
6790 headers in the acpidump file. Update the header validation to support
6792 tables. Problem introduced in previous AcpiXtract version in the change
6794 support "wrong checksum" error messages emitted by acpidump utility.
6796 iASL: Add a * option to generate all template files (as a synonym for
6800 "iasl -T *" or "iasl -T ALL".
6802 iASL/DTC: Do not abort compiler on fatal errors. We do not want to
6804 abort the compiler on "fatal" errors, simply should abort the current
6806 This allows multiple compiles with a single (possibly wildcard) compiler
6809 ----------------------------------------
6810 16 March 2011. Summary of changes for version 20110316:
6812 1) ACPI CA Core Subsystem:
6814 Fixed a problem caused by a _PRW method appearing at the namespace root
6816 during the setup of wake GPEs. A fault could occur if a _PRW directly
6819 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
6821 Implemented support for "spurious" Global Lock interrupts. On some
6823 global lock interrupt can occur without the pending flag being set. Upon
6826 interrupt, we now ensure that a thread is actually waiting for the lock
6828 signaling GL availability. Rafael Wysocki, Bob Moore.
6830 Example Code and Data Size: These are the sizes for the OS-independent
6832 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6834 the code includes the debug output trace mechanism and has a much larger
6839 Previous Release (VC 9.0):
6840 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
6841 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
6842 Current Release (VC 9.0):
6843 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
6844 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
6846 2) iASL Compiler/Disassembler and Tools:
6848 Implemented full support for the "SLIC" ACPI table. Includes support in
6850 header files, disassembler, table compiler, and template generator. Bob
6854 AcpiXtract: Correctly handle embedded comments and messages from
6856 Apparently some or all versions of acpidump will occasionally emit a
6859 "Wrong checksum", etc., into the dump file. This was causing problems for
6860 AcpiXtract. ACPICA BZ 905.
6862 iASL: Fix the Linux makefile by removing an inadvertent double file
6866 AcpiExec: Update installation of operation region handlers. Install one
6868 for a user-defined address space. This is used by the ASL test suite
6871 ----------------------------------------
6872 11 February 2011. Summary of changes for version 20110211:
6874 1) ACPI CA Core Subsystem:
6876 Added a mechanism to defer _REG methods for some early-installed
6878 Most user handlers should be installed before call to
6879 AcpiEnableSubsystem.
6880 However, Event handlers and region handlers should be installed after
6881 AcpiInitializeObjects. Override handlers for the "default" regions should
6883 installed early, however. This change executes all _REG methods for the
6884 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
6885 chicken/egg issues between them. ACPICA BZ 848.
6887 Implemented an optimization for GPE detection. This optimization will
6889 ignore GPE registers that contain no enabled GPEs -- there is no need to
6890 read the register since this information is available internally. This
6891 becomes more important on machines with a large GPE space. ACPICA
6893 884. Lin Ming. Suggestion from Joe Liu.
6895 Removed all use of the highly unreliable FADT revision field. The
6897 number in the FADT has been found to be completely unreliable and cannot
6899 trusted. Only the actual table length can be used to infer the version.
6901 change updates the ACPICA core and the disassembler so that both no
6903 even look at the FADT version and instead depend solely upon the FADT
6906 Fix an unresolved name issue for the no-debug and no-error-message source
6907 generation cases. The _AcpiModuleName was left undefined in these cases,
6909 it is actually needed as a parameter to some interfaces. Define
6910 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
6912 Split several large files (makefiles and project files updated)
6913 utglobal.c -> utdecode.c
6914 dbcomds.c -> dbmethod.c dbnames.c
6915 dsopcode.c -> dsargs.c dscontrol.c
6916 dsload.c -> dsload2.c
6917 aslanalyze.c -> aslbtypes.c aslwalks.c
6919 Example Code and Data Size: These are the sizes for the OS-independent
6920 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6921 debug version of the code includes the debug output trace mechanism and
6923 a much larger code and data size.
6925 Previous Release (VC 9.0):
6926 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
6927 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
6928 Current Release (VC 9.0):
6929 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
6930 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
6932 2) iASL Compiler/Disassembler and Tools:
6934 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
6935 These are useful C-style macros with the standard definitions. ACPICA
6938 iASL/DTC: Added support for integer expressions and labels. Support for
6940 expressions for all integer fields in all ACPI tables. Support for labels
6942 "generic" portions of tables such as UEFI. See the iASL reference manual.
6944 Debugger: Added a command to display the status of global handlers. The
6945 "handlers" command will display op region, fixed event, and miscellaneous
6946 global handlers. installation status -- and for op regions, whether
6948 or user-installed handler will be used.
6950 iASL: Warn if reserved method incorrectly returns a value. Many
6952 names are defined such that they do not return a value. If implemented as
6954 method, issue a warning if such a name explicitly returns a value. ACPICA
6957 iASL: Added detection of GPE method name conflicts. Detects a conflict
6959 there are two GPE methods of the form _Lxy and _Exy in the same scope.
6961 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6963 iASL/DTC: Fixed a couple input scanner issues with comments and line
6964 numbers. Comment remover could get confused and miss a comment ending.
6966 a problem with line counter maintenance.
6968 iASL/DTC: Reduced the severity of some errors from fatal to error. There
6970 no need to abort on simple errors within a field definition.
6972 Debugger: Simplified the output of the help command. All help output now
6974 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6976 ----------------------------------------
6977 12 January 2011. Summary of changes for version 20110112:
6979 1) ACPI CA Core Subsystem:
6981 Fixed a race condition between method execution and namespace walks that
6983 possibly cause a fault. The problem was apparently introduced in version
6984 20100528 as a result of a performance optimization that reduces the
6987 namespace walks upon method exit by using the delete_namespace_subtree
6988 function instead of the delete_namespace_by_owner function used
6990 Bug is a missing namespace lock in the delete_namespace_subtree function.
6991 dana.myers@oracle.com
6993 Fixed several issues and a possible fault with the automatic "serialized"
6994 method support. History: This support changes a method to "serialized" on
6996 fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6997 possibility that it cannot handle reentrancy. This fix repairs a couple
6999 issues seen in the field, especially on machines with many cores:
7001 1) Delete method children only upon the exit of the last thread,
7002 so as to not delete objects out from under other running threads
7003 (and possibly causing a fault.)
7004 2) Set the "serialized" bit for the method only upon the exit of the
7005 Last thread, so as to not cause deadlock when running threads
7007 3) Cleanup the use of the AML "MethodFlags" and internal method flags
7008 so that there is no longer any confusion between the two.
7010 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7012 Debugger: Now lock the namespace for duration of a namespace dump.
7014 issues if the namespace is changing dynamically underneath the debugger.
7015 Especially affects temporary namespace nodes, since the debugger displays
7018 Updated the ordering of include files. The ACPICA headers should appear
7019 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7021 any necessary compiler-specific defines, etc. Affects the ACPI-related
7025 Updated all ACPICA copyrights and signons to 2011. Added the 2011
7027 to all module headers and signons, including the Linux header. This
7029 virtually every file in the ACPICA core subsystem, iASL compiler, and all
7032 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7033 project files for VC++ 6.0 are now obsolete. New project files can be
7035 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7038 Example Code and Data Size: These are the sizes for the OS-independent
7039 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7040 debug version of the code includes the debug output trace mechanism and
7042 much larger code and data size.
7044 Previous Release (VC 6.0):
7045 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
7046 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
7047 Current Release (VC 9.0):
7048 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
7049 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
7051 2) iASL Compiler/Disassembler and Tools:
7053 iASL: Added generic data types to the Data Table compiler. Add "generic"
7055 types such as UINT32, String, Unicode, etc., to simplify the generation
7057 platform-defined tables such as UEFI. Lin Ming.
7059 iASL: Added listing support for the Data Table Compiler. Adds listing
7061 (-l) to display actual binary output for each line of input code.
7063 ----------------------------------------
7064 09 December 2010. Summary of changes for version 20101209:
7066 1) ACPI CA Core Subsystem:
7068 Completed the major overhaul of the GPE support code that was begun in
7070 2010. Major features include: removal of _PRW execution in ACPICA (host
7071 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7072 changes to existing interfaces, simplification of GPE handler operation,
7074 a handful of new interfaces:
7080 One new file, evxfgpe.c to consolidate all external GPE interfaces.
7082 See the ACPICA Programmer Reference for full details and programming
7083 information. See the new section 4.4 "General Purpose Event (GPE)
7085 for a full overview, and section 8.7 "ACPI General Purpose Event
7087 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7089 Bob Moore, Rafael Wysocki.
7091 Implemented a new GPE feature for Windows compatibility, the "Implicit
7093 GPE Notify". This feature will automatically issue a Notify(2) on a
7095 when a Wake GPE is received if there is no corresponding GPE method or
7096 handler. ACPICA BZ 870.
7098 Fixed a problem with the Scope() operator during table parse and load
7100 During load phase (table load or method execution), the scope operator
7102 not enter the target into the namespace. Instead, it should open a new
7104 at the target location. Linux BZ 19462, ACPICA BZ 882.
7106 Example Code and Data Size: These are the sizes for the OS-independent
7107 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7108 debug version of the code includes the debug output trace mechanism and
7110 much larger code and data size.
7113 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
7114 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
7116 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7117 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7119 2) iASL Compiler/Disassembler and Tools:
7121 iASL: Relax the alphanumeric restriction on _CID strings. These strings
7123 "bus-specific" per the ACPI specification, and therefore any characters
7125 acceptable. The only checks that can be performed are for a null string
7127 perhaps for a leading asterisk. ACPICA BZ 886.
7129 iASL: Fixed a problem where a syntax error that caused a premature EOF
7130 condition on the source file emitted a very confusing error message. The
7131 premature EOF is now detected correctly. ACPICA BZ 891.
7133 Disassembler: Decode the AccessSize within a Generic Address Structure
7135 access, word access, etc.) Note, this field does not allow arbitrary bit
7136 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7138 New: AcpiNames utility - Example namespace dump utility. Shows an example
7140 ACPICA configuration for a minimal namespace dump utility. Uses table and
7141 namespace managers, but no AML interpreter. Does not add any
7143 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7144 partition and configure ACPICA. ACPICA BZ 883.
7146 AML Debugger: Increased the debugger buffer size for method return
7148 Was 4K, increased to 16K. Also enhanced error messages for debugger
7150 execution, including the buffer overflow case.
7152 ----------------------------------------
7153 13 October 2010. Summary of changes for version 20101013:
7155 1) ACPI CA Core Subsystem:
7157 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7159 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7160 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7162 Changed the type of the predefined namespace object _TZ from ThermalZone
7164 Device. This was found to be confusing to the host software that
7166 the various thermal zones, since _TZ is not really a ThermalZone.
7169 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7172 Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7173 string is "Windows 2006 SP2".
7175 Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7177 code automatically repairs _HID-related strings, this type of code is no
7178 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7181 Example Code and Data Size: These are the sizes for the OS-independent
7182 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7183 debug version of the code includes the debug output trace mechanism and
7185 much larger code and data size.
7188 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7189 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7191 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7192 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7194 2) iASL Compiler/Disassembler and Tools:
7196 iASL: Implemented additional compile-time validation for _HID strings.
7198 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7201 the string must be exactly seven or eight characters. For both _HID and
7203 strings, all characters must be alphanumeric. ACPICA BZ 874.
7205 iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7206 descriptors that are mostly or all zeros, with the expectation that they
7208 be filled in at runtime. iASL now allows this as long as there is a
7210 tag" (name) associated with the descriptor, which gives the ASL a handle
7211 needed to modify the descriptor. ACPICA BZ 873.
7213 Added single-thread support to the generic Unix application OSL.
7215 for iASL support, this change removes the use of semaphores in the
7217 threaded ACPICA tools/applications - increasing performance. The
7218 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7219 option. ACPICA BZ 879.
7221 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7223 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7225 iASL: Moved all compiler messages to a new file, aslmessages.h.
7227 ----------------------------------------
7228 15 September 2010. Summary of changes for version 20100915:
7230 1) ACPI CA Core Subsystem:
7232 Removed the AcpiOsDerivePciId OSL interface. The various host
7234 of this function were not OS-dependent and are now obsolete and can be
7235 removed from all host OSLs. This function has been replaced by
7236 AcpiHwDerivePciId, which is now part of the ACPICA core code.
7237 AcpiHwDerivePciId has been implemented without recursion. Adds one new
7238 module, hwpci.c. ACPICA BZ 857.
7240 Implemented a dynamic repair for _HID and _CID strings. The following
7241 problems are now repaired at runtime: 1) Remove a leading asterisk in the
7242 string, and 2) the entire string is uppercased. Both repairs are in
7243 accordance with the ACPI specification and will simplify host driver
7247 The ACPI_THREAD_ID type is no longer configurable, internally it is now
7248 always UINT64. This simplifies the ACPICA code, especially any printf
7250 UINT64 is the only common data type for all thread_id types across all
7251 operating systems. It is now up to the host OSL to cast the native
7253 type to UINT64 before returning the value to ACPICA (via
7255 Lin Ming, Bob Moore.
7257 Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7259 keyword is not standard across compilers, and this type allows inline to
7261 configured on a per-compiler basis. Lin Ming.
7263 Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7265 Added an extern for this boolean in acpixf.h. Some hosts utilize this
7267 during suspend/restore operations. ACPICA BZ 869.
7269 All code that implements error/warning messages with the "ACPI:" prefix
7271 been moved to a new module, utxferror.c.
7273 The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7275 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7277 Example Code and Data Size: These are the sizes for the OS-independent
7278 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7279 debug version of the code includes the debug output trace mechanism and
7281 much larger code and data size.
7284 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
7285 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
7287 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7288 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7290 2) iASL Compiler/Disassembler and Tools:
7292 iASL/Disassembler: Write ACPI errors to stderr instead of the output
7294 This keeps the output files free of random error messages that may
7296 from within the namespace/interpreter code. Used this opportunity to
7298 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7299 866. Lin Ming, Bob Moore.
7301 Tools: update some printfs for ansi warnings on size_t. Handle width
7303 of size_t on 32-bit versus 64-bit generations. Lin Ming.
7305 ----------------------------------------
7306 06 August 2010. Summary of changes for version 20100806:
7308 1) ACPI CA Core Subsystem:
7310 Designed and implemented a new host interface to the _OSI support code.
7312 will allow the host to dynamically add or remove multiple _OSI strings,
7314 well as install an optional handler that is called for each _OSI
7316 Also added a new AML debugger command, 'osi' to display and modify the
7318 _OSI string table, and test support in the AcpiExec utility. See the
7320 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7322 AcpiInstallInterface - Add an _OSI string.
7323 AcpiRemoveInterface - Delete an _OSI string.
7324 AcpiInstallInterfaceHandler - Install optional _OSI handler.
7326 AcpiOsValidateInterface - no longer used.
7328 source/components/utilities/utosi.c
7330 Re-introduced the support to enable multi-byte transfers for Embedded
7331 Controller (EC) operation regions. A reported problem was found to be a
7333 in the host OS, not in the multi-byte support. Previously, the maximum
7335 size passed to the EC operation region handler was a single byte. There
7337 often EC Fields larger than one byte that need to be transferred, and it
7339 useful for the EC driver to lock these as a single transaction. This
7341 enables single transfers larger than 8 bits. This effectively changes the
7342 access to the EC space from ByteAcc to AnyAcc, and will probably require
7343 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7345 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7347 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7348 prototype in acpiosxf.h had the output value pointer as a (void *).
7349 It should be a (UINT64 *). This may affect some host OSL code.
7351 Fixed a couple problems with the recently modified Linux makefiles for
7353 and AcpiExec. These new makefiles place the generated object files in the
7354 local directory so that there can be no collisions between the files that
7356 shared between them that are compiled with different options.
7358 Example Code and Data Size: These are the sizes for the OS-independent
7359 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7360 debug version of the code includes the debug output trace mechanism and
7362 much larger code and data size.
7365 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7366 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
7368 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
7369 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
7371 2) iASL Compiler/Disassembler and Tools:
7373 iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7375 namespace from and disassemble an entire group of AML files. Useful for
7376 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7378 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7380 iASL: Allow multiple invocations of -e option. This change allows
7382 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7386 ----------------------------------------
7387 02 July 2010. Summary of changes for version 20100702:
7389 1) ACPI CA Core Subsystem:
7391 Implemented several updates to the recently added GPE reference count
7392 support. The model for "wake" GPEs is changing to give the host OS
7394 control of these GPEs. Eventually, the ACPICA core will not execute any
7396 methods, since the host already must execute them. Also, additional
7398 were made to help ensure that the reference counts are kept in proper
7399 synchronization with reality. Rafael J. Wysocki.
7401 1) Ensure that GPEs are not enabled twice during initialization.
7402 2) Ensure that GPE enable masks stay in sync with the reference count.
7403 3) Do not inadvertently enable GPEs when writing GPE registers.
7404 4) Remove the internal wake reference counter and add new AcpiGpeWakeup
7405 interface. This interface will set or clear individual GPEs for wakeup.
7406 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7408 are now used for "runtime" GPEs only.
7410 Changed the behavior of the GPE install/remove handler interfaces. The
7413 no longer disabled during this process, as it was found to cause problems
7415 some machines. Rafael J. Wysocki.
7417 Reverted a change introduced in version 20100528 to enable Embedded
7418 Controller multi-byte transfers. This change was found to cause problems
7420 Index Fields and possibly Bank Fields. It will be reintroduced when these
7421 problems have been resolved.
7423 Fixed a problem with references to Alias objects within Package Objects.
7425 reference to an Alias within the definition of a Package was not always
7426 resolved properly. Aliases to objects like Processors, Thermal zones,
7428 were resolved to the actual object instead of a reference to the object
7431 should be. Package objects are only allowed to contain integer, string,
7432 buffer, package, and reference objects. Redhat bugzilla 608648.
7434 Example Code and Data Size: These are the sizes for the OS-independent
7435 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7436 debug version of the code includes the debug output trace mechanism and
7438 much larger code and data size.
7441 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7442 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
7444 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7445 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
7447 2) iASL Compiler/Disassembler and Tools:
7449 iASL: Implemented a new compiler subsystem to allow definition and
7450 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7452 are called "ACPI Data Tables", and the new compiler is the "Data Table
7453 Compiler". This compiler is intended to simplify the existing error-prone
7454 process of creating these tables for the BIOS, as well as allowing the
7455 disassembly, modification, recompilation, and override of existing ACPI
7457 tables. See the iASL User Guide for detailed information.
7459 iASL: Implemented a new Template Generator option in support of the new
7461 Table Compiler. This option will create examples of all known ACPI tables
7462 that can be used as the basis for table development. See the iASL
7463 documentation and the -T option.
7465 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7468 Updated the Linux makefiles for iASL and AcpiExec to place the generated
7469 object files in the local directory so that there can be no collisions
7470 between the shared files between them that are generated with different
7473 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7475 the #define __APPLE__ to enable this support.
7477 ----------------------------------------
7478 28 May 2010. Summary of changes for version 20100528:
7480 Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7481 available at www.acpi.info. This is primarily an errata release.
7483 1) ACPI CA Core Subsystem:
7485 Undefined ACPI tables: We are looking for the definitions for the
7487 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7489 Implemented support to enable multi-byte transfers for Embedded
7491 (EC) operation regions. Previously, the maximum data size passed to the
7493 operation region handler was a single byte. There are often EC Fields
7495 than one byte that need to be transferred, and it is useful for the EC
7497 to lock these as a single transaction. This change enables single
7499 larger than 8 bits. This effectively changes the access to the EC space
7501 ByteAcc to AnyAcc, and will probably require changes to the host OS
7503 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7505 transfers. Alexey Starikovskiy, Lin Ming
7507 Implemented a performance enhancement for namespace search and access.
7509 change enhances the performance of namespace searches and walks by adding
7511 backpointer to the parent in each namespace node. On large namespaces,
7513 change can improve overall ACPI performance by up to 9X. Adding a pointer
7515 each namespace node increases the overall size of the internal namespace
7517 about 5%, since each namespace entry usually consists of both a namespace
7518 node and an ACPI operand object. However, this is the first growth of the
7519 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7521 Implemented a performance optimization that reduces the number of
7523 walks. On control method exit, only walk the namespace if the method is
7525 to have created namespace objects outside of its local scope. Previously,
7527 entire namespace was traversed on each control method exit. This change
7529 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7532 Added support to truncate I/O addresses to 16 bits for Windows
7534 Some ASL code has been seen in the field that inadvertently has bits set
7535 above bit 15. This feature is optional and is enabled if the BIOS
7537 any Windows OSI strings. It can also be enabled by the host OS. Matthew
7540 Added support to limit the maximum time for the ASL Sleep() operator. To
7541 prevent accidental deep sleeps, limit the maximum time that Sleep() will
7542 actually sleep. Configurable, the default maximum is two seconds. ACPICA
7545 Added run-time validation support for the _WDG and_WED Microsoft
7547 methods. These objects are defined by "Windows Instrumentation", and are
7549 part of the ACPI spec. ACPICA BZ 860.
7551 Expanded all statistic counters used during namespace and device
7552 initialization from 16 to 32 bits in order to support very large
7555 Replaced all instances of %d in printf format specifiers with %u since
7557 all integers in ACPICA are unsigned.
7559 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7563 Example Code and Data Size: These are the sizes for the OS-independent
7564 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7565 debug version of the code includes the debug output trace mechanism and
7567 much larger code and data size.
7570 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
7571 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
7573 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7574 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
7576 2) iASL Compiler/Disassembler and Tools:
7578 iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7579 methods. These objects are defined by "Windows Instrumentation", and are
7581 part of the ACPI spec. ACPICA BZ 860.
7583 AcpiExec: added option to disable the memory tracking mechanism. The -dt
7584 option will disable the tracking mechanism, which improves performance
7587 AcpiExec: Restructured the command line options into -d (disable) and -e
7590 ----------------------------------------
7591 28 April 2010. Summary of changes for version 20100428:
7593 1) ACPI CA Core Subsystem:
7595 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7596 including FADT-based and GPE Block Devices, execute any _PRW methods in
7598 new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7599 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7600 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7601 Devices. Provides compatibility with other ACPI implementations. Two new
7602 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7605 Fixed a regression introduced in version 20100331 within the table
7607 where initial table loading could fail. This was introduced in the fix
7609 AcpiReallocateRootTable. Also, renamed some of fields in the table
7611 data structures to clarify their meaning and use.
7613 Fixed a possible allocation overrun during internal object copy in
7614 AcpiUtCopySimpleObject. The original code did not correctly handle the
7616 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7619 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7620 possible access beyond end-of-allocation. Also, now fully validate
7622 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7624 Example Code and Data Size: These are the sizes for the OS-independent
7625 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7626 debug version of the code includes the debug output trace mechanism and
7628 much larger code and data size.
7631 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
7632 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
7634 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
7635 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
7637 2) iASL Compiler/Disassembler and Tools:
7639 iASL: Implemented Min/Max/Len/Gran validation for address resource
7640 descriptors. This change implements validation for the address fields
7642 are common to all address-type resource descriptors. These checks are
7643 implemented: Checks for valid Min/Max, length within the Min/Max window,
7644 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7646 table 6-40 in the ACPI 4.0a specification. Also split the large
7648 and aslrestype2.c files into five new files. ACPICA BZ 840.
7650 iASL: Added support for the _Wxx predefined names. This support was
7652 and these names were not recognized by the compiler as valid predefined
7653 names. ACPICA BZ 851.
7655 iASL: Added an error for all predefined names that are defined to return
7657 value and thus must be implemented as Control Methods. These include all
7659 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7660 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7662 iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7664 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7666 dynamically loaded via the Load() operator. Also cleaned up output for
7669 ta and -tc options. ACPICA BZ 853.
7671 Tests: Added a new file with examples of extended iASL error checking.
7672 Demonstrates the advanced error checking ability of the iASL compiler.
7673 Available at tests/misc/badcode.asl.
7675 ----------------------------------------
7676 31 March 2010. Summary of changes for version 20100331:
7678 1) ACPI CA Core Subsystem:
7680 Completed a major update for the GPE support in order to improve support
7682 shared GPEs and to simplify both host OS and ACPICA code. Added a
7684 count mechanism to support shared GPEs that require multiple device
7686 Several external interfaces have changed. One external interface has been
7687 removed. One new external interface was added. Most of the GPE external
7688 interfaces now use the GPE spinlock instead of the events mutex (and the
7689 Flags parameter for many GPE interfaces has been removed.) See the
7691 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7693 Wysocki. ACPICA BZ 831.
7696 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7702 Implemented write support for DataTable operation regions. These regions
7704 defined via the DataTableRegion() operator. Previously, only read support
7706 implemented. The ACPI specification allows DataTableRegions to be
7710 Implemented a new subsystem option to force a copy of the DSDT to local
7711 memory. Optionally copy the entire DSDT to local memory (instead of
7713 mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7715 the original DSDT, creating the need for this option. Default is FALSE,
7719 Implemented detection of a corrupted or replaced DSDT. This change adds
7720 support to detect a DSDT that has been corrupted and/or replaced from
7722 the OS (by firmware). This is typically catastrophic for the system, but
7724 been seen on some machines. Once this problem has been detected, the DSDT
7725 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7727 Fixed two problems with AcpiReallocateRootTable during the root table
7729 When copying the root table to the new allocation, the length used was
7730 incorrect. The new size was used instead of the current table size,
7732 too much data was copied. Also, the count of available slots for ACPI
7734 was not set correctly. Alexey Starikovskiy, Bob Moore.
7736 Example Code and Data Size: These are the sizes for the OS-independent
7737 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7738 debug version of the code includes the debug output trace mechanism and
7740 much larger code and data size.
7743 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
7744 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
7746 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
7747 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
7749 2) iASL Compiler/Disassembler and Tools:
7751 iASL: Implement limited typechecking for values returned from predefined
7752 control methods. The type of any returned static (unnamed) object is now
7753 validated. For example, Return(1). ACPICA BZ 786.
7755 iASL: Fixed a predefined name object verification regression. Fixes a
7757 introduced in version 20100304. An error is incorrectly generated if a
7758 predefined name is declared as a static named object with a value defined
7759 using the keywords "Zero", "One", or "Ones". Lin Ming.
7761 iASL: Added Windows 7 support for the -g option (get local ACPI tables)
7763 reducing the requested registry access rights. ACPICA BZ 842.
7765 Disassembler: fixed a possible fault when generating External()
7767 Introduced in commit ae7d6fd: Properly handle externals with parent-
7769 (carat). Fixes a string length allocation calculation. Lin Ming.
7771 ----------------------------------------
7772 04 March 2010. Summary of changes for version 20100304:
7774 1) ACPI CA Core Subsystem:
7776 Fixed a possible problem with the AML Mutex handling function
7777 AcpiExReleaseMutex where the function could fault under the very rare
7778 condition when the interpreter has blocked, the interpreter lock is
7780 the interpreter is then reentered via the same thread, and attempts to
7781 acquire an AML mutex that was previously acquired. FreeBSD report 140979.
7785 Implemented additional configuration support for the AML "Debug Object".
7786 Output from the debug object can now be enabled via a global variable,
7787 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
7789 This debug output is now available in the release version of ACPICA
7791 of just the debug version. Also, the entire debug output module can now
7793 configured out of the ACPICA build if desired. One new file added,
7794 executer/exdebug.c. Lin Ming, Bob Moore.
7796 Added header support for the ACPI MCHI table (Management Controller Host
7797 Interface Table). This table was added in ACPI 4.0, but the defining
7799 has only recently become available.
7801 Standardized output of integer values for ACPICA warnings/errors. Always
7803 0x prefix for hex output, always use %u for unsigned integer decimal
7805 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
7807 invocations.) These invocations were converted from the original
7808 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
7810 Example Code and Data Size: These are the sizes for the OS-independent
7811 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7812 debug version of the code includes the debug output trace mechanism and
7814 much larger code and data size.
7817 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
7818 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
7820 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
7821 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
7823 2) iASL Compiler/Disassembler and Tools:
7825 iASL: Implemented typechecking support for static (non-control method)
7826 predefined named objects that are declared with the Name() operator. For
7827 example, the type of this object is now validated to be of type Integer:
7828 Name(_BBN, 1). This change migrates the compiler to using the core
7830 name table instead of maintaining a local version. Added a new file,
7831 aslpredef.c. ACPICA BZ 832.
7833 Disassembler: Added support for the ACPI 4.0 MCHI table.
7835 ----------------------------------------
7836 21 January 2010. Summary of changes for version 20100121:
7838 1) ACPI CA Core Subsystem:
7840 Added the 2010 copyright to all module headers and signons. This affects
7841 virtually every file in the ACPICA core subsystem, the iASL compiler, the
7842 tools/utilities, and the test suites.
7844 Implemented a change to the AcpiGetDevices interface to eliminate
7846 invocations of the _STA method. In the case where a specific _HID is
7847 requested, do not run _STA until a _HID match is found. This eliminates
7848 potentially dozens of _STA calls during a search for a particular
7850 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7852 Implemented an additional repair for predefined method return values.
7854 to repair unexpected NULL elements within returned Package objects.
7857 Integer of value zero, a NULL String, or a zero-length Buffer as
7859 ACPICA BZ 818. Lin Ming, Bob Moore.
7861 Removed the obsolete ACPI_INTEGER data type. This type was introduced as
7863 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
7865 64-bit AML integers). It is now obsolete and this change removes it from
7867 ACPICA code base, replaced by UINT64. The original typedef has been
7869 for now for compatibility with existing device driver code. ACPICA BZ
7872 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
7874 the parse tree object.
7876 Added additional warning options for the gcc-4 generation. Updated the
7878 accordingly. This includes some code restructuring to eliminate
7880 code, elimination of some gotos, elimination of unused return values,
7882 additional casting, and removal of redundant declarations.
7884 Example Code and Data Size: These are the sizes for the OS-independent
7885 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7886 debug version of the code includes the debug output trace mechanism and
7888 much larger code and data size.
7891 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
7892 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
7894 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
7895 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
7897 2) iASL Compiler/Disassembler and Tools:
7899 No functional changes for this release.
7901 ----------------------------------------
7902 14 December 2009. Summary of changes for version 20091214:
7904 1) ACPI CA Core Subsystem:
7906 Enhanced automatic data type conversions for predefined name repairs.
7908 change expands the automatic repairs/conversions for predefined name
7910 values to make Integers, Strings, and Buffers fully interchangeable.
7913 Buffer can be converted to a Package of Integers if necessary. The
7915 module was completely restructured. Lin Ming, Bob Moore.
7917 Implemented automatic removal of null package elements during predefined
7919 repairs. This change will automatically remove embedded and trailing NULL
7920 package elements from returned package objects that are defined to
7923 variable number of sub-packages. The driver is then presented with a
7925 with no null elements to deal with. ACPICA BZ 819.
7927 Implemented a repair for the predefined _FDE and _GTM names. The expected
7928 return value for both names is a Buffer of 5 DWORDs. This repair fixes
7930 possible problems (both seen in the field), where a package of integers
7932 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
7935 Implemented additional module-level code support. This change will
7937 execute module-level code that is not at the root of the namespace (under
7939 Device object, etc.). Now executes the code within the current scope
7941 of the root. ACPICA BZ 762. Lin Ming.
7943 Fixed possible mutex acquisition errors when running _REG methods. Fixes
7945 problem where mutex errors can occur when running a _REG method that is
7947 the same scope as a method-defined operation region or an operation
7949 under a module-level IF block. This type of code is rare, so the problem
7951 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7953 Fixed a possible memory leak during module-level code execution. An
7955 could be leaked for each block of executed module-level code if the
7956 interpreter slack mode is enabled This change deletes any implicitly
7958 object from the module-level code block. Lin Ming.
7960 Removed messages for successful predefined repair(s). The repair
7962 was considered too wordy. Now, messages are only unconditionally emitted
7964 the return object cannot be repaired. Existing messages for successful
7965 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
7968 Example Code and Data Size: These are the sizes for the OS-independent
7969 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7970 debug version of the code includes the debug output trace mechanism and
7972 much larger code and data size.
7975 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
7976 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
7978 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
7979 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
7981 2) iASL Compiler/Disassembler and Tools:
7983 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
7985 were no longer automatically removed at the termination of the compile.
7987 acpiexec: Implemented the -f option to specify default region fill value.
7988 This option specifies the value used to initialize buffers that simulate
7989 operation regions. Default value is zero. Useful for debugging problems
7991 depend on a specific initial value for a region or field.
7993 ----------------------------------------
7994 12 November 2009. Summary of changes for version 20091112:
7996 1) ACPI CA Core Subsystem:
7998 Implemented a post-order callback to AcpiWalkNamespace. The existing
7999 interface only has a pre-order callback. This change adds an additional
8000 parameter for a post-order callback which will be more useful for bus
8002 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8004 Modified the behavior of the operation region memory mapping cache for
8005 SystemMemory. Ensure that the memory mappings created for operation
8007 do not cross 4K page boundaries. Crossing a page boundary while mapping
8008 regions can cause kernel warnings on some hosts if the pages have
8010 attributes. Such regions are probably BIOS bugs, and this is the
8012 Linux BZ 14445. Lin Ming.
8014 Implemented an automatic repair for predefined methods that must return
8015 sorted lists. This change will repair (by sorting) packages returned by
8017 _PSS, and _TSS. Drivers can now assume that the packages are correctly
8019 and do not contain NULL package elements. Adds one new file,
8020 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8022 Fixed a possible fault during predefined name validation if a return
8024 object contains NULL elements. Also adds a warning if a NULL element is
8025 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8027 include repair or removal of all such NULL elements where possible.
8029 Implemented additional module-level executable AML code support. This
8031 will execute module-level code that is not at the root of the namespace
8032 (under a Device object, etc.) at table load time. Module-level executable
8034 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8036 Implemented a new internal function to create Integer objects. This
8038 simplifies miscellaneous object creation code. ACPICA BZ 823.
8040 Reduced the severity of predefined repair messages, Warning to Info.
8042 the object was successfully repaired, a warning is too severe. Reduced to
8044 info message for now. These messages may eventually be changed to debug-
8048 Example Code and Data Size: These are the sizes for the OS-independent
8049 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8050 debug version of the code includes the debug output trace mechanism and
8052 much larger code and data size.
8055 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
8056 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
8058 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
8059 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
8061 2) iASL Compiler/Disassembler and Tools:
8063 iASL: Implemented Switch() with While(1) so that Break works correctly.
8065 change correctly implements the Switch operator with a surrounding
8067 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8069 iASL: Added a message if a package initializer list is shorter than
8071 length. Adds a new remark for a Package() declaration if an initializer
8073 exists, but is shorter than the declared length of the package. Although
8074 technically legal, this is probably a coding error and it is seen in the
8075 field. ACPICA BZ 815. Lin Ming, Bob Moore.
8077 iASL: Fixed a problem where the compiler could fault after the maximum
8079 of errors was reached (200).
8081 acpixtract: Fixed a possible warning for pointer cast if the compiler
8083 level set very high.
8085 ----------------------------------------
8086 13 October 2009. Summary of changes for version 20091013:
8088 1) ACPI CA Core Subsystem:
8090 Fixed a problem where an Operation Region _REG method could be executed
8092 than once. If a custom address space handler is installed by the host
8094 the "initialize operation regions" phase of the ACPICA initialization,
8096 _REG methods for that address space could be executed twice. This change
8097 fixes the problem. ACPICA BZ 427. Lin Ming.
8099 Fixed a possible memory leak for the Scope() ASL operator. When the exact
8100 invocation of "Scope(\)" is executed (change scope to root), one internal
8101 operand object was leaked. Lin Ming.
8103 Implemented a run-time repair for the _MAT predefined method. If the _MAT
8104 return value is defined as a Field object in the AML, and the field
8105 size is less than or equal to the default width of an integer (32 or
8107 can incorrectly return an Integer instead of a Buffer. ACPICA now
8108 automatically repairs this problem. ACPICA BZ 810.
8110 Implemented a run-time repair for the _BIF and _BIX predefined methods.
8112 "OEM Information" field is often incorrectly returned as an Integer with
8113 value zero if the field is not supported by the platform. This is due to
8115 ambiguity in the ACPI specification. The field should always be a string.
8116 ACPICA now automatically repairs this problem by returning a NULL string
8117 within the returned Package. ACPICA BZ 807.
8119 Example Code and Data Size: These are the sizes for the OS-independent
8120 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8121 debug version of the code includes the debug output trace mechanism and
8123 much larger code and data size.
8126 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
8127 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
8129 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
8130 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
8132 2) iASL Compiler/Disassembler and Tools:
8134 Disassembler: Fixed a problem where references to external symbols that
8135 contained one or more parent-prefixes (carats) were not handled
8137 possibly causing a fault. ACPICA BZ 806. Lin Ming.
8139 Disassembler: Restructured the code so that all functions that handle
8140 external symbols are in a single module. One new file is added,
8143 AML Debugger: Added a max count argument for the Batch command (which
8144 executes multiple predefined methods within the namespace.)
8146 iASL: Updated the compiler documentation (User Reference.) Available at
8147 http://www.acpica.org/documentation/. ACPICA BZ 750.
8149 AcpiXtract: Updated for Lint and other formatting changes. Close all open
8152 ----------------------------------------
8153 03 September 2009. Summary of changes for version 20090903:
8155 1) ACPI CA Core Subsystem:
8157 For Windows Vista compatibility, added the automatic execution of an _INI
8158 method located at the namespace root (\_INI). This method is executed at
8159 table load time. This support is in addition to the automatic execution
8161 \_SB._INI. Lin Ming.
8163 Fixed a possible memory leak in the interpreter for AML package objects
8165 the package initializer list is longer than the defined size of the
8167 This apparently can only happen if the BIOS changes the package size on
8169 fly (seen in a _PSS object), as ASL compilers do not allow this. The
8170 interpreter will truncate the package to the defined size (and issue an
8172 message), but previously could leave the extra objects undeleted if they
8174 pre-created during the argument processing (such is the case if the
8176 consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8178 Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8179 This has been reported in the field. Previously, ACPICA would zero out
8181 buffer/string. Now, the operation is treated as a noop. Provides Windows
8182 compatibility. ACPICA BZ 803. Lin Ming.
8184 Removed an extraneous error message for ASL constructs of the form
8185 Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8187 are seen in many BIOSs and are once again treated as NOOPs and no error
8189 emitted when they are encountered. ACPICA BZ 785.
8191 Fixed an extraneous warning message if a _DSM reserved method returns a
8192 Package object. _DSM can return any type of object, so validation on the
8193 return type cannot be performed. ACPICA BZ 802.
8195 Example Code and Data Size: These are the sizes for the OS-independent
8196 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8197 debug version of the code includes the debug output trace mechanism and
8199 much larger code and data size.
8202 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
8203 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
8205 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
8206 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
8208 2) iASL Compiler/Disassembler and Tools:
8210 iASL: Fixed a problem with the use of the Alias operator and Resource
8211 Templates. The correct alias is now constructed and no error is emitted.
8214 iASL: Implemented the -I option to specify additional search directories
8216 include files. Allows multiple additional search paths for include files.
8217 Directories are searched in the order specified on the command line
8219 the local directory is searched.) ACPICA BZ 800.
8221 iASL: Fixed a problem where the full pathname for include files was not
8222 emitted for warnings/errors. This caused the IDE support to not work
8223 properly. ACPICA BZ 765.
8225 iASL: Implemented the -@ option to specify a Windows-style response file
8226 containing additional command line options. ACPICA BZ 801.
8228 AcpiExec: Added support to load multiple AML files simultaneously (such
8231 DSDT and multiple SSDTs). Also added support for wildcards within the AML
8232 pathname. These features allow all machine tables to be easily loaded and
8233 debugged together. ACPICA BZ 804.
8235 Disassembler: Added missing support for disassembly of HEST table Error
8239 ----------------------------------------
8240 30 July 2009. Summary of changes for version 20090730:
8242 The ACPI 4.0 implementation for ACPICA is complete with this release.
8244 1) ACPI CA Core Subsystem:
8246 ACPI 4.0: Added header file support for all new and changed ACPI tables.
8247 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8249 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8251 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8253 have been some ACPI 4.0 changes to other existing tables. Split the large
8254 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8256 ACPI 4.0: Implemented predefined name validation for all new names. There
8258 31 new names in ACPI 4.0. The predefined validation module was split into
8260 files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8262 Implemented support for so-called "module-level executable code". This is
8263 executable AML code that exists outside of any control method and is
8265 to be executed at table load time. Although illegal since ACPI 2.0, this
8267 of code still exists and is apparently still being created. Blocks of
8269 code are now detected and executed as intended. Currently, the code
8271 must exist under either an If, Else, or While construct; these are the
8272 typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8274 Implemented an automatic dynamic repair for predefined names that return
8275 nested Package objects. This applies to predefined names that are defined
8277 return a variable-length Package of sub-packages. If the number of sub-
8278 packages is one, BIOS code is occasionally seen that creates a simple
8280 package with no sub-packages. This code attempts to fix the problem by
8281 wrapping a new package object around the existing package. These methods
8283 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8287 Fixed a regression introduced in 20090625 for the AcpiGetDevices
8289 The _HID/_CID matching was broken and no longer matched IDs correctly.
8293 Fixed a problem with AcpiReset where the reset would silently fail if the
8294 register was one of the protected I/O ports. AcpiReset now bypasses the
8296 validation mechanism. This may eventually be driven into the
8300 Fixed a regression related to the recent update of the AcpiRead/Write
8301 interfaces. A sleep/suspend could fail if the optional PM2 Control
8303 does not exist during an attempt to write the Bus Master Arbitration bit.
8304 (However, some hosts already delete the code that writes this bit, and
8306 code may in fact be obsolete at this date.) ACPICA BZ 799.
8308 Fixed a problem where AcpiTerminate could fault if inadvertently called
8310 in succession. ACPICA BZ 795.
8312 Example Code and Data Size: These are the sizes for the OS-independent
8313 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8314 debug version of the code includes the debug output trace mechanism and
8316 much larger code and data size.
8319 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
8320 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
8322 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
8323 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
8325 2) iASL Compiler/Disassembler and Tools:
8327 ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8328 changes to existing tables. ACPICA BZ 775.
8330 ----------------------------------------
8331 25 June 2009. Summary of changes for version 20090625:
8333 The ACPI 4.0 Specification was released on June 16 and is available at
8334 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8335 continue for the next few releases.
8337 1) ACPI CA Core Subsystem:
8339 ACPI 4.0: Implemented interpreter support for the IPMI operation region
8340 address space. Includes support for bi-directional data buffers and an
8342 address space handler (to be installed by an IPMI device driver.) ACPICA
8346 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8348 support in both the header files and the disassembler.
8350 Completed a major update for the AcpiGetObjectInfo external interface.
8352 - Support for variable, unlimited length HID, UID, and CID strings.
8353 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8355 - Call the _SxW power methods on behalf of a device object.
8356 - Determine if a device is a PCI root bridge.
8357 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8358 These changes will require an update to all callers of this interface.
8360 the updated ACPICA Programmer Reference for details. One new source file
8362 been added - utilities/utids.c. ACPICA BZ 368, 780.
8364 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8365 transfers. The Value parameter has been extended from 32 bits to 64 bits
8367 order to support new ACPI 4.0 tables. These changes will require an
8370 all callers of these interfaces. See the ACPICA Programmer Reference for
8371 details. ACPICA BZ 768.
8373 Fixed several problems with AcpiAttachData. The handler was not invoked
8375 the host node was deleted. The data sub-object was not automatically
8377 when the host node was deleted. The interface to the handler had an
8379 parameter, this was removed. ACPICA BZ 778.
8381 Enhanced the function that dumps ACPI table headers. All non-printable
8382 characters in the string fields are now replaced with '?' (Signature,
8384 OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8385 these fields are occasionally seen in the field. ACPICA BZ 788.
8387 Fixed a problem with predefined method repair code where the code that
8388 attempts to repair/convert an object of incorrect type is only executed
8390 the first time the predefined method is called. The mechanism that
8392 warnings on subsequent calls was interfering with the repair mechanism.
8395 Fixed a possible memory leak in the predefined validation/repair code
8398 buffer is automatically converted to an expected string object.
8400 Removed obsolete 16-bit files from the distribution and from the current
8402 tree head. ACPICA BZ 776.
8404 Example Code and Data Size: These are the sizes for the OS-independent
8405 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8406 debug version of the code includes the debug output trace mechanism and
8408 much larger code and data size.
8411 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
8412 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
8414 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
8415 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
8417 2) iASL Compiler/Disassembler and Tools:
8419 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8420 operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8422 ACPI 4.0: iASL - implemented compile-time validation support for all new
8423 predefined names and control methods (31 total). ACPICA BZ 769.
8425 ----------------------------------------
8426 21 May 2009. Summary of changes for version 20090521:
8428 1) ACPI CA Core Subsystem:
8430 Disabled the preservation of the SCI enable bit in the PM1 control
8432 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8435 a "preserved" bit - "OSPM always preserves this bit position", section
8436 4.7.3.2.1. However, some machines fail if this bit is in fact preserved
8437 because the bit needs to be explicitly set by the OS as a workaround. No
8438 machines fail if the bit is not preserved. Therefore, ACPICA no longer
8439 attempts to preserve this bit.
8441 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8442 incorrectly formed _PRT package could cause a fault. Added validation to
8443 ensure that each package element is actually a sub-package.
8445 Implemented a new interface to install or override a single control
8447 AcpiInstallMethod. This interface is useful when debugging in order to
8449 an existing method or to install a missing method without having to
8451 the entire ACPI table. See the ACPICA Programmer Reference for use and
8452 examples. Lin Ming, Bob Moore.
8454 Fixed several reference count issues with the DdbHandle object that is
8455 created from a Load or LoadTable operator. Prevent premature deletion of
8457 object. Also, mark the object as invalid once the table has been
8459 This is needed because the handle itself may not be deleted after the
8461 unload, depending on whether it has been stored in a named object by the
8464 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8465 mutexes of the same sync level are acquired but then not released in
8467 opposite order, the internally maintained Current Sync Level becomes
8469 and can cause subsequent execution errors. ACPICA BZ 471.
8471 Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8472 specification has been changed to make the SyncLevel for mutex objects
8474 useful. When releasing a mutex, the SyncLevel of the mutex must now be
8476 same as the current sync level. This makes more sense than the previous
8478 (SyncLevel less than or equal). This change updates the code to match the
8481 Fixed a problem with the local version of the AcpiOsPurgeCache function.
8483 (local) cache must be locked during all cache object deletions. Andrew
8486 Updated the Load operator to use operation region interfaces. This
8488 direct memory mapping with region access calls. Now, all region accesses
8490 through the installed region handler as they should.
8492 Simplified and optimized the NsGetNextNode function. Reduced parameter
8494 and reduced code for this frequently used function.
8496 Example Code and Data Size: These are the sizes for the OS-independent
8497 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8498 debug version of the code includes the debug output trace mechanism and
8500 much larger code and data size.
8503 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
8504 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
8506 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
8507 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
8509 2) iASL Compiler/Disassembler and Tools:
8511 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8513 with sub-table disassembly and handling invalid sub-tables. Attempt
8515 after an invalid sub-table ID.
8517 ----------------------------------------
8518 22 April 2009. Summary of changes for version 20090422:
8520 1) ACPI CA Core Subsystem:
8522 Fixed a compatibility issue with the recently released I/O port
8524 mechanism. For windows compatibility, 1) On a port protection violation,
8525 simply ignore the request and do not return an exception (allow the
8527 method to continue execution.) 2) If only part of the request overlaps a
8528 protected port, read/write the individual ports that are not protected.
8532 Enhanced the execution of the ASL/AML BreakPoint operator so that it
8534 breaks into the AML debugger if the debugger is present. This matches the
8535 ACPI-defined behavior.
8537 Fixed several possible warnings related to the use of the configurable
8538 ACPI_THREAD_ID. This type can now be configured as either an integer or a
8539 pointer with no warnings. Also fixes several warnings in printf-like
8540 statements for the 64-bit build when the type is configured as a pointer.
8543 Fixed a number of possible warnings when compiling with gcc 4+ (depending
8545 warning options.) Examples include printf formats, aliasing, unused
8547 missing prototypes, missing switch default statements, use of non-ANSI
8548 library functions, use of non-ANSI constructs. See generate/unix/Makefile
8550 a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8552 Example Code and Data Size: These are the sizes for the OS-independent
8553 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8554 debug version of the code includes the debug output trace mechanism and
8556 much larger code and data size.
8559 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
8560 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
8562 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
8563 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
8565 2) iASL Compiler/Disassembler and Tools:
8567 iASL: Fixed a generation warning from Bison 2.3 and fixed several
8572 iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8574 correctly digest Windows/DOS formatted files (with CR/LF).
8576 iASL: Added a new option for "quiet mode" (-va) that produces only the
8577 compilation summary, not individual errors and warnings. Useful for large
8580 AcpiExec: Implemented a new option (-z) to enable a forced
8582 timeout that can be used to detect hang conditions during execution of
8584 code (includes both internal semaphores and AML-defined mutexes and
8587 Added new makefiles for the generation of acpica in a generic unix-like
8588 environment. These makefiles are intended to generate the acpica tools
8590 utilities from the original acpica git source tree structure.
8592 Test Suites: Updated and cleaned up the documentation files. Updated the
8593 copyrights to 2009, affecting all source files. Use the new version of
8595 with quiet mode. Increased the number of available semaphores in the
8597 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8599 an alternate implementation of the semaphore timeout to allow aslts to
8600 execute fully on Cygwin.
8602 ----------------------------------------
8603 20 March 2009. Summary of changes for version 20090320:
8605 1) ACPI CA Core Subsystem:
8607 Fixed a possible race condition between AcpiWalkNamespace and dynamic
8609 unloads. Added a reader/writer locking mechanism to allow multiple
8611 namespace walks (readers), but block a dynamic table unload until it can
8613 exclusive write access to the namespace. This fixes a problem where a
8615 unload could (possibly catastrophically) delete the portion of the
8617 that is currently being examined by a walk. Adds a new file, utlock.c,
8619 implements the reader/writer lock mechanism. ACPICA BZ 749.
8621 Fixed a regression introduced in version 20090220 where a change to the
8623 handling could cause the ACPICA subsystem to access non-existent I/O
8626 Modified the handling of FADT register and table (FACS/DSDT) addresses.
8628 FADT can contain both 32-bit and 64-bit versions of these addresses.
8629 Previously, the 64-bit versions were favored, meaning that if both 32 and
8631 versions were valid, but not equal, the 64-bit version was used. This was
8632 found to cause some machines to fail. Now, in this case, the 32-bit
8634 is used instead. This now matches the Windows behavior.
8636 Implemented a new mechanism to protect certain I/O ports. Provides
8638 compatibility and protects the standard PC I/O ports from access via AML
8639 code. Adds a new file, hwvalid.c
8641 Fixed a possible extraneous warning message from the FADT support. The
8642 message warns of a 32/64 length mismatch between the legacy and GAS
8643 definitions for a register.
8645 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8647 made obsolete by the port protection mechanism above. It was previously
8649 to validate the entire address range of an operation region, which could
8651 incorrect if the range included illegal ports, but fields within the
8652 operation region did not actually access those ports. Validation is now
8653 performed on a per-field basis instead of the entire region.
8655 Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8656 Ignored bits must be "preserved" according to the ACPI spec. Usually,
8658 means a read/modify/write when writing to the register. However, for
8660 registers, writing a one means clear the event. Writing a zero means
8662 the event (do not clear.) This behavior is clarified in the ACPI 4.0
8664 and the ACPICA code now simply always writes a zero to the ignored bit.
8666 Modified the handling of ignored bits for the PM1 A/B Control Registers.
8668 per the ACPI specification, for the control registers, preserve
8669 (read/modify/write) all bits that are defined as either reserved or
8672 Updated the handling of write-only bits in the PM1 A/B Control Registers.
8673 When reading the register, zero the write-only bits as per the ACPI spec.
8674 ACPICA BZ 443. Lin Ming.
8676 Removed "Linux" from the list of supported _OSI strings. Linux no longer
8677 wants to reply true to this request. The Windows strings are the only
8679 through the AML that are tested and known to work properly.
8682 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
8683 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
8685 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
8686 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
8688 2) iASL Compiler/Disassembler and Tools:
8690 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8694 ----------------------------------------
8695 20 February 2009. Summary of changes for version 20090220:
8697 1) ACPI CA Core Subsystem:
8699 Optimized the ACPI register locking. Removed locking for reads from the
8701 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8703 not required when reading the single-bit registers. The
8704 AcpiGetRegisterUnlocked function is no longer needed and has been
8706 This will improve performance for reads on these registers. ACPICA BZ
8709 Fixed the parameter validation for AcpiRead/Write. Now return
8710 AE_BAD_PARAMETER if the input register pointer is null, and
8713 the register has an address of zero. Previously, these cases simply
8715 AE_OK. For optional registers such as PM1B status/enable/control, the
8717 should check for a valid register address before calling. ACPICA BZ 748.
8719 Renamed the external ACPI bit register access functions. Renamed
8720 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8721 functions. The new names are AcpiReadBitRegister and
8722 AcpiWriteBitRegister.
8723 Also, restructured the code for these functions by simplifying the code
8725 and condensing duplicate code to reduce code size.
8727 Added new functions to transparently handle the possibly split PM1 A/B
8728 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8730 now handle the split registers for PM1 Status, Enable, and Control.
8735 Added a function to handle the PM1 control registers,
8736 AcpiHwWritePm1Control.
8737 This function writes both of the PM1 control registers (A/B). These
8739 are different than the PM1 A/B status and enable registers in that
8741 values can be written to the A/B registers. Most notably, the SLP_TYP
8743 can be different, as per the values returned from the _Sx predefined
8746 Removed an extra register write within AcpiHwClearAcpiStatus. This
8748 was writing an optional PM1B status register twice. The existing call to
8750 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
8752 register. ACPICA BZ 751.
8754 Split out the PM1 Status registers from the FADT. Added new globals for
8756 registers (A/B), similar to the way the PM1 Enable registers are handled.
8757 Instead of overloading the FADT Event Register blocks. This makes the
8759 clearer and less prone to error.
8761 Fixed the warning message for when the platform contains too many ACPI
8763 for the default size of the global root table data structure. The
8765 for the truncation value was incorrect.
8767 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
8768 obsolete macro, since it is now a simple reference to ->common.type.
8770 were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8772 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
8773 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
8774 simply SLEEP_TYPE. ACPICA BZ 754.
8776 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
8777 function is only needed on 64-bit host operating systems and is thus not
8778 included for 32-bit hosts.
8780 Debug output: print the input and result for invocations of the _OSI
8782 control method via the ACPI_LV_INFO debug level. Also, reduced some of
8784 verbosity of this debug level. Len Brown.
8786 Example Code and Data Size: These are the sizes for the OS-independent
8787 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8788 debug version of the code includes the debug output trace mechanism and
8790 much larger code and data size.
8793 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
8794 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
8796 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
8797 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
8799 2) iASL Compiler/Disassembler and Tools:
8801 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
8802 various legal performance profiles.
8804 ----------------------------------------
8805 23 January 2009. Summary of changes for version 20090123:
8807 1) ACPI CA Core Subsystem:
8809 Added the 2009 copyright to all module headers and signons. This affects
8810 virtually every file in the ACPICA core subsystem, the iASL compiler, and
8811 the tools/utilities.
8813 Implemented a change to allow the host to override any ACPI table,
8815 dynamically loaded tables. Previously, only the DSDT could be replaced by
8817 host. With this change, the AcpiOsTableOverride interface is called for
8819 table found in the RSDT/XSDT during ACPICA initialization, and also
8821 a table is dynamically loaded via the AML Load operator.
8823 Updated FADT flag definitions, especially the Boot Architecture flags.
8825 Debugger: For the Find command, automatically pad the input ACPI name
8827 underscores if the name is shorter than 4 characters. This enables a
8829 with the actual namespace entry which is itself padded with underscores.
8831 Example Code and Data Size: These are the sizes for the OS-independent
8832 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8833 debug version of the code includes the debug output trace mechanism and
8835 much larger code and data size.
8838 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
8839 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
8841 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
8842 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
8844 2) iASL Compiler/Disassembler and Tools:
8846 Fix build error under Bison-2.4.
8848 Dissasembler: Enhanced FADT support. Added decoding of the Boot
8850 flags. Now decode all flags, regardless of the FADT version. Flag output
8851 includes the FADT version which first defined each flag.
8853 The iASL -g option now dumps the RSDT to a file (in addition to the FADT
8855 DSDT). Windows only.
8857 ----------------------------------------
8858 04 December 2008. Summary of changes for version 20081204:
8860 1) ACPI CA Core Subsystem:
8862 The ACPICA Programmer Reference has been completely updated and revamped
8864 this release. This includes updates to the external interfaces, OSL
8865 interfaces, the overview sections, and the debugger reference.
8867 Several new ACPICA interfaces have been implemented and documented in the
8868 programmer reference:
8869 AcpiReset - Writes the reset value to the FADT-defined reset register.
8870 AcpiDisableAllGpes - Disable all available GPEs.
8871 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8872 AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8873 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8874 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8875 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8877 Most of the public ACPI hardware-related interfaces have been moved to a
8879 file, components/hardware/hwxface.c
8881 Enhanced the FADT parsing and low-level ACPI register access: The ACPI
8882 register lengths within the FADT are now used, and the low level ACPI
8883 register access no longer hardcodes the ACPI register lengths. Given that
8884 there may be some risk in actually trusting the FADT register lengths, a
8886 time option was added to fall back to the default hardcoded lengths if
8888 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
8889 option is set to true for now, and a warning is issued if a suspicious
8891 register length is overridden with the default value.
8893 Fixed a reference count issue in NsRepairObject. This problem was
8895 in version 20081031 as part of a fix to repair Buffer objects within
8898 Added semaphore support to the Linux/Unix application OS-services layer
8899 (OSL). ACPICA BZ 448. Lin Ming.
8901 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
8903 be implemented in the OSL, or will binary semaphores be used instead.
8905 Example Code and Data Size: These are the sizes for the OS-independent
8906 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8907 debug version of the code includes the debug output trace mechanism and
8909 much larger code and data size.
8912 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
8913 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
8915 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
8916 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
8918 2) iASL Compiler/Disassembler and Tools:
8920 iASL: Completed the '-e' option to include additional ACPI tables in
8923 aid with disassembly and External statement generation. ACPICA BZ 742.
8927 iASL: Removed the "named object in while loop" error. The compiler cannot
8928 determine how many times a loop will execute. ACPICA BZ 730.
8930 Disassembler: Implemented support for FADT revision 2 (MS extension).
8934 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
8937 ----------------------------------------
8938 31 October 2008. Summary of changes for version 20081031:
8940 1) ACPI CA Core Subsystem:
8942 Restructured the ACPICA header files into public/private. acpi.h now
8944 only the "public" acpica headers. All other acpica headers are "private"
8946 should not be included by acpica users. One new file, accommon.h is used
8948 include the commonly used private headers for acpica code generation.
8950 plans include moving all private headers to a new subdirectory.
8952 Implemented an automatic Buffer->String return value conversion for
8953 predefined ACPI methods. For these methods (such as _BIF), added
8955 conversion for return objects that are required to be a String, but a
8957 was found instead. This can happen when reading string battery data from
8959 operation region, because it used to be difficult to convert the data
8961 buffer to string from within the ASL. Ensures that the host OS is
8963 with a valid null-terminated string. Linux BZ 11822.
8965 Updated the FACS waking vector interfaces. Split
8966 AcpiSetFirmwareWakingVector
8967 into two: one for the 32-bit vector, another for the 64-bit vector. This
8969 required because the host OS must setup the wake much differently for
8971 vector (real vs. protected mode, etc.) and the interface itself should
8974 deciding which vector to use. Also, eliminated the
8975 GetFirmwareWakingVector
8976 interface, as it served no purpose (only the firmware reads the vector,
8978 only writes the vector.) ACPICA BZ 731.
8980 Implemented a mechanism to escape infinite AML While() loops. Added a
8982 counter to force exit from AML While loops if the count becomes too
8984 This can occur in poorly written AML when the hardware does not respond
8985 within a while loop and the loop does not implement a timeout. The
8987 loop count is configurable. A new exception code is returned when a loop
8989 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8991 Optimized the execution of AML While loops. Previously, a control state
8992 object was allocated and freed for each execution of the loop. The
8993 optimization is to simply reuse the control state for each iteration.
8995 speeds up the raw loop execution time by about 5%.
8997 Enhanced the implicit return mechanism. For Windows compatibility, return
8999 implicit integer of value zero for methods that contain no executable
9001 Such methods are seen in the field as stubs (presumably), and can cause
9002 drivers to fail if they expect a return value. Lin Ming.
9004 Allow multiple backslashes as root prefixes in namepaths. In a fully
9005 qualified namepath, allow multiple backslash prefixes. This can happen
9007 is seen in the field) because of the use of a double-backslash in strings
9008 (since backslash is the escape character) causing confusion. ACPICA BZ
9012 Emit a warning if two different FACS or DSDT tables are discovered in the
9013 FADT. Checks if there are two valid but different addresses for the FACS
9015 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9017 Consolidated the method argument count validation code. Merged the code
9019 validates control method argument counts into the predefined validation
9020 module. Eliminates possible multiple warnings for incorrect argument
9023 Implemented ACPICA example code. Includes code for ACPICA initialization,
9024 handler installation, and calling a control method. Available at
9025 source/tools/examples.
9027 Added a global pointer for FACS table to simplify internal FACS access.
9029 the global pointer instead of using AcpiGetTableByIndex for each FACS
9031 This simplifies the code for the Global Lock and the Firmware Waking
9034 Example Code and Data Size: These are the sizes for the OS-independent
9035 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9036 debug version of the code includes the debug output trace mechanism and
9038 much larger code and data size.
9041 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
9042 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
9044 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
9045 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
9047 2) iASL Compiler/Disassembler and Tools:
9049 iASL: Improved disassembly of external method calls. Added the -e option
9051 allow the inclusion of additional ACPI tables to help with the
9054 method invocations and the generation of external declarations during the
9055 disassembly. Certain external method invocations cannot be disassembled
9056 properly without the actual declaration of the method. Use the -e option
9058 include the table where the external method(s) are actually declared.
9060 useful for disassembling SSDTs that make method calls back to the master
9061 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl
9063 -e dsdt.aml ssdt1.aml
9065 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9066 problem where the use of an alias within a namepath would result in a not
9067 found error or cause the compiler to fault. Also now allows forward
9068 references from the Alias operator itself. ACPICA BZ 738.
9070 ----------------------------------------
9071 26 September 2008. Summary of changes for version 20080926:
9073 1) ACPI CA Core Subsystem:
9075 Designed and implemented a mechanism to validate predefined ACPI methods
9077 objects. This code validates the predefined ACPI objects (objects whose
9079 start with underscore) that appear in the namespace, at the time they are
9080 evaluated. The argument count and the type of the returned object are
9081 validated against the ACPI specification. The purpose of this validation
9083 to detect problems with the BIOS-implemented predefined ACPI objects
9085 the results are returned to the ACPI-related drivers. Future enhancements
9087 include actual repair of incorrect return objects where possible. Two new
9088 files are nspredef.c and acpredef.h.
9090 Fixed a fault in the AML parser if a memory allocation fails during the
9092 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9094 Fixed an issue with implicit return compatibility. This change improves
9096 implicit return mechanism to be more compatible with the MS interpreter.
9098 Ming, ACPICA BZ 349.
9100 Implemented support for zero-length buffer-to-string conversions. Allow
9102 length strings during interpreter buffer-to-string conversions. For
9104 during the ToDecimalString and ToHexString operators, as well as implicit
9105 conversions. Fiodor Suietov, ACPICA BZ 585.
9107 Fixed two possible memory leaks in the error exit paths of
9108 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9110 similar in that they use a stack of state objects in order to eliminate
9111 recursion. The stack must be fully unwound and deallocated if an error
9112 occurs. Lin Ming. ACPICA BZ 383.
9114 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9116 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9117 Moore ACPICA BZ 442.
9119 Removed the obsolete version number in module headers. Removed the
9120 "$Revision" number that appeared in each module header. This version
9122 was useful under SourceSafe and CVS, but has no meaning under git. It is
9124 only incorrect, it could also be misleading.
9126 Example Code and Data Size: These are the sizes for the OS-independent
9127 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9128 debug version of the code includes the debug output trace mechanism and
9130 much larger code and data size.
9133 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9134 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
9136 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
9137 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
9139 ----------------------------------------
9140 29 August 2008. Summary of changes for version 20080829:
9142 1) ACPI CA Core Subsystem:
9144 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9145 Reference. Changes include the elimination of cheating on the Object
9147 for the DdbHandle subtype, addition of a reference class field to
9148 differentiate the various reference types (instead of an AML opcode), and
9150 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9152 Reduce an error to a warning for an incorrect method argument count.
9153 Previously aborted with an error if too few arguments were passed to a
9154 control method via the external ACPICA interface. Now issue a warning
9156 and continue. Handles the case where the method inadvertently declares
9158 many arguments, but does not actually use the extra ones. Applies mainly
9160 the predefined methods. Lin Ming. Linux BZ 11032.
9162 Disallow the evaluation of named object types with no intrinsic value.
9164 AE_TYPE for objects that have no value and therefore evaluation is
9166 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9168 these types were allowed, but an exception would be generated at some
9170 during the evaluation. Now, the error is generated up front.
9172 Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9173 (nsnames.c). Fixes a leak in the error exit path.
9175 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9177 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9179 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9182 Removed obsolete and/or unused exception codes from the acexcep.h header.
9183 There is the possibility that certain device drivers may be affected if
9185 use any of these exceptions.
9187 The ACPICA documentation has been added to the public git source tree,
9189 acpica/documents. Included are the ACPICA programmer reference, the iASL
9190 compiler reference, and the changes.txt release logfile.
9192 Example Code and Data Size: These are the sizes for the OS-independent
9193 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9194 debug version of the code includes the debug output trace mechanism and
9196 much larger code and data size.
9199 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9200 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
9202 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9203 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
9205 2) iASL Compiler/Disassembler and Tools:
9207 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9208 defines _SCP with 3 arguments. Previous versions defined it with only 1
9209 argument. iASL now allows both definitions.
9211 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9213 length subtables when disassembling ACPI tables. Also fixed a couple of
9214 errors where a full 16-bit table type field was not extracted from the
9218 acpisrc: Improve comment counting mechanism for generating source code
9219 statistics. Count first and last lines of multi-line comments as
9221 not comment lines. Handle Linux legal header in addition to standard
9225 ----------------------------------------
9227 29 July 2008. Summary of changes for version 20080729:
9229 1) ACPI CA Core Subsystem:
9231 Fix a possible deadlock in the GPE dispatch. Remove call to
9232 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9234 to acquire the GPE lock but can deadlock since the GPE lock is already
9236 at dispatch time. This code was introduced in version 20060831 as a
9238 to Linux BZ 6881 and has since been removed from Linux.
9240 Add a function to dereference returned reference objects. Examines the
9242 object from a call to AcpiEvaluateObject. Any Index or RefOf references
9244 automatically dereferenced in an attempt to return something useful
9246 reference types cannot be converted into an external ACPI_OBJECT.)
9248 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9250 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9251 subtables for the MADT and one new subtable for the SRAT. Includes
9252 disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9254 Specification, June 2008.
9256 Additional error checking for pathname utilities. Add error check after
9258 calls to AcpiNsGetPathnameLength. Add status return from
9259 AcpiNsBuildExternalPath and check after all calls. Add parameter
9261 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9263 Return status from the global init function AcpiUtGlobalInitialize. This
9265 used by both the kernel subsystem and the utilities such as iASL
9267 The function could possibly fail when the caches are initialized. Yang
9270 Add a function to decode reference object types to strings. Created for
9271 improved error messages.
9273 Improve object conversion error messages. Better error messages during
9275 conversion from internal to the external ACPI_OBJECT. Used for external
9277 to AcpiEvaluateObject.
9279 Example Code and Data Size: These are the sizes for the OS-independent
9280 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9281 debug version of the code includes the debug output trace mechanism and
9283 much larger code and data size.
9286 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
9287 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
9289 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9290 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
9292 2) iASL Compiler/Disassembler and Tools:
9294 Debugger: fix a possible hang when evaluating non-methods. Fixes a
9296 introduced in version 20080701. If the object being evaluated (via
9298 command) is not a method, the debugger can hang while trying to obtain
9300 existent parameters.
9302 iASL: relax error for using reserved "_T_x" identifiers. These names can
9303 appear in a disassembled ASL file if they were emitted by the original
9304 compiler. Instead of issuing an error or warning and forcing the user to
9305 manually change these names, issue a remark instead.
9307 iASL: error if named object created in while loop. Emit an error if any
9309 object is created within a While loop. If allowed, this code will
9312 run-time error on the second iteration of the loop when an attempt is
9315 create the same named object twice. ACPICA bugzilla 730.
9317 iASL: Support absolute pathnames for include files. Add support for
9319 pathnames within the Include operator. previously, only relative
9323 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9325 The ACPI spec requires one interrupt minimum. BZ 423
9327 iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9328 Handles the case for the Interrupt Resource Descriptor where
9329 the ResourceSource argument is omitted but ResourceSourceIndex
9330 is present. Now leave room for the Index. BZ 426
9332 iASL: Prevent error message if CondRefOf target does not exist. Fixes
9334 where an error message is emitted if the target does not exist. BZ 516
9336 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9337 (get ACPI tables on Windows). This was apparently broken in version
9340 AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9342 the EOF happens immediately after the last table in the input file. Print
9343 completion message. Previously, no message was displayed in this case.
9345 ----------------------------------------
9346 01 July 2008. Summary of changes for version 20080701:
9348 0) Git source tree / acpica.org
9350 Fixed a problem where a git-clone from http would not transfer the entire
9353 1) ACPI CA Core Subsystem:
9355 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9356 enable bit. Now performs a read-change-write of the enable register
9358 of simply writing out the cached enable mask. This will prevent
9360 enabling of GPEs if a rogue GPE is received during initialization (before
9362 handlers are installed.)
9364 Implemented a copy for dynamically loaded tables. Previously, dynamically
9365 loaded tables were simply mapped - but on some machines this memory is
9366 corrupted after suspend. Now copy the table to a local buffer. For the
9367 OpRegion case, added checksum verify. Use the table length from the table
9368 header, not the region length. For the Buffer case, use the table length
9369 also. Dennis Noordsij, Bob Moore. BZ 10734
9371 Fixed a problem where the same ACPI table could not be dynamically loaded
9373 unloaded more than once. Without this change, a table cannot be loaded
9375 once it has been loaded/unloaded one time. The current mechanism does not
9376 unregister a table upon an unload. During a load, if the same table is
9378 this no longer returns an exception. BZ 722
9380 Fixed a problem where the wrong descriptor length was calculated for the
9381 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9383 are calculated as 12 bytes long, but the actual length in the internal
9384 descriptor is 16 because of the round-up to 8 on the 64-bit build.
9386 by Linn Crosetto. BZ 728
9388 Fixed a possible memory leak in the Unload operator. The DdbHandle
9390 by Load() did not have its reference count decremented during unload,
9392 to a memory leak. Lin Ming. BZ 727
9394 Fixed a possible memory leak when deleting thermal/processor objects. Any
9395 associated notify handlers (and objects) were not being deleted. Fiodor
9398 Fixed the ordering of the ASCII names in the global mutex table to match
9400 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9402 Vegard Nossum. BZ 726
9404 Enhanced the AcpiGetObjectInfo interface to return the number of required
9405 arguments if the object is a control method. Added this call to the
9407 so the proper number of default arguments are passed to a method. This
9408 prevents a warning when executing methods from AcpiExec.
9410 Added a check for an invalid handle in AcpiGetObjectInfo. Return
9411 AE_BAD_PARAMETER if input handle is invalid. BZ 474
9413 Fixed an extraneous warning from exconfig.c on the 64-bit build.
9415 Example Code and Data Size: These are the sizes for the OS-independent
9416 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9417 debug version of the code includes the debug output trace mechanism and
9419 much larger code and data size.
9422 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
9423 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
9425 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
9426 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
9428 2) iASL Compiler/Disassembler and Tools:
9430 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9431 resource descriptor names.
9433 iASL: Detect invalid ASCII characters in input (windows version). Removed
9435 "-CF" flag from the flex compile, enables correct detection of non-ASCII
9436 characters in the input. BZ 441
9438 iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9440 "result of operation not used" warning when the DDB handle returned from
9441 LoadTable is not used. The warning is not needed. BZ 590
9443 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9446 pass address of table to the AML. Added option to disable OpRegion
9448 to allow creation of an OpRegion with a real address that was passed to
9450 All of this allows testing of the Load and Unload operators from
9453 Debugger: update tables command for unloaded tables. Handle unloaded
9455 and use the standard table header output routine.
9457 ----------------------------------------
9458 09 June 2008. Summary of changes for version 20080609:
9460 1) ACPI CA Core Subsystem:
9462 Implemented a workaround for reversed _PRT entries. A significant number
9464 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9465 change dynamically detects and repairs this problem. Provides
9467 with MS ACPI. BZ 6859
9469 Simplified the internal ACPI hardware interfaces to eliminate the locking
9470 flag parameter from Register Read/Write. Added a new external interface,
9471 AcpiGetRegisterUnlocked.
9473 Fixed a problem where the invocation of a GPE control method could hang.
9475 was a regression introduced in 20080514. The new method argument count
9476 validation mechanism can enter an infinite loop when a GPE method is
9477 dispatched. Problem fixed by removing the obsolete code that passed GPE
9479 information to the notify handler via the control method parameter
9482 Fixed a problem where the _SST execution status was incorrectly returned
9484 the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9486 20080514. _SST is optional and a NOT_FOUND exception should never be
9489 Fixed a problem where a deleted object could be accessed from within the
9491 parser. This was a regression introduced in version 20080123 as a fix for
9493 Unload operator. Lin Ming. BZ 10669
9495 Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9497 and eliminated the use of a negative index in a loop. Operands are now
9498 displayed in the correct order, not backwards. This also fixes a
9500 introduced in 20080514 on 64-bit systems where the elimination of
9501 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9504 Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9506 path did not delete a locally allocated structure.
9508 Updated definitions for the DMAR and SRAT tables to synchronize with the
9509 current specifications. Includes disassembler support.
9511 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9512 loop termination value was used. Loop terminated on iteration early,
9514 one mutex. Linn Crosetto
9516 Example Code and Data Size: These are the sizes for the OS-independent
9517 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9518 debug version of the code includes the debug output trace mechanism and
9520 much larger code and data size.
9523 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
9524 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
9526 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
9527 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
9529 2) iASL Compiler/Disassembler and Tools:
9531 Disassembler: Implemented support for EisaId() within _CID objects. Now
9532 disassemble integer _CID objects back to EisaId invocations, including
9533 multiple integers within _CID packages. Includes single-step support for
9536 Disassembler: Added support for DMAR and SRAT table definition changes.
9538 ----------------------------------------
9539 14 May 2008. Summary of changes for version 20080514:
9541 1) ACPI CA Core Subsystem:
9543 Fixed a problem where GPEs were enabled too early during the ACPICA
9544 initialization. This could lead to "handler not installed" errors on some
9545 machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9547 ensures that all operation regions and devices throughout the namespace
9549 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9551 Implemented a change to the enter sleep code. Moved execution of the _GTS
9552 method to just before setting sleep enable bit. The execution was moved
9554 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9555 immediately before the SLP_EN bit is set, as per the ACPI specification.
9558 Implemented a fix to disable unknown GPEs (2nd version). Now always
9560 the GPE, even if ACPICA thinks that that it is already disabled. It is
9561 possible that the AML or some other code has enabled the GPE unbeknownst
9565 Fixed a problem with the Field operator where zero-length fields would
9567 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9569 field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9571 Implemented a fix for the Load operator, now load the table at the
9573 root. This reverts a change introduced in version 20071019. The table is
9575 loaded at the namespace root even though this goes against the ACPI
9576 specification. This provides compatibility with other ACPI
9578 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9581 Fixed a problem where ACPICA would not Load() tables with unusual
9583 Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9584 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9585 Therefore, signature validation is worthless. Apparently MS ACPI accepts
9587 signatures, ACPICA must be compatible. BZ 10454.
9589 Fixed a possible negative array index in AcpiUtValidateException. Added
9591 fields to the exception string arrays to eliminate a -1 subtraction on
9595 Updated the debug tracking macros to reduce overall code and data size.
9596 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9597 instead of pointers to static strings. Jan Beulich and Bob Moore.
9599 Implemented argument count checking in control method invocation via
9600 AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9602 many. This applies only to extern programmatic control method execution,
9604 method-to-method calls within the AML. Lin Ming.
9606 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9608 longer needed, especially with the removal of 16-bit support. It was
9610 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9613 32/64-bit platforms is required.
9615 Added the C const qualifier for appropriate string constants -- mostly
9616 MODULE_NAME and printf format strings. Jan Beulich.
9618 Example Code and Data Size: These are the sizes for the OS-independent
9619 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9620 debug version of the code includes the debug output trace mechanism and
9622 much larger code and data size.
9625 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
9626 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
9628 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
9629 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
9631 2) iASL Compiler/Disassembler and Tools:
9633 Implemented ACPI table revision ID validation in the disassembler. Zero
9635 always invalid. For DSDTs, the ID controls the interpreter integer width.
9637 means 32-bit and this is unusual. 2 or greater is 64-bit.
9639 ----------------------------------------
9640 21 March 2008. Summary of changes for version 20080321:
9642 1) ACPI CA Core Subsystem:
9644 Implemented an additional change to the GPE support in order to suppress
9645 spurious or stray GPEs. The AcpiEvDisableGpe function will now
9647 disable incoming GPEs that are neither enabled nor disabled -- meaning
9649 the GPE is unknown to the system. This should prevent future interrupt
9651 from that GPE. BZ 6217 (Zhang Rui)
9653 Fixed a problem where NULL package elements were not returned to the
9654 AcpiEvaluateObject interface correctly. The element was simply ignored
9655 instead of returning a NULL ACPI_OBJECT package element, potentially
9657 a buffer overflow and/or confusing the caller who expected a fixed number
9659 elements. BZ 10132 (Lin Ming, Bob Moore)
9661 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9663 Qword), Field, BankField, and IndexField operators when invoked from
9665 an executing control method. In this case, these operators created
9667 nodes that were incorrectly left marked as permanent nodes instead of
9668 temporary nodes. This could cause a problem if there is race condition
9669 between an exiting control method and a running namespace walk. (Reported
9673 Fixed a problem where the CreateField and CreateXXXField operators would
9674 incorrectly allow duplicate names (the name of the field) with no
9678 Implemented several changes for Notify handling. Added support for new
9680 values (ACPI 2.0+) and improved the Notify debug output. Notify on
9681 PowerResource objects is no longer allowed, as per the ACPI
9683 (Bob Moore, Zhang Rui)
9685 All Reference Objects returned via the AcpiEvaluateObject interface are
9687 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9689 NULL objects - either NULL package elements or unresolved named
9692 Fixed a problem where an extraneous debug message was produced for
9694 objects (when debugging enabled). The message "Package List length larger
9695 than NumElements count" is now produced in the correct case, and is now
9697 error message rather than a debug message. Added a debug message for the
9698 opposite case, where NumElements is larger than the Package List (the
9700 will be padded out with NULL elements as per the ACPI spec.)
9702 Implemented several improvements for the output of the ASL "Debug" object
9704 clarify and keep all data for a given object on one output line.
9706 Fixed two size calculation issues with the variable-length Start
9708 resource descriptor.
9710 Example Code and Data Size: These are the sizes for the OS-independent
9711 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9712 debug version of the code includes the debug output trace mechanism and
9714 a much larger code and data size.
9717 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
9718 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
9720 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
9721 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
9723 2) iASL Compiler/Disassembler and Tools:
9725 Fixed a problem with the use of the Switch operator where execution of
9727 containing method by multiple concurrent threads could cause an
9728 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9729 actual Switch opcode, it must be simulated with local named temporary
9730 variables and if/else pairs. The solution chosen was to mark any method
9732 uses Switch as Serialized, thus preventing multiple thread entries. BZ
9735 ----------------------------------------
9736 13 February 2008. Summary of changes for version 20080213:
9738 1) ACPI CA Core Subsystem:
9740 Implemented another MS compatibility design change for GPE/Notify
9742 GPEs are now cleared/enabled asynchronously to allow all pending notifies
9744 complete first. It is expected that the OSL will queue the enable request
9745 behind all pending notify requests (may require changes to the local host
9747 in AcpiOsExecute). Alexey Starikovskiy.
9749 Fixed a problem where buffer and package objects passed as arguments to a
9750 control method via the external AcpiEvaluateObject interface could cause
9752 AE_AML_INTERNAL exception depending on the order and type of operators
9753 executed by the target control method.
9755 Fixed a problem where resource descriptor size optimization could cause a
9756 problem when a _CRS resource template is passed to a _SRS method. The
9758 resource template must use the same descriptors (with the same size) as
9759 returned from _CRS. This change affects the following resource
9761 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
9764 Fixed a problem where a CopyObject to RegionField, BankField, and
9766 objects did not perform an implicit conversion as it should. These types
9768 retain their initial type permanently as per the ACPI specification.
9770 a CopyObject to all other object types should not perform an implicit
9771 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9773 Fixed a problem with the AcpiGetDevices interface where the mechanism to
9774 match device CIDs did not examine the entire list of available CIDs, but
9775 instead aborted on the first non-matching CID. Andrew Patterson.
9777 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
9779 inadvertently changed to return a 16-bit value instead of a 32-bit value,
9780 truncating the upper dword of a 64-bit value. This macro is only used to
9781 display debug output, so no incorrect calculations were made. Also,
9782 reimplemented the macro so that a 64-bit shift is not performed by
9783 inefficient compilers.
9785 Added missing va_end statements that should correspond with each va_start
9788 Example Code and Data Size: These are the sizes for the OS-independent
9789 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9790 debug version of the code includes the debug output trace mechanism and
9792 a much larger code and data size.
9795 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
9796 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
9798 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
9799 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
9801 2) iASL Compiler/Disassembler and Tools:
9803 Implemented full disassembler support for the following new ACPI tables:
9804 BERT, EINJ, and ERST. Implemented partial disassembler support for the
9805 complicated HEST table. These tables support the Windows Hardware Error
9806 Architecture (WHEA).
9808 ----------------------------------------
9809 23 January 2008. Summary of changes for version 20080123:
9811 1) ACPI CA Core Subsystem:
9813 Added the 2008 copyright to all module headers and signons. This affects
9814 virtually every file in the ACPICA core subsystem, the iASL compiler, and
9815 the tools/utilities.
9817 Fixed a problem with the SizeOf operator when used with Package and
9819 objects. These objects have deferred execution for some arguments, and
9821 execution is now completed before the SizeOf is executed. This problem
9823 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
9827 Implemented an enhancement to the interpreter "slack mode". In the
9830 an explicit return or an implicitly returned object from the last
9832 opcode, a control method will now implicitly return an integer of value 0
9834 Microsoft compatibility. (Lin Ming) BZ 392
9836 Fixed a problem with the Load operator where an exception was not
9839 the case where the table is already loaded. (Lin Ming) BZ 463
9841 Implemented support for the use of DDBHandles as an Indexed Reference, as
9843 the ACPI spec. (Lin Ming) BZ 486
9845 Implemented support for UserTerm (Method invocation) for the Unload
9847 as per the ACPI spec. (Lin Ming) BZ 580
9849 Fixed a problem with the LoadTable operator where the OemId and
9851 input strings could cause unexpected failures if they were shorter than
9853 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9855 Implemented support for UserTerm (Method invocation) for the Unload
9857 as per the ACPI spec. (Lin Ming) BZ 580
9859 Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
9861 IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9863 Example Code and Data Size: These are the sizes for the OS-independent
9864 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9865 debug version of the code includes the debug output trace mechanism and
9867 a much larger code and data size.
9870 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
9871 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
9873 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
9874 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
9876 2) iASL Compiler/Disassembler and Tools:
9878 Implemented support in the disassembler for checksum validation on
9880 binary DSDTs and SSDTs. If incorrect, a message is displayed within the
9882 header dump at the start of the disassembly.
9884 Implemented additional debugging information in the namespace listing
9886 created during compilation. In addition to the namespace hierarchy, the
9888 pathname to each namespace object is displayed.
9890 Fixed a problem with the disassembler where invalid ACPI tables could
9892 faults or infinite loops.
9894 Fixed an unexpected parse error when using the optional "parameter types"
9895 list in a control method declaration. (Lin Ming) BZ 397
9897 Fixed a problem where two External declarations with the same name did
9899 cause an error (Lin Ming) BZ 509
9901 Implemented support for full TermArgs (adding Argx, Localx and method
9902 invocation) for the ParameterData parameter to the LoadTable operator.
9906 ----------------------------------------
9907 19 December 2007. Summary of changes for version 20071219:
9909 1) ACPI CA Core Subsystem:
9911 Implemented full support for deferred execution for the TermArg string
9912 arguments for DataTableRegion. This enables forward references and full
9913 operand resolution for the three string arguments. Similar to
9915 deferred argument execution.) Lin Ming. BZ 430
9917 Implemented full argument resolution support for the BankValue argument
9919 BankField. Previously, only constants were supported, now any TermArg may
9921 used. Lin Ming BZ 387, 393
9923 Fixed a problem with AcpiGetDevices where the search of a branch of the
9924 device tree could be terminated prematurely. In accordance with the ACPI
9925 specification, the search down the current branch is terminated if a
9927 is both not present and not functional (instead of just not present.)
9931 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
9933 the underlying AML code changed the GPE enable registers. Now, any
9935 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
9937 instead of simply ignored. Rui Zhang.
9939 Fixed a problem with Index Fields where the Index register was
9941 limited to a maximum of 32 bits. Now any size may be used.
9943 Fixed a couple memory leaks associated with "implicit return" objects
9945 the AML Interpreter slack mode is enabled. Lin Ming BZ 349
9947 Example Code and Data Size: These are the sizes for the OS-independent
9948 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9949 debug version of the code includes the debug output trace mechanism and
9951 a much larger code and data size.
9954 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
9955 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
9957 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
9958 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
9960 ----------------------------------------
9961 14 November 2007. Summary of changes for version 20071114:
9963 1) ACPI CA Core Subsystem:
9965 Implemented event counters for each of the Fixed Events, the ACPI SCI
9966 (interrupt) itself, and control methods executed. Named
9967 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
9969 should be useful for debugging and statistics.
9971 Implemented a new external interface, AcpiGetStatistics, to retrieve the
9972 contents of the various event counters. Returns the current values for
9973 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
9974 AcpiMethodCount. The interface can be expanded in the future if new
9976 are added. Device drivers should use this interface rather than access
9980 Fixed a problem with the FromBCD and ToBCD operators. With some
9982 the ShortDivide function worked incorrectly, causing problems with the
9984 functions with large input values. A truncation from 64-bit to 32-bit
9985 inadvertently occurred. Internal BZ 435. Lin Ming
9987 Fixed a problem with Index references passed as method arguments.
9989 passed as arguments to control methods were dereferenced immediately
9991 control was passed to the called method). The references are now
9993 passed directly to the called method. BZ 5389. Lin Ming
9995 Fixed a problem with CopyObject used in conjunction with the Index
9997 The reference was incorrectly dereferenced before the copy. The reference
9999 now correctly copied. BZ 5391. Lin Ming
10001 Fixed a problem with Control Method references within Package objects.
10003 references are now correctly generated. This completes the package
10004 construction overhaul that began in version 20071019.
10006 Example Code and Data Size: These are the sizes for the OS-independent
10007 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10008 debug version of the code includes the debug output trace mechanism and
10010 a much larger code and data size.
10013 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
10014 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
10016 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
10017 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
10020 2) iASL Compiler/Disassembler and Tools:
10022 The AcpiExec utility now installs handlers for all of the predefined
10023 Operation Region types. New types supported are: PCI_Config, CMOS, and
10026 Fixed a problem with the 64-bit version of AcpiExec where the extended
10028 bit) address fields for the DSDT and FACS within the FADT were not being
10029 used, causing truncation of the upper 32-bits of these addresses. Lin
10033 ----------------------------------------
10034 19 October 2007. Summary of changes for version 20071019:
10036 1) ACPI CA Core Subsystem:
10038 Fixed a problem with the Alias operator when the target of the alias is a
10039 named ASL operator that opens a new scope -- Scope, Device,
10041 Processor, and ThermalZone. In these cases, any children of the original
10042 operator could not be accessed via the alias, potentially causing
10044 AE_NOT_FOUND exceptions. (BZ 9067)
10046 Fixed a problem with the Package operator where all named references were
10047 created as object references and left otherwise unresolved. According to
10049 ACPI specification, a Package can only contain Data Objects or references
10051 control methods. The implication is that named references to Data Objects
10052 (Integer, Buffer, String, Package, BufferField, Field) should be resolved
10053 immediately upon package creation. This is the approach taken with this
10054 change. References to all other named objects (Methods, Devices, Scopes,
10055 etc.) are all now properly created as reference objects. (BZ 5328)
10057 Reverted a change to Notify handling that was introduced in version
10058 20070508. This version changed the Notify handling from asynchronous to
10059 fully synchronous (Device driver Notify handling with respect to the
10061 ASL operator). It was found that this change caused more problems than it
10062 solved and was removed by most users.
10064 Fixed a problem with the Increment and Decrement operators where the type
10066 the target object could be unexpectedly and incorrectly changed. (BZ 353)
10069 Fixed a problem with the Load and LoadTable operators where the table
10070 location within the namespace was ignored. Instead, the table was always
10071 loaded into the root or current scope. Lin Ming.
10073 Fixed a problem with the Load operator when loading a table from a buffer
10074 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10076 Fixed a problem with the Debug object where a store of a DdbHandle
10078 object to the Debug object could cause a fault.
10080 Added a table checksum verification for the Load operator, in the case
10082 the load is from a buffer. (BZ 578).
10084 Implemented additional parameter validation for the LoadTable operator.
10086 length of the input strings SignatureString, OemIdString, and OemTableId
10088 now checked for maximum lengths. (BZ 582) Lin Ming.
10090 Example Code and Data Size: These are the sizes for the OS-independent
10091 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10092 debug version of the code includes the debug output trace mechanism and
10094 a much larger code and data size.
10097 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
10098 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
10100 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
10101 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
10104 2) iASL Compiler/Disassembler:
10106 Fixed a problem where if a single file was specified and the file did not
10107 exist, no error message was emitted. (Introduced with wildcard support in
10110 ----------------------------------------
10111 19 September 2007. Summary of changes for version 20070919:
10113 1) ACPI CA Core Subsystem:
10115 Designed and implemented new external interfaces to install and remove
10116 handlers for ACPI table-related events. Current events that are defined
10118 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10119 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10120 AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10122 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10123 (acpi_serialized option on Linux) could cause some systems to hang during
10124 initialization. (Bob Moore) BZ 8171
10126 Fixed a problem where objects of certain types (Device, ThermalZone,
10127 Processor, PowerResource) can be not found if they are declared and
10128 referenced from within the same control method (Lin Ming) BZ 341
10130 Example Code and Data Size: These are the sizes for the OS-independent
10131 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10132 debug version of the code includes the debug output trace mechanism and
10134 a much larger code and data size.
10137 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
10138 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
10140 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
10141 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
10144 2) iASL Compiler/Disassembler:
10146 Implemented support to allow multiple files to be compiled/disassembled
10149 single invocation. This includes command line wildcard support for both
10151 Windows and Unix versions of the compiler. This feature simplifies the
10152 disassembly and compilation of multiple ACPI tables in a single
10155 ----------------------------------------
10156 08 May 2007. Summary of changes for version 20070508:
10158 1) ACPI CA Core Subsystem:
10160 Implemented a Microsoft compatibility design change for the handling of
10162 Notify AML operator. Previously, notify handlers were dispatched and
10163 executed completely asynchronously in a deferred thread. The new design
10164 still executes the notify handlers in a different thread, but the
10166 thread that executed the Notify() now waits at a synchronization point
10168 the notify handler to complete. Some machines depend on a synchronous
10170 operator in order to operate correctly.
10172 Implemented support to allow Package objects to be passed as method
10173 arguments to the external AcpiEvaluateObject interface. Previously, this
10174 would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10175 implemented since there were no reserved control methods that required it
10178 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10180 contained invalid non-zero values in reserved fields could cause later
10181 failures because these fields have meaning in later revisions of the
10183 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10185 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10187 Fixed a problem where the Global Lock handle was not properly updated if
10189 thread that acquired the Global Lock via executing AML code then
10191 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10195 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10196 could be corrupted if the interrupt being removed was at the head of the
10197 list. Reported by Linn Crosetto.
10199 Example Code and Data Size: These are the sizes for the OS-independent
10200 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10201 debug version of the code includes the debug output trace mechanism and
10203 a much larger code and data size.
10206 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10207 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
10209 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
10210 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
10212 ----------------------------------------
10213 20 March 2007. Summary of changes for version 20070320:
10215 1) ACPI CA Core Subsystem:
10217 Implemented a change to the order of interpretation and evaluation of AML
10218 operand objects within the AML interpreter. The interpreter now evaluates
10219 operands in the order that they appear in the AML stream (and the
10220 corresponding ASL code), instead of in the reverse order (after the
10222 operand list has been parsed). The previous behavior caused several
10224 incompatibilities with the Microsoft AML interpreter as well as being
10225 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10227 Implemented a change to the ACPI Global Lock support. All interfaces to
10229 global lock now allow the same thread to acquire the lock multiple times.
10230 This affects the AcpiAcquireGlobalLock external interface to the global
10232 as well as the internal use of the global lock to support AML fields -- a
10233 control method that is holding the global lock can now simultaneously
10235 AML fields that require global lock protection. Previously, in both
10237 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10239 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10240 Controller. There is no change to the behavior of the AML Acquire
10242 as this can already be used to acquire a mutex multiple times by the same
10243 thread. BZ 8066. With assistance from Alexey Starikovskiy.
10245 Fixed a problem where invalid objects could be referenced in the AML
10246 Interpreter after error conditions. During operand evaluation, ensure
10248 the internal "Return Object" field is cleared on error and only valid
10249 pointers are stored there. Caused occasional access to deleted objects
10251 resulted in "large reference count" warning messages. Valery Podrezov.
10253 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10255 deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10258 Fixed an internal problem with the handling of result objects on the
10259 interpreter result stack. BZ 7872. Valery Podrezov.
10261 Removed obsolete code that handled the case where AML_NAME_OP is the
10263 of a reference (Reference.Opcode). This code was no longer necessary. BZ
10264 7874. Valery Podrezov.
10266 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10269 remnant from the previously discontinued 16-bit support.
10271 Example Code and Data Size: These are the sizes for the OS-independent
10272 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10273 debug version of the code includes the debug output trace mechanism and
10275 a much larger code and data size.
10278 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10279 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10281 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10282 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
10284 ----------------------------------------
10285 26 January 2007. Summary of changes for version 20070126:
10287 1) ACPI CA Core Subsystem:
10289 Added the 2007 copyright to all module headers and signons. This affects
10290 virtually every file in the ACPICA core subsystem, the iASL compiler, and
10293 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10294 during a table load. A bad pointer was passed in the case where the DSDT
10296 overridden, causing a fault in this case.
10298 Example Code and Data Size: These are the sizes for the OS-independent
10299 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10300 debug version of the code includes the debug output trace mechanism and
10302 a much larger code and data size.
10305 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10306 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10308 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10309 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10311 ----------------------------------------
10312 15 December 2006. Summary of changes for version 20061215:
10314 1) ACPI CA Core Subsystem:
10316 Support for 16-bit ACPICA has been completely removed since it is no
10318 necessary and it clutters the code. All 16-bit macros, types, and
10319 conditional compiles have been removed, cleaning up and simplifying the
10321 across the entire subsystem. DOS support is no longer needed since the
10322 bootable Linux firmware kit is now available.
10324 The handler for the Global Lock is now removed during AcpiTerminate to
10325 enable a clean subsystem restart, via the implementation of the
10326 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10329 Implemented enhancements to the multithreading support within the
10331 to enable improved multithreading debugging and evaluation of the
10335 Debugger: Enhanced the Statistics/Memory command to emit the total
10337 memory used during the execution, as well as the maximum memory consumed
10339 each of the various object types. (Valery Podrezov)
10341 Example Code and Data Size: These are the sizes for the OS-independent
10342 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10343 debug version of the code includes the debug output trace mechanism and
10345 a much larger code and data size.
10348 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
10349 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
10351 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10352 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10355 2) iASL Compiler/Disassembler and Tools:
10357 AcpiExec: Implemented a new option (-m) to display full memory use
10358 statistics upon subsystem/program termination. (Valery Podrezov)
10360 ----------------------------------------
10361 09 November 2006. Summary of changes for version 20061109:
10363 1) ACPI CA Core Subsystem:
10365 Optimized the Load ASL operator in the case where the source operand is
10367 operation region. Simply map the operation region memory, instead of
10368 performing a bytewise read. (Region must be of type SystemMemory, see
10371 Fixed the Load ASL operator for the case where the source operand is a
10372 region field. A buffer object is also allowed as the source operand. BZ
10375 Fixed a problem where the Load ASL operator allowed the source operand to
10377 an operation region of any type. It is now restricted to regions of type
10378 SystemMemory, as per the ACPI specification. BZ 481
10380 Additional cleanup and optimizations for the new Table Manager code.
10382 AcpiEnable will now fail if all of the required ACPI tables are not
10384 (FADT, FACS, DSDT). BZ 477
10386 Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10388 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10389 manually optimized to be aligned and will not work if it is byte-packed.
10391 Example Code and Data Size: These are the sizes for the OS-independent
10392 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10393 debug version of the code includes the debug output trace mechanism and
10395 a much larger code and data size.
10398 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
10399 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
10401 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
10402 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
10405 2) iASL Compiler/Disassembler and Tools:
10407 Fixed a problem where the presence of the _OSI predefined control method
10408 within complex expressions could cause an internal compiler error.
10410 AcpiExec: Implemented full region support for multiple address spaces.
10411 SpaceId is now part of the REGION object. BZ 429
10413 ----------------------------------------
10414 11 October 2006. Summary of changes for version 20061011:
10416 1) ACPI CA Core Subsystem:
10418 Completed an AML interpreter performance enhancement for control method
10419 execution. Previously a 2-pass parse/execution, control methods are now
10420 completely parsed and executed in a single pass. This improves overall
10421 interpreter performance by ~25%, reduces code size, and reduces CPU stack
10422 use. (Valery Podrezov + interpreter changes in version 20051202 that
10423 eliminated namespace loading during the pass one parse.)
10425 Implemented _CID support for PCI Root Bridge detection. If the _HID does
10427 match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10429 obtained and also checked for an ID match.
10431 Implemented additional support for the PCI _ADR execution: upsearch until
10433 device scope is found before executing _ADR. This allows PCI_Config
10434 operation regions to be declared locally within control methods
10436 PCI device objects.
10438 Fixed a problem with a possible race condition between threads executing
10439 AcpiWalkNamespace and the AML interpreter. This condition was removed by
10440 modifying AcpiWalkNamespace to (by default) ignore all temporary
10442 entries created during any concurrent control method execution. An
10443 additional namespace race condition is known to exist between
10444 AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10447 Restructured the AML ParseLoop function, breaking it into several
10448 subfunctions in order to reduce CPU stack use and improve
10452 AcpiGetHandle: Fix for parameter validation to detect invalid
10454 of prefix handle and pathname. BZ 478
10456 Example Code and Data Size: These are the sizes for the OS-independent
10457 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10458 debug version of the code includes the debug output trace mechanism and
10460 a much larger code and data size.
10463 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10464 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
10466 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
10467 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
10469 2) iASL Compiler/Disassembler and Tools:
10471 Ported the -g option (get local ACPI tables) to the new ACPICA Table
10473 to restore original behavior.
10475 ----------------------------------------
10476 27 September 2006. Summary of changes for version 20060927:
10478 1) ACPI CA Core Subsystem:
10480 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10481 These functions now use a spinlock for mutual exclusion and the interrupt
10482 level indication flag is not needed.
10484 Fixed a problem with the Global Lock where the lock could appear to be
10485 obtained before it is actually obtained. The global lock semaphore was
10486 inadvertently created with one unit instead of zero units. (BZ 464)
10490 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10492 a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10494 Example Code and Data Size: These are the sizes for the OS-independent
10495 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10496 debug version of the code includes the debug output trace mechanism and
10498 a much larger code and data size.
10501 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10502 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
10504 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10505 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
10508 2) iASL Compiler/Disassembler and Tools:
10510 Fixed a compilation problem with the pre-defined Resource Descriptor
10512 names where an "object does not exist" error could be incorrectly
10514 if the parent ResourceTemplate pathname places the template within a
10515 different namespace scope than the current scope. (BZ 7212)
10517 Fixed a problem where the compiler could hang after syntax errors
10519 in an ElseIf construct. (BZ 453)
10521 Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10522 operator. An incorrect output filename was produced when this parameter
10524 a null string (""). Now, the original input filename is used as the AML
10525 output filename, with an ".aml" extension.
10527 Implemented a generic batch command mode for the AcpiExec utility
10529 any AML debugger command) (Valery Podrezov).
10531 ----------------------------------------
10532 12 September 2006. Summary of changes for version 20060912:
10534 1) ACPI CA Core Subsystem:
10536 Enhanced the implementation of the "serialized mode" of the interpreter
10537 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10538 specified, instead of creating a serialization semaphore per control
10540 the interpreter lock is simply no longer released before a blocking
10541 operation during control method execution. This effectively makes the AML
10542 Interpreter single-threaded. The overhead of a semaphore per-method is
10545 Fixed a regression where an error was no longer emitted if a control
10547 attempts to create 2 objects of the same name. This once again returns
10548 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10550 will dynamically serialize the control method to possible prevent future
10553 Integrated a fix for a problem with PCI Express HID detection in the PCI
10554 Config Space setup procedure. (BZ 7145)
10556 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10557 AcpiHwInitialize function - the FADT registers are now validated when the
10560 Added two new warnings during FADT verification - 1) if the FADT is
10562 than the largest known FADT version, and 2) if there is a mismatch
10565 32-bit block address and the 64-bit X counterpart (when both are non-
10568 Example Code and Data Size: These are the sizes for the OS-independent
10569 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10570 debug version of the code includes the debug output trace mechanism and
10572 a much larger code and data size.
10575 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
10576 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
10578 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10579 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
10582 2) iASL Compiler/Disassembler and Tools:
10584 Fixed a problem with the implementation of the Switch() operator where
10586 temporary variable was declared too close to the actual Switch, instead
10588 at method level. This could cause a problem if the Switch() operator is
10589 within a while loop, causing an error on the second iteration. (BZ 460)
10591 Disassembler - fix for error emitted for unknown type for target of scope
10592 operator. Now, ignore it and continue.
10594 Disassembly of an FADT now verifies the input FADT and reports any errors
10595 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10597 Disassembly of raw data buffers with byte initialization data now
10599 each output line with the current buffer offset.
10601 Disassembly of ASF! table now includes all variable-length data fields at
10602 the end of some of the subtables.
10604 The disassembler now emits a comment if a buffer appears to be a
10605 ResourceTemplate, but cannot be disassembled as such because the EndTag
10607 not appear at the very end of the buffer.
10609 AcpiExec - Added the "-t" command line option to enable the serialized
10611 of the AML interpreter.
10613 ----------------------------------------
10614 31 August 2006. Summary of changes for version 20060831:
10616 1) ACPI CA Core Subsystem:
10618 Miscellaneous fixes for the Table Manager:
10619 - Correctly initialize internal common FADT for all 64-bit "X" fields
10620 - Fixed a couple table mapping issues during table load
10621 - Fixed a couple alignment issues for IA64
10622 - Initialize input array to zero in AcpiInitializeTables
10623 - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10624 AcpiGetTableByIndex
10626 Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10628 immediately disabled to prevent the waking GPE from firing again and to
10629 prevent other wake GPEs from interrupting the wake process.
10631 Added the AcpiGpeCount global that tracks the number of processed GPEs,
10633 be used for debugging systems with a large number of ACPI interrupts.
10635 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10636 both the ACPICA headers and the disassembler.
10638 Example Code and Data Size: These are the sizes for the OS-independent
10639 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10640 debug version of the code includes the debug output trace mechanism and
10642 a much larger code and data size.
10645 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
10646 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
10648 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
10649 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
10652 2) iASL Compiler/Disassembler and Tools:
10654 Disassembler support for the DMAR ACPI table.
10656 ----------------------------------------
10657 23 August 2006. Summary of changes for version 20060823:
10659 1) ACPI CA Core Subsystem:
10661 The Table Manager component has been completely redesigned and
10662 reimplemented. The new design is much simpler, and reduces the overall
10664 and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10666 now possible to obtain the ACPI tables very early during kernel
10667 initialization, even before dynamic memory management is initialized.
10668 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10670 Obsolete ACPICA interfaces:
10672 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10675 - AcpiLoadTable: Not needed.
10676 - AcpiUnloadTable: Not needed.
10678 New ACPICA interfaces:
10680 - AcpiInitializeTables: Must be called before the table manager can be
10682 - AcpiReallocateRootTable: Used to transfer the root table to dynamically
10683 allocated memory after it becomes available.
10684 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10688 Other ACPICA changes:
10690 - AcpiGetTableHeader returns the actual mapped table header, not a copy.
10692 AcpiOsUnmapMemory to free this mapping.
10693 - AcpiGetTable returns the actual mapped table. The mapping is managed
10694 internally and must not be deleted by the caller. Use of this interface
10695 causes no additional dynamic memory allocation.
10696 - AcpiFindRootPointer: Support for physical addressing has been
10698 it appeared to be unused.
10699 - The interface to AcpiOsMapMemory has changed to be consistent with the
10700 other allocation interfaces.
10701 - The interface to AcpiOsGetRootPointer has changed to eliminate
10704 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
10706 bit platforms. Was previously 64 bits on all platforms.
10707 - The interface to the ACPI Global Lock acquire/release macros have
10709 slightly since ACPICA no longer keeps a local copy of the FACS with a
10710 constructed pointer to the actual global lock.
10712 Porting to the new table manager:
10714 - AcpiInitializeTables: Must be called once, and can be called anytime
10715 during the OS initialization process. It allows the host to specify an
10717 of memory to be used to store the internal version of the RSDT/XSDT (root
10718 table). This allows the host to access ACPI tables before memory
10720 is initialized and running.
10721 - AcpiReallocateRootTable: Can be called after memory management is
10723 to copy the root table to a dynamically allocated array, freeing up the
10724 scratch memory specified in the call to AcpiInitializeTables.
10725 - AcpiSubsystemInitialize: This existing interface is independent of the
10726 Table Manager, and does not have to be called before the Table Manager
10728 be used, it only must be called before the rest of ACPICA can be used.
10729 - ACPI Tables: Some changes have been made to the names and structure of
10731 actbl.h and actbl1.h header files and may require changes to existing
10733 For example, bitfields have been completely removed because of their lack
10735 portability across C compilers.
10736 - Update interfaces to the Global Lock acquire/release macros if local
10737 versions are used. (see acwin.h)
10739 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10741 New files: tbfind.c
10743 Example Code and Data Size: These are the sizes for the OS-independent
10744 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10745 debug version of the code includes the debug output trace mechanism and
10747 a much larger code and data size.
10750 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
10751 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
10753 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
10754 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
10757 2) iASL Compiler/Disassembler and Tools:
10759 No changes for this release.
10761 ----------------------------------------
10762 21 July 2006. Summary of changes for version 20060721:
10764 1) ACPI CA Core Subsystem:
10766 The full source code for the ASL test suite used to validate the iASL
10767 compiler and the ACPICA core subsystem is being released with the ACPICA
10768 source for the first time. The source is contained in a separate package
10770 consists of over 1100 files that exercise all ASL/AML operators. The
10772 should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
10776 Completed a new design and implementation for support of the ACPI Global
10777 Lock. On the OS side, the global lock is now treated as a standard AML
10778 mutex. Previously, multiple OS threads could "acquire" the global lock
10779 simultaneously. However, this could cause the BIOS to be starved out of
10781 lock - especially in cases such as the Embedded Controller driver where
10782 there is a tight coupling between the OS and the BIOS.
10784 Implemented an optimization for the ACPI Global Lock interrupt mechanism.
10785 The Global Lock interrupt handler no longer queues the execution of a
10786 separate thread to signal the global lock semaphore. Instead, the
10788 is signaled directly from the interrupt handler.
10790 Implemented support within the AML interpreter for package objects that
10791 contain a larger AML length (package list length) than the package
10793 count. In this case, the length of the package is truncated to match the
10794 package element count. Some BIOS code apparently modifies the package
10796 on the fly, and this change supports this behavior. Provides
10798 with the MS AML interpreter. (With assistance from Fiodor Suietov)
10800 Implemented a temporary fix for the BankValue parameter of a Bank Field
10802 support all constant values, now including the Zero and One opcodes.
10803 Evaluation of this parameter must eventually be converted to a full
10805 evaluation. A not-implemented error is now returned (temporarily) for
10807 constant values for this parameter.
10809 Fixed problem reports (Fiodor Suietov) integrated:
10810 - Fix for premature object deletion after CopyObject on Operation Region
10814 Example Code and Data Size: These are the sizes for the OS-independent
10815 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10816 debug version of the code includes the debug output trace mechanism and
10818 a much larger code and data size.
10821 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total
10822 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total
10824 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
10825 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
10828 2) iASL Compiler/Disassembler and Tools:
10830 No changes for this release.
10832 ----------------------------------------
10833 07 July 2006. Summary of changes for version 20060707:
10835 1) ACPI CA Core Subsystem:
10837 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
10838 that do not allow the initialization of address pointers within packed
10839 structures - even though the hardware itself may support misaligned
10840 transfers. Some of the debug data structures are packed by default to
10843 Added an error message for the case where AcpiOsGetThreadId() returns
10845 A non-zero value is required by the core ACPICA code to ensure the proper
10846 operation of AML mutexes and recursive control methods.
10848 The DSDT is now the only ACPI table that determines whether the AML
10849 interpreter is in 32-bit or 64-bit mode. Not really a functional change,
10851 the hooks for per-table 32/64 switching have been removed from the code.
10853 clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10855 Fixed a possible leak of an OwnerID in the error path of
10856 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
10857 deletion to a single place in AcpiTbUninstallTable to correct possible
10859 when using the AcpiTbDeleteTablesByType interface (with assistance from
10862 Fixed a problem with Serialized control methods where the semaphore
10863 associated with the method could be over-signaled after multiple method
10866 Fixed two issues with the locking of the internal namespace data
10868 Both the Unload() operator and AcpiUnloadTable interface now lock the
10869 namespace during the namespace deletion associated with the table unload
10870 (with assistance from Linn Crosetto.)
10872 Fixed problem reports (Valery Podrezov) integrated:
10873 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10875 Fixed problem reports (Fiodor Suietov) integrated:
10876 - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
10877 - On Address Space handler deletion, needless deactivation call (BZ 374)
10878 - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
10880 - Possible memory leak, Notify sub-objects of Processor, Power,
10883 - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
10884 - Minimum Length of RSDT should be validated (BZ 379)
10885 - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
10887 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
10891 Example Code and Data Size: These are the sizes for the OS-independent
10892 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10893 debug version of the code includes the debug output trace mechanism and
10895 a much larger code and data size.
10898 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
10899 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
10901 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
10902 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
10905 2) iASL Compiler/Disassembler and Tools:
10907 Fixed problem reports:
10908 Compiler segfault when ASL contains a long (>1024) String declaration (BZ
10911 ----------------------------------------
10912 23 June 2006. Summary of changes for version 20060623:
10914 1) ACPI CA Core Subsystem:
10916 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
10917 allows the type to be customized to the host OS for improved efficiency
10918 (since a spinlock is usually a very small object.)
10920 Implemented support for "ignored" bits in the ACPI registers. According
10922 the ACPI specification, these bits should be preserved when writing the
10923 registers via a read/modify/write cycle. There are 3 bits preserved in
10925 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
10927 Implemented the initial deployment of new OSL mutex interfaces. Since
10929 host operating systems have separate mutex and semaphore objects, this
10930 feature was requested. The base code now uses mutexes (and the new mutex
10931 interfaces) wherever a binary semaphore was used previously. However, for
10932 the current release, the mutex interfaces are defined as macros to map
10934 to the existing semaphore interfaces. Therefore, no OSL changes are
10936 at this time. (See acpiosxf.h)
10938 Fixed several problems with the support for the control method SyncLevel
10939 parameter. The SyncLevel now works according to the ACPI specification
10941 in concert with the Mutex SyncLevel parameter, since the current
10943 is a property of the executing thread. Mutual exclusion for control
10945 is now implemented with a mutex instead of a semaphore.
10947 Fixed three instances of the use of the C shift operator in the bitfield
10948 support code (exfldio.c) to avoid the use of a shift value larger than
10950 target data width. The behavior of C compilers is undefined in this case
10952 can cause unpredictable results, and therefore the case must be detected
10954 avoided. (Fiodor Suietov)
10956 Added an info message whenever an SSDT or OEM table is loaded dynamically
10957 via the Load() or LoadTable() ASL operators. This should improve
10959 capability since it will show exactly what tables have been loaded
10961 the tables present in the RSDT/XSDT.)
10963 Example Code and Data Size: These are the sizes for the OS-independent
10964 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10965 debug version of the code includes the debug output trace mechanism and
10967 a much larger code and data size.
10970 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
10971 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
10973 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
10974 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
10977 2) iASL Compiler/Disassembler and Tools:
10979 No changes for this release.
10981 ----------------------------------------
10982 08 June 2006. Summary of changes for version 20060608:
10984 1) ACPI CA Core Subsystem:
10986 Converted the locking mutex used for the ACPI hardware to a spinlock.
10988 change should eliminate all problems caused by attempting to acquire a
10989 semaphore at interrupt level, and it means that all ACPICA external
10990 interfaces that directly access the ACPI hardware can be safely called
10992 interrupt level. OSL code that implements the semaphore interfaces should
10994 able to eliminate any workarounds for being called at interrupt level.
10996 Fixed a regression introduced in 20060526 where the ACPI device
10997 initialization could be prematurely aborted with an AE_NOT_FOUND if a
10999 did not have an optional _INI method.
11001 Fixed an IndexField issue where a write to the Data Register should be
11002 limited in size to the AccessSize (width) of the IndexField itself. (BZ
11006 Fixed problem reports (Valery Podrezov) integrated:
11007 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11009 Fixed problem reports (Fiodor Suietov) integrated:
11010 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11012 Removed four global mutexes that were obsolete and were no longer being
11015 Example Code and Data Size: These are the sizes for the OS-independent
11016 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11017 debug version of the code includes the debug output trace mechanism and
11019 a much larger code and data size.
11022 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
11023 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
11025 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
11026 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
11029 2) iASL Compiler/Disassembler and Tools:
11031 Fixed a fault when using -g option (get tables from registry) on Windows
11034 Fixed problem reports integrated:
11035 - Generate error if CreateField NumBits parameter is zero. (BZ 405)
11036 - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11038 - Global table revision override (-r) is ignored (BZ 413)
11040 ----------------------------------------
11041 26 May 2006. Summary of changes for version 20060526:
11043 1) ACPI CA Core Subsystem:
11045 Restructured, flattened, and simplified the internal interfaces for
11046 namespace object evaluation - resulting in smaller code, less CPU stack
11048 and fewer interfaces. (With assistance from Mikhail Kouzmich)
11050 Fixed a problem with the CopyObject operator where the first parameter
11052 not typed correctly for the parser, interpreter, compiler, and
11054 Caused various errors and unexpected behavior.
11056 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11057 produced incorrect results with some C compilers. Since the behavior of C
11058 compilers when the shift value is larger than the datatype width is
11059 apparently not well defined, the interpreter now detects this condition
11061 simply returns zero as expected in all such cases. (BZ 395)
11063 Fixed problem reports (Valery Podrezov) integrated:
11064 - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11065 - Allow interpreter to handle nested method declarations (BZ 5361)
11067 Fixed problem reports (Fiodor Suietov) integrated:
11068 - AcpiTerminate doesn't free debug memory allocation list objects (BZ
11070 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11072 - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11073 - Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11074 - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11075 - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11076 - Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11077 - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11078 - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11080 - Status of the Global Initialization Handler call not used (BZ 366)
11081 - Incorrect object parameter to Global Initialization Handler (BZ 367)
11083 Example Code and Data Size: These are the sizes for the OS-independent
11084 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11085 debug version of the code includes the debug output trace mechanism and
11087 a much larger code and data size.
11090 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
11091 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
11093 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
11094 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
11097 2) iASL Compiler/Disassembler and Tools:
11099 Modified the parser to allow the names IO, DMA, and IRQ to be used as
11100 namespace identifiers with no collision with existing resource descriptor
11101 macro names. This provides compatibility with other ASL compilers and is
11102 most useful for disassembly/recompilation of existing tables without
11104 errors. (With assistance from Thomas Renninger)
11106 Disassembler: fixed an incorrect disassembly problem with the
11107 DataTableRegion and CopyObject operators. Fixed a possible fault during
11108 disassembly of some Alias operators.
11110 ----------------------------------------
11111 12 May 2006. Summary of changes for version 20060512:
11113 1) ACPI CA Core Subsystem:
11115 Replaced the AcpiOsQueueForExecution interface with a new interface named
11116 AcpiOsExecute. The major difference is that the new interface does not
11118 a Priority parameter, this appeared to be useless and has been replaced
11121 Type parameter. The Type tells the host what type of execution is being
11122 requested, such as global lock handler, notify handler, GPE handler, etc.
11123 This allows the host to queue and execute the request as appropriate for
11125 request type, possibly using different work queues and different
11127 for the various request types. This enables fixes for multithreading
11128 deadlock problems such as BZ #5534, and will require changes to all
11130 OS interface layers. (Alexey Starikovskiy and Bob Moore)
11132 Fixed a possible memory leak associated with the support for the so-
11134 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11137 Fixed a problem with the Load() operator where a table load from an
11138 operation region could overwrite an internal table buffer by up to 7
11140 and cause alignment faults on IPF systems. (With assistance from Luming
11143 Example Code and Data Size: These are the sizes for the OS-independent
11144 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11145 debug version of the code includes the debug output trace mechanism and
11147 a much larger code and data size.
11150 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
11151 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
11153 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
11154 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
11158 2) iASL Compiler/Disassembler and Tools:
11160 Disassembler: Implemented support to cross reference the internal
11162 and automatically generate ASL External() statements for symbols not
11164 within the current table being disassembled. This will simplify the
11165 disassembly and recompilation of interdependent tables such as SSDTs
11167 these statements will no longer have to be added manually.
11169 Disassembler: Implemented experimental support to automatically detect
11170 invocations of external control methods and generate appropriate
11172 statements. This is problematic because the AML cannot be correctly
11174 until the number of arguments for each control method is known.
11176 standalone method invocations and invocations as the source operand of a
11177 Store() statement are supported.
11179 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11180 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11181 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11182 more readable and likely closer to the original ASL source.
11184 ----------------------------------------
11185 21 April 2006. Summary of changes for version 20060421:
11187 1) ACPI CA Core Subsystem:
11189 Removed a device initialization optimization introduced in 20051216 where
11190 the _STA method was not run unless an _INI was also present for the same
11191 device. This optimization could cause problems because it could allow
11193 methods to be run within a not-present device subtree. (If a not-present
11194 device had no _INI, _STA would not be run, the not-present status would
11196 be discovered, and the children of the device would be incorrectly
11199 Implemented a new _STA optimization where namespace subtrees that do not
11200 contain _INI are identified and ignored during device initialization.
11201 Selectively running _STA can significantly improve boot time on large
11202 machines (with assistance from Len Brown.)
11204 Implemented support for the device initialization case where the returned
11205 _STA flags indicate a device not-present but functioning. In this case,
11207 is not run, but the device children are examined for presence, as per the
11208 ACPI specification.
11210 Implemented an additional change to the IndexField support in order to
11211 conform to MS behavior. The value written to the Index Register is not
11212 simply a byte offset, it is a byte offset in units of the access width of
11213 the parent Index Field. (Fiodor Suietov)
11215 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11216 interface is called during the creation of all AML operation regions, and
11217 allows the host OS to exert control over what addresses it will allow the
11218 AML code to access. Operation Regions whose addresses are disallowed will
11219 cause a runtime exception when they are actually accessed (will not
11221 or abort table loading.) See oswinxf or osunixxf for an example
11224 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11225 interface allows the host OS to match the various "optional"
11226 interface/behavior strings for the _OSI predefined control method as
11227 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11228 for an example implementation.
11230 Restructured and corrected various problems in the exception handling
11232 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11233 (with assistance from Takayoshi Kochi.)
11235 Modified the Linux source converter to ignore quoted string literals
11237 converting identifiers from mixed to lower case. This will correct
11239 with the disassembler and other areas where such strings must not be
11242 The ACPI_FUNCTION_* macros no longer require quotes around the function
11243 name. This allows the Linux source converter to convert the names, now
11245 the converter ignores quoted strings.
11247 Example Code and Data Size: These are the sizes for the OS-independent
11248 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11249 debug version of the code includes the debug output trace mechanism and
11251 a much larger code and data size.
11255 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
11256 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
11258 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
11259 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
11262 2) iASL Compiler/Disassembler and Tools:
11264 Implemented 3 new warnings for iASL, and implemented multiple warning
11268 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11270 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11271 check for the possible timeout, a warning is issued.
11273 2) Useless operators: If an ASL operator does not specify an optional
11275 operand and it also does not use the function return value from the
11276 operator, a warning is issued since the operator effectively does
11279 3) Unreferenced objects: If a namespace object is created, but never
11280 referenced, a warning is issued. This is a warning level 2 since there
11282 cases where this is ok, such as when a secondary table is loaded that
11284 the unreferenced objects. Even so, care is taken to only flag objects
11286 don't look like they will ever be used. For example, the reserved methods
11287 (starting with an underscore) are usually not referenced because it is
11288 expected that the OS will invoke them.
11290 ----------------------------------------
11291 31 March 2006. Summary of changes for version 20060331:
11293 1) ACPI CA Core Subsystem:
11295 Implemented header file support for the following additional ACPI tables:
11296 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11298 all current and known ACPI tables are now defined in the ACPICA headers
11300 are available for use by device drivers and other software.
11302 Implemented support to allow tables that contain ACPI names with invalid
11303 characters to be loaded. Previously, this would cause the table load to
11304 fail, but since there are several known cases of such tables on existing
11305 machines, this change was made to enable ACPI support for them. Also,
11307 matches the behavior of the Microsoft ACPI implementation.
11309 Fixed a couple regressions introduced during the memory optimization in
11311 20060317 release. The namespace node definition required additional
11312 reorganization and an internal datatype that had been changed to 8-bit
11314 restored to 32-bit. (Valery Podrezov)
11316 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11317 could be passed through to AcpiOsReleaseObject which is unexpected. Such
11318 null pointers are now trapped and ignored, matching the behavior of the
11319 previous implementation before the deployment of AcpiOsReleaseObject.
11320 (Valery Podrezov, Fiodor Suietov)
11322 Fixed a memory mapping leak during the deletion of a SystemMemory
11324 region where a cached memory mapping was not deleted. This became a
11325 noticeable problem for operation regions that are defined within
11327 used control methods. (Dana Meyers)
11329 Reorganized the ACPI table header files into two main files: one for the
11330 ACPI tables consumed by the ACPICA core, and another for the
11332 ACPI tables that are consumed by the drivers and other software. The
11334 FADT definitions were merged into one common section and three different
11335 tables (ACPI 1.0, 1.0+, and 2.0)
11337 Example Code and Data Size: These are the sizes for the OS-independent
11338 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11339 debug version of the code includes the debug output trace mechanism and
11341 a much larger code and data size.
11344 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
11345 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
11347 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
11348 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
11351 2) iASL Compiler/Disassembler and Tools:
11353 Disassembler: Implemented support to decode and format all non-AML ACPI
11354 tables (tables other than DSDTs and SSDTs.) This includes the new tables
11355 added to the ACPICA headers, therefore all current and known ACPI tables
11359 Disassembler: The change to allow ACPI names with invalid characters also
11360 enables the disassembly of such tables. Invalid characters within names
11362 changed to '*' to make the name printable; the iASL compiler will still
11363 generate an error for such names, however, since this is an invalid ACPI
11366 Implemented an option for AcpiXtract (-a) to extract all tables found in
11368 input file. The default invocation extracts only the DSDTs and SSDTs.
11370 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11371 makefile for the AcpiXtract utility.
11373 ----------------------------------------
11374 17 March 2006. Summary of changes for version 20060317:
11376 1) ACPI CA Core Subsystem:
11378 Implemented the use of a cache object for all internal namespace nodes.
11379 Since there are about 1000 static nodes in a typical system, this will
11380 decrease memory use for cache implementations that minimize per-
11382 overhead (such as a slab allocator.)
11384 Removed the reference count mechanism for internal namespace nodes, since
11386 was deemed unnecessary. This reduces the size of each namespace node by
11387 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11389 and 32 bytes for the 64-bit case.
11391 Optimized several internal data structures to reduce object size on 64-
11393 platforms by packing data within the 64-bit alignment. This includes the
11394 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11395 instances corresponding to the namespace objects.
11397 Added two new strings for the predefined _OSI method: "Windows 2001.1
11399 and "Windows 2006".
11401 Split the allocation tracking mechanism out to a separate file, from
11402 utalloc.c to uttrack.c. This mechanism appears to be only useful for
11403 application-level code. Kernels may wish to not include uttrack.c in
11406 Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11408 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11411 Code and Data Size: These are the sizes for the acpica.lib produced by
11413 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11415 driver or OSPM code. The debug version of the code includes the debug
11417 trace mechanism and has a much larger code and data size. Note that these
11418 values will vary depending on the efficiency of the compiler and the
11419 compiler options used during generation.
11422 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11423 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
11425 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
11426 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
11429 2) iASL Compiler/Disassembler and Tools:
11431 Implemented an ANSI C version of the acpixtract utility. This version
11433 automatically extract the DSDT and all SSDTs from the input acpidump text
11434 file and dump the binary output to separate files. It can also display a
11435 summary of the input file including the headers for each table found and
11436 will extract any single ACPI table, with any signature. (See
11437 source/tools/acpixtract)
11439 ----------------------------------------
11440 10 March 2006. Summary of changes for version 20060310:
11442 1) ACPI CA Core Subsystem:
11444 Tagged all external interfaces to the subsystem with the new
11445 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11447 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11448 macro. The default definition is NULL.
11450 Added the ACPI_THREAD_ID type for the return value from
11452 This allows the host to define this as necessary to simplify kernel
11453 integration. The default definition is ACPI_NATIVE_UINT.
11455 Fixed two interpreter problems related to error processing, the deletion
11457 objects, and placing invalid pointers onto the internal operator result
11458 stack. BZ 6028, 6151 (Valery Podrezov)
11460 Increased the reference count threshold where a warning is emitted for
11462 reference counts in order to eliminate unnecessary warnings on systems
11464 large namespaces (especially 64-bit.) Increased the value from 0x400 to
11467 Due to universal disagreement as to the meaning of the 'c' in the
11469 function, the ACPI_MEM_CALLOCATE macro has been renamed to
11470 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11471 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11474 Code and Data Size: These are the sizes for the acpica.lib produced by
11476 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11478 driver or OSPM code. The debug version of the code includes the debug
11480 trace mechanism and has a much larger code and data size. Note that these
11481 values will vary depending on the efficiency of the compiler and the
11482 compiler options used during generation.
11485 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
11486 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
11488 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11489 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
11492 2) iASL Compiler/Disassembler:
11494 Disassembler: implemented support for symbolic resource descriptor
11495 references. If a CreateXxxxField operator references a fixed offset
11498 resource descriptor, a name is assigned to the descriptor and the offset
11500 translated to the appropriate resource tag and pathname. The addition of
11501 this support brings the disassembled code very close to the original ASL
11502 source code and helps eliminate run-time errors when the disassembled
11504 is modified (and recompiled) in such a way as to invalidate the original
11507 Implemented support for a Descriptor Name as the last parameter to the
11509 Register() macro. This parameter was inadvertently left out of the ACPI
11510 specification, and will be added for ACPI 3.0b.
11512 Fixed a problem where the use of the "_OSI" string (versus the full path
11513 "\_OSI") caused an internal compiler error. ("No back ptr to op")
11515 Fixed a problem with the error message that occurs when an invalid string
11517 used for a _HID object (such as one with an embedded asterisk:
11519 The correct message is now displayed.
11521 ----------------------------------------
11522 17 February 2006. Summary of changes for version 20060217:
11524 1) ACPI CA Core Subsystem:
11526 Implemented a change to the IndexField support to match the behavior of
11528 Microsoft AML interpreter. The value written to the Index register is now
11530 byte offset, no longer an index based upon the width of the Data
11532 This should fix IndexField problems seen on some machines where the Data
11533 register is not exactly one byte wide. The ACPI specification will be
11534 clarified on this point.
11536 Fixed a problem where several resource descriptor types could overrun the
11537 internal descriptor buffer due to size miscalculation: VendorShort,
11538 VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11539 affect all platforms.
11541 Fixed a problem where individual resource descriptors were misaligned
11543 the internal buffer, causing alignment faults on IA64 platforms.
11545 Code and Data Size: These are the sizes for the acpica.lib produced by
11547 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11549 driver or OSPM code. The debug version of the code includes the debug
11551 trace mechanism and has a much larger code and data size. Note that these
11552 values will vary depending on the efficiency of the compiler and the
11553 compiler options used during generation.
11556 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11557 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
11559 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
11560 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
11563 2) iASL Compiler/Disassembler:
11565 Implemented support for new reserved names: _WDG and _WED are Microsoft
11566 extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11567 defined method (Throttling Depth Limit.)
11569 Fixed a problem where a zero-length VendorShort or VendorLong resource
11570 descriptor was incorrectly emitted as a descriptor of length one.
11572 ----------------------------------------
11573 10 February 2006. Summary of changes for version 20060210:
11575 1) ACPI CA Core Subsystem:
11577 Removed a couple of extraneous ACPI_ERROR messages that appeared during
11578 normal execution. These became apparent after the conversion from
11581 Fixed a problem where the CreateField operator could hang if the BitIndex
11583 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11585 Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11586 failed with an exception. This also fixes a couple of related RefOf and
11587 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11589 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11591 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11595 Implemented a memory cleanup at the end of the execution of each
11597 of an AML While() loop, preventing the accumulation of outstanding
11599 (Valery Podrezov, BZ 5427)
11601 Eliminated a chunk of duplicate code in the object resolution code.
11605 Fixed several warnings during the 64-bit code generation.
11607 The AcpiSrc source code conversion tool now inserts one line of
11609 after an if() statement that is followed immediately by a comment,
11611 readability of the Linux code.
11613 Code and Data Size: The current and previous library sizes for the core
11614 subsystem are shown below. These are the code and data sizes for the
11615 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11617 values do not include any ACPI driver or OSPM code. The debug version of
11619 code includes the debug output trace mechanism and has a much larger code
11620 and data size. Note that these values will vary depending on the
11622 of the compiler and the compiler options used during generation.
11625 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
11626 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
11628 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11629 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
11632 2) iASL Compiler/Disassembler:
11634 Fixed a problem with the disassembly of a BankField operator with a
11636 expression for the BankValue parameter.
11638 ----------------------------------------
11639 27 January 2006. Summary of changes for version 20060127:
11641 1) ACPI CA Core Subsystem:
11643 Implemented support in the Resource Manager to allow unresolved
11645 references within resource package objects for the _PRT method. This
11647 is in addition to the previously implemented unresolved reference support
11648 within the AML parser. If the interpreter slack mode is enabled, these
11649 unresolved references will be passed through to the caller as a NULL
11653 Implemented and deployed new macros and functions for error and warning
11654 messages across the subsystem. These macros are simpler and generate less
11655 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11656 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11657 macros remain defined to allow ACPI drivers time to migrate to the new
11660 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11662 Acquire/Release Lock OSL interfaces.
11664 Fixed a problem where Alias ASL operators are sometimes not correctly
11665 resolved, in both the interpreter and the iASL compiler.
11667 Fixed several problems with the implementation of the
11668 ConcatenateResTemplate
11669 ASL operator. As per the ACPI specification, zero length buffers are now
11670 treated as a single EndTag. One-length buffers always cause a fatal
11671 exception. Non-zero length buffers that do not end with a full 2-byte
11673 cause a fatal exception.
11675 Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11676 interface. (With assistance from Thomas Renninger)
11678 Code and Data Size: The current and previous library sizes for the core
11679 subsystem are shown below. These are the code and data sizes for the
11680 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11682 values do not include any ACPI driver or OSPM code. The debug version of
11684 code includes the debug output trace mechanism and has a much larger code
11685 and data size. Note that these values will vary depending on the
11687 of the compiler and the compiler options used during generation.
11690 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
11691 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
11693 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
11694 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
11697 2) iASL Compiler/Disassembler:
11699 Fixed an internal error that was generated for any forward references to
11703 ----------------------------------------
11704 13 January 2006. Summary of changes for version 20060113:
11706 1) ACPI CA Core Subsystem:
11708 Added 2006 copyright to all module headers and signons. This affects
11709 virtually every file in the ACPICA core subsystem, iASL compiler, and the
11712 Enhanced the ACPICA error reporting in order to simplify user migration
11714 the non-debug version of ACPICA. Replaced all instances of the
11715 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11717 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11718 respectively. This preserves all error and warning messages in the non-
11720 version of the ACPICA code (this has been referred to as the "debug lite"
11721 option.) Over 200 cases were converted to create a total of over 380
11722 error/warning messages across the ACPICA code. This increases the code
11724 data size of the default non-debug version of the code somewhat (about
11726 but all error/warning reporting may be disabled if desired (and code
11727 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11728 configuration option. The size of the debug version of ACPICA remains
11732 Fixed a memory leak within the AML Debugger "Set" command. One object was
11733 not properly deleted for every successful invocation of the command.
11735 Code and Data Size: The current and previous library sizes for the core
11736 subsystem are shown below. These are the code and data sizes for the
11737 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11739 values do not include any ACPI driver or OSPM code. The debug version of
11741 code includes the debug output trace mechanism and has a much larger code
11742 and data size. Note that these values will vary depending on the
11744 of the compiler and the compiler options used during generation.
11747 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
11748 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
11750 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
11751 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
11754 2) iASL Compiler/Disassembler:
11756 The compiler now officially supports the ACPI 3.0a specification that was
11757 released on December 30, 2005. (Specification is available at
11760 ----------------------------------------
11761 16 December 2005. Summary of changes for version 20051216:
11763 1) ACPI CA Core Subsystem:
11765 Implemented optional support to allow unresolved names within ASL Package
11766 objects. A null object is inserted in the package when a named reference
11767 cannot be located in the current namespace. Enabled via the interpreter
11768 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
11770 that contain such code.
11772 Implemented an optimization to the initialization sequence that can
11774 boot time. During ACPI device initialization, the _STA method is now run
11776 and only if the _INI method exists. The _STA method is used to determine
11778 the device is present; An _INI can only be run if _STA returns present,
11780 it is a waste of time to run the _STA method if the _INI does not exist.
11781 (Prototype and assistance from Dong Wei)
11783 Implemented use of the C99 uintptr_t for the pointer casting macros if it
11785 available in the current compiler. Otherwise, the default (void *) cast
11789 Fixed some possible memory leaks found within the execution path of the
11790 Break, Continue, If, and CreateField operators. (Valery Podrezov)
11792 Fixed a problem introduced in the 20051202 release where an exception is
11793 generated during method execution if a control method attempts to declare
11796 Moved resource descriptor string constants that are used by both the AML
11797 disassembler and AML debugger to the common utilities directory so that
11798 these components are independent.
11800 Implemented support in the AcpiExec utility (-e switch) to globally
11802 exceptions during control method execution (method is not aborted.)
11804 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
11807 Code and Data Size: The current and previous library sizes for the core
11808 subsystem are shown below. These are the code and data sizes for the
11809 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11811 values do not include any ACPI driver or OSPM code. The debug version of
11813 code includes the debug output trace mechanism and has a much larger code
11814 and data size. Note that these values will vary depending on the
11816 of the compiler and the compiler options used during generation.
11819 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11820 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
11822 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
11823 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
11826 2) iASL Compiler/Disassembler:
11828 Fixed a problem where a CPU stack overflow fault could occur if a
11830 method call was made from within a Return statement.
11832 ----------------------------------------
11833 02 December 2005. Summary of changes for version 20051202:
11835 1) ACPI CA Core Subsystem:
11837 Modified the parsing of control methods to no longer create namespace
11838 objects during the first pass of the parse. Objects are now created only
11839 during the execute phase, at the moment the namespace creation operator
11841 encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
11843 should eliminate ALREADY_EXISTS exceptions seen on some machines where
11844 reentrant control methods are protected by an AML mutex. The mutex will
11846 correctly block multiple threads from attempting to create the same
11850 Increased the number of available Owner Ids for namespace object tracking
11851 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
11853 some machines with a large number of ACPI tables (either static or
11856 Fixed a problem with the AcpiExec utility where a fault could occur when
11858 -b switch (batch mode) is used.
11860 Enhanced the namespace dump routine to output the owner ID for each
11863 Code and Data Size: The current and previous library sizes for the core
11864 subsystem are shown below. These are the code and data sizes for the
11865 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11867 values do not include any ACPI driver or OSPM code. The debug version of
11869 code includes the debug output trace mechanism and has a much larger code
11870 and data size. Note that these values will vary depending on the
11872 of the compiler and the compiler options used during generation.
11875 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11876 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11878 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11879 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
11882 2) iASL Compiler/Disassembler:
11884 Fixed a parse error during compilation of certain Switch/Case constructs.
11886 simplify the parse, the grammar now allows for multiple Default
11888 and this error is now detected and flagged during the analysis phase.
11890 Disassembler: The disassembly now includes the contents of the original
11891 table header within a comment at the start of the file. This includes the
11892 name and version of the original ASL compiler.
11894 ----------------------------------------
11895 17 November 2005. Summary of changes for version 20051117:
11897 1) ACPI CA Core Subsystem:
11899 Fixed a problem in the AML parser where the method thread count could be
11900 decremented below zero if any errors occurred during the method parse
11902 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
11904 This also fixed a related regression with the mechanism that detects and
11905 corrects methods that cannot properly handle reentrancy (related to the
11906 deployment of the new OwnerId mechanism.)
11908 Eliminated the pre-parsing of control methods (to detect errors) during
11909 table load. Related to the problem above, this was causing unwind issues
11911 any errors occurred during the parse, and it seemed to be overkill. A
11913 load should not be aborted if there are problems with any single control
11914 method, thus rendering this feature rather pointless.
11916 Fixed a problem with the new table-driven resource manager where an
11918 buffer overflow could occur for small resource templates.
11920 Implemented a new external interface, AcpiGetVendorResource. This
11922 will find and return a vendor-defined resource descriptor within a _CRS
11924 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
11927 Removed the length limit (200) on string objects as per the upcoming ACPI
11928 3.0A specification. This affects the following areas of the interpreter:
11930 any implicit conversion of a Buffer to a String, 2) a String object
11932 of the ASL Concatenate operator, 3) the String object result of the ASL
11935 Fixed a problem in the Windows OS interface layer (OSL) where a
11937 on a semaphore object would incorrectly timeout. This allows the
11938 multithreading features of the AcpiExec utility to work properly under
11941 Updated the Linux makefiles for the iASL compiler and AcpiExec to include
11942 the recently added file named "utresrc.c".
11944 Code and Data Size: The current and previous library sizes for the core
11945 subsystem are shown below. These are the code and data sizes for the
11946 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11948 values do not include any ACPI driver or OSPM code. The debug version of
11950 code includes the debug output trace mechanism and has a much larger code
11951 and data size. Note that these values will vary depending on the
11953 of the compiler and the compiler options used during generation.
11956 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
11957 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11959 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11960 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11963 2) iASL Compiler/Disassembler:
11965 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
11966 specification. For the iASL compiler, this means that string literals
11968 the source ASL can be of any length.
11970 Enhanced the listing output to dump the AML code for resource descriptors
11971 immediately after the ASL code for each descriptor, instead of in a block
11973 the end of the entire resource template.
11975 Enhanced the compiler debug output to dump the entire original parse tree
11976 constructed during the parse phase, before any transforms are applied to
11978 tree. The transformed tree is dumped also.
11980 ----------------------------------------
11981 02 November 2005. Summary of changes for version 20051102:
11983 1) ACPI CA Core Subsystem:
11985 Modified the subsystem initialization sequence to improve GPE support.
11987 GPE initialization has been split into two parts in order to defer
11989 of the _PRW methods (Power Resources for Wake) until after the hardware
11991 fully initialized and the SCI handler is installed. This allows the _PRW
11992 methods to access fields protected by the Global Lock. This will fix
11994 where a NO_GLOBAL_LOCK exception has been seen during initialization.
11996 Converted the ACPI internal object disassemble and display code within
11998 AML debugger to fully table-driven operation, reducing code size and
11999 increasing maintainability.
12001 Fixed a regression with the ConcatenateResTemplate() ASL operator
12003 in the 20051021 release.
12005 Implemented support for "local" internal ACPI object types within the
12006 debugger "Object" command and the AcpiWalkNamespace external interfaces.
12007 These local types include RegionFields, BankFields, IndexFields, Alias,
12011 Moved common AML resource handling code into a new file, "utresrc.c".
12013 code is shared by both the Resource Manager and the AML Debugger.
12015 Code and Data Size: The current and previous library sizes for the core
12016 subsystem are shown below. These are the code and data sizes for the
12017 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12019 values do not include any ACPI driver or OSPM code. The debug version of
12021 code includes the debug output trace mechanism and has a much larger code
12022 and data size. Note that these values will vary depending on the
12024 of the compiler and the compiler options used during generation.
12027 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
12028 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
12030 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
12031 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
12034 2) iASL Compiler/Disassembler:
12036 Fixed a problem with very large initializer lists (more than 4000
12038 for both Buffer and Package objects where the parse stack could overflow.
12040 Enhanced the pre-compile source code scan for non-ASCII characters to
12042 characters within comment fields. The scan is now always performed and is
12044 longer optional, detecting invalid characters within a source file
12045 immediately rather than during the parse phase or later.
12047 Enhanced the ASL grammar definition to force early reductions on all
12049 style grammar elements so that the overall parse stack usage is greatly
12050 reduced. This should improve performance and reduce the possibility of
12054 Eliminated all reduce/reduce conflicts in the iASL parser generation.
12056 with the addition of a %expected statement, the compiler generates from
12057 source with no warnings.
12059 Fixed a possible segment fault in the disassembler if the input filename
12060 does not contain a "dot" extension (Thomas Renninger).
12062 ----------------------------------------
12063 21 October 2005. Summary of changes for version 20051021:
12065 1) ACPI CA Core Subsystem:
12067 Implemented support for the EM64T and other x86-64 processors. This
12068 essentially entails recognizing that these processors support non-aligned
12069 memory transfers. Previously, all 64-bit processors were assumed to lack
12070 hardware support for non-aligned transfers.
12072 Completed conversion of the Resource Manager to nearly full table-driven
12073 operation. Specifically, the resource conversion code (convert AML to
12074 internal format and the reverse) and the debug code to dump internal
12075 resource descriptors are fully table-driven, reducing code and data size
12077 improving maintainability.
12079 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12081 on 64-bit processors instead of a fixed 32-bit word. (With assistance
12083 Alexey Starikovskiy)
12085 Implemented support within the resource conversion code for the Type-
12086 Specific byte within the various ACPI 3.0 *WordSpace macros.
12088 Fixed some issues within the resource conversion code for the type-
12090 flags for both Memory and I/O address resource descriptors. For Memory,
12091 implemented support for the MTP and TTP flags. For I/O, split the TRS and
12092 TTP flags into two separate fields.
12094 Code and Data Size: The current and previous library sizes for the core
12095 subsystem are shown below. These are the code and data sizes for the
12096 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12098 values do not include any ACPI driver or OSPM code. The debug version of
12100 code includes the debug output trace mechanism and has a much larger code
12101 and data size. Note that these values will vary depending on the
12103 of the compiler and the compiler options used during generation.
12106 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
12107 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
12109 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
12110 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
12114 2) iASL Compiler/Disassembler:
12116 Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12118 corresponding ResourceSource string was not also present in a resource
12119 descriptor declaration. This restriction caused problems with existing
12120 AML/ASL code that includes the Index byte without the string. When such
12122 was disassembled, it could not be compiled without modification. Further,
12123 the modified code created a resource template with a different size than
12125 original, breaking code that used fixed offsets into the resource
12129 Removed a recent feature of the disassembler to ignore a lone
12131 byte. This byte is now emitted if present so that the exact AML can be
12132 reproduced when the disassembled code is recompiled.
12134 Improved comments and text alignment for the resource descriptor code
12135 emitted by the disassembler.
12137 Implemented disassembler support for the ACPI 3.0 AccessSize field within
12139 Register() resource descriptor.
12141 ----------------------------------------
12142 30 September 2005. Summary of changes for version 20050930:
12144 1) ACPI CA Core Subsystem:
12146 Completed a major overhaul of the Resource Manager code - specifically,
12147 optimizations in the area of the AML/internal resource conversion code.
12149 code has been optimized to simplify and eliminate duplicated code, CPU
12151 use has been decreased by optimizing function parameters and local
12152 variables, and naming conventions across the manager have been
12154 for clarity and ease of maintenance (this includes function, parameter,
12155 variable, and struct/typedef names.) The update may force changes in some
12156 driver code, depending on how resources are handled by the host OS.
12158 All Resource Manager dispatch and information tables have been moved to a
12159 single location for clarity and ease of maintenance. One new file was
12160 created, named "rsinfo.c".
12162 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12163 guarantee that the argument is not evaluated twice, making them less
12165 to macro side-effects. However, since there exists the possibility of
12166 additional stack use if a particular compiler cannot optimize them (such
12168 in the debug generation case), the original macros are optionally
12170 Note that some invocations of the return_VALUE macro may now cause size
12171 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12173 eliminate these. (From Randy Dunlap)
12175 Implemented a new mechanism to enable debug tracing for individual
12177 methods. A new external interface, AcpiDebugTrace, is provided to enable
12178 this mechanism. The intent is to allow the host OS to easily enable and
12179 disable tracing for problematic control methods. This interface can be
12180 easily exposed to a user or debugger interface if desired. See the file
12181 psxface.c for details.
12183 AcpiUtCallocate will now return a valid pointer if a length of zero is
12184 specified - a length of one is used and a warning is issued. This matches
12185 the behavior of AcpiUtAllocate.
12187 Code and Data Size: The current and previous library sizes for the core
12188 subsystem are shown below. These are the code and data sizes for the
12189 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12191 values do not include any ACPI driver or OSPM code. The debug version of
12193 code includes the debug output trace mechanism and has a much larger code
12194 and data size. Note that these values will vary depending on the
12196 of the compiler and the compiler options used during generation.
12199 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
12200 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
12202 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
12203 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
12206 2) iASL Compiler/Disassembler:
12208 A remark is issued if the effective compile-time length of a package or
12209 buffer is zero. Previously, this was a warning.
12211 ----------------------------------------
12212 16 September 2005. Summary of changes for version 20050916:
12214 1) ACPI CA Core Subsystem:
12216 Fixed a problem within the Resource Manager where support for the Generic
12217 Register descriptor was not fully implemented. This descriptor is now
12219 recognized, parsed, disassembled, and displayed.
12221 Completely restructured the Resource Manager code to utilize table-driven
12222 dispatch and lookup, eliminating many of the large switch() statements.
12224 reduces overall subsystem code size and code complexity. Affects the
12225 resource parsing and construction, disassembly, and debug dump output.
12227 Cleaned up and restructured the debug dump output for all resource
12228 descriptors. Improved readability of the output and reduced code size.
12230 Fixed a problem where changes to internal data structures caused the
12231 optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12233 Code and Data Size: The current and previous library sizes for the core
12234 subsystem are shown below. These are the code and data sizes for the
12235 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12237 values do not include any ACPI driver or OSPM code. The debug version of
12239 code includes the debug output trace mechanism and has a much larger code
12240 and data size. Note that these values will vary depending on the
12242 of the compiler and the compiler options used during generation.
12245 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
12246 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
12248 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
12249 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
12252 2) iASL Compiler/Disassembler:
12254 Updated the disassembler to automatically insert an EndDependentFn()
12256 into the ASL stream if this macro is missing in the original AML code,
12257 simplifying compilation of the resulting ASL module.
12259 Fixed a problem in the disassembler where a disassembled ResourceSource
12260 string (within a large resource descriptor) was not surrounded by quotes
12262 not followed by a comma, causing errors when the resulting ASL module was
12263 compiled. Also, escape sequences within a ResourceSource string are now
12264 handled correctly (especially "\\")
12266 ----------------------------------------
12267 02 September 2005. Summary of changes for version 20050902:
12269 1) ACPI CA Core Subsystem:
12271 Fixed a problem with the internal Owner ID allocation and deallocation
12272 mechanisms for control method execution and recursive method invocation.
12273 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12274 messages seen on some systems. Recursive method invocation depth is
12275 currently limited to 255. (Alexey Starikovskiy)
12277 Completely eliminated all vestiges of support for the "module-level
12278 executable code" until this support is fully implemented and debugged.
12280 should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12281 some systems that invoke this support.
12283 Fixed a problem within the resource manager code where the transaction
12285 for a 64-bit address descriptor were handled incorrectly in the type-
12286 specific flag byte.
12288 Consolidated duplicate code within the address descriptor resource
12290 code, reducing overall subsystem code size.
12292 Fixed a fault when using the AML debugger "disassemble" command to
12293 disassemble individual control methods.
12295 Removed references to the "release_current" directory within the Unix
12298 Code and Data Size: The current and previous core subsystem library sizes
12299 are shown below. These are the code and data sizes for the acpica.lib
12300 produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12301 include any ACPI driver or OSPM code. The debug version of the code
12303 the debug output trace mechanism and has a much larger code and data
12305 Note that these values will vary depending on the efficiency of the
12307 and the compiler options used during generation.
12310 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12311 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
12313 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
12314 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
12317 2) iASL Compiler/Disassembler:
12319 Implemented an error check for illegal duplicate values in the interrupt
12321 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12324 Implemented error checking for the Irq() and IrqNoFlags() macros to
12326 too many values in the interrupt list (16 max) and invalid values in the
12327 list (range 0 - 15)
12329 The maximum length string literal within an ASL file is now restricted to
12330 200 characters as per the ACPI specification.
12332 Fixed a fault when using the -ln option (generate namespace listing).
12334 Implemented an error check to determine if a DescriptorName within a
12335 resource descriptor has already been used within the current scope.
12337 ----------------------------------------
12338 15 August 2005. Summary of changes for version 20050815:
12340 1) ACPI CA Core Subsystem:
12342 Implemented a full bytewise compare to determine if a table load request
12344 attempting to load a duplicate table. The compare is performed if the
12346 signatures and table lengths match. This will allow different tables with
12347 the same OEM Table ID and revision to be loaded - probably against the
12349 specification, but discovered in the field nonetheless.
12351 Added the changes.txt logfile to each of the zipped release packages.
12353 Code and Data Size: Current and previous core subsystem library sizes are
12354 shown below. These are the code and data sizes for the acpica.lib
12356 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12357 any ACPI driver or OSPM code. The debug version of the code includes the
12358 debug output trace mechanism and has a much larger code and data size.
12360 that these values will vary depending on the efficiency of the compiler
12362 the compiler options used during generation.
12365 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12366 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
12368 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12369 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
12372 2) iASL Compiler/Disassembler:
12374 Fixed a problem where incorrect AML code could be generated for Package
12375 objects if optimization is disabled (via the -oa switch).
12377 Fixed a problem with where incorrect AML code is generated for variable-
12378 length packages when the package length is not specified and the number
12380 initializer values is greater than 255.
12383 ----------------------------------------
12384 29 July 2005. Summary of changes for version 20050729:
12386 1) ACPI CA Core Subsystem:
12388 Implemented support to ignore an attempt to install/load a particular
12390 table more than once. Apparently there exists BIOS code that repeatedly
12391 attempts to load the same SSDT upon certain events. With assistance from
12392 Venkatesh Pallipadi.
12394 Restructured the main interface to the AML parser in order to correctly
12395 handle all exceptional conditions. This will prevent leakage of the
12397 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12399 machines. With assistance from Alexey Starikovskiy.
12401 Support for "module level code" has been disabled in this version due to
12403 number of issues that have appeared on various machines. The support can
12405 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12406 compilation. When the issues are fully resolved, the code will be enabled
12410 Modified the internal functions for debug print support to define the
12411 FunctionName parameter as a (const char *) for compatibility with
12413 built-in macros such as __FUNCTION__, etc.
12415 Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12417 Implemented support to display an object count summary for the AML
12419 commands Object and Methods.
12421 Code and Data Size: Current and previous core subsystem library sizes are
12422 shown below. These are the code and data sizes for the acpica.lib
12424 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12425 any ACPI driver or OSPM code. The debug version of the code includes the
12426 debug output trace mechanism and has a much larger code and data size.
12428 that these values will vary depending on the efficiency of the compiler
12430 the compiler options used during generation.
12433 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
12434 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
12436 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12437 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
12440 2) iASL Compiler/Disassembler:
12442 Fixed a regression that appeared in the 20050708 version of the compiler
12443 where an error message was inadvertently emitted for invocations of the
12445 reserved control method.
12447 ----------------------------------------
12448 08 July 2005. Summary of changes for version 20050708:
12450 1) ACPI CA Core Subsystem:
12452 The use of the CPU stack in the debug version of the subsystem has been
12453 considerably reduced. Previously, a debug structure was declared in every
12454 function that used the debug macros. This structure has been removed in
12455 favor of declaring the individual elements as parameters to the debug
12456 functions. This reduces the cumulative stack use during nested execution
12458 ACPI function calls at the cost of a small increase in the code size of
12460 debug version of the subsystem. With assistance from Alexey Starikovskiy
12464 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12465 headers to define a macro that will return the current function name at
12466 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12468 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12469 compiler-dependent header, the function name is saved on the CPU stack
12471 pointer per function.) This mechanism is used because apparently there
12472 exists no standard ANSI-C defined macro that that returns the function
12475 Redesigned and reimplemented the "Owner ID" mechanism used to track
12476 namespace objects created/deleted by ACPI tables and control method
12477 execution. A bitmap is now used to allocate and free the IDs, thus
12479 the wraparound problem present in the previous implementation. The size
12481 the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12484 Removed the UINT32_BIT and UINT16_BIT types that were used for the
12486 flag definitions within the headers for the predefined ACPI tables. These
12487 have been replaced by UINT8_BIT in order to increase the code portability
12489 the subsystem. If the use of UINT8 remains a problem, we may be forced to
12490 eliminate bitfields entirely because of a lack of portability.
12492 Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12494 is a frequently used function and this improvement increases the
12496 of the entire subsystem (Alexey Starikovskiy).
12498 Fixed several possible memory leaks and the inverse - premature object
12499 deletion (Alexey Starikovskiy).
12501 Code and Data Size: Current and previous core subsystem library sizes are
12502 shown below. These are the code and data sizes for the acpica.lib
12504 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12505 any ACPI driver or OSPM code. The debug version of the code includes the
12506 debug output trace mechanism and has a much larger code and data size.
12508 that these values will vary depending on the efficiency of the compiler
12510 the compiler options used during generation.
12513 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
12514 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
12516 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
12517 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
12519 ----------------------------------------
12520 24 June 2005. Summary of changes for version 20050624:
12522 1) ACPI CA Core Subsystem:
12524 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12525 the host-defined cache object. This allows the OSL implementation to
12527 and type this object in any manner desired, simplifying the OSL
12528 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12529 Linux, and should be defined in the OS-specific header file for other
12530 operating systems as required.
12532 Changed the interface to AcpiOsAcquireObject to directly return the
12533 requested object as the function return (instead of ACPI_STATUS.) This
12534 change was made for performance reasons, since this is the purpose of the
12535 interface in the first place. AcpiOsAcquireObject is now similar to the
12536 AcpiOsAllocate interface.
12538 Implemented a new AML debugger command named Businfo. This command
12540 information about all devices that have an associate _PRT object. The
12542 _HID, _UID, and _CID are displayed for these devices.
12544 Modified the initialization sequence in AcpiInitializeSubsystem to call
12546 OSL interface AcpiOslInitialize first, before any local initialization.
12548 change was required because the global initialization now calls OSL
12551 Enhanced the Dump command to display the entire contents of Package
12553 (including all sub-objects and their values.)
12555 Restructured the code base to split some files because of size and/or
12556 because the code logically belonged in a separate file. New files are
12558 below. All makefiles and project files included in the ACPI CA release
12561 utilities/utcache.c /* Local cache interfaces */
12562 utilities/utmutex.c /* Local mutex support */
12563 utilities/utstate.c /* State object support */
12564 interpreter/parser/psloop.c /* Main AML parse loop */
12566 Code and Data Size: Current and previous core subsystem library sizes are
12567 shown below. These are the code and data sizes for the acpica.lib
12569 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12570 any ACPI driver or OSPM code. The debug version of the code includes the
12571 debug output trace mechanism and has a much larger code and data size.
12573 that these values will vary depending on the efficiency of the compiler
12575 the compiler options used during generation.
12578 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
12579 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
12581 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
12582 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
12585 2) iASL Compiler/Disassembler:
12587 Fixed a regression introduced in version 20050513 where the use of a
12589 object within a Case() statement caused a compile time exception. The
12590 original behavior has been restored (a Match() operator is emitted.)
12592 ----------------------------------------
12593 17 June 2005. Summary of changes for version 20050617:
12595 1) ACPI CA Core Subsystem:
12597 Moved the object cache operations into the OS interface layer (OSL) to
12599 the host OS to handle these operations if desired (for example, the Linux
12600 OSL will invoke the slab allocator). This support is optional; the
12602 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12604 code in the ACPI CA core. The new OSL interfaces are shown below. See
12605 utalloc.c for an example implementation, and acpiosxf.h for the exact
12606 interface definitions. With assistance from Alexey Starikovskiy.
12610 AcpiOsAcquireObject
12611 AcpiOsReleaseObject
12613 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12615 and restore a flags parameter. This fits better with many OS lock models.
12616 Note: the current execution state (interrupt handler or not) is no longer
12617 passed to these interfaces. If necessary, the OSL must determine this
12619 by itself, a simple and fast operation. With assistance from Alexey
12622 Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12623 present if the revision of the RSDP was 2 or greater. According to the
12625 specification, the XSDT is optional in all cases, and the table manager
12626 therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12627 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12631 Fixed an interpreter problem with the Mid() operator in the case of an
12633 string where the resulting output string is of zero length. It now
12635 returns a valid, null terminated string object instead of a string object
12636 with a null pointer.
12638 Fixed a problem with the control method argument handling to allow a
12640 to an Arg object that already contains an object of type Device. The
12642 object is now correctly overwritten. Previously, an error was returned.
12645 Enhanced the debugger Find command to emit object values in addition to
12647 found object pathnames. The output format is the same as the dump
12651 Enhanced the debugger Set command. It now has the ability to set the
12653 of any Named integer object in the namespace (Previously, only method
12655 and args could be set.)
12657 Code and Data Size: Current and previous core subsystem library sizes are
12658 shown below. These are the code and data sizes for the acpica.lib
12660 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12661 any ACPI driver or OSPM code. The debug version of the code includes the
12662 debug output trace mechanism and has a much larger code and data size.
12664 that these values will vary depending on the efficiency of the compiler
12666 the compiler options used during generation.
12669 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
12670 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
12672 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
12673 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
12676 2) iASL Compiler/Disassembler:
12678 Fixed a regression in the disassembler where if/else/while constructs
12680 output incorrectly. This problem was introduced in the previous release
12681 (20050526). This problem also affected the single-step disassembly in the
12684 Fixed a problem where compiling the reserved _OSI method would randomly
12686 rarely) produce compile errors.
12688 Enhanced the disassembler to emit compilable code in the face of
12690 AML resource descriptors. If the optional ResourceSourceIndex is present,
12691 but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12692 disassembly. Otherwise, the resulting code cannot be compiled without
12695 ----------------------------------------
12696 26 May 2005. Summary of changes for version 20050526:
12698 1) ACPI CA Core Subsystem:
12700 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12701 the module level (not within a control method.) These opcodes are
12703 exactly once at the time the table is loaded. This type of code was legal
12705 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12707 order to provide backwards compatibility with earlier BIOS
12709 This eliminates the "Encountered executable code at module level" warning
12710 that was previously generated upon detection of such code.
12712 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12713 inadvertently be generated during the lookup of namespace objects in the
12714 second pass parse of ACPI tables and control methods. It appears that
12716 problem could occur during the resolution of forward references to
12720 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12721 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12722 allows the deadlock detection debug code to be compiled out in the normal
12723 case, improving mutex performance (and overall subsystem performance)
12726 Implemented a handful of miscellaneous fixes for possible memory leaks on
12727 error conditions and error handling control paths. These fixes were
12728 suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12730 Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12732 to prevent a fault in this error case.
12734 Code and Data Size: Current and previous core subsystem library sizes are
12735 shown below. These are the code and data sizes for the acpica.lib
12737 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12738 any ACPI driver or OSPM code. The debug version of the code includes the
12739 debug output trace mechanism and has a much larger code and data size.
12741 that these values will vary depending on the efficiency of the compiler
12743 the compiler options used during generation.
12746 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12747 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12749 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
12750 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
12753 2) iASL Compiler/Disassembler:
12755 Implemented support to allow Type 1 and Type 2 ASL operators to appear at
12756 the module level (not within a control method.) These operators will be
12757 executed once at the time the table is loaded. This type of code was
12759 up until the release of ACPI 2.0B (2002) and is now supported by the iASL
12760 compiler in order to provide backwards compatibility with earlier BIOS
12764 The ACPI integer width (specified via the table revision ID or the -r
12765 override, 32 or 64 bits) is now used internally during compile-time
12767 folding to ensure that constants are truncated to 32 bits if necessary.
12768 Previously, the revision ID value was only emitted in the AML table
12771 An error message is now generated for the Mutex and Method operators if
12773 SyncLevel parameter is outside the legal range of 0 through 15.
12775 Fixed a problem with the Method operator ParameterTypes list handling
12777 3.0). Previously, more than 2 types or 2 arguments generated a syntax
12779 The actual underlying implementation of method argument typechecking is
12780 still under development, however.
12782 ----------------------------------------
12783 13 May 2005. Summary of changes for version 20050513:
12785 1) ACPI CA Core Subsystem:
12787 Implemented support for PCI Express root bridges -- added support for
12789 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12791 The interpreter now automatically truncates incoming 64-bit constants to
12793 bits if currently executing out of a 32-bit ACPI table (Revision < 2).
12795 also affects the iASL compiler constant folding. (Note: as per below, the
12796 iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12798 Fixed a problem where string and buffer objects with "static" pointers
12799 (pointers to initialization data within an ACPI table) were not handled
12800 consistently. The internal object copy operation now always copies the
12802 to a newly allocated buffer, regardless of whether the source object is
12805 Fixed a problem with the FromBCD operator where an implicit result
12806 conversion was improperly performed while storing the result to the
12808 operand. Since this is an "explicit conversion" operator, the implicit
12809 conversion should never be performed on the output.
12811 Fixed a problem with the CopyObject operator where a copy to an existing
12812 named object did not always completely overwrite the existing object
12814 at name. Specifically, a buffer-to-buffer copy did not delete the
12818 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
12820 structs for consistency.
12822 Code and Data Size: Current and previous core subsystem library sizes are
12823 shown below. These are the code and data sizes for the acpica.lib
12825 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12826 any ACPI driver or OSPM code. The debug version of the code includes the
12827 debug output trace mechanism and has a much larger code and data size.
12829 that these values will vary depending on the efficiency of the compiler
12831 the compiler options used during generation.
12834 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12835 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12836 Current Release: (Same sizes)
12837 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12838 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12841 2) iASL Compiler/Disassembler:
12843 The compiler now emits a warning if an attempt is made to generate a 64-
12845 integer constant from within a 32-bit ACPI table (Revision < 2). The
12847 is truncated to 32 bits.
12849 Fixed a problem with large package objects: if the static length of the
12850 package is greater than 255, the "variable length package" opcode is
12851 emitted. Previously, this caused an error. This requires an update to the
12852 ACPI spec, since it currently (incorrectly) states that packages larger
12854 255 elements are not allowed.
12856 The disassembler now correctly handles variable length packages and
12858 larger than 255 elements.
12860 ----------------------------------------
12861 08 April 2005. Summary of changes for version 20050408:
12863 1) ACPI CA Core Subsystem:
12865 Fixed three cases in the interpreter where an "index" argument to an ASL
12866 function was still (internally) 32 bits instead of the required 64 bits.
12867 This was the Index argument to the Index, Mid, and Match operators.
12869 The "strupr" function is now permanently local (AcpiUtStrupr), since this
12871 not a POSIX-defined function and not present in most kernel-level C
12872 libraries. All references to the C library strupr function have been
12876 Completed the deployment of static functions/prototypes. All prototypes
12878 the static attribute have been moved from the headers to the owning C
12881 Implemented an extract option (-e) for the AcpiBin utility (AML binary
12882 utility). This option allows the utility to extract individual ACPI
12884 from the output of AcpiDmp. It provides the same functionality of the
12885 acpixtract.pl perl script without the worry of setting the correct perl
12886 options. AcpiBin runs on Windows and has not yet been generated/validated
12888 the Linux/Unix environment (but should be soon).
12890 Updated and fixed the table dump option for AcpiBin (-d). This option
12891 converts a single ACPI table to a hex/ascii file, similar to the output
12895 Code and Data Size: Current and previous core subsystem library sizes are
12896 shown below. These are the code and data sizes for the acpica.lib
12898 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12899 any ACPI driver or OSPM code. The debug version of the code includes the
12900 debug output trace mechanism and has a much larger code and data size.
12902 that these values will vary depending on the efficiency of the compiler
12904 the compiler options used during generation.
12907 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
12908 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
12910 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12911 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12914 2) iASL Compiler/Disassembler:
12916 Disassembler fix: Added a check to ensure that the table length found in
12918 ACPI table header within the input file is not longer than the actual
12920 file size. This indicates some kind of file or table corruption.
12922 ----------------------------------------
12923 29 March 2005. Summary of changes for version 20050329:
12925 1) ACPI CA Core Subsystem:
12927 An error is now generated if an attempt is made to create a Buffer Field
12929 length zero (A CreateField with a length operand of zero.)
12931 The interpreter now issues a warning whenever executable code at the
12933 level is detected during ACPI table load. This will give some idea of the
12934 prevalence of this type of code.
12936 Implemented support for references to named objects (other than control
12937 methods) within package objects.
12939 Enhanced package object output for the debug object. Package objects are
12941 completely dumped, showing all elements.
12943 Enhanced miscellaneous object output for the debug object. Any object can
12944 now be written to the debug object (for example, a device object can be
12945 written, and the type of the object will be displayed.)
12947 The "static" qualifier has been added to all local functions across both
12949 core subsystem and the iASL compiler.
12951 The number of "long" lines (> 80 chars) within the source has been
12952 significantly reduced, by about 1/3.
12954 Cleaned up all header files to ensure that all CA/iASL functions are
12955 prototyped (even static functions) and the formatting is consistent.
12957 Two new header files have been added, acopcode.h and acnames.h.
12959 Removed several obsolete functions that were no longer used.
12961 Code and Data Size: Current and previous core subsystem library sizes are
12962 shown below. These are the code and data sizes for the acpica.lib
12964 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12965 any ACPI driver or OSPM code. The debug version of the code includes the
12966 debug output trace mechanism and has a much larger code and data size.
12968 that these values will vary depending on the efficiency of the compiler
12970 the compiler options used during generation.
12973 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12974 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
12976 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
12977 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
12981 2) iASL Compiler/Disassembler:
12983 Fixed a problem with the resource descriptor generation/support. For the
12984 ResourceSourceIndex and the ResourceSource fields, both must be present,
12986 both must be not present - can't have one without the other.
12988 The compiler now returns non-zero from the main procedure if any errors
12990 occurred during the compilation.
12993 ----------------------------------------
12994 09 March 2005. Summary of changes for version 20050309:
12996 1) ACPI CA Core Subsystem:
12998 The string-to-buffer implicit conversion code has been modified again
13000 a change to the ACPI specification. In order to match the behavior of
13002 other major ACPI implementation, the target buffer is no longer truncated
13004 the source string is smaller than an existing target buffer. This change
13005 requires an update to the ACPI spec, and should eliminate the recent
13006 AE_AML_BUFFER_LIMIT issues.
13008 The "implicit return" support was rewritten to a new algorithm that
13010 the general case. Rather than attempt to determine when a method is about
13012 exit, the result of every ASL operator is saved momentarily until the
13014 next ASL operator is executed. Therefore, no matter how the method exits,
13015 there will always be a saved implicit return value. This feature is only
13016 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13018 AE_AML_NO_RETURN_VALUE errors when enabled.
13020 Implemented implicit conversion support for the predicate (operand) of
13022 If, Else, and While operators. String and Buffer arguments are
13024 converted to Integers.
13026 Changed the string-to-integer conversion behavior to match the new ACPI
13027 errata: "If no integer object exists, a new integer is created. The ASCII
13028 string is interpreted as a hexadecimal constant. Each string character is
13029 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13030 with the first character as the most significant digit, and ending with
13032 first non-hexadecimal character or end-of-string." This means that the
13034 non-hex character terminates the conversion and this is the code that was
13037 Fixed a problem where the ObjectType operator would fail (fault) when
13039 on an Index of a Package which pointed to a null package element. The
13040 operator now properly returns zero (Uninitialized) in this case.
13042 Fixed a problem where the While operator used excessive memory by not
13043 properly popping the result stack during execution. There was no memory
13045 after execution, however. (Code provided by Valery Podrezov.)
13047 Fixed a problem where references to control methods within Package
13049 caused the method to be invoked, instead of producing a reference object
13050 pointing to the method.
13052 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13054 improve performance and reduce code size. (Code provided by Alexey
13057 Code and Data Size: Current and previous core subsystem library sizes are
13058 shown below. These are the code and data sizes for the acpica.lib
13060 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13061 any ACPI driver or OSPM code. The debug version of the code includes the
13062 debug output trace mechanism and has a much larger code and data size.
13064 that these values will vary depending on the efficiency of the compiler
13066 the compiler options used during generation.
13069 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13070 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
13072 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13073 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
13076 2) iASL Compiler/Disassembler:
13078 Fixed a problem with the Return operator with no arguments. Since the AML
13079 grammar for the byte encoding requires an operand for the Return opcode,
13081 compiler now emits a Return(Zero) for this case. An ACPI specification
13082 update has been written for this case.
13084 For tables other than the DSDT, namepath optimization is automatically
13085 disabled. This is because SSDTs can be loaded anywhere in the namespace,
13087 compiler has no knowledge of where, and thus cannot optimize namepaths.
13089 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13090 inadvertently omitted from the ACPI specification, and will require an
13091 update to the spec.
13093 The source file scan for ASCII characters is now optional (-a). This
13095 was made because some vendors place non-ascii characters within comments.
13096 However, the scan is simply a brute-force byte compare to ensure all
13097 characters in the file are in the range 0x00 to 0x7F.
13099 Fixed a problem with the CondRefOf operator where the compiler was
13100 inappropriately checking for the existence of the target. Since the point
13102 the operator is to check for the existence of the target at run-time, the
13103 compiler no longer checks for the target existence.
13105 Fixed a problem where errors generated from the internal AML interpreter
13106 during constant folding were not handled properly, causing a fault.
13108 Fixed a problem with overly aggressive range checking for the Stall
13109 operator. The valid range (max 255) is now only checked if the operand is
13111 type Integer. All other operand types cannot be statically checked.
13113 Fixed a problem where control method references within the RefOf,
13115 and ObjectType operators were not treated properly. They are now treated
13117 actual references, not method invocations.
13119 Fixed and enhanced the "list namespace" option (-ln). This option was
13121 a number of releases ago.
13123 Improved error handling for the Field, IndexField, and BankField
13125 The compiler now cleanly reports and recovers from errors in the field
13126 component (FieldUnit) list.
13128 Fixed a disassembler problem where the optional ResourceDescriptor fields
13129 TRS and TTP were not always handled correctly.
13131 Disassembler - Comments in output now use "//" instead of "/*"
13133 ----------------------------------------
13134 28 February 2005. Summary of changes for version 20050228:
13136 1) ACPI CA Core Subsystem:
13138 Fixed a problem where the result of an Index() operator (an object
13139 reference) must increment the reference count on the target object for
13141 life of the object reference.
13143 Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13144 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13146 resource descriptors.
13148 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13149 Space Descriptor" string, indicating interpreter support for the
13153 Implemented header support for the new ACPI 3.0 FADT flag bits.
13155 Implemented header support for the new ACPI 3.0 PCI Express bits for the
13157 status/enable registers.
13159 Updated header support for the MADT processor local Apic struct and MADT
13160 platform interrupt source struct for new ACPI 3.0 fields.
13162 Implemented header support for the SRAT and SLIT ACPI tables.
13164 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13168 Code and Data Size: Current and previous core subsystem library sizes are
13169 shown below. These are the code and data sizes for the acpica.lib
13171 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13172 any ACPI driver or OSPM code. The debug version of the code includes the
13173 debug output trace mechanism and has a much larger code and data size.
13175 that these values will vary depending on the efficiency of the compiler
13177 the compiler options used during generation.
13180 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
13181 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
13183 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13184 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
13187 2) iASL Compiler/Disassembler:
13189 Fixed a problem with the internal 64-bit String-to-integer conversion
13191 strings less than two characters long.
13193 Fixed a problem with constant folding where the result of the Index()
13194 operator can not be considered a constant. This means that Index() cannot
13196 a type3 opcode and this will require an update to the ACPI specification.
13198 Disassembler: Implemented support for the TTP, MTP, and TRS resource
13199 descriptor fields. These fields were inadvertently ignored and not output
13201 the disassembly of the resource descriptor.
13204 ----------------------------------------
13205 11 February 2005. Summary of changes for version 20050211:
13207 1) ACPI CA Core Subsystem:
13209 Implemented ACPI 3.0 support for implicit conversion within the Match()
13210 operator. MatchObjects can now be of type integer, buffer, or string
13212 of just type integer. Package elements are implicitly converted to the
13214 of the MatchObject. This change aligns the behavior of Match() with the
13215 behavior of the other logical operators (LLess(), etc.) It also requires
13217 errata change to the ACPI specification as this support was intended for
13218 ACPI 3.0, but was inadvertently omitted.
13220 Fixed a problem with the internal implicit "to buffer" conversion.
13222 that are converted to buffers will cause buffer truncation if the string
13224 smaller than the target buffer. Integers that are converted to buffers
13226 not cause buffer truncation, only zero extension (both as per the ACPI
13227 spec.) The problem was introduced when code was added to truncate the
13228 buffer, but this should not be performed in all cases, only the string
13231 Fixed a problem with the Buffer and Package operators where the
13233 would get confused if two such operators were used as operands to an ASL
13234 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13235 stack was not being popped after the execution of these operators,
13237 in an AE_NO_RETURN_VALUE exception.
13239 Fixed a problem with constructs of the form Store(Index(...),...). The
13240 reference object returned from Index was inadvertently resolved to an
13242 value. This problem was introduced in version 20050114 when the behavior
13244 Store() was modified to restrict the object types that can be used as the
13245 source operand (to match the ACPI specification.)
13247 Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13249 Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13251 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13253 Code and Data Size: Current and previous core subsystem library sizes are
13254 shown below. These are the code and data sizes for the acpica.lib
13256 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13257 any ACPI driver or OSPM code. The debug version of the code includes the
13258 debug output trace mechanism and has a much larger code and data size.
13260 that these values will vary depending on the efficiency of the compiler
13262 the compiler options used during generation.
13265 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
13266 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
13268 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
13269 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
13272 2) iASL Compiler/Disassembler:
13274 Fixed a code generation problem in the constant folding optimization code
13275 where incorrect code was generated if a constant was reduced to a buffer
13276 object (i.e., a reduced type 5 opcode.)
13278 Fixed a typechecking problem for the ToBuffer operator. Caused by an
13279 incorrect return type in the internal opcode information table.
13281 ----------------------------------------
13282 25 January 2005. Summary of changes for version 20050125:
13284 1) ACPI CA Core Subsystem:
13286 Fixed a recently introduced problem with the Global Lock where the
13287 underlying semaphore was not created. This problem was introduced in
13288 version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13289 Acquire() operation on _GL.
13291 The local object cache is now optional, and is disabled by default. Both
13292 AcpiExec and the iASL compiler enable the cache because they run in user
13293 mode and this enhances their performance. #define
13294 ACPI_ENABLE_OBJECT_CACHE
13295 to enable the local cache.
13297 Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13299 optional "implicit return" support where an error was returned if no
13301 object was expected, but one was implicitly returned. AE_OK is now
13303 in this case and the implicitly returned object is deleted.
13304 AcpiUtEvaluateObject is only occasionally used, and only to execute
13306 methods such as _STA and _INI where the return type is known up front.
13308 Fixed a few issues with the internal convert-to-integer code. It now
13310 an error if an attempt is made to convert a null string, a string of only
13311 blanks/tabs, or a zero-length buffer. This affects both implicit
13313 and explicit conversion via the ToInteger() operator.
13315 The internal debug code in AcpiUtAcquireMutex has been commented out. It
13317 not needed for normal operation and should increase the performance of
13319 entire subsystem. The code remains in case it is needed for debug
13323 The AcpiExec source and makefile are included in the Unix/Linux package
13327 Code and Data Size: Current and previous core subsystem library sizes are
13328 shown below. These are the code and data sizes for the acpica.lib
13330 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13331 any ACPI driver or OSPM code. The debug version of the code includes the
13332 debug output trace mechanism and has a much larger code and data size.
13334 that these values will vary depending on the efficiency of the compiler
13336 the compiler options used during generation.
13339 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
13340 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
13342 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
13343 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
13345 2) iASL Compiler/Disassembler:
13347 Switch/Case support: A warning is now issued if the type of the Switch
13349 cannot be determined at compile time. For example, Switch(Arg0) will
13350 generate the warning, and the type is assumed to be an integer. As per
13352 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13356 Switch/Case support: Implemented support for buffer and string objects as
13357 the switch value. This is an ACPI 3.0 feature, now that LEqual supports
13358 buffers and strings.
13360 Switch/Case support: The emitted code for the LEqual() comparisons now
13362 the switch value as the first operand, not the second. The case value is
13364 the second operand, and this allows the case value to be implicitly
13365 converted to the type of the switch value, not the other way around.
13367 Switch/Case support: Temporary variables are now emitted immediately
13369 the control method, not at the global level. This means that there are
13371 36 temps available per-method, not 36 temps per-module as was the case
13373 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13375 ----------------------------------------
13376 14 January 2005. Summary of changes for version 20050114:
13378 Added 2005 copyright to all module headers. This affects every module in
13379 the core subsystem, iASL compiler, and the utilities.
13381 1) ACPI CA Core Subsystem:
13383 Fixed an issue with the String-to-Buffer conversion code where the string
13384 null terminator was not included in the buffer after conversion, but
13386 is existing ASL that assumes the string null terminator is included. This
13388 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13389 introduced in the previous version when the code was updated to correctly
13390 set the converted buffer size as per the ACPI specification. The ACPI
13392 is ambiguous and will be updated to specify that the null terminator must
13394 included in the converted buffer. This also affects the ToBuffer() ASL
13397 Fixed a problem with the Mid() ASL/AML operator where it did not work
13398 correctly on Buffer objects. Newly created sub-buffers were not being
13403 Fixed a problem in AcpiTbFindTable where incorrect string compares were
13404 performed on the OemId and OemTableId table header fields. These fields
13406 not null terminated, so strncmp is now used instead of strcmp.
13408 Implemented a restriction on the Store() ASL/AML operator to align the
13409 behavior with the ACPI specification. Previously, any object could be
13411 as the source operand. Now, the only objects that may be used are
13413 Buffers, Strings, Packages, Object References, and DDB Handles. If
13414 necessary, the original behavior can be restored by enabling the
13415 EnableInterpreterSlack flag.
13417 Enhanced the optional "implicit return" support to allow an implicit
13419 value from methods that are invoked externally via the AcpiEvaluateObject
13420 interface. This enables implicit returns from the _STA and _INI methods,
13423 Changed the Revision() ASL/AML operator to return the current version of
13425 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13427 the supported ACPI version (This is the function of the _REV method).
13429 Updated the _REV predefined method to return the currently supported
13433 Implemented batch mode option for the AcpiExec utility (-b).
13435 Code and Data Size: Current and previous core subsystem library sizes are
13436 shown below. These are the code and data sizes for the acpica.lib
13438 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13439 any ACPI driver or OSPM code. The debug version of the code includes the
13440 debug output trace mechanism and has a much larger code and data size.
13442 that these values will vary depending on the efficiency of the compiler
13444 the compiler options used during generation.
13447 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13448 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
13450 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
13451 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
13453 ----------------------------------------
13454 10 December 2004. Summary of changes for version 20041210:
13456 ACPI 3.0 support is nearing completion in both the iASL compiler and the
13457 ACPI CA core subsystem.
13459 1) ACPI CA Core Subsystem:
13461 Fixed a problem in the ToDecimalString operator where the resulting
13463 length was incorrectly calculated. The length is now calculated exactly,
13464 eliminating incorrect AE_STRING_LIMIT exceptions.
13466 Fixed a problem in the ToHexString operator to allow a maximum 200
13468 string to be produced.
13470 Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13472 routine where the length of the resulting buffer was not truncated to the
13473 new size (if the target buffer already existed).
13475 Code and Data Size: Current and previous core subsystem library sizes are
13476 shown below. These are the code and data sizes for the acpica.lib
13478 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13479 any ACPI driver or OSPM code. The debug version of the code includes the
13480 debug output trace mechanism and has a much larger code and data size.
13482 that these values will vary depending on the efficiency of the compiler
13484 the compiler options used during generation.
13487 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13488 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
13490 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13491 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
13494 2) iASL Compiler/Disassembler:
13496 Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13497 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13498 Includes support in the disassembler.
13500 Implemented support for the new (ACPI 3.0) parameter to the Register
13504 Fixed a problem where the _HE resource name for the Interrupt macro was
13505 referencing bit 0 instead of bit 1.
13507 Implemented check for maximum 255 interrupts in the Interrupt macro.
13509 Fixed a problem with the predefined resource descriptor names where
13510 incorrect AML code was generated if the offset within the resource buffer
13511 was 0 or 1. The optimizer shortened the AML code to a single byte opcode
13512 but did not update the surrounding package lengths.
13514 Changes to the Dma macro: All channels within the channel list must be
13516 the range 0-7. Maximum 8 channels can be specified. BusMaster operand is
13517 optional (default is BusMaster).
13519 Implemented check for maximum 7 data bytes for the VendorShort macro.
13521 The ReadWrite parameter is now optional for the Memory32 and similar
13524 ----------------------------------------
13525 03 December 2004. Summary of changes for version 20041203:
13527 1) ACPI CA Core Subsystem:
13529 The low-level field insertion/extraction code (exfldio) has been
13531 rewritten to eliminate unnecessary complexity, bugs, and boundary
13534 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13536 operators where the input operand could be inadvertently deleted if no
13537 conversion was necessary (e.g., if the input to ToInteger was an Integer
13540 Fixed a problem with the ToDecimalString and ToHexString where an
13542 exception code was returned if the resulting string would be > 200 chars.
13543 AE_STRING_LIMIT is now returned.
13545 Fixed a problem with the Concatenate operator where AE_OK was always
13546 returned, even if the operation failed.
13548 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13549 semaphores to be allocated.
13551 Code and Data Size: Current and previous core subsystem library sizes are
13552 shown below. These are the code and data sizes for the acpica.lib
13554 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13555 any ACPI driver or OSPM code. The debug version of the code includes the
13556 debug output trace mechanism and has a much larger code and data size.
13558 that these values will vary depending on the efficiency of the compiler
13560 the compiler options used during generation.
13563 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13564 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13566 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13567 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
13570 2) iASL Compiler/Disassembler:
13572 Fixed typechecking for the ObjectType and SizeOf operators. Problem was
13573 recently introduced in 20041119.
13575 Fixed a problem with the ToUUID macro where the upper nybble of each
13577 byte was inadvertently set to zero.
13579 ----------------------------------------
13580 19 November 2004. Summary of changes for version 20041119:
13582 1) ACPI CA Core Subsystem:
13584 Fixed a problem in the internal ConvertToInteger routine where new
13586 were not truncated to 32 bits for 32-bit ACPI tables. This routine
13588 buffers and strings to integers.
13590 Implemented support to store a value to an Index() on a String object.
13592 is an ACPI 2.0 feature that had not yet been implemented.
13594 Implemented new behavior for storing objects to individual package
13596 (via the Index() operator). The previous behavior was to invoke the
13598 conversion rules if an object was already present at the index. The new
13599 behavior is to simply delete any existing object and directly store the
13601 object. Although the ACPI specification seems unclear on this subject,
13603 ACPI implementations behave in this manner. (This is the root of the
13604 AE_BAD_HEX_CONSTANT issue.)
13606 Modified the RSDP memory scan mechanism to support the extended checksum
13608 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13609 RSDP signature is found with a valid checksum.
13611 Code and Data Size: Current and previous core subsystem library sizes are
13612 shown below. These are the code and data sizes for the acpica.lib
13614 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13615 any ACPI driver or OSPM code. The debug version of the code includes the
13616 debug output trace mechanism and has a much larger code and data size.
13618 that these values will vary depending on the efficiency of the compiler
13620 the compiler options used during generation.
13623 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13624 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13626 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13627 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13630 2) iASL Compiler/Disassembler:
13632 Fixed a missing semicolon in the aslcompiler.y file.
13634 ----------------------------------------
13635 05 November 2004. Summary of changes for version 20041105:
13637 1) ACPI CA Core Subsystem:
13639 Implemented support for FADT revision 2. This was an interim table
13641 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13643 Implemented optional support to allow uninitialized LocalX and ArgX
13644 variables in a control method. The variables are initialized to an
13646 object with a value of zero. This support is enabled by setting the
13647 AcpiGbl_EnableInterpreterSlack flag to TRUE.
13649 Implemented support for Integer objects for the SizeOf operator. Either
13651 or 8 is returned, depending on the current integer size (32-bit or 64-
13653 depending on the parent table revision).
13655 Fixed a problem in the implementation of the SizeOf and ObjectType
13657 where the operand was resolved to a value too early, causing incorrect
13658 return values for some objects.
13660 Fixed some possible memory leaks during exceptional conditions.
13662 Code and Data Size: Current and previous core subsystem library sizes are
13663 shown below. These are the code and data sizes for the acpica.lib
13665 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13666 any ACPI driver or OSPM code. The debug version of the code includes the
13667 debug output trace mechanism and has a much larger code and data size.
13669 that these values will vary depending on the efficiency of the compiler
13671 the compiler options used during generation.
13674 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
13675 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
13677 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13678 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13681 2) iASL Compiler/Disassembler:
13683 Implemented support for all ACPI 3.0 reserved names and methods.
13685 Implemented all ACPI 3.0 grammar elements in the front-end, including
13686 support for semicolons.
13688 Implemented the ACPI 3.0 Function() and ToUUID() macros
13690 Fixed a problem in the disassembler where a Scope() operator would not be
13691 emitted properly if the target of the scope was in another table.
13693 ----------------------------------------
13694 15 October 2004. Summary of changes for version 20041015:
13696 Note: ACPI CA is currently undergoing an in-depth and complete formal
13697 evaluation to test/verify the following areas. Other suggestions are
13698 welcome. This will result in an increase in the frequency of releases and
13699 the number of bug fixes in the next few months.
13700 - Functional tests for all ASL/AML operators
13701 - All implicit/explicit type conversions
13702 - Bit fields and operation regions
13703 - 64-bit math support and 32-bit-only "truncated" math support
13704 - Exceptional conditions, both compiler and interpreter
13705 - Dynamic object deletion and memory leaks
13706 - ACPI 3.0 support when implemented
13707 - External interfaces to the ACPI subsystem
13710 1) ACPI CA Core Subsystem:
13712 Fixed two alignment issues on 64-bit platforms - within debug statements
13714 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13716 field within the non-aligned ACPI generic address structure.
13718 Fixed a problem in the Increment and Decrement operators where incorrect
13719 operand resolution could result in the inadvertent modification of the
13720 original integer when the integer is passed into another method as an
13721 argument and the arg is then incremented/decremented.
13723 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13725 BCD number were truncated during conversion.
13727 Fixed a problem in the ToDecimal operator where the length of the
13729 string could be set incorrectly too long if the input operand was a
13733 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13735 within a buffer would prematurely terminate a compare between buffer
13738 Added a check for string overflow (>200 characters as per the ACPI
13739 specification) during the Concatenate operator with two string operands.
13741 Code and Data Size: Current and previous core subsystem library sizes are
13742 shown below. These are the code and data sizes for the acpica.lib
13744 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13745 any ACPI driver or OSPM code. The debug version of the code includes the
13746 debug output trace mechanism and has a much larger code and data size.
13748 that these values will vary depending on the efficiency of the compiler
13750 the compiler options used during generation.
13753 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
13754 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
13756 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
13757 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
13761 2) iASL Compiler/Disassembler:
13763 Allow the use of the ObjectType operator on uninitialized Locals and Args
13764 (returns 0 as per the ACPI specification).
13766 Fixed a problem where the compiler would fault if there was a syntax
13768 in the FieldName of all of the various CreateXXXField operators.
13770 Disallow the use of lower case letters within the EISAID macro, as per
13772 ACPI specification. All EISAID strings must be of the form "UUUNNNN"
13774 U is an uppercase letter and N is a hex digit.
13777 ----------------------------------------
13778 06 October 2004. Summary of changes for version 20041006:
13780 1) ACPI CA Core Subsystem:
13782 Implemented support for the ACPI 3.0 Timer operator. This ASL function
13783 implements a 64-bit timer with 100 nanosecond granularity.
13785 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
13786 implement the ACPI 3.0 Timer operator. This allows the host OS to
13788 the timer with the best clock available. Also, it keeps the core
13790 out of the clock handling business, since the host OS (usually) performs
13793 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
13794 functions use a 64-bit address which is part of the packed ACPI Generic
13795 Address Structure. Since the structure is non-aligned, the alignment
13797 are now used to extract the address to a local variable before use.
13799 Fixed a problem where the ToInteger operator assumed all input strings
13801 hexadecimal. The operator now handles both decimal strings and hex
13803 (prefixed with "0x").
13805 Fixed a problem where the string length in the string object created as a
13806 result of the internal ConvertToString procedure could be incorrect. This
13807 potentially affected all implicit conversions and also the
13809 and ToHexString operators.
13811 Fixed two problems in the ToString operator. If the length parameter was
13812 zero, an incorrect string object was created and the value of the input
13813 length parameter was inadvertently changed from zero to Ones.
13815 Fixed a problem where the optional ResourceSource string in the
13817 resource macro was ignored.
13819 Simplified the interfaces to the internal division functions, reducing
13821 size and complexity.
13823 Code and Data Size: Current and previous core subsystem library sizes are
13824 shown below. These are the code and data sizes for the acpica.lib
13826 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13827 any ACPI driver or OSPM code. The debug version of the code includes the
13828 debug output trace mechanism and has a much larger code and data size.
13830 that these values will vary depending on the efficiency of the compiler
13832 the compiler options used during generation.
13835 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
13836 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
13838 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
13839 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
13842 2) iASL Compiler/Disassembler:
13844 Implemented support for the ACPI 3.0 Timer operator.
13846 Fixed a problem where the Default() operator was inadvertently ignored in
13848 Switch/Case block. This was a problem in the translation of the Switch
13849 statement to If...Else pairs.
13851 Added support to allow a standalone Return operator, with no parentheses
13855 Fixed a problem with code generation for the ElseIf operator where the
13856 translated Else...If parse tree was improperly constructed leading to the
13859 ----------------------------------------
13860 22 September 2004. Summary of changes for version 20040922:
13862 1) ACPI CA Core Subsystem:
13864 Fixed a problem with the implementation of the LNot() operator where
13866 was not returned for the TRUE case. Changed the code to return Ones
13868 of (!Arg) which was usually 1. This change affects iASL constant folding
13870 this operator also.
13872 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
13874 initialized properly -- Now zero the entire buffer in this case where the
13875 buffer already exists.
13877 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
13878 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
13879 related code considerably. This will require changes/updates to all OS
13880 interface layers (OSLs.)
13882 Implemented a new external interface, AcpiInstallExceptionHandler, to
13884 a system exception handler to be installed. This handler is invoked upon
13886 run-time exception that occurs during control method execution.
13888 Added support for the DSDT in AcpiTbFindTable. This allows the
13889 DataTableRegion() operator to access the local copy of the DSDT.
13891 Code and Data Size: Current and previous core subsystem library sizes are
13892 shown below. These are the code and data sizes for the acpica.lib
13894 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13895 any ACPI driver or OSPM code. The debug version of the code includes the
13896 debug output trace mechanism and has a much larger code and data size.
13898 that these values will vary depending on the efficiency of the compiler
13900 the compiler options used during generation.
13903 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
13904 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
13906 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
13907 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
13910 2) iASL Compiler/Disassembler:
13912 Fixed a problem with constant folding and the LNot operator. LNot was
13913 returning 1 in the TRUE case, not Ones as per the ACPI specification.
13915 could result in the generation of an incorrect folded/reduced constant.
13917 End-Of-File is now allowed within a "//"-style comment. A parse error no
13918 longer occurs if such a comment is at the very end of the input ASL
13922 Implemented the "-r" option to override the Revision in the table header.
13923 The initial use of this option will be to simplify the evaluation of the
13925 interpreter by allowing a single ASL source module to be compiled for
13927 32-bit or 64-bit integers.
13930 ----------------------------------------
13931 27 August 2004. Summary of changes for version 20040827:
13933 1) ACPI CA Core Subsystem:
13935 - Implemented support for implicit object conversion in the non-numeric
13936 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
13938 LNotEqual.) Any combination of Integers/Strings/Buffers may now be used;
13939 the second operand is implicitly converted on the fly to match the type
13941 the first operand. For example:
13943 LEqual (Source1, Source2)
13945 Source1 and Source2 must each evaluate to an integer, a string, or a
13947 The data type of Source1 dictates the required type of Source2. Source2
13949 implicitly converted if necessary to match the type of Source1.
13951 - Updated and corrected the behavior of the string conversion support.
13953 rules concerning conversion of buffers to strings (according to the ACPI
13954 specification) are as follows:
13956 ToDecimalString - explicit byte-wise conversion of buffer to string of
13957 decimal values (0-255) separated by commas. ToHexString - explicit byte-
13959 conversion of buffer to string of hex values (0-FF) separated by commas.
13960 ToString - explicit byte-wise conversion of buffer to string. Byte-by-
13962 copy with no transform except NULL terminated. Any other implicit buffer-
13964 string conversion - byte-wise conversion of buffer to string of hex
13966 (0-FF) separated by spaces.
13968 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13970 - Fixed a problem in AcpiNsGetPathnameLength where the returned length
13972 one byte too short in the case of a node in the root scope. This could
13973 cause a fault during debug output.
13975 - Code and Data Size: Current and previous core subsystem library sizes
13977 shown below. These are the code and data sizes for the acpica.lib
13979 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13980 any ACPI driver or OSPM code. The debug version of the code includes the
13981 debug output trace mechanism and has a much larger code and data size.
13983 that these values will vary depending on the efficiency of the compiler
13985 the compiler options used during generation.
13988 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
13989 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
13991 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
13992 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
13995 2) iASL Compiler/Disassembler:
13997 - Fixed a Linux generation error.
14000 ----------------------------------------
14001 16 August 2004. Summary of changes for version 20040816:
14003 1) ACPI CA Core Subsystem:
14005 Designed and implemented support within the AML interpreter for the so-
14006 called "implicit return". This support returns the result of the last
14008 operation within a control method, in the absence of an explicit Return()
14009 operator. A few machines depend on this behavior, even though it is not
14010 explicitly supported by the ASL language. It is optional support that
14012 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14014 Removed support for the PCI_Config address space from the internal low
14016 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This
14017 support was not used internally, and would not work correctly anyway
14019 the PCI bus number and segment number were not supported. There are
14020 separate interfaces for PCI configuration space access because of the
14024 Code and Data Size: Current and previous core subsystem library sizes are
14025 shown below. These are the code and data sizes for the acpica.lib
14027 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14028 any ACPI driver or OSPM code. The debug version of the code includes the
14029 debug output trace mechanism and has a much larger code and data size.
14031 that these values will vary depending on the efficiency of the compiler
14033 the compiler options used during generation.
14036 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
14037 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
14039 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
14040 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
14043 2) iASL Compiler/Disassembler:
14045 Fixed a problem where constants in ASL expressions at the root level (not
14046 within a control method) could be inadvertently truncated during code
14047 generation. This problem was introduced in the 20040715 release.
14050 ----------------------------------------
14051 15 July 2004. Summary of changes for version 20040715:
14053 1) ACPI CA Core Subsystem:
14055 Restructured the internal HW GPE interfaces to pass/track the current
14057 of interrupts (enabled/disabled) in order to avoid possible deadlock and
14058 increase flexibility of the interfaces.
14060 Implemented a "lexicographical compare" for String and Buffer objects
14062 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14064 as per further clarification to the ACPI specification. Behavior is
14066 to C library "strcmp".
14068 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14069 external function. In the 32-bit non-debug case, the stack use has been
14070 reduced from 168 bytes to 32 bytes.
14072 Deployed a new run-time configuration flag,
14073 AcpiGbl_EnableInterpreterSlack,
14074 whose purpose is to allow the AML interpreter to forgive certain bad AML
14075 constructs. Default setting is FALSE.
14077 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14079 support code. If enabled, it allows field access to go beyond the end of
14081 region definition if the field is within the region length rounded up to
14083 next access width boundary (a common coding error.)
14085 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14086 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also,
14088 symbols are lowercase by the latest version of the AcpiSrc tool.
14090 The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14091 rename "Register" to simply "Reg" to prevent certain compilers from
14094 Code and Data Size: Current and previous core subsystem library sizes are
14095 shown below. These are the code and data sizes for the acpica.lib
14097 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14098 any ACPI driver or OSPM code. The debug version of the code includes the
14099 debug output trace mechanism and has a much larger code and data size.
14101 that these values will vary depending on the efficiency of the compiler
14103 the compiler options used during generation.
14106 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14107 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
14109 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
14110 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
14113 2) iASL Compiler/Disassembler:
14115 Implemented full support for Package objects within the Case() operator.
14116 Note: The Break() operator is currently not supported within Case blocks
14117 (TermLists) as there is some question about backward compatibility with
14122 Fixed a problem where complex terms were not supported properly within
14126 Eliminated extraneous warning for compiler-emitted reserved names of the
14127 form "_T_x". (Used in Switch/Case operators.)
14129 Eliminated optimization messages for "_T_x" objects and small constants
14130 within the DefinitionBlock operator.
14133 ----------------------------------------
14134 15 June 2004. Summary of changes for version 20040615:
14136 1) ACPI CA Core Subsystem:
14138 Implemented support for Buffer and String objects (as per ACPI 2.0) for
14140 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
14143 All directory names in the entire source package are lower case, as they
14144 were in earlier releases.
14146 Implemented "Disassemble" command in the AML debugger that will
14148 a single control method.
14150 Code and Data Size: Current and previous core subsystem library sizes are
14151 shown below. These are the code and data sizes for the acpica.lib
14153 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14154 any ACPI driver or OSPM code. The debug version of the code includes the
14155 debug output trace mechanism and has a much larger code and data size.
14157 that these values will vary depending on the efficiency of the compiler
14159 the compiler options used during generation.
14162 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
14163 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
14166 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14167 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
14170 2) iASL Compiler/Disassembler:
14172 Implemented support for Buffer and String objects (as per ACPI 2.0) for
14174 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
14177 All directory names in the entire source package are lower case, as they
14178 were in earlier releases.
14180 Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14183 Fixed an issue with the Windows version of the compiler where later
14185 of Windows place the FADT in the registry under the name "FADT" and not
14186 "FACP" as earlier versions did. This applies when using the -g or -
14187 d<nofilename> options. The compiler now looks for both strings as
14190 Fixed a problem with compiler namepath optimization where a namepath
14192 the Scope() operator could not be optimized if the namepath was a subpath
14194 the current scope path.
14196 ----------------------------------------
14197 27 May 2004. Summary of changes for version 20040527:
14199 1) ACPI CA Core Subsystem:
14201 Completed a new design and implementation for EBDA (Extended BIOS Data
14203 support in the RSDP scan code. The original code improperly scanned for
14205 EBDA by simply scanning from memory location 0 to 0x400. The correct
14207 is to first obtain the EBDA pointer from within the BIOS data area, then
14208 scan 1K of memory starting at the EBDA pointer. There appear to be few
14210 any machines that place the RSDP in the EBDA, however.
14212 Integrated a fix for a possible fault during evaluation of BufferField
14213 arguments. Obsolete code that was causing the problem was removed.
14215 Found and fixed a problem in the Field Support Code where data could be
14216 corrupted on a bit field read that starts on an aligned boundary but does
14217 not end on an aligned boundary. Merged the read/write "datum length"
14218 calculation code into a common procedure.
14220 Rolled in a couple of changes to the FreeBSD-specific header.
14223 Code and Data Size: Current and previous core subsystem library sizes are
14224 shown below. These are the code and data sizes for the acpica.lib
14226 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14227 any ACPI driver or OSPM code. The debug version of the code includes the
14228 debug output trace mechanism and has a much larger code and data size.
14230 that these values will vary depending on the efficiency of the compiler
14232 the compiler options used during generation.
14235 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14236 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
14238 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
14239 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
14242 2) iASL Compiler/Disassembler:
14244 Fixed a generation warning produced by some overly-verbose compilers for
14248 ----------------------------------------
14249 14 May 2004. Summary of changes for version 20040514:
14251 1) ACPI CA Core Subsystem:
14253 Fixed a problem where hardware GPE enable bits sometimes not set properly
14254 during and after GPE method execution. Result of 04/27 changes.
14256 Removed extra "clear all GPEs" when sleeping/waking.
14258 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14259 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14261 the new AcpiEv* calls as appropriate.
14263 ACPI_OS_NAME was removed from the OS-specific headers. The default name
14265 now "Microsoft Windows NT" for maximum compatibility. However this can
14267 changed by modifying the acconfig.h file.
14269 Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14270 traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag.
14272 Run _INI methods on ThermalZone objects. This is against the ACPI
14273 specification, but there is apparently ASL code in the field that has
14275 _INI methods, and apparently "other" AML interpreters execute them.
14277 Performed a full 16/32/64 bit lint that resulted in some small changes.
14279 Added a sleep simulation command to the AML debugger to test sleep code.
14281 Code and Data Size: Current and previous core subsystem library sizes are
14282 shown below. These are the code and data sizes for the acpica.lib
14284 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14285 any ACPI driver or OSPM code. The debug version of the code includes the
14286 debug output trace mechanism and has a much larger code and data size.
14288 that these values will vary depending on the efficiency of the compiler
14290 the compiler options used during generation.
14293 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14294 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
14296 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14297 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
14299 ----------------------------------------
14300 27 April 2004. Summary of changes for version 20040427:
14302 1) ACPI CA Core Subsystem:
14304 Completed a major overhaul of the GPE handling within ACPI CA. There are
14305 now three types of GPEs: wake-only, runtime-only, and combination
14307 The only GPEs allowed to be combination wake/run are for button-style
14308 devices such as a control-method power button, control-method sleep
14310 or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are
14312 referenced by any _PRW methods are marked for "runtime" and hardware
14313 enabled. Any GPE that is referenced by a _PRW method is marked for
14315 (and disabled at runtime). However, at sleep time, only those GPEs that
14316 have been specifically enabled for wake via the AcpiEnableGpe interface
14318 actually be hardware enabled.
14320 A new external interface has been added, AcpiSetGpeType(), that is meant
14322 be used by device drivers to force a GPE to a particular type. It will
14324 especially useful for the drivers for the button devices mentioned above.
14326 Completed restructuring of the ACPI CA initialization sequence so that
14327 default operation region handlers are installed before GPEs are
14329 and the _PRW methods are executed. This will prevent errors when the
14331 methods attempt to access system memory or I/O space.
14333 GPE enable/disable no longer reads the GPE enable register. We now keep
14335 enable info for runtime and wake separate and in the GPE_EVENT_INFO. We
14336 thus no longer depend on the hardware to maintain these bits.
14338 Always clear the wake status and fixed/GPE status bits before sleep, even
14341 Improved the AML debugger output for displaying the GPE blocks and their
14344 Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14348 Fixed a problem where the physical address was incorrectly calculated
14350 the Load() operator was used to directly load from an Operation Region
14352 loading from a Field object.) Also added check for minimum table length
14356 Fix for multiple mutex acquisition. Restore original thread SyncLevel on
14359 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14360 consistency with the other fields returned.
14362 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such
14363 structure for each GPE in the system, so the size of this structure is
14366 CPU stack requirement reduction: Cleaned up the method execution and
14368 evaluation paths so that now a parameter structure is passed, instead of
14369 copying the various method parameters over and over again.
14371 In evregion.c: Correctly exit and reenter the interpreter region if and
14372 only if dispatching an operation region request to a user-installed
14374 Do not exit/reenter when dispatching to a default handler (e.g., default
14375 system memory or I/O handlers)
14378 Notes for updating drivers for the new GPE support. The following
14380 must be made to ACPI-related device drivers that are attached to one or
14382 GPEs: (This information will be added to the ACPI CA Programmer
14385 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14387 explicitly call AcpiEnableGpe.
14388 2) There is a new interface called AcpiSetGpeType. This should be called
14389 before enabling the GPE. Also, this interface will automatically disable
14390 the GPE if it is currently enabled.
14391 3) AcpiEnableGpe no longer supports a GPE type flag.
14393 Specific drivers that must be changed:
14395 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14396 AeGpeHandler, NULL);
14397 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14398 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14400 2) Button Drivers (Power, Lid, Sleep):
14401 Run _PRW method under parent device
14402 If _PRW exists: /* This is a control-method button */
14403 Extract GPE number and possibly GpeDevice
14404 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14405 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14407 For all other devices that have _PRWs, we automatically set the GPE type
14409 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14411 must be done on a selective basis, usually requiring some kind of user
14413 to allow the user to pick the wake devices.
14416 Code and Data Size: Current and previous core subsystem library sizes are
14417 shown below. These are the code and data sizes for the acpica.lib
14419 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14420 any ACPI driver or OSPM code. The debug version of the code includes the
14421 debug output trace mechanism and has a much larger code and data size.
14423 that these values will vary depending on the efficiency of the compiler
14425 the compiler options used during generation.
14428 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
14429 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
14432 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14433 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
14437 ----------------------------------------
14438 02 April 2004. Summary of changes for version 20040402:
14440 1) ACPI CA Core Subsystem:
14442 Fixed an interpreter problem where an indirect store through an ArgX
14443 parameter was incorrectly applying the "implicit conversion rules" during
14444 the store. From the ACPI specification: "If the target is a method local
14446 argument (LocalX or ArgX), no conversion is performed and the result is
14447 stored directly to the target". The new behavior is to disable implicit
14448 conversion during ALL stores to an ArgX.
14450 Changed the behavior of the _PRW method scan to ignore any and all errors
14451 returned by a given _PRW. This prevents the scan from aborting from the
14452 failure of any single _PRW.
14454 Moved the runtime configuration parameters from the global init procedure
14456 static variables in acglobal.h. This will allow the host to override the
14457 default values easily.
14459 Code and Data Size: Current and previous core subsystem library sizes are
14460 shown below. These are the code and data sizes for the acpica.lib
14462 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14463 any ACPI driver or OSPM code. The debug version of the code includes the
14464 debug output trace mechanism and has a much larger code and data size.
14466 that these values will vary depending on the efficiency of the compiler
14468 the compiler options used during generation.
14471 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
14472 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
14474 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
14475 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
14478 2) iASL Compiler/Disassembler:
14480 iASL now fully disassembles SSDTs. However, External() statements are
14482 generated automatically for unresolved symbols at this time. This is a
14483 planned feature for future implementation.
14485 Fixed a scoping problem in the disassembler that occurs when the type of
14487 target of a Scope() operator is overridden. This problem caused an
14488 incorrectly nested internal namespace to be constructed.
14490 Any warnings or errors that are emitted during disassembly are now
14492 out automatically so that the resulting file can be recompiled without
14496 ----------------------------------------
14497 26 March 2004. Summary of changes for version 20040326:
14499 1) ACPI CA Core Subsystem:
14501 Implemented support for "wake" GPEs via interaction between GPEs and the
14502 _PRW methods. Every GPE that is pointed to by one or more _PRWs is
14503 identified as a WAKE GPE and by default will no longer be enabled at
14504 runtime. Previously, we were blindly enabling all GPEs with a
14506 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14508 believe this has been the cause of thousands of "spurious" GPEs on some
14511 This new GPE behavior is can be reverted to the original behavior (enable
14512 ALL GPEs at runtime) via a runtime flag.
14514 Fixed a problem where aliased control methods could not access objects
14515 properly. The proper scope within the namespace was not initialized
14516 (transferred to the target of the aliased method) before executing the
14519 Fixed a potential race condition on internal object deletion on the
14521 object in AcpiEvaluateObject.
14523 Integrated a fix for resource descriptors where both _MEM and _MTP were
14524 being extracted instead of just _MEM. (i.e. bitmask was incorrectly too
14525 wide, 0x0F instead of 0x03.)
14527 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14530 fault in some cases.
14532 Updated Notify() values for debug statements in evmisc.c
14534 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14536 Code and Data Size: Current and previous core subsystem library sizes are
14537 shown below. These are the code and data sizes for the acpica.lib
14539 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14540 any ACPI driver or OSPM code. The debug version of the code includes the
14541 debug output trace mechanism and has a much larger code and data size.
14543 that these values will vary depending on the efficiency of the compiler
14545 the compiler options used during generation.
14549 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
14550 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
14552 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
14553 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
14555 ----------------------------------------
14556 11 March 2004. Summary of changes for version 20040311:
14558 1) ACPI CA Core Subsystem:
14560 Fixed a problem where errors occurring during the parse phase of control
14561 method execution did not abort cleanly. For example, objects created and
14562 installed in the namespace were not deleted. This caused all subsequent
14563 invocations of the method to return the AE_ALREADY_EXISTS exception.
14565 Implemented a mechanism to force a control method to "Serialized"
14567 if the method attempts to create namespace objects. (The root of the
14568 AE_ALREADY_EXISTS problem.)
14570 Implemented support for the predefined _OSI "internal" control method.
14571 Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14573 "Windows 2001.1", and can be easily upgraded for new strings as
14575 This feature will allow "other" operating systems to execute the fully
14576 tested, "Windows" code path through the ASL code
14578 Global Lock Support: Now allows multiple acquires and releases with any
14579 internal thread. Removed concept of "owning thread" for this special
14582 Fixed two functions that were inappropriately declaring large objects on
14584 CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage
14586 method execution considerably.
14588 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14589 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14591 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14592 defined on the machine.
14594 Implemented two runtime options: One to force all control method
14596 to "Serialized" to mimic Windows behavior, another to disable _OSI
14598 if it causes problems on a given machine.
14600 Code and Data Size: Current and previous core subsystem library sizes are
14601 shown below. These are the code and data sizes for the acpica.lib
14603 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14604 any ACPI driver or OSPM code. The debug version of the code includes the
14605 debug output trace mechanism and has a much larger code and data size.
14607 that these values will vary depending on the efficiency of the compiler
14609 the compiler options used during generation.
14612 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
14613 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
14615 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
14616 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
14618 2) iASL Compiler/Disassembler:
14620 Fixed an array size problem for FreeBSD that would cause the compiler to
14623 ----------------------------------------
14624 20 February 2004. Summary of changes for version 20040220:
14627 1) ACPI CA Core Subsystem:
14629 Implemented execution of _SxD methods for Device objects in the
14630 GetObjectInfo interface.
14632 Fixed calls to _SST method to pass the correct arguments.
14634 Added a call to _SST on wake to restore to "working" state.
14636 Check for End-Of-Buffer failure case in the WalkResources interface.
14638 Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14639 structures to the beginning of the file.
14641 After wake, clear GPE status register(s) before enabling GPEs.
14643 After wake, clear/enable power button. (Perhaps we should clear/enable
14645 fixed events upon wake.)
14647 Fixed a couple of possible memory leaks in the Namespace manager.
14649 Integrated latest acnetbsd.h file.
14651 ----------------------------------------
14652 11 February 2004. Summary of changes for version 20040211:
14655 1) ACPI CA Core Subsystem:
14657 Completed investigation and implementation of the call-by-reference
14658 mechanism for control method arguments.
14660 Fixed a problem where a store of an object into an indexed package could
14661 fail if the store occurs within a different method than the method that
14662 created the package.
14664 Fixed a problem where the ToDecimal operator could return incorrect
14667 Fixed a problem where the CopyObject operator could fail on some of the
14669 obscure objects (e.g., Reference objects.)
14671 Improved the output of the Debug object to display buffer, package, and
14674 Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14676 the expected result.
14678 Added permanent ACPI_REPORT_ERROR macros for all instances of the
14679 ACPI_AML_INTERNAL exception.
14681 Integrated latest version of acfreebsd.h
14683 ----------------------------------------
14684 16 January 2004. Summary of changes for version 20040116:
14686 The purpose of this release is primarily to update the copyright years in
14687 each module, thus causing a huge number of diffs. There are a few small
14688 functional changes, however.
14690 1) ACPI CA Core Subsystem:
14692 Improved error messages when there is a problem finding one or more of
14694 required base ACPI tables
14696 Reintroduced the definition of APIC_HEADER in actbl.h
14698 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14700 Removed extraneous reference to NewObj in dsmthdat.c
14704 Fixed a problem introduced in December that disabled the correct
14706 of Resource Templates
14709 ----------------------------------------
14710 03 December 2003. Summary of changes for version 20031203:
14712 1) ACPI CA Core Subsystem:
14714 Changed the initialization of Operation Regions during subsystem
14715 init to perform two entire walks of the ACPI namespace; The first
14716 to initialize the regions themselves, the second to execute the
14717 _REG methods. This fixed some interdependencies across _REG
14718 methods found on some machines.
14720 Fixed a problem where a Store(Local0, Local1) could simply update
14721 the object reference count, and not create a new copy of the
14722 object if the Local1 is uninitialized.
14724 Implemented support for the _SST reserved method during sleep
14727 Implemented support to clear the SLP_TYP and SLP_EN bits when
14728 waking up, this is apparently required by some machines.
14730 When sleeping, clear the wake status only if SleepState is not S5.
14732 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14733 pointer arithmetic advanced a string pointer too far.
14735 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14736 could be returned if the requested table has not been loaded.
14738 Within the support for IRQ resources, restructured the handling of
14739 the active and edge/level bits.
14741 Fixed a few problems in AcpiPsxExecute() where memory could be
14742 leaked under certain error conditions.
14744 Improved error messages for the cases where the ACPI mode could
14747 Code and Data Size: Current and previous core subsystem library
14748 sizes are shown below. These are the code and data sizes for the
14749 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14750 these values do not include any ACPI driver or OSPM code. The
14751 debug version of the code includes the debug output trace
14752 mechanism and has a much larger code and data size. Note that
14753 these values will vary depending on the efficiency of the compiler
14754 and the compiler options used during generation.
14756 Previous Release (20031029):
14757 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
14758 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
14760 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
14761 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
14763 2) iASL Compiler/Disassembler:
14765 Implemented a fix for the iASL disassembler where a bad index was
14766 generated. This was most noticeable on 64-bit platforms
14769 ----------------------------------------
14770 29 October 2003. Summary of changes for version 20031029:
14772 1) ACPI CA Core Subsystem:
14775 Fixed a problem where a level-triggered GPE with an associated
14776 _Lxx control method was incorrectly cleared twice.
14778 Fixed a problem with the Field support code where an access can
14779 occur beyond the end-of-region if the field is non-aligned but
14780 extends to the very end of the parent region (resulted in an
14781 AE_AML_REGION_LIMIT exception.)
14783 Fixed a problem with ACPI Fixed Events where an RT Clock handler
14784 would not get invoked on an RTC event. The RTC event bitmasks for
14785 the PM1 registers were not being initialized properly.
14787 Implemented support for executing _STA and _INI methods for
14788 Processor objects. Although this is currently not part of the
14789 ACPI specification, there is existing ASL code that depends on the
14790 init-time execution of these methods.
14792 Implemented and deployed a GetDescriptorName function to decode
14793 the various types of internal descriptors. Guards against null
14794 descriptors during debug output also.
14796 Implemented and deployed a GetNodeName function to extract the 4-
14797 character namespace node name. This function simplifies the debug
14798 and error output, as well as guarding against null pointers during
14801 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14802 simplify the debug and error output of 64-bit integers. This
14803 macro replaces the HIDWORD and LODWORD macros for dumping these
14806 Updated the implementation of the Stall() operator to only call
14807 AcpiOsStall(), and also return an error if the operand is larger
14808 than 255. This preserves the required behavior of not
14809 relinquishing the processor, as would happen if AcpiOsSleep() was
14810 called for "long stalls".
14812 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
14813 initialized are now treated as NOOPs.
14815 Cleaned up a handful of warnings during 64-bit generation.
14817 Fixed a reported error where and incorrect GPE number was passed
14818 to the GPE dispatch handler. This value is only used for error
14819 output, however. Used this opportunity to clean up and streamline
14820 the GPE dispatch code.
14822 Code and Data Size: Current and previous core subsystem library
14823 sizes are shown below. These are the code and data sizes for the
14824 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14825 these values do not include any ACPI driver or OSPM code. The
14827 debug version of the code includes the debug output trace
14828 mechanism and has a much larger code and data size. Note that
14829 these values will vary depending on the efficiency of the compiler
14830 and the compiler options used during generation.
14832 Previous Release (20031002):
14833 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
14834 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
14836 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
14837 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
14840 2) iASL Compiler/Disassembler:
14842 Updated the iASL compiler to return an error if the operand to the
14843 Stall() operator is larger than 255.
14846 ----------------------------------------
14847 02 October 2003. Summary of changes for version 20031002:
14850 1) ACPI CA Core Subsystem:
14852 Fixed a problem with Index Fields where the index was not
14853 incremented for fields that require multiple writes to the
14854 index/data registers (Fields that are wider than the data
14857 Fixed a problem with all Field objects where a write could go
14858 beyond the end-of-field if the field was larger than the access
14859 granularity and therefore required multiple writes to complete the
14860 request. An extra write beyond the end of the field could happen
14863 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14864 would incorrectly be returned if the width of the Data Register
14865 was larger than the specified field access width.
14867 Completed fixes for LoadTable() and Unload() and verified their
14868 operation. Implemented full support for the "DdbHandle" object
14869 throughout the ACPI CA subsystem.
14871 Implemented full support for the MADT and ECDT tables in the ACPI
14872 CA header files. Even though these tables are not directly
14873 consumed by ACPI CA, the header definitions are useful for ACPI
14876 Integrated resource descriptor fixes posted to the Linux ACPI
14877 list. This included checks for minimum descriptor length, and
14878 support for trailing NULL strings within descriptors that have
14879 optional string elements.
14881 Code and Data Size: Current and previous core subsystem library
14882 sizes are shown below. These are the code and data sizes for the
14883 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14884 these values do not include any ACPI driver or OSPM code. The
14885 debug version of the code includes the debug output trace
14886 mechanism and has a much larger code and data size. Note that
14887 these values will vary depending on the efficiency of the compiler
14888 and the compiler options used during generation.
14890 Previous Release (20030918):
14891 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
14892 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
14894 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
14895 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
14900 Implemented detection of non-ASCII characters within the input
14901 source ASL file. This catches attempts to compile binary (AML)
14902 files early in the compile, with an informative error message.
14904 Fixed a problem where the disassembler would fault if the output
14905 filename could not be generated or if the output file could not be
14908 ----------------------------------------
14909 18 September 2003. Summary of changes for version 20030918:
14912 1) ACPI CA Core Subsystem:
14914 Found and fixed a longstanding problem with the late execution of
14915 the various deferred AML opcodes (such as Operation Regions,
14916 Buffer Fields, Buffers, and Packages). If the name string
14917 specified for the name of the new object placed the object in a
14918 scope other than the current scope, the initialization/execution
14919 of the opcode failed. The solution to this problem was to
14920 implement a mechanism where the late execution of such opcodes
14921 does not attempt to lookup/create the name a second time in an
14922 incorrect scope. This fixes the "region size computed
14923 incorrectly" problem.
14925 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
14926 Global Lock AE_BAD_PARAMETER error.
14928 Fixed several 64-bit issues with prototypes, casting and data
14931 Removed duplicate prototype from acdisasm.h
14933 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
14935 Code and Data Size: Current and previous core subsystem library
14936 sizes are shown below. These are the code and data sizes for the
14937 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14938 these values do not include any ACPI driver or OSPM code. The
14939 debug version of the code includes the debug output trace
14940 mechanism and has a much larger code and data size. Note that
14941 these values will vary depending on the efficiency of the compiler
14942 and the compiler options used during generation.
14946 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
14947 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
14949 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
14950 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
14955 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14956 correct sleep time in seconds.
14958 ----------------------------------------
14959 14 July 2003. Summary of changes for version 20030619:
14961 1) ACPI CA Core Subsystem:
14963 Parse SSDTs in order discovered, as opposed to reverse order
14966 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14973 Dynamically allocate SDT list (suggested by Andi Kleen)
14975 proc function return value cleanups (Andi Kleen)
14977 Correctly handle NMI watchdog during long stalls (Andrew Morton)
14979 Make it so acpismp=force works (reported by Andrew Morton)
14982 ----------------------------------------
14983 19 June 2003. Summary of changes for version 20030619:
14985 1) ACPI CA Core Subsystem:
14987 Fix To/FromBCD, eliminating the need for an arch-specific #define.
14989 Do not acquire a semaphore in the S5 shutdown path.
14991 Fix ex_digits_needed for 0. (Takayoshi Kochi)
14993 Fix sleep/stall code reversal. (Andi Kleen)
14995 Revert a change having to do with control method calling
15000 acpiphp update (Takayoshi Kochi)
15002 Export acpi_disabled for sonypi (Stelian Pop)
15004 Mention acpismp=force in config help
15006 Re-add acpitable.c and acpismp=force. This improves backwards
15008 compatibility and also cleans up the code to a significant degree.
15010 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15012 ----------------------------------------
15013 22 May 2003. Summary of changes for version 20030522:
15015 1) ACPI CA Core Subsystem:
15017 Found and fixed a reported problem where an AE_NOT_FOUND error
15018 occurred occasionally during _BST evaluation. This turned out to
15019 be an Owner ID allocation issue where a called method did not get
15020 a new ID assigned to it. Eventually, (after 64k calls), the Owner
15021 ID UINT16 would wraparound so that the ID would be the same as the
15022 caller's and the called method would delete the caller's
15025 Implemented extended error reporting for control methods that are
15026 aborted due to a run-time exception. Output includes the exact
15027 AML instruction that caused the method abort, a dump of the method
15028 locals and arguments at the time of the abort, and a trace of all
15029 nested control method calls.
15031 Modified the interpreter to allow the creation of buffers of zero
15032 length from the AML code. Implemented new code to ensure that no
15033 attempt is made to actually allocate a memory buffer (of length
15034 zero) - instead, a simple buffer object with a NULL buffer pointer
15035 and length zero is created. A warning is no longer issued when
15036 the AML attempts to create a zero-length buffer.
15038 Implemented a workaround for the "leading asterisk issue" in
15039 _HIDs, _UIDs, and _CIDs in the AML interpreter. One leading
15040 asterisk is automatically removed if present in any HID, UID, or
15041 CID strings. The iASL compiler will still flag this asterisk as
15044 Implemented full support for _CID methods that return a package of
15045 multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface
15046 now additionally returns a device _CID list if present. This
15047 required a change to the external interface in order to pass an
15048 ACPI_BUFFER object as a parameter since the _CID list is of
15051 Fixed a problem with the new AE_SAME_HANDLER exception where
15052 handler initialization code did not know about this exception.
15054 Code and Data Size: Current and previous core subsystem library
15055 sizes are shown below. These are the code and data sizes for the
15056 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15057 these values do not include any ACPI driver or OSPM code. The
15058 debug version of the code includes the debug output trace
15059 mechanism and has a much larger code and data size. Note that
15060 these values will vary depending on the efficiency of the compiler
15061 and the compiler options used during generation.
15063 Previous Release (20030509):
15064 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
15065 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
15067 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
15068 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
15073 Fixed a bug in which we would reinitialize the ACPI interrupt
15074 after it was already working, thus disabling all ACPI and the IRQs
15075 for any other device sharing the interrupt. (Thanks to Stian
15078 Toshiba driver update (John Belmonte)
15080 Return only 0 or 1 for our interrupt handler status (Andrew
15086 Fixed a reported problem where multiple (nested) ElseIf()
15087 statements were not handled correctly by the compiler, resulting
15088 in incorrect warnings and incorrect AML code. This was a problem
15089 in both the ASL parser and the code generator.
15094 Added changes to existing interfaces, new exception codes, and new
15095 text concerning reference count object management versus garbage
15098 ----------------------------------------
15099 09 May 2003. Summary of changes for version 20030509.
15102 1) ACPI CA Core Subsystem:
15104 Changed the subsystem initialization sequence to hold off
15105 installation of address space handlers until the hardware has been
15106 initialized and the system has entered ACPI mode. This is because
15107 the installation of space handlers can cause _REG methods to be
15108 run. Previously, the _REG methods could potentially be run before
15109 ACPI mode was enabled.
15111 Fixed some memory leak issues related to address space handler and
15112 notify handler installation. There were some problems with the
15113 reference count mechanism caused by the fact that the handler
15114 objects are shared across several namespace objects.
15116 Fixed a reported problem where reference counts within the
15117 namespace were not properly updated when named objects created by
15118 method execution were deleted.
15120 Fixed a reported problem where multiple SSDTs caused a deletion
15121 issue during subsystem termination. Restructured the table data
15122 structures to simplify the linked lists and the related code.
15124 Fixed a problem where the table ID associated with secondary
15125 tables (SSDTs) was not being propagated into the namespace objects
15126 created by those tables. This would only present a problem for
15127 tables that are unloaded at run-time, however.
15129 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15130 type as the length parameter (instead of UINT32).
15132 Solved a long-standing problem where an ALREADY_EXISTS error
15133 appears on various systems. This problem could happen when there
15134 are multiple PCI_Config operation regions under a single PCI root
15135 bus. This doesn't happen very frequently, but there are some
15136 systems that do this in the ASL.
15138 Fixed a reported problem where the internal DeleteNode function
15139 was incorrectly handling the case where a namespace node was the
15140 first in the parent's child list, and had additional peers (not
15141 the only child, but first in the list of children.)
15143 Code and Data Size: Current core subsystem library sizes are shown
15144 below. These are the code and data sizes for the acpica.lib
15145 produced by the Microsoft Visual C++ 6.0 compiler, and these
15146 values do not include any ACPI driver or OSPM code. The debug
15147 version of the code includes the debug output trace mechanism and
15148 has a much larger code and data size. Note that these values will
15149 vary depending on the efficiency of the compiler and the compiler
15150 options used during generation.
15153 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
15154 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
15156 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
15157 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
15162 Allow ":" in OS override string (Ducrot Bruno)
15164 Kobject fix (Greg KH)
15167 3 iASL Compiler/Disassembler:
15169 Fixed a problem in the generation of the C source code files (AML
15170 is emitted in C source statements for BIOS inclusion) where the
15171 Ascii dump that appears within a C comment at the end of each line
15172 could cause a compile time error if the AML sequence happens to
15173 have an open comment or close comment sequence embedded.
15176 ----------------------------------------
15177 24 April 2003. Summary of changes for version 20030424.
15180 1) ACPI CA Core Subsystem:
15182 Support for big-endian systems has been implemented. Most of the
15183 support has been invisibly added behind big-endian versions of the
15184 ACPI_MOVE_* macros.
15186 Fixed a problem in AcpiHwDisableGpeBlock() and
15187 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15188 low level hardware write routine. The offset parameter was
15189 actually eliminated from the low level read/write routines because
15190 they had become obsolete.
15192 Fixed a problem where a handler object was deleted twice during
15193 the removal of a fixed event handler.
15198 A fix for SMP systems with link devices was contributed by
15202 (2.5) Return whether we handled the interrupt in our IRQ handler.
15203 (Linux ISRs no longer return void, so we can propagate the handler
15204 return value from the ACPI CA core back to the OS.)
15210 The ACPI CA Programmer Reference has been updated to reflect new
15211 interfaces and changes to existing interfaces.
15213 ----------------------------------------
15214 28 March 2003. Summary of changes for version 20030328.
15216 1) ACPI CA Core Subsystem:
15218 The GPE Block Device support has been completed. New interfaces
15219 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event
15220 interfaces (enable, disable, clear, getstatus) have been split
15221 into separate interfaces for Fixed Events and General Purpose
15222 Events (GPEs) in order to support GPE Block Devices properly.
15224 Fixed a problem where the error message "Failed to acquire
15225 semaphore" would appear during operations on the embedded
15228 Code and Data Size: Current core subsystem library sizes are shown
15229 below. These are the code and data sizes for the acpica.lib
15230 produced by the Microsoft Visual C++ 6.0 compiler, and these
15231 values do not include any ACPI driver or OSPM code. The debug
15232 version of the code includes the debug output trace mechanism and
15233 has a much larger code and data size. Note that these values will
15234 vary depending on the efficiency of the compiler and the compiler
15235 options used during generation.
15238 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
15239 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
15241 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
15242 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
15245 ----------------------------------------
15246 28 February 2003. Summary of changes for version 20030228.
15249 1) ACPI CA Core Subsystem:
15251 The GPE handling and dispatch code has been completely overhauled
15252 in preparation for support of GPE Block Devices (ID ACPI0006).
15253 This affects internal data structures and code only; there should
15254 be no differences visible externally. One new file has been
15257 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15258 fields that are used to determine the GPE block lengths. The
15259 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15260 structures are ignored. This is per the ACPI specification but it
15261 isn't very clear. The full 256 Block 0/1 GPEs are now supported
15262 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15264 In the SCI interrupt handler, removed the read of the PM1_CONTROL
15265 register to look at the SCI_EN bit. On some machines, this read
15266 causes an SMI event and greatly slows down SCI events. (This may
15267 in fact be the cause of slow battery status response on some
15270 Fixed a problem where a store of a NULL string to a package object
15271 could cause the premature deletion of the object. This was seen
15272 during execution of the battery _BIF method on some systems,
15273 resulting in no battery data being returned.
15275 Added AcpiWalkResources interface to simplify parsing of resource
15278 Code and Data Size: Current core subsystem library sizes are shown
15279 below. These are the code and data sizes for the acpica.lib
15280 produced by the Microsoft Visual C++ 6.0 compiler, and these
15281 values do not include any ACPI driver or OSPM code. The debug
15282 version of the code includes the debug output trace mechanism and
15283 has a much larger code and data size. Note that these values will
15284 vary depending on the efficiency of the compiler and the compiler
15285 options used during generation.
15288 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15289 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15291 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
15292 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
15297 S3 fixes (Ole Rohne)
15299 Update ACPI PHP driver with to use new acpi_walk_resource API
15302 Add S4BIOS support (Pavel Machek)
15304 Map in entire table before performing checksum (John Stultz)
15306 Expand the mem= cmdline to allow the specification of reserved and
15307 ACPI DATA blocks (Pavel Machek)
15309 Never use ACPI on VISWS
15311 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15313 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15314 causing us to think that some systems support C2 when they really
15317 Do not count processor objects for non-present CPUs (Thanks to
15323 Fixed a problem where ASL include files could not be found and
15326 Added support for the _PDC reserved name.
15329 ----------------------------------------
15330 22 January 2003. Summary of changes for version 20030122.
15333 1) ACPI CA Core Subsystem:
15335 Added a check for constructs of the form: Store (Local0, Local0)
15336 where Local0 is not initialized. Apparently, some BIOS
15337 programmers believe that this is a NOOP. Since this store doesn't
15338 do anything anyway, the new prototype behavior will ignore this
15339 error. This is a case where we can relax the strict checking in
15340 the interpreter in the name of compatibility.
15345 The AcpiSrc Source Conversion Utility has been released with the
15346 Linux package for the first time. This is the utility that is
15347 used to convert the ACPI CA base source code to the Linux version.
15349 (Both) Handle P_BLK lengths shorter than 6 more gracefully
15351 (Both) Move more headers to include/acpi, and delete an unused
15354 (Both) Move drivers/acpi/include directory to include/acpi
15356 (Both) Boot functions don't use cmdline, so don't pass it around
15358 (Both) Remove include of unused header (Adrian Bunk)
15360 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15362 former now also includes the latter, acpiphp.h only needs the one,
15365 (2.5) Make it possible to select method of bios restoring after S3
15366 resume. [=> no more ugly ifdefs] (Pavel Machek)
15368 (2.5) Make proc write interfaces work (Pavel Machek)
15370 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15372 (2.5) Break out ACPI Perf code into its own module, under cpufreq
15373 (Dominik Brodowski)
15375 (2.4) S4BIOS support (Ducrot Bruno)
15377 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15383 Added support to disassemble SSDT and PSDTs.
15385 Implemented support to obtain SSDTs from the Windows registry if
15389 ----------------------------------------
15390 09 January 2003. Summary of changes for version 20030109.
15392 1) ACPI CA Core Subsystem:
15394 Changed the behavior of the internal Buffer-to-String conversion
15395 function. The current ACPI specification states that the contents
15396 of the buffer are "converted to a string of two-character
15397 hexadecimal numbers, each separated by a space". Unfortunately,
15398 this definition is not backwards compatible with existing ACPI 1.0
15399 implementations (although the behavior was not defined in the ACPI
15400 1.0 specification). The new behavior simply copies data from the
15401 buffer to the string until a null character is found or the end of
15402 the buffer is reached. The new String object is always null
15403 terminated. This problem was seen during the generation of _BIF
15404 battery data where incorrect strings were returned for battery
15405 type, etc. This will also require an errata to the ACPI
15408 Renamed all instances of NATIVE_UINT and NATIVE_INT to
15409 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15411 Copyright in all module headers (both Linux and non-Linux) has be
15414 Code and Data Size: Current core subsystem library sizes are shown
15415 below. These are the code and data sizes for the acpica.lib
15416 produced by the Microsoft Visual C++ 6.0 compiler, and these
15417 values do not include any ACPI driver or OSPM code. The debug
15418 version of the code includes the debug output trace mechanism and
15419 has a much larger code and data size. Note that these values will
15420 vary depending on the efficiency of the compiler and the compiler
15421 options used during generation.
15424 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15425 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15427 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15428 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15433 Fixed an oops on module insertion/removal (Matthew Tippett)
15435 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15437 (2.5) Replace pr_debug (Randy Dunlap)
15439 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15441 (Both) Eliminate spawning of thread from timer callback, in favor
15444 (Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15446 (Both) Added define for Fixed Function HW region (Matthew Wilcox)
15448 (Both) Add missing statics to button.c (Pavel Machek)
15450 Several changes have been made to the source code translation
15451 utility that generates the Linux Code in order to make the code
15454 All typedefs on structs and unions have been removed in keeping
15455 with the Linux coding style.
15457 Removed the non-Linux SourceSafe module revision number from each
15460 Completed major overhaul of symbols to be lowercase for linux.
15461 Doubled the number of symbols that are lowercase.
15463 Fixed a problem where identifiers within procedure headers and
15464 within quotes were not fully lower cased (they were left with a
15467 Some C macros whose only purpose is to allow the generation of 16-
15468 bit code are now completely removed in the Linux code, increasing
15469 readability and maintainability.
15471 ----------------------------------------
15473 12 December 2002. Summary of changes for version 20021212.
15476 1) ACPI CA Core Subsystem:
15478 Fixed a problem where the creation of a zero-length AML Buffer
15479 would cause a fault.
15481 Fixed a problem where a Buffer object that pointed to a static AML
15482 buffer (in an ACPI table) could inadvertently be deleted, causing
15485 Fixed a problem where a user buffer (passed in to the external
15486 ACPI CA interfaces) could be overwritten if the buffer was too
15487 small to complete the operation, causing memory corruption.
15489 Fixed a problem in the Buffer-to-String conversion code where a
15490 string of length one was always returned, regardless of the size
15491 of the input Buffer object.
15493 Removed the NATIVE_CHAR data type across the entire source due to
15494 lack of need and lack of consistent use.
15496 Code and Data Size: Current core subsystem library sizes are shown
15497 below. These are the code and data sizes for the acpica.lib
15498 produced by the Microsoft Visual C++ 6.0 compiler, and these
15499 values do not include any ACPI driver or OSPM code. The debug
15500 version of the code includes the debug output trace mechanism and
15501 has a much larger code and data size. Note that these values will
15502 vary depending on the efficiency of the compiler and the compiler
15503 options used during generation.
15506 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
15507 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
15509 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15510 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15513 ----------------------------------------
15514 05 December 2002. Summary of changes for version 20021205.
15516 1) ACPI CA Core Subsystem:
15518 Fixed a problem where a store to a String or Buffer object could
15519 cause corruption of the DSDT if the object type being stored was
15520 the same as the target object type and the length of the object
15521 being stored was equal to or smaller than the original (existing)
15522 target object. This was seen to cause corruption of battery _BIF
15523 buffers if the _BIF method modified the buffer on the fly.
15525 Fixed a problem where an internal error was generated if a control
15526 method invocation was used in an OperationRegion, Buffer, or
15527 Package declaration. This was caused by the deferred parsing of
15528 the control method and thus the deferred creation of the internal
15529 method object. The solution to this problem was to create the
15530 internal method object at the moment the method is encountered in
15531 the first pass - so that subsequent references to the method will
15532 able to obtain the required parameter count and thus properly
15533 parse the method invocation. This problem presented itself as an
15534 AE_AML_INTERNAL during the pass 1 parse phase during table load.
15536 Fixed a problem where the internal String object copy routine did
15537 not always allocate sufficient memory for the target String object
15538 and caused memory corruption. This problem was seen to cause
15539 "Allocation already present in list!" errors as memory allocation
15542 Implemented a new function for the evaluation of namespace objects
15543 that allows the specification of the allowable return object
15544 types. This simplifies a lot of code that checks for a return
15545 object of one or more specific objects returned from the
15546 evaluation (such as _STA, etc.) This may become and external
15547 function if it would be useful to ACPI-related drivers.
15549 Completed another round of prefixing #defines with "ACPI_" for
15552 Completed additional code restructuring to allow more modular
15553 linking for iASL compiler and AcpiExec. Several files were split
15554 creating new files. New files: nsparse.c dsinit.c evgpe.c
15556 Implemented an abort mechanism to terminate an executing control
15557 method via the AML debugger. This feature is useful for debugging
15558 control methods that depend (wait) for specific hardware
15561 Code and Data Size: Current core subsystem library sizes are shown
15562 below. These are the code and data sizes for the acpica.lib
15563 produced by the Microsoft Visual C++ 6.0 compiler, and these
15564 values do not include any ACPI driver or OSPM code. The debug
15565 version of the code includes the debug output trace mechanism and
15566 has a much larger code and data size. Note that these values will
15567 vary depending on the efficiency of the compiler and the compiler
15568 options used during generation.
15571 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15572 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
15574 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
15575 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
15578 2) iASL Compiler/Disassembler
15580 Fixed a compiler code generation problem for "Interrupt" Resource
15581 Descriptors. If specified in the ASL, the optional "Resource
15582 Source Index" and "Resource Source" fields were not inserted into
15583 the correct location within the AML resource descriptor, creating
15584 an invalid descriptor.
15586 Fixed a disassembler problem for "Interrupt" resource descriptors.
15587 The optional "Resource Source Index" and "Resource Source" fields
15591 ----------------------------------------
15592 22 November 2002. Summary of changes for version 20021122.
15595 1) ACPI CA Core Subsystem:
15597 Fixed a reported problem where an object stored to a Method Local
15598 or Arg was not copied to a new object during the store - the
15599 object pointer was simply copied to the Local/Arg. This caused
15600 all subsequent operations on the Local/Arg to also affect the
15601 original source of the store operation.
15603 Fixed a problem where a store operation to a Method Local or Arg
15604 was not completed properly if the Local/Arg contained a reference
15605 (from RefOf) to a named field. The general-purpose store-to-
15606 namespace-node code is now used so that this case is handled
15609 Fixed a problem where the internal object copy routine would cause
15610 a protection fault if the object being copied was a Package and
15611 contained either 1) a NULL package element or 2) a nested sub-
15614 Fixed a problem with the GPE initialization that resulted from an
15615 ambiguity in the ACPI specification. One section of the
15616 specification states that both the address and length of the GPE
15617 block must be zero if the block is not supported. Another section
15618 implies that only the address need be zero if the block is not
15619 supported. The code has been changed so that both the address and
15620 the length must be non-zero to indicate a valid GPE block (i.e.,
15621 if either the address or the length is zero, the GPE block is
15624 Code and Data Size: Current core subsystem library sizes are shown
15625 below. These are the code and data sizes for the acpica.lib
15626 produced by the Microsoft Visual C++ 6.0 compiler, and these
15627 values do not include any ACPI driver or OSPM code. The debug
15628 version of the code includes the debug output trace mechanism and
15629 has a much larger code and data size. Note that these values will
15630 vary depending on the efficiency of the compiler and the compiler
15631 options used during generation.
15634 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
15635 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
15637 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15638 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
15643 Cleaned up EC driver. Exported an external EC read/write
15644 interface. By going through this, other drivers (most notably
15645 sonypi) will be able to serialize access to the EC.
15648 3) iASL Compiler/Disassembler
15650 Implemented support to optionally generate include files for both
15651 ASM and C (the -i switch). This simplifies BIOS development by
15652 automatically creating include files that contain external
15653 declarations for the symbols that are created within the
15655 (optionally generated) ASM and C AML source files.
15658 ----------------------------------------
15659 15 November 2002. Summary of changes for version 20021115.
15661 1) ACPI CA Core Subsystem:
15663 Fixed a memory leak problem where an error during resolution of
15665 method arguments during a method invocation from another method
15666 failed to cleanup properly by deleting all successfully resolved
15669 Fixed a problem where the target of the Index() operator was not
15670 correctly constructed if the source object was a package. This
15671 problem has not been detected because the use of a target operand
15672 with Index() is very rare.
15674 Fixed a problem with the Index() operator where an attempt was
15675 made to delete the operand objects twice.
15677 Fixed a problem where an attempt was made to delete an operand
15678 twice during execution of the CondRefOf() operator if the target
15681 Implemented the first of perhaps several internal create object
15682 functions that create and initialize a specific object type. This
15683 consolidates duplicated code wherever the object is created, thus
15684 shrinking the size of the subsystem.
15686 Implemented improved debug/error messages for errors that occur
15687 during nested method invocations. All executing method pathnames
15688 are displayed (with the error) as the call stack is unwound - thus
15691 Fixed a problem introduced in the 10/02 release that caused
15692 premature deletion of a buffer object if a buffer was used as an
15693 ASL operand where an integer operand is required (Thus causing an
15694 implicit object conversion from Buffer to Integer.) The change in
15695 the 10/02 release was attempting to fix a memory leak (albeit
15698 Code and Data Size: Current core subsystem library sizes are shown
15699 below. These are the code and data sizes for the acpica.lib
15700 produced by the Microsoft Visual C++ 6.0 compiler, and these
15701 values do not include any ACPI driver or OSPM code. The debug
15702 version of the code includes the debug output trace mechanism and
15703 has a much larger code and data size. Note that these values will
15704 vary depending on the efficiency of the compiler and the compiler
15705 options used during generation.
15708 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
15709 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
15711 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
15712 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
15717 Changed the implementation of the ACPI semaphores to use down()
15718 instead of down_interruptable(). It is important that the
15719 execution of ACPI control methods not be interrupted by signals.
15720 Methods must run to completion, or the system may be left in an
15721 unknown/unstable state.
15723 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15727 3) iASL Compiler/Disassembler
15730 Changed the default location of output files. All output files
15731 are now placed in the current directory by default instead of in
15732 the directory of the source file. This change may affect some
15733 existing makefiles, but it brings the behavior of the compiler in
15734 line with other similar tools. The location of the output files
15735 can be overridden with the -p command line switch.
15738 ----------------------------------------
15739 11 November 2002. Summary of changes for version 20021111.
15742 0) ACPI Specification 2.0B is released and is now available at:
15743 http://www.acpi.info/index.html
15746 1) ACPI CA Core Subsystem:
15748 Implemented support for the ACPI 2.0 SMBus Operation Regions.
15749 This includes the early detection and handoff of the request to
15750 the SMBus region handler (avoiding all of the complex field
15751 support code), and support for the bidirectional return packet
15752 from an SMBus write operation. This paves the way for the
15753 development of SMBus drivers in each host operating system.
15755 Fixed a problem where the semaphore WAIT_FOREVER constant was
15756 defined as 32 bits, but must be 16 bits according to the ACPI
15757 specification. This had the side effect of causing ASL
15758 Mutex/Event timeouts even though the ASL code requested a wait
15759 forever. Changed all internal references to the ACPI timeout
15760 parameter to 16 bits to prevent future problems. Changed the name
15761 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15763 Code and Data Size: Current core subsystem library sizes are shown
15764 below. These are the code and data sizes for the acpica.lib
15765 produced by the Microsoft Visual C++ 6.0 compiler, and these
15766 values do not include any ACPI driver or OSPM code. The debug
15767 version of the code includes the debug output trace mechanism and
15768 has a much larger code and data size. Note that these values will
15769 vary depending on the efficiency of the compiler and the compiler
15770 options used during generation.
15773 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15774 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
15776 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
15777 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
15782 Module loading/unloading fixes (John Cagle)
15785 3) iASL Compiler/Disassembler
15787 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15789 Implemented support for the disassembly of all SMBus protocol
15790 keywords (SMBQuick, SMBWord, etc.)
15792 ----------------------------------------
15793 01 November 2002. Summary of changes for version 20021101.
15796 1) ACPI CA Core Subsystem:
15798 Fixed a problem where platforms that have a GPE1 block but no GPE0
15799 block were not handled correctly. This resulted in a "GPE
15800 overlap" error message. GPE0 is no longer required.
15802 Removed code added in the previous release that inserted nodes
15803 into the namespace in alphabetical order. This caused some side-
15804 effects on various machines. The root cause of the problem is
15805 still under investigation since in theory, the internal ordering
15806 of the namespace nodes should not matter.
15809 Enhanced error reporting for the case where a named object is not
15810 found during control method execution. The full ACPI namepath
15811 (name reference) of the object that was not found is displayed in
15814 Note: as a result of the overhaul of the namespace object types in
15815 the previous release, the namespace nodes for the predefined
15816 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
15817 instead of ACPI_TYPE_ANY. This simplifies the namespace
15818 management code but may affect code that walks the namespace tree
15819 looking for specific object types.
15821 Code and Data Size: Current core subsystem library sizes are shown
15822 below. These are the code and data sizes for the acpica.lib
15823 produced by the Microsoft Visual C++ 6.0 compiler, and these
15824 values do not include any ACPI driver or OSPM code. The debug
15825 version of the code includes the debug output trace mechanism and
15826 has a much larger code and data size. Note that these values will
15827 vary depending on the efficiency of the compiler and the compiler
15828 options used during generation.
15831 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
15832 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
15834 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15835 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
15840 Fixed a problem introduced in the previous release where the
15841 Processor and Thermal objects were not recognized and installed in
15842 /proc. This was related to the scope type change described above.
15845 3) iASL Compiler/Disassembler
15847 Implemented the -g option to get all of the required ACPI tables
15848 from the registry and save them to files (Windows version of the
15849 compiler only.) The required tables are the FADT, FACS, and DSDT.
15851 Added ACPI table checksum validation during table disassembly in
15852 order to catch corrupted tables.
15855 ----------------------------------------
15856 22 October 2002. Summary of changes for version 20021022.
15858 1) ACPI CA Core Subsystem:
15860 Implemented a restriction on the Scope operator that the target
15861 must already exist in the namespace at the time the operator is
15862 encountered (during table load or method execution). In other
15863 words, forward references are not allowed and Scope() cannot
15864 create a new object. This changes the previous behavior where the
15865 interpreter would create the name if not found. This new behavior
15866 correctly enables the search-to-root algorithm during namespace
15867 lookup of the target name. Because of this upsearch, this fixes
15868 the known Compaq _SB_.OKEC problem and makes both the AML
15869 interpreter and iASL compiler compatible with other ACPI
15872 Completed a major overhaul of the internal ACPI object types for
15873 the ACPI Namespace and the associated operand objects. Many of
15874 these types had become obsolete with the introduction of the two-
15875 pass namespace load. This cleanup simplifies the code and makes
15876 the entire namespace load mechanism much clearer and easier to
15879 Improved debug output for tracking scope opening/closing to help
15880 diagnose scoping issues. The old scope name as well as the new
15881 scope name are displayed. Also improved error messages for
15882 problems with ASL Mutex objects and error messages for GPE
15885 Cleaned up the namespace dump code, removed obsolete code.
15887 All string output (for all namespace/object dumps) now uses the
15888 common ACPI string output procedure which handles escapes properly
15889 and does not emit non-printable characters.
15891 Fixed some issues with constants in the 64-bit version of the
15892 local C library (utclib.c)
15897 EC Driver: No longer attempts to acquire the Global Lock at
15901 3) iASL Compiler/Disassembler
15903 Implemented ACPI 2.0B grammar change that disallows all Type 1 and
15904 2 opcodes outside of a control method. This means that the
15905 "executable" operators (versus the "namespace" operators) cannot
15906 be used at the table level; they can only be used within a control
15909 Implemented the restriction on the Scope() operator where the
15910 target must already exist in the namespace at the time the
15911 operator is encountered (during ASL compilation). In other words,
15912 forward references are not allowed and Scope() cannot create a new
15913 object. This makes the iASL compiler compatible with other ACPI
15914 implementations and makes the Scope() implementation adhere to the
15915 ACPI specification.
15917 Fixed a problem where namepath optimization for the Alias operator
15918 was optimizing the wrong path (of the two namepaths.) This caused
15919 a "Missing alias link" error message.
15921 Fixed a problem where an "unknown reserved name" warning could be
15922 incorrectly generated for names like "_SB" when the trailing
15923 underscore is not used in the original ASL.
15925 Fixed a problem where the reserved name check did not handle
15926 NamePaths with multiple NameSegs correctly. The first nameseg of
15927 the NamePath was examined instead of the last NameSeg.
15930 ----------------------------------------
15932 02 October 2002. Summary of changes for this release.
15935 1) ACPI CA Core Subsystem version 20021002:
15937 Fixed a problem where a store/copy of a string to an existing
15938 string did not always set the string length properly in the String
15941 Fixed a reported problem with the ToString operator where the
15942 behavior was identical to the ToHexString operator instead of just
15943 simply converting a raw buffer to a string data type.
15945 Fixed a problem where CopyObject and the other "explicit"
15946 conversion operators were not updating the internal namespace node
15947 type as part of the store operation.
15949 Fixed a memory leak during implicit source operand conversion
15950 where the original object was not deleted if it was converted to a
15951 new object of a different type.
15953 Enhanced error messages for all problems associated with namespace
15954 lookups. Common procedure generates and prints the lookup name as
15955 well as the formatted status.
15957 Completed implementation of a new design for the Alias support
15958 within the namespace. The existing design did not handle the case
15959 where a new object was assigned to one of the two names due to the
15960 use of an explicit conversion operator, resulting in the two names
15961 pointing to two different objects. The new design simply points
15962 the Alias name to the original name node - not to the object.
15963 This results in a level of indirection that must be handled in the
15964 name resolution mechanism.
15966 Code and Data Size: Current core subsystem library sizes are shown
15967 below. These are the code and data sizes for the acpica.lib
15968 produced by the Microsoft Visual C++ 6.0 compiler, and these
15969 values do not include any ACPI driver or OSPM code. The debug
15970 version of the code includes the debug output trace mechanism and
15971 has a larger code and data size. Note that these values will vary
15972 depending on the efficiency of the compiler and the compiler
15973 options used during generation.
15976 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
15977 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
15979 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
15980 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
15985 Initialize thermal driver's timer before it is used. (Knut
15988 Allow handling negative celsius values. (Kochi Takayoshi)
15990 Fix thermal management and make trip points. R/W (Pavel Machek)
15992 Fix /proc/acpi/sleep. (P. Christeas)
15994 IA64 fixes. (David Mosberger)
15996 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15998 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16002 3) iASL Compiler/Disassembler
16004 Clarified some warning/error messages.
16007 ----------------------------------------
16008 18 September 2002. Summary of changes for this release.
16011 1) ACPI CA Core Subsystem version 20020918:
16013 Fixed a reported problem with reference chaining (via the Index()
16014 and RefOf() operators) in the ObjectType() and SizeOf() operators.
16015 The definition of these operators includes the dereferencing of
16016 all chained references to return information on the base object.
16018 Fixed a problem with stores to indexed package elements - the
16019 existing code would not complete the store if an "implicit
16020 conversion" was not performed. In other words, if the existing
16021 object (package element) was to be replaced completely, the code
16022 didn't handle this case.
16024 Relaxed typechecking on the ASL "Scope" operator to allow the
16025 target name to refer to an object of type Integer, String, or
16026 Buffer, in addition to the scoping object types (Device,
16027 predefined Scopes, Processor, PowerResource, and ThermalZone.)
16028 This allows existing AML code that has workarounds for a bug in
16029 Windows to function properly. A warning is issued, however. This
16030 affects both the AML interpreter and the iASL compiler. Below is
16031 an example of this type of ASL code:
16037 Fixed some reported problems with 64-bit integer support in the
16038 local implementation of C library functions (clib.c)
16043 Use ACPI fix map region instead of IOAPIC region, since it is
16044 undefined in non-SMP.
16046 Ensure that the SCI has the proper polarity and trigger, even on
16047 systems that do not have an interrupt override entry in the MADT.
16049 2.5 big driver reorganization (Pat Mochel)
16051 Use early table mapping code from acpitable.c (Andi Kleen)
16053 New blacklist entries (Andi Kleen)
16055 Blacklist improvements. Split blacklist code out into a separate
16056 file. Move checking the blacklist to very early. Previously, we
16057 would use ACPI tables, and then halfway through init, check the
16058 blacklist -- too late. Now, it's early enough to completely fall-
16062 3) iASL Compiler/Disassembler version 20020918:
16064 Fixed a problem where the typechecking code didn't know that an
16065 alias could point to a method. In other words, aliases were not
16066 being dereferenced during typechecking.
16069 ----------------------------------------
16070 29 August 2002. Summary of changes for this release.
16072 1) ACPI CA Core Subsystem Version 20020829:
16074 If the target of a Scope() operator already exists, it must be an
16075 object type that actually opens a scope -- such as a Device,
16076 Method, Scope, etc. This is a fatal runtime error. Similar error
16077 check has been added to the iASL compiler also.
16079 Tightened up the namespace load to disallow multiple names in the
16080 same scope. This previously was allowed if both objects were of
16081 the same type. (i.e., a lookup was the same as entering a new
16087 Ensure that the ACPI interrupt has the proper trigger and
16090 local_irq_disable is extraneous. (Matthew Wilcox)
16092 Make "acpi=off" actually do what it says, and not use the ACPI
16093 interpreter *or* the tables.
16095 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16099 3) iASL Compiler/Disassembler Version 20020829:
16101 Implemented namepath optimization for name declarations. For
16102 example, a declaration like "Method (\_SB_.ABCD)" would get
16103 optimized to "Method (ABCD)" if the declaration is within the
16104 \_SB_ scope. This optimization is in addition to the named
16105 reference path optimization first released in the previous
16106 version. This would seem to complete all possible optimizations
16107 for namepaths within the ASL/AML.
16109 If the target of a Scope() operator already exists, it must be an
16110 object type that actually opens a scope -- such as a Device,
16111 Method, Scope, etc.
16113 Implemented a check and warning for unreachable code in the same
16114 block below a Return() statement.
16116 Fixed a problem where the listing file was not generated if the
16117 compiler aborted if the maximum error count was exceeded (200).
16119 Fixed a problem where the typechecking of method return values was
16120 broken. This includes the check for a return value when the
16121 method is invoked as a TermArg (a return value is expected.)
16123 Fixed a reported problem where EOF conditions during a quoted
16124 string or comment caused a fault.
16127 ----------------------------------------
16128 15 August 2002. Summary of changes for this release.
16130 1) ACPI CA Core Subsystem Version 20020815:
16132 Fixed a reported problem where a Store to a method argument that
16133 contains a reference did not perform the indirect store correctly.
16134 This problem was created during the conversion to the new
16135 reference object model - the indirect store to a method argument
16136 code was not updated to reflect the new model.
16138 Reworked the ACPI mode change code to better conform to ACPI 2.0,
16139 handle corner cases, and improve code legibility (Kochi Takayoshi)
16141 Fixed a problem with the pathname parsing for the carat (^)
16142 prefix. The heavy use of the carat operator by the new namepath
16143 optimization in the iASL compiler uncovered a problem with the AML
16144 interpreter handling of this prefix. In the case where one or
16145 more carats precede a single nameseg, the nameseg was treated as
16146 standalone and the search rule (to root) was inadvertently
16147 applied. This could cause both the iASL compiler and the
16148 interpreter to find the wrong object or to miss the error that
16149 should occur if the object does not exist at that exact pathname.
16151 Found and fixed the problem where the HP Pavilion DSDT would not
16152 load. This was a relatively minor tweak to the table loading code
16153 (a problem caused by the unexpected encounter with a method
16154 invocation not within a control method), but it does not solve the
16155 overall issue of the execution of AML code at the table level.
16156 This investigation is still ongoing.
16158 Code and Data Size: Current core subsystem library sizes are shown
16159 below. These are the code and data sizes for the acpica.lib
16160 produced by the Microsoft Visual C++ 6.0 compiler, and these
16161 values do not include any ACPI driver or OSPM code. The debug
16162 version of the code includes the debug output trace mechanism and
16163 has a larger code and data size. Note that these values will vary
16164 depending on the efficiency of the compiler and the compiler
16165 options used during generation.
16168 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
16169 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
16171 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
16172 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
16177 Remove redundant slab.h include (Brad Hards)
16179 Fix several bugs in thermal.c (Herbert Nachtnebel)
16181 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16183 Change acpi_system_suspend to use updated irq functions (Pavel
16186 Export acpi_get_firmware_table (Matthew Wilcox)
16188 Use proper root proc entry for ACPI (Kochi Takayoshi)
16190 Fix early-boot table parsing (Bjorn Helgaas)
16193 3) iASL Compiler/Disassembler
16195 Reworked the compiler options to make them more consistent and to
16196 use two-letter options where appropriate. We were running out of
16197 sensible letters. This may break some makefiles, so check the
16198 current options list by invoking the compiler with no parameters.
16200 Completed the design and implementation of the ASL namepath
16201 optimization option for the compiler. This option optimizes all
16202 references to named objects to the shortest possible path. The
16203 first attempt tries to utilize a single nameseg (4 characters) and
16204 the "search-to-root" algorithm used by the interpreter. If that
16205 cannot be used (because either the name is not in the search path
16206 or there is a conflict with another object with the same name),
16207 the pathname is optimized using the carat prefix (usually a
16208 shorter string than specifying the entire path from the root.)
16210 Implemented support to obtain the DSDT from the Windows registry
16211 (when the disassembly option is specified with no input file).
16212 Added this code as the implementation for AcpiOsTableOverride in
16213 the Windows OSL. Migrated the 16-bit code (used in the AcpiDump
16214 utility) to scan memory for the DSDT to the AcpiOsTableOverride
16215 function in the DOS OSL to make the disassembler truly OS
16218 Implemented a new option to disassemble and compile in one step.
16219 When used without an input filename, this option will grab the
16220 DSDT from the local machine, disassemble it, and compile it in one
16223 Added a warning message for invalid escapes (a backslash followed
16224 by any character other than the allowable escapes). This catches
16225 the quoted string error "\_SB_" (which should be "\\_SB_" ).
16227 Also, there are numerous instances in the ACPI specification where
16230 Added a compiler option to disable all optimizations. This is
16231 basically the "compatibility mode" because by using this option,
16232 the AML code will come out exactly the same as other ASL
16235 Added error messages for incorrectly ordered dependent resource
16236 functions. This includes: missing EndDependentFn macro at end of
16237 dependent resource list, nested dependent function macros (both
16238 start and end), and missing StartDependentFn macro. These are
16239 common errors that should be caught at compile time.
16241 Implemented _OSI support for the disassembler and compiler. _OSI
16242 must be included in the namespace for proper disassembly (because
16243 the disassembler must know the number of arguments.)
16245 Added an "optimization" message type that is optional (off by
16246 default). This message is used for all optimizations - including
16247 constant folding, integer optimization, and namepath optimization.
16249 ----------------------------------------
16250 25 July 2002. Summary of changes for this release.
16253 1) ACPI CA Core Subsystem Version 20020725:
16255 The AML Disassembler has been enhanced to produce compilable ASL
16256 code and has been integrated into the iASL compiler (see below) as
16257 well as the single-step disassembly for the AML debugger and the
16258 disassembler for the AcpiDump utility. All ACPI 2.0A opcodes,
16259 resource templates and macros are fully supported. The
16260 disassembler has been tested on over 30 different AML files,
16261 producing identical AML when the resulting disassembled ASL file
16262 is recompiled with the same ASL compiler.
16264 Modified the Resource Manager to allow zero interrupts and zero
16265 dma channels during the GetCurrentResources call. This was
16266 causing problems on some platforms.
16268 Added the AcpiOsRedirectOutput interface to the OSL to simplify
16269 output redirection for the AcpiOsPrintf and AcpiOsVprintf
16272 Code and Data Size: Current core subsystem library sizes are shown
16273 below. These are the code and data sizes for the acpica.lib
16274 produced by the Microsoft Visual C++ 6.0 compiler, and these
16275 values do not include any ACPI driver or OSPM code. The debug
16276 version of the code includes the debug output trace mechanism and
16277 has a larger code and data size. Note that these values will vary
16278 depending on the efficiency of the compiler and the compiler
16279 options used during generation.
16282 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
16283 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
16285 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
16286 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
16291 Fixed a panic in the EC driver (Dominik Brodowski)
16293 Implemented checksum of the R/XSDT itself during Linux table scan
16299 The AML disassembler is integrated into the compiler. The "-d"
16300 option invokes the disassembler to completely disassemble an
16301 input AML file, producing as output a text ASL file with the
16302 extension ".dsl" (to avoid name collisions with existing .asl
16303 source files.) A future enhancement will allow the disassembler
16304 to obtain the BIOS DSDT from the registry under Windows.
16306 Fixed a problem with the VendorShort and VendorLong resource
16307 descriptors where an invalid AML sequence was created.
16309 Implemented a fix for BufferData term in the ASL parser. It was
16310 inadvertently defined twice, allowing invalid syntax to pass and
16311 causing reduction conflicts.
16313 Fixed a problem where the Ones opcode could get converted to a
16314 value of zero if "Ones" was used where a byte, word or dword value
16315 was expected. The 64-bit value is now truncated to the correct
16316 size with the correct value.
16320 ----------------------------------------
16321 02 July 2002. Summary of changes for this release.
16324 1) ACPI CA Core Subsystem Version 20020702:
16326 The Table Manager code has been restructured to add several new
16327 features. Tables that are not required by the core subsystem
16328 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16329 validated in any way and are returned from AcpiGetFirmwareTable if
16330 requested. The AcpiOsTableOverride interface is now called for
16331 each table that is loaded by the subsystem in order to allow the
16332 host to override any table it chooses. Previously, only the DSDT
16333 could be overridden. Added one new files, tbrsdt.c and
16336 Fixed a problem with the conversion of internal package objects to
16337 external objects (when a package is returned from a control
16338 method.) The return buffer length was set to zero instead of the
16339 proper length of the package object.
16341 Fixed a reported problem with the use of the RefOf and DeRefOf
16342 operators when passing reference arguments to control methods. A
16343 new type of Reference object is used internally for references
16344 produced by the RefOf operator.
16346 Added additional error messages in the Resource Manager to explain
16347 AE_BAD_DATA errors when they occur during resource parsing.
16349 Split the AcpiEnableSubsystem into two primitives to enable a
16350 finer granularity initialization sequence. These two calls should
16351 be called in this order: AcpiEnableSubsystem (flags),
16352 AcpiInitializeObjects (flags). The flags parameter remains the
16358 Updated the ACPI utilities module to understand the new style of
16359 fully resolved package objects that are now returned from the core
16360 subsystem. This eliminates errors of the form:
16362 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16363 acpi_utils-0430 [145] acpi_evaluate_reference:
16364 Invalid element in package (not a device reference)
16366 The method evaluation utility uses the new buffer allocation
16367 scheme instead of calling AcpiEvaluate Object twice.
16369 Added support for ECDT. This allows the use of the Embedded
16371 Controller before the namespace has been fully initialized, which
16372 is necessary for ACPI 2.0 support, and for some laptops to
16373 initialize properly. (Laptops using ECDT are still rare, so only
16374 limited testing was performed of the added functionality.)
16376 Fixed memory leaks in the EC driver.
16378 Eliminated a brittle code structure in acpi_bus_init().
16380 Eliminated the acpi_evaluate() helper function in utils.c. It is
16381 no longer needed since acpi_evaluate_object can optionally
16382 allocate memory for the return object.
16384 Implemented fix for keyboard hang when getting battery readings on
16385 some systems (Stephen White)
16387 PCI IRQ routing update (Dominik Brodowski)
16389 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16392 ----------------------------------------
16393 11 June 2002. Summary of changes for this release.
16396 1) ACPI CA Core Subsystem Version 20020611:
16398 Fixed a reported problem where constants such as Zero and One
16399 appearing within _PRT packages were not handled correctly within
16400 the resource manager code. Originally reported against the ASL
16401 compiler because the code generator now optimizes integers to
16402 their minimal AML representation (i.e. AML constants if possible.)
16403 The _PRT code now handles all AML constant opcodes correctly
16404 (Zero, One, Ones, Revision).
16406 Fixed a problem with the Concatenate operator in the AML
16407 interpreter where a buffer result object was incorrectly marked as
16408 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16410 All package sub-objects are now fully resolved before they are
16411 returned from the external ACPI interfaces. This means that name
16412 strings are resolved to object handles, and constant operators
16413 (Zero, One, Ones, Revision) are resolved to Integers.
16415 Implemented immediate resolution of the AML Constant opcodes
16416 (Zero, One, Ones, Revision) to Integer objects upon detection
16417 within the AML stream. This has simplified and reduced the
16418 generated code size of the subsystem by eliminating about 10
16419 switch statements for these constants (which previously were
16420 contained in Reference objects.) The complicating issues are that
16421 the Zero opcode is used as a "placeholder" for unspecified
16422 optional target operands and stores to constants are defined to be
16425 Code and Data Size: Current core subsystem library sizes are shown
16426 below. These are the code and data sizes for the acpica.lib
16427 produced by the Microsoft Visual C++ 6.0 compiler, and these
16428 values do not include any ACPI driver or OSPM code. The debug
16429 version of the code includes the debug output trace mechanism and
16430 has a larger code and data size. Note that these values will vary
16431 depending on the efficiency of the compiler and the compiler
16432 options used during generation.
16435 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
16436 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
16438 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
16439 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
16445 Added preliminary support for obtaining _TRA data for PCI root
16446 bridges (Bjorn Helgaas).
16449 3) iASL Compiler Version X2046:
16451 Fixed a problem where the "_DDN" reserved name was defined to be a
16452 control method with one argument. There are no arguments, and
16453 _DDN does not have to be a control method.
16455 Fixed a problem with the Linux version of the compiler where the
16456 source lines printed with error messages were the wrong lines.
16457 This turned out to be the "LF versus CR/LF" difference between
16458 Windows and Unix. This appears to be the longstanding issue
16459 concerning listing output and error messages.
16461 Fixed a problem with the Linux version of compiler where opcode
16462 names within error messages were wrong. This was caused by a
16463 slight difference in the output of the Flex tool on Linux versus
16466 Fixed a problem with the Linux compiler where the hex output files
16467 contained some garbage data caused by an internal buffer overrun.
16470 ----------------------------------------
16471 17 May 2002. Summary of changes for this release.
16474 1) ACPI CA Core Subsystem Version 20020517:
16476 Implemented a workaround to an BIOS bug discovered on the HP
16477 OmniBook where the FADT revision number and the table size are
16478 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new
16479 behavior is to fallback to using only the ACPI 1.0 fields of the
16480 FADT if the table is too small to be a ACPI 2.0 table as claimed
16481 by the revision number. Although this is a BIOS bug, this is a
16482 case where the workaround is simple enough and with no side
16483 effects, so it seemed prudent to add it. A warning message is
16486 Implemented minimum size checks for the fixed-length ACPI tables -
16487 - the FADT and FACS, as well as consistency checks between the
16488 revision number and the table size.
16490 Fixed a reported problem in the table override support where the
16491 new table pointer was incorrectly treated as a physical address
16492 instead of a logical address.
16494 Eliminated the use of the AE_AML_ERROR exception and replaced it
16495 with more descriptive codes.
16497 Fixed a problem where an exception would occur if an ASL Field was
16498 defined with no named Field Units underneath it (used by some
16501 Code and Data Size: Current core subsystem library sizes are shown
16502 below. These are the code and data sizes for the acpica.lib
16503 produced by the Microsoft Visual C++ 6.0 compiler, and these
16504 values do not include any ACPI driver or OSPM code. The debug
16505 version of the code includes the debug output trace mechanism and
16506 has a larger code and data size. Note that these values will vary
16507 depending on the efficiency of the compiler and the compiler
16508 options used during generation.
16511 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
16512 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
16514 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
16515 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
16521 Much work done on ACPI init (MADT and PCI IRQ routing support).
16522 (Paul D. and Dominik Brodowski)
16524 Fix PCI IRQ-related panic on boot (Sam Revitch)
16526 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16528 Fix "MHz" typo (Dominik Brodowski)
16530 Fix RTC year 2000 issue (Dominik Brodowski)
16532 Preclude multiple button proc entries (Eric Brunet)
16534 Moved arch-specific code out of include/platform/aclinux.h
16536 3) iASL Compiler Version X2044:
16538 Implemented error checking for the string used in the EISAID macro
16539 (Usually used in the definition of the _HID object.) The code now
16540 strictly enforces the PnP format - exactly 7 characters, 3
16541 uppercase letters and 4 hex digits.
16543 If a raw string is used in the definition of the _HID object
16544 (instead of the EISAID macro), the string must contain all
16545 alphanumeric characters (e.g., "*PNP0011" is not allowed because
16548 Implemented checking for invalid use of ACPI reserved names for
16549 most of the name creation operators (Name, Device, Event, Mutex,
16550 OperationRegion, PowerResource, Processor, and ThermalZone.)
16551 Previously, this check was only performed for control methods.
16553 Implemented an additional check on the Name operator to emit an
16554 error if a reserved name that must be implemented in ASL as a
16555 control method is used. We know that a reserved name must be a
16556 method if it is defined with input arguments.
16558 The warning emitted when a namespace object reference is not found
16559 during the cross reference phase has been changed into an error.
16560 The "External" directive should be used for names defined in other
16564 4) Tools and Utilities
16566 The 16-bit tools (adump16 and aexec16) have been regenerated and
16569 Fixed a problem with the output of both acpidump and adump16 where
16570 the indentation of closing parentheses and brackets was not
16572 aligned properly with the parent block.
16575 ----------------------------------------
16576 03 May 2002. Summary of changes for this release.
16579 1) ACPI CA Core Subsystem Version 20020503:
16581 Added support a new OSL interface that allows the host operating
16583 system software to override the DSDT found in the firmware -
16584 AcpiOsTableOverride. With this interface, the OSL can examine the
16585 version of the firmware DSDT and replace it with a different one
16588 Added new external interfaces for accessing ACPI registers from
16589 device drivers and other system software - AcpiGetRegister and
16590 AcpiSetRegister. This was simply an externalization of the
16591 existing AcpiHwBitRegister interfaces.
16593 Fixed a regression introduced in the previous build where the
16594 ASL/AML CreateField operator always returned an error,
16595 "destination must be a NS Node".
16597 Extended the maximum time (before failure) to successfully enable
16598 ACPI mode to 3 seconds.
16600 Code and Data Size: Current core subsystem library sizes are shown
16601 below. These are the code and data sizes for the acpica.lib
16602 produced by the Microsoft Visual C++ 6.0 compiler, and these
16603 values do not include any ACPI driver or OSPM code. The debug
16604 version of the code includes the debug output trace mechanism and
16605 has a larger code and data size. Note that these values will vary
16606 depending on the efficiency of the compiler and the compiler
16607 options used during generation.
16610 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
16611 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
16613 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
16614 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
16619 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16620 free. While 3 out of 4 of our in-house systems work fine, the last
16621 one still hangs when testing the LAPIC timer.
16623 Renamed many files in 2.5 kernel release to omit "acpi_" from the
16626 Added warning on boot for Presario 711FR.
16628 Sleep improvements (Pavel Machek)
16630 ACPI can now be built without CONFIG_PCI enabled.
16632 IA64: Fixed memory map functions (JI Lee)
16635 3) iASL Compiler Version X2043:
16637 Added support to allow the compiler to be integrated into the MS
16638 VC++ development environment for one-button compilation of single
16639 files or entire projects -- with error-to-source-line mapping.
16641 Implemented support for compile-time constant folding for the
16642 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16643 specification. This allows the ASL writer to use expressions
16644 instead of Integer/Buffer/String constants in terms that must
16645 evaluate to constants at compile time and will also simplify the
16646 emitted AML in any such sub-expressions that can be folded
16647 (evaluated at compile-time.) This increases the size of the
16648 compiler significantly because a portion of the ACPI CA AML
16649 interpreter is included within the compiler in order to pre-
16650 evaluate constant expressions.
16653 Fixed a problem with the "Unicode" ASL macro that caused the
16654 compiler to fault. (This macro is used in conjunction with the
16655 _STR reserved name.)
16657 Implemented an AML opcode optimization to use the Zero, One, and
16658 Ones opcodes where possible to further reduce the size of integer
16659 constants and thus reduce the overall size of the generated AML
16662 Implemented error checking for new reserved terms for ACPI version
16665 Implemented the -qr option to display the current list of ACPI
16666 reserved names known to the compiler.
16668 Implemented the -qc option to display the current list of ASL
16669 operators that are allowed within constant expressions and can
16670 therefore be folded at compile time if the operands are constants.
16675 Updated the Programmer's Reference for new interfaces, data types,
16676 and memory allocation model options.
16678 Updated the iASL Compiler User Reference to apply new format and
16679 add information about new features and options.
16681 ----------------------------------------
16682 19 April 2002. Summary of changes for this release.
16684 1) ACPI CA Core Subsystem Version 20020419:
16686 The source code base for the Core Subsystem has been completely
16687 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16688 versions. The Lint option files used are included in the
16689 /acpi/generate/lint directory.
16691 Implemented enhanced status/error checking across the entire
16692 Hardware manager subsystem. Any hardware errors (reported from
16693 the OSL) are now bubbled up and will abort a running control
16697 Fixed a problem where the per-ACPI-table integer width (32 or 64)
16698 was stored only with control method nodes, causing a fault when
16699 non-control method code was executed during table loading. The
16700 solution implemented uses a global variable to indicate table
16701 width across the entire ACPI subsystem. Therefore, ACPI CA does
16702 not support mixed integer widths across different ACPI tables
16705 Fixed a problem where NULL extended fields (X fields) in an ACPI
16706 2.0 ACPI FADT caused the table load to fail. Although the
16707 existing ACPI specification is a bit fuzzy on this topic, the new
16708 behavior is to fall back on a ACPI 1.0 field if the corresponding
16709 ACPI 2.0 X field is zero (even though the table revision indicates
16710 a full ACPI 2.0 table.) The ACPI specification will be updated to
16711 clarify this issue.
16713 Fixed a problem with the SystemMemory operation region handler
16714 where memory was always accessed byte-wise even if the AML-
16715 specified access width was larger than a byte. This caused
16716 problems on systems with memory-mapped I/O. Memory is now
16717 accessed with the width specified. On systems that do not support
16718 non-aligned transfers, a check is made to guarantee proper address
16719 alignment before proceeding in order to avoid an AML-caused
16720 alignment fault within the kernel.
16723 Fixed a problem with the ExtendedIrq resource where only one byte
16724 of the 4-byte Irq field was extracted.
16726 Fixed the AcpiExDigitsNeeded() procedure to support _UID. This
16727 function was out of date and required a rewrite.
16729 Code and Data Size: Current core subsystem library sizes are shown
16730 below. These are the code and data sizes for the acpica.lib
16731 produced by the Microsoft Visual C++ 6.0 compiler, and these
16732 values do not include any ACPI driver or OSPM code. The debug
16733 version of the code includes the debug output trace mechanism and
16734 has a larger code and data size. Note that these values will vary
16735 depending on the efficiency of the compiler and the compiler
16736 options used during generation.
16739 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
16740 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
16742 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
16743 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
16748 PCI IRQ routing fixes (Dominik Brodowski)
16751 3) iASL Compiler Version X2042:
16753 Implemented an additional compile-time error check for a field
16754 unit whose size + minimum access width would cause a run-time
16755 access beyond the end-of-region. Previously, only the field size
16756 itself was checked.
16758 The Core subsystem and iASL compiler now share a common parse
16759 object in preparation for compile-time evaluation of the type
16760 3/4/5 ASL operators.
16763 ----------------------------------------
16764 Summary of changes for this release: 03_29_02
16766 1) ACPI CA Core Subsystem Version 20020329:
16768 Implemented support for late evaluation of TermArg operands to
16769 Buffer and Package objects. This allows complex expressions to be
16770 used in the declarations of these object types.
16772 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
16773 1.0, if the field was larger than 32 bits, it was returned as a
16774 buffer - otherwise it was returned as an integer. In ACPI 2.0,
16775 the field is returned as a buffer only if the field is larger than
16776 64 bits. The TableRevision is now considered when making this
16777 conversion to avoid incompatibility with existing ASL code.
16779 Implemented logical addressing for AcpiOsGetRootPointer. This
16780 allows an RSDP with either a logical or physical address. With
16781 this support, the host OS can now override all ACPI tables with
16782 one logical RSDP. Includes implementation of "typed" pointer
16783 support to allow a common data type for both physical and logical
16784 pointers internally. This required a change to the
16785 AcpiOsGetRootPointer interface.
16787 Implemented the use of ACPI 2.0 Generic Address Structures for all
16788 GPE, Fixed Event, and PM Timer I/O. This allows the use of memory
16789 mapped I/O for these ACPI features.
16791 Initialization now ignores not only non-required tables (All
16792 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16793 not validate the table headers of unrecognized tables.
16795 Fixed a problem where a notify handler could only be
16796 installed/removed on an object of type Device. All "notify"
16798 objects are now supported -- Devices, Processor, Power, and
16801 Removed most verbosity from the ACPI_DB_INFO debug level. Only
16802 critical information is returned when this debug level is enabled.
16804 Code and Data Size: Current core subsystem library sizes are shown
16805 below. These are the code and data sizes for the acpica.lib
16806 produced by the Microsoft Visual C++ 6.0 compiler, and these
16807 values do not include any ACPI driver or OSPM code. The debug
16808 version of the code includes the debug output trace mechanism and
16809 has a larger code and data size. Note that these values will vary
16810 depending on the efficiency of the compiler and the compiler
16811 options used during generation.
16814 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
16815 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
16817 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
16818 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
16823 The processor driver (acpi_processor.c) now fully supports ACPI
16824 2.0-based processor performance control (e.g. Intel(R)
16825 SpeedStep(TM) technology) Note that older laptops that only have
16826 the Intel "applet" interface are not supported through this. The
16827 'limit' and 'performance' interface (/proc) are fully functional.
16828 [Note that basic policy for controlling performance state
16829 transitions will be included in the next version of ospmd.] The
16830 idle handler was modified to more aggressively use C2, and PIIX4
16831 errata handling underwent a complete overhaul (big thanks to
16832 Dominik Brodowski).
16834 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
16835 based devices in the ACPI namespace are now dynamically bound
16836 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
16837 This allows, among other things, ACPI to resolve bus numbers for
16838 subordinate PCI bridges.
16840 Enhanced PCI IRQ routing to get the proper bus number for _PRT
16841 entries defined underneath PCI bridges.
16843 Added IBM 600E to bad bios list due to invalid _ADR value for
16844 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
16846 In the process of adding full MADT support (e.g. IOAPIC) for IA32
16847 (acpi.c, mpparse.c) -- stay tuned.
16849 Added back visual differentiation between fixed-feature and
16850 control-method buttons in dmesg. Buttons are also subtyped (e.g.
16851 button/power/PWRF) to simplify button identification.
16853 We no longer use -Wno-unused when compiling debug. Please ignore
16854 any "_THIS_MODULE defined but not used" messages.
16856 Can now shut down the system using "magic sysrq" key.
16859 3) iASL Compiler version 2041:
16861 Fixed a problem where conversion errors for hex/octal/decimal
16862 constants were not reported.
16864 Implemented a fix for the General Register template Address field.
16865 This field was 8 bits when it should be 64.
16867 Fixed a problem where errors/warnings were no longer being emitted
16868 within the listing output file.
16870 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16871 exactly 4 characters, alphanumeric only.
16876 ----------------------------------------
16877 Summary of changes for this release: 03_08_02
16880 1) ACPI CA Core Subsystem Version 20020308:
16882 Fixed a problem with AML Fields where the use of the "AccessAny"
16883 keyword could cause an interpreter error due to attempting to read
16884 or write beyond the end of the parent Operation Region.
16886 Fixed a problem in the SystemMemory Operation Region handler where
16887 an attempt was made to map memory beyond the end of the region.
16888 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16889 errors on some Linux systems.
16891 Fixed a problem where the interpreter/namespace "search to root"
16892 algorithm was not functioning for some object types. Relaxed the
16893 internal restriction on the search to allow upsearches for all
16894 external object types as well as most internal types.
16899 We now use safe_halt() macro versus individual calls to sti | hlt.
16901 Writing to the processor limit interface should now work. "echo 1"
16902 will increase the limit, 2 will decrease, and 0 will reset to the
16909 Fixed segfault on Linux version.
16912 ----------------------------------------
16913 Summary of changes for this release: 02_25_02
16915 1) ACPI CA Core Subsystem:
16918 Fixed a problem where the GPE bit masks were not initialized
16919 properly, causing erratic GPE behavior.
16921 Implemented limited support for multiple calling conventions. The
16922 code can be generated with either the VPL (variable parameter
16923 list, or "C") convention, or the FPL (fixed parameter list, or
16924 "Pascal") convention. The core subsystem is about 3.4% smaller
16925 when generated with FPL.
16930 Re-add some /proc/acpi/event functionality that was lost during
16933 Resolved issue with /proc events for fixed-feature buttons showing
16934 up as the system device.
16936 Fixed checks on C2/C3 latencies to be inclusive of maximum values.
16938 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
16940 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
16942 Fixed limit interface & usage to fix bugs with passive cooling
16945 Restructured PRT support.
16948 ----------------------------------------
16949 Summary of changes for this label: 02_14_02
16952 1) ACPI CA Core Subsystem:
16954 Implemented support in AcpiLoadTable to allow loading of FACS and
16957 Support for the now-obsolete interim 0.71 64-bit ACPI tables has
16958 been removed. All 64-bit platforms should be migrated to the ACPI
16959 2.0 tables. The actbl71.h header has been removed from the source
16962 All C macros defined within the subsystem have been prefixed with
16963 "ACPI_" to avoid collision with other system include files.
16965 Removed the return value for the two AcpiOsPrint interfaces, since
16966 it is never used and causes lint warnings for ignoring the return
16969 Added error checking to all internal mutex acquire and release
16970 calls. Although a failure from one of these interfaces is
16971 probably a fatal system error, these checks will cause the
16972 immediate abort of the currently executing method or interface.
16974 Fixed a problem where the AcpiSetCurrentResources interface could
16975 fault. This was a side effect of the deployment of the new memory
16978 Fixed a couple of problems with the Global Lock support introduced
16979 in the last major build. The "common" (1.0/2.0) internal FACS was
16980 being overwritten with the FACS signature and clobbering the
16981 Global Lock pointer. Also, the actual firmware FACS was being
16982 unmapped after construction of the "common" FACS, preventing
16983 access to the actual Global Lock field within it. The "common"
16984 internal FACS is no longer installed as an actual ACPI table; it
16985 is used simply as a global.
16987 Code and Data Size: Current core subsystem library sizes are shown
16988 below. These are the code and data sizes for the acpica.lib
16989 produced by the Microsoft Visual C++ 6.0 compiler, and these
16990 values do not include any ACPI driver or OSPM code. The debug
16991 version of the code includes the debug output trace mechanism and
16992 has a larger code and data size. Note that these values will vary
16993 depending on the efficiency of the compiler and the compiler
16994 options used during generation.
16996 Previous Release (02_07_01)
16997 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
16998 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
17000 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
17001 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
17006 Updated Linux-specific code for core macro and OSL interface
17007 changes described above.
17009 Improved /proc/acpi/event. It now can be opened only once and has
17010 proper poll functionality.
17012 Fixed and restructured power management (acpi_bus).
17014 Only create /proc "view by type" when devices of that class exist.
17016 Fixed "charging/discharging" bug (and others) in acpi_battery.
17018 Improved thermal zone code.
17021 3) ASL Compiler, version X2039:
17024 Implemented the new compiler restriction on ASL String hex/octal
17025 escapes to non-null, ASCII values. An error results if an invalid
17026 value is used. (This will require an ACPI 2.0 specification
17029 AML object labels that are output to the optional C and ASM source
17030 are now prefixed with both the ACPI table signature and table ID
17031 to help guarantee uniqueness within a large BIOS project.
17034 ----------------------------------------
17035 Summary of changes for this label: 02_01_02
17037 1) ACPI CA Core Subsystem:
17039 ACPI 2.0 support is complete in the entire Core Subsystem and the
17040 ASL compiler. All new ACPI 2.0 operators are implemented and all
17041 other changes for ACPI 2.0 support are complete. With
17042 simultaneous code and data optimizations throughout the subsystem,
17043 ACPI 2.0 support has been implemented with almost no additional
17044 cost in terms of code and data size.
17046 Implemented a new mechanism for allocation of return buffers. If
17047 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17048 be allocated on behalf of the caller. Consolidated all return
17049 buffer validation and allocation to a common procedure. Return
17050 buffers will be allocated via the primary OSL allocation interface
17051 since it appears that a separate pool is not needed by most users.
17052 If a separate pool is required for these buffers, the caller can
17053 still use the original mechanism and pre-allocate the buffer(s).
17055 Implemented support for string operands within the DerefOf
17058 Restructured the Hardware and Event managers to be table driven,
17059 simplifying the source code and reducing the amount of generated
17062 Split the common read/write low-level ACPI register bitfield
17063 procedure into a separate read and write, simplifying the code
17066 Obsoleted the AcpiOsCallocate OSL interface. This interface was
17067 used only a handful of times and didn't have enough critical mass
17068 for a separate interface. Replaced with a common calloc procedure
17071 Fixed a reported problem with the GPE number mapping mechanism
17072 that allows GPE1 numbers to be non-contiguous with GPE0.
17073 Reorganized the GPE information and shrunk a large array that was
17074 originally large enough to hold info for all possible GPEs (256)
17075 to simply large enough to hold all GPEs up to the largest GPE
17076 number on the machine.
17078 Fixed a reported problem with resource structure alignment on 64-
17081 Changed the AcpiEnableEvent and AcpiDisableEvent external
17082 interfaces to not require any flags for the common case of
17083 enabling/disabling a GPE.
17085 Implemented support to allow a "Notify" on a Processor object.
17087 Most TBDs in comments within the source code have been resolved
17091 Fixed a problem in the interpreter where a standalone parent
17092 prefix (^) was not handled correctly in the interpreter and
17095 Removed obsolete and unnecessary GPE save/restore code.
17097 Implemented Field support in the ASL Load operator. This allows a
17098 table to be loaded from a named field, in addition to loading a
17099 table directly from an Operation Region.
17101 Implemented timeout and handle support in the external Global Lock
17104 Fixed a problem in the AcpiDump utility where pathnames were no
17105 longer being generated correctly during the dump of named objects.
17107 Modified the AML debugger to give a full display of if/while
17108 predicates instead of just one AML opcode at a time. (The
17109 predicate can have several nested ASL statements.) The old method
17110 was confusing during single stepping.
17112 Code and Data Size: Current core subsystem library sizes are shown
17113 below. These are the code and data sizes for the acpica.lib
17114 produced by the Microsoft Visual C++ 6.0 compiler, and these
17115 values do not include any ACPI driver or OSPM code. The debug
17116 version of the code includes the debug output trace mechanism and
17117 has a larger code and data size. Note that these values will vary
17118 depending on the efficiency of the compiler and the compiler
17119 options used during generation.
17121 Previous Release (12_18_01)
17122 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
17123 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
17125 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
17126 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
17130 Implemented fix for PIIX reverse throttling errata (Processor
17133 Added new Limit interface (Processor and Thermal drivers)
17135 New thermal policy (Thermal driver)
17137 Many updates to /proc
17139 Battery "low" event support (Battery driver)
17141 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17143 IA32 - IA64 initialization unification, no longer experimental
17145 Menuconfig options redesigned
17147 3) ASL Compiler, version X2037:
17149 Implemented several new output features to simplify integration of
17150 AML code into firmware: 1) Output the AML in C source code with
17151 labels for each named ASL object. The original ASL source code
17152 is interleaved as C comments. 2) Output the AML in ASM source code
17153 with labels and interleaved ASL source. 3) Output the AML in
17154 raw hex table form, in either C or ASM.
17156 Implemented support for optional string parameters to the
17157 LoadTable operator.
17159 Completed support for embedded escape sequences within string
17160 literals. The compiler now supports all single character escapes
17161 as well as the Octal and Hex escapes. Note: the insertion of a
17162 null byte into a string literal (via the hex/octal escape) causes
17163 the string to be immediately terminated. A warning is issued.
17165 Fixed a problem where incorrect AML was generated for the case
17166 where an ASL namepath consists of a single parent prefix (
17168 ) with no trailing name segments.
17170 The compiler has been successfully generated with a 64-bit C
17176 ----------------------------------------
17177 Summary of changes for this label: 12_18_01
17181 Enhanced blacklist with reason and severity fields. Any table's
17182 signature may now be used to identify a blacklisted system.
17184 Call _PIC control method to inform the firmware which interrupt
17185 model the OS is using. Turn on any disabled link devices.
17187 Cleaned up busmgr /proc error handling (Andreas Dilger)
17189 2) ACPI CA Core Subsystem:
17191 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17194 Completed implementation of the ACPI 2.0 "Continue",
17195 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17196 operators. All new ACPI 2.0 operators are now implemented in both
17197 the ASL compiler and the AML interpreter. The only remaining ACPI
17198 2.0 task is support for the String data type in the DerefOf
17199 operator. Fixed a problem with AcquireMutex where the status code
17200 was lost if the caller had to actually wait for the mutex.
17202 Increased the maximum ASL Field size from 64K bits to 4G bits.
17204 Completed implementation of the external Global Lock interfaces --
17205 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and
17206 Handler parameters were added.
17208 Completed another pass at removing warnings and issues when
17209 compiling with 64-bit compilers. The code now compiles cleanly
17210 with the Intel 64-bit C/C++ compiler. Most notably, the pointer
17211 add and subtract (diff) macros have changed considerably.
17214 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
17215 64-bit platforms, 32-bits on all others. This type is used
17216 wherever memory allocation and/or the C sizeof() operator is used,
17217 and affects the OSL memory allocation interfaces AcpiOsAllocate
17218 and AcpiOsCallocate.
17220 Implemented sticky user breakpoints in the AML debugger.
17222 Code and Data Size: Current core subsystem library sizes are shown
17223 below. These are the code and data sizes for the acpica.lib
17224 produced by the Microsoft Visual C++ 6.0 compiler, and these
17225 values do not include any ACPI driver or OSPM code. The debug
17226 version of the code includes the debug output trace mechanism and
17227 has a larger code and data size. Note that these values will vary
17228 depending on the efficiency of the compiler and the compiler
17229 options used during generation.
17231 Previous Release (12_05_01)
17232 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
17233 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
17235 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
17236 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
17238 3) ASL Compiler, version X2034:
17240 Now checks for (and generates an error if detected) the use of a
17241 Break or Continue statement without an enclosing While statement.
17244 Successfully generated the compiler with the Intel 64-bit C
17247 ----------------------------------------
17248 Summary of changes for this label: 12_05_01
17250 1) ACPI CA Core Subsystem:
17252 The ACPI 2.0 CopyObject operator is fully implemented. This
17253 operator creates a new copy of an object (and is also used to
17254 bypass the "implicit conversion" mechanism of the Store operator.)
17256 The ACPI 2.0 semantics for the SizeOf operator are fully
17257 implemented. The change is that performing a SizeOf on a
17258 reference object causes an automatic dereference of the object to
17259 tha actual value before the size is evaluated. This behavior was
17260 undefined in ACPI 1.0.
17262 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17263 have been implemented. The interrupt polarity and mode are now
17266 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17267 appearing in Package objects were not properly converted to
17268 integers when the internal Package was converted to an external
17269 object (via the AcpiEvaluateObject interface.)
17271 Fixed a problem with the namespace object deletion mechanism for
17272 objects created by control methods. There were two parts to this
17273 problem: 1) Objects created during the initialization phase method
17274 parse were not being deleted, and 2) The object owner ID mechanism
17275 to track objects was broken.
17277 Fixed a problem where the use of the ASL Scope operator within a
17278 control method would result in an invalid opcode exception.
17280 Fixed a problem introduced in the previous label where the buffer
17281 length required for the _PRT structure was not being returned
17284 Code and Data Size: Current core subsystem library sizes are shown
17285 below. These are the code and data sizes for the acpica.lib
17286 produced by the Microsoft Visual C++ 6.0 compiler, and these
17287 values do not include any ACPI driver or OSPM code. The debug
17288 version of the code includes the debug output trace mechanism and
17289 has a larger code and data size. Note that these values will vary
17290 depending on the efficiency of the compiler and the compiler
17291 options used during generation.
17293 Previous Release (11_20_01)
17294 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
17295 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
17298 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
17299 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
17303 Updated all files to apply cleanly against 2.4.16.
17305 Added basic PCI Interrupt Routing Table (PRT) support for IA32
17306 (acpi_pci.c), and unified the PRT code for IA32 and IA64. This
17307 version supports both static and dynamic PRT entries, but dynamic
17308 entries are treated as if they were static (not yet
17309 reconfigurable). Architecture- specific code to use this data is
17310 absent on IA32 but should be available shortly.
17312 Changed the initialization sequence to start the ACPI interpreter
17313 (acpi_init) prior to initialization of the PCI driver (pci_init)
17314 in init/main.c. This ordering is required to support PRT and
17315 facilitate other (future) enhancement. A side effect is that the
17316 ACPI bus driver and certain device drivers can no longer be loaded
17319 Modified the 'make menuconfig' options to allow PCI Interrupt
17320 Routing support to be included without the ACPI Bus and other
17323 3) ASL Compiler, version X2033:
17325 Fixed some issues with the use of the new CopyObject and
17326 DataTableRegion operators. Both are fully functional.
17328 ----------------------------------------
17329 Summary of changes for this label: 11_20_01
17331 20 November 2001. Summary of changes for this release.
17333 1) ACPI CA Core Subsystem:
17335 Updated Index support to match ACPI 2.0 semantics. Storing a
17336 Integer, String, or Buffer to an Index of a Buffer will store only
17337 the least-significant byte of the source to the Indexed buffer
17338 byte. Multiple writes are not performed.
17340 Fixed a problem where the access type used in an AccessAs ASL
17341 operator was not recorded correctly into the field object.
17343 Fixed a problem where ASL Event objects were created in a
17344 signalled state. Events are now created in an unsignalled state.
17346 The internal object cache is now purged after table loading and
17347 initialization to reduce the use of dynamic kernel memory -- on
17348 the assumption that object use is greatest during the parse phase
17349 of the entire table (versus the run-time use of individual control
17352 ACPI 2.0 variable-length packages are now fully operational.
17354 Code and Data Size: Code and Data optimizations have permitted new
17355 feature development with an actual reduction in the library size.
17356 Current core subsystem library sizes are shown below. These are
17357 the code and data sizes for the acpica.lib produced by the
17358 Microsoft Visual C++ 6.0 compiler, and these values do not include
17359 any ACPI driver or OSPM code. The debug version of the code
17360 includes the debug output trace mechanism and has a larger code
17361 and data size. Note that these values will vary depending on the
17362 efficiency of the compiler and the compiler options used during
17365 Previous Release (11_09_01):
17366 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
17367 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
17370 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
17371 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
17375 Enhanced the ACPI boot-time initialization code to allow the use
17376 of Local APIC tables for processor enumeration on IA-32, and to
17377 pave the way for a fully MPS-free boot (on SMP systems) in the
17378 near future. This functionality replaces
17379 arch/i386/kernel/acpitables.c, which was introduced in an earlier
17380 2.4.15-preX release. To enable this feature you must add
17381 "acpi_boot=on" to the kernel command line -- see the help entry
17382 for CONFIG_ACPI_BOOT for more information. An IA-64 release is in
17385 Restructured the configuration options to allow boot-time table
17386 parsing support without inclusion of the ACPI Interpreter (and
17389 NOTE: This release does not include fixes for the reported events,
17390 power-down, and thermal passive cooling issues (coming soon).
17394 Added additional typechecking for Fields within restricted access
17395 Operation Regions. All fields within EC and CMOS regions must be
17396 declared with ByteAcc. All fields within SMBus regions must be
17397 declared with the BufferAcc access type.
17399 Fixed a problem where the listing file output of control methods
17400 no longer interleaved the actual AML code with the ASL source
17406 ----------------------------------------
17407 Summary of changes for this label: 11_09_01
17409 1) ACPI CA Core Subsystem:
17411 Implemented ACPI 2.0-defined support for writes to fields with a
17412 Buffer, String, or Integer source operand that is smaller than the
17413 target field. In these cases, the source operand is zero-extended
17414 to fill the target field.
17416 Fixed a problem where a Field starting bit offset (within the
17417 parent operation region) was calculated incorrectly if the
17419 alignment of the field differed from the access width. This
17420 affected CreateWordField, CreateDwordField, CreateQwordField, and
17421 possibly other fields that use the "AccessAny" keyword.
17423 Fixed a problem introduced in the 11_02_01 release where indirect
17424 stores through method arguments did not operate correctly.
17428 Implemented boot-time ACPI table parsing support
17429 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code
17430 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17431 legacy BIOS interfaces (e.g. MPS) for the configuration of system
17432 processors, memory, and interrupts during setup_arch(). Note that
17433 this patch does not include the required architecture-specific
17434 changes required to apply this information -- subsequent patches
17435 will be posted for both IA32 and IA64 to achieve this.
17437 Added low-level sleep support for IA32 platforms, courtesy of Pat
17438 Mochel. This allows IA32 systems to transition to/from various
17439 sleeping states (e.g. S1, S3), although the lack of a centralized
17440 driver model and power-manageable drivers will prevent its
17441 (successful) use on most systems.
17443 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17444 submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17445 tables" option, etc.
17447 Increased the default timeout for the EC driver from 1ms to 10ms
17448 (1000 cycles of 10us) to try to address AE_TIME errors during EC
17451 ----------------------------------------
17452 Summary of changes for this label: 11_02_01
17454 1) ACPI CA Core Subsystem:
17456 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17457 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
17460 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17461 changes to support ACPI 2.0 Qword field access. Read/Write
17462 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17463 accept an ACPI_INTEGER (64 bits) as the value parameter. Also,
17464 the value parameter for the address space handler interface is now
17465 an ACPI_INTEGER. OSL implementations of these interfaces must now
17466 handle the case where the Width parameter is 64.
17468 Index Fields: Fixed a problem where unaligned bit assembly and
17469 disassembly for IndexFields was not supported correctly.
17471 Index and Bank Fields: Nested Index and Bank Fields are now
17472 supported. During field access, a check is performed to ensure
17473 that the value written to an Index or Bank register is not out of
17474 the range of the register. The Index (or Bank) register is
17475 written before each access to the field data. Future support will
17476 include allowing individual IndexFields to be wider than the
17477 DataRegister width.
17479 Fields: Fixed a problem where the AML interpreter was incorrectly
17480 attempting to write beyond the end of a Field/OpRegion. This was
17481 a boundary case that occurred when a DWORD field was written to a
17482 BYTE access OpRegion, forcing multiple writes and causing the
17483 interpreter to write one datum too many.
17485 Fields: Fixed a problem with Field/OpRegion access where the
17486 starting bit address of a field was incorrectly calculated if the
17487 current access type was wider than a byte (WordAcc, DwordAcc, or
17490 Fields: Fixed a problem where forward references to individual
17491 FieldUnits (individual Field names within a Field definition) were
17492 not resolved during the AML table load.
17494 Fields: Fixed a problem where forward references from a Field
17495 definition to the parent Operation Region definition were not
17496 resolved during the AML table load.
17498 Fields: Duplicate FieldUnit names within a scope are now detected
17499 during AML table load.
17501 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17502 returned an incorrect name for the root node.
17504 Code and Data Size: Code and Data optimizations have permitted new
17505 feature development with an actual reduction in the library size.
17506 Current core subsystem library sizes are shown below. These are
17507 the code and data sizes for the acpica.lib produced by the
17508 Microsoft Visual C++ 6.0 compiler, and these values do not include
17509 any ACPI driver or OSPM code. The debug version of the code
17510 includes the debug output trace mechanism and has a larger code
17511 and data size. Note that these values will vary depending on the
17512 efficiency of the compiler and the compiler options used during
17515 Previous Release (10_18_01):
17516 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
17517 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
17520 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
17521 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
17525 Improved /proc processor output (Pavel Machek) Re-added
17526 MODULE_LICENSE("GPL") to all modules.
17528 3) ASL Compiler version X2030:
17530 Duplicate FieldUnit names within a scope are now detected and
17535 Programmer Reference updated to reflect OSL and address space
17536 handler interface changes described above.
17538 ----------------------------------------
17539 Summary of changes for this label: 10_18_01
17541 ACPI CA Core Subsystem:
17543 Fixed a problem with the internal object reference count mechanism
17544 that occasionally caused premature object deletion. This resolves
17545 all of the outstanding problem reports where an object is deleted
17546 in the middle of an interpreter evaluation. Although this problem
17547 only showed up in rather obscure cases, the solution to the
17548 problem involved an adjustment of all reference counts involving
17549 objects attached to namespace nodes.
17551 Fixed a problem with Field support in the interpreter where
17552 writing to an aligned field whose length is an exact multiple (2
17553 or greater) of the field access granularity would cause an attempt
17554 to write beyond the end of the field.
17556 The top level AML opcode execution functions within the
17557 interpreter have been renamed with a more meaningful and
17558 consistent naming convention. The modules exmonad.c and
17559 exdyadic.c were eliminated. New modules are exoparg1.c,
17560 exoparg2.c, exoparg3.c, and exoparg6.c.
17562 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17564 Fixed a problem where the AML debugger was causing some internal
17565 objects to not be deleted during subsystem termination.
17567 Fixed a problem with the external AcpiEvaluateObject interface
17568 where the subsystem would fault if the named object to be
17569 evaluated referred to a constant such as Zero, Ones, etc.
17571 Fixed a problem with IndexFields and BankFields where the
17572 subsystem would fault if the index, data, or bank registers were
17573 not defined in the same scope as the field itself.
17575 Added printf format string checking for compilers that support
17576 this feature. Corrected more than 50 instances of issues with
17577 format specifiers within invocations of ACPI_DEBUG_PRINT
17578 throughout the core subsystem code.
17580 The ASL "Revision" operator now returns the ACPI support level
17581 implemented in the core - the value "2" since the ACPI 2.0 support
17582 is more than 50% implemented.
17584 Enhanced the output of the AML debugger "dump namespace" command
17585 to output in a more human-readable form.
17587 Current core subsystem library code sizes are shown below. These
17589 are the code and data sizes for the acpica.lib produced by the
17590 Microsoft Visual C++ 6.0 compiler, and these values do not include
17591 any ACPI driver or OSPM code. The debug version of the code
17592 includes the full debug trace mechanism -- leading to a much
17594 larger code and data size. Note that these values will vary
17595 depending on the efficiency of the compiler and the compiler
17596 options used during generation.
17598 Previous Label (09_20_01):
17599 Non-Debug Version: 65K Code, 5K Data, 70K Total
17600 Debug Version: 138K Code, 58K Data, 196K Total
17604 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
17605 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
17609 Implemented a "Bad BIOS Blacklist" to track machines that have
17610 known ASL/AML problems.
17612 Enhanced the /proc interface for the thermal zone driver and added
17613 support for _HOT (the critical suspend trip point). The 'info'
17614 file now includes threshold/policy information, and allows setting
17615 of _SCP (cooling preference) and _TZP (polling frequency) values
17616 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17617 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17618 preference to the passive/quiet mode (if supported by the ASL).
17620 Implemented a workaround for a gcc bug that resuted in an OOPs
17621 when loading the control method battery driver.
17623 ----------------------------------------
17624 Summary of changes for this label: 09_20_01
17626 ACPI CA Core Subsystem:
17628 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17629 modified to allow individual GPE levels to be flagged as wake-
17630 enabled (i.e., these GPEs are to remain enabled when the platform
17633 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17634 support wake-enabled GPEs. This means that upon entering the
17635 sleep state, all GPEs that are not wake-enabled are disabled.
17636 When leaving the sleep state, these GPEs are re-enabled.
17638 A local double-precision divide/modulo module has been added to
17639 enhance portability to OS kernels where a 64-bit math library is
17640 not available. The new module is "utmath.c".
17642 Several optimizations have been made to reduce the use of CPU
17643 stack. Originally over 2K, the maximum stack usage is now below
17644 2K at 1860 bytes (1.82k)
17646 Fixed a problem with the AcpiGetFirmwareTable interface where the
17647 root table pointer was not mapped into a logical address properly.
17649 Fixed a problem where a NULL pointer was being dereferenced in the
17650 interpreter code for the ASL Notify operator.
17652 Fixed a problem where the use of the ASL Revision operator
17653 returned an error. This operator now returns the current version
17654 of the ACPI CA core subsystem.
17656 Fixed a problem where objects passed as control method parameters
17657 to AcpiEvaluateObject were always deleted at method termination.
17658 However, these objects may end up being stored into the namespace
17659 by the called method. The object reference count mechanism was
17660 applied to these objects instead of a force delete.
17662 Fixed a problem where static strings or buffers (contained in the
17663 AML code) that are declared as package elements within the ASL
17664 code could cause a fault because the interpreter would attempt to
17665 delete them. These objects are now marked with the "static
17666 object" flag to prevent any attempt to delete them.
17668 Implemented an interpreter optimization to use operands directly
17669 from the state object instead of extracting the operands to local
17670 variables. This reduces stack use and code size, and improves
17673 The module exxface.c was eliminated as it was an unnecessary extra
17676 Current core subsystem library code sizes are shown below. These
17677 are the code and data sizes for the acpica.lib produced by the
17678 Microsoft Visual C++ 6.0 compiler, and these values do not include
17679 any ACPI driver or OSPM code. The debug version of the code
17680 includes the full debug trace mechanism -- leading to a much
17681 larger code and data size. Note that these values will vary
17682 depending on the efficiency of the compiler and the compiler
17683 options used during generation.
17685 Non-Debug Version: 65K Code, 5K Data, 70K Total
17686 (Previously 69K) Debug Version: 138K Code, 58K Data, 196K
17687 Total (Previously 195K)
17691 Support for ACPI 2.0 64-bit integers has been added. All ACPI
17692 Integer objects are now 64 bits wide
17694 All Acpi data types and structures are now in lower case. Only
17695 Acpi macros are upper case for differentiation.
17699 Changes to the external interfaces as described above.
17701 ----------------------------------------
17702 Summary of changes for this label: 08_31_01
17704 ACPI CA Core Subsystem:
17706 A bug with interpreter implementation of the ASL Divide operator
17707 was found and fixed. The implicit function return value (not the
17708 explicit store operands) was returning the remainder instead of
17709 the quotient. This was a longstanding bug and it fixes several
17710 known outstanding issues on various platforms.
17712 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17713 been further optimized for size. There are 700 invocations of the
17714 DEBUG_PRINT macro alone, so each optimization reduces the size of
17715 the debug version of the subsystem significantly.
17717 A stack trace mechanism has been implemented. The maximum stack
17718 usage is about 2K on 32-bit platforms. The debugger command "stat
17719 stack" will display the current maximum stack usage.
17721 All public symbols and global variables within the subsystem are
17722 now prefixed with the string "Acpi". This keeps all of the
17723 symbols grouped together in a kernel map, and avoids conflicts
17724 with other kernel subsystems.
17726 Most of the internal fixed lookup tables have been moved into the
17727 code segment via the const operator.
17729 Several enhancements have been made to the interpreter to both
17730 reduce the code size and improve performance.
17732 Current core subsystem library code sizes are shown below. These
17733 are the code and data sizes for the acpica.lib produced by the
17734 Microsoft Visual C++ 6.0 compiler, and these values do not include
17735 any ACPI driver or OSPM code. The debug version of the code
17736 includes the full debug trace mechanism which contains over 700
17737 invocations of the DEBUG_PRINT macro, 500 function entry macro
17738 invocations, and over 900 function exit macro invocations --
17739 leading to a much larger code and data size. Note that these
17740 values will vary depending on the efficiency of the compiler and
17741 the compiler options used during generation.
17743 Non-Debug Version: 64K Code, 5K Data, 69K Total
17744 Debug Version: 137K Code, 58K Data, 195K Total
17748 Implemented wbinvd() macro, pending a kernel-wide definition.
17750 Fixed /proc/acpi/event to handle poll() and short reads.
17752 ASL Compiler, version X2026:
17754 Fixed a problem introduced in the previous label where the AML
17756 code emitted for package objects produced packages with zero
17759 ----------------------------------------
17760 Summary of changes for this label: 08_16_01
17762 ACPI CA Core Subsystem:
17764 The following ACPI 2.0 ASL operators have been implemented in the
17765 AML interpreter (These are already supported by the Intel ASL
17766 compiler): ToDecimalString, ToHexString, ToString, ToInteger, and
17767 ToBuffer. Support for 64-bit AML constants is implemented in the
17768 AML parser, debugger, and disassembler.
17770 The internal memory tracking mechanism (leak detection code) has
17771 been upgraded to reduce the memory overhead (a separate tracking
17772 block is no longer allocated for each memory allocation), and now
17773 supports all of the internal object caches.
17775 The data structures and code for the internal object caches have
17776 been coelesced and optimized so that there is a single cache and
17777 memory list data structure and a single group of functions that
17778 implement generic cache management. This has reduced the code
17779 size in both the debug and release versions of the subsystem.
17781 The DEBUG_PRINT macro(s) have been optimized for size and replaced
17782 by ACPI_DEBUG_PRINT. The syntax for this macro is slightly
17783 different, because it generates a single call to an internal
17784 function. This results in a savings of about 90 bytes per
17785 invocation, resulting in an overall code and data savings of about
17786 16% in the debug version of the subsystem.
17790 Fixed C3 disk corruption problems and re-enabled C3 on supporting
17793 Integrated low-level sleep code by Patrick Mochel.
17795 Further tweaked source code Linuxization.
17801 Support for ACPI 2.0 variable length packages is fixed/completed.
17803 Fixed a problem where the optional length parameter for the ACPI
17804 2.0 ToString operator.
17806 Fixed multiple extraneous error messages when a syntax error is
17807 detected within the declaration line of a control method.
17809 ----------------------------------------
17810 Summary of changes for this label: 07_17_01
17812 ACPI CA Core Subsystem:
17814 Added a new interface named AcpiGetFirmwareTable to obtain any
17815 ACPI table via the ACPI signature. The interface can be called at
17816 any time during kernel initialization, even before the kernel
17817 virtual memory manager is initialized and paging is enabled. This
17818 allows kernel subsystems to obtain ACPI tables very early, even
17819 before the ACPI CA subsystem is initialized.
17821 Fixed a problem where Fields defined with the AnyAcc attribute
17822 could be resolved to the incorrect address under the following
17823 conditions: 1) the field width is larger than 8 bits and 2) the
17824 parent operation region is not defined on a DWORD boundary.
17826 Fixed a problem where the interpreter is not being locked during
17827 namespace initialization (during execution of the _INI control
17828 methods), causing an error when an attempt is made to release it
17831 ACPI 2.0 support in the AML Interpreter has begun and will be
17832 ongoing throughout the rest of this year. In this label, The Mod
17833 operator is implemented.
17835 Added a new data type to contain full PCI addresses named
17836 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
17837 and Function values.
17841 Enhanced the Linux version of the source code to change most
17842 capitalized ACPI type names to lowercase. For example, all
17843 instances of ACPI_STATUS are changed to acpi_status. This will
17844 result in a large diff, but the change is strictly cosmetic and
17845 aligns the CA code closer to the Linux coding standard.
17849 The interfaces to the PCI configuration space have been changed to
17850 add the PCI Segment number and to split the single 32-bit combined
17851 DeviceFunction field into two 16-bit fields. This was
17852 accomplished by moving the four values that define an address in
17853 PCI configuration space (segment, bus, device, and function) to
17854 the new ACPI_PCI_ID structure.
17856 The changes to the PCI configuration space interfaces led to a
17857 reexamination of the complete set of address space access
17858 interfaces for PCI, I/O, and Memory. The previously existing 18
17859 interfaces have proven difficult to maintain (any small change
17860 must be propagated across at least 6 interfaces) and do not easily
17861 allow for future expansion to 64 bits if necessary. Also, on some
17862 systems, it would not be appropriate to demultiplex the access
17863 width (8, 16, 32,or 64) before calling the OSL if the
17864 corresponding native OS interfaces contain a similar access width
17865 parameter. For these reasons, the 18 address space interfaces
17866 have been replaced by these 6 new ones:
17868 AcpiOsReadPciConfiguration
17869 AcpiOsWritePciConfiguration
17875 Added a new interface named AcpiOsGetRootPointer to allow the OSL
17876 to perform the platform and/or OS-specific actions necessary to
17877 obtain the ACPI RSDP table pointer. On IA-32 platforms, this
17878 interface will simply call down to the CA core to perform the low-
17879 memory search for the table. On IA-64, the RSDP is obtained from
17880 EFI. Migrating this interface to the OSL allows the CA core to
17882 remain OS and platform independent.
17884 Added a new interface named AcpiOsSignal to provide a generic
17885 "function code and pointer" interface for various miscellaneous
17886 signals and notifications that must be made to the host OS. The
17887 first such signals are intended to support the ASL Fatal and
17888 Breakpoint operators. In the latter case, the AcpiOsBreakpoint
17889 interface has been obsoleted.
17891 The definition of the AcpiFormatException interface has been
17892 changed to simplify its use. The caller no longer must supply a
17893 buffer to the call; A pointer to a const string is now returned
17894 directly. This allows the call to be easily used in printf
17895 statements, etc. since the caller does not have to manage a local
17899 ASL Compiler, Version X2025:
17901 The ACPI 2.0 Switch/Case/Default operators have been implemented
17902 and are fully functional. They will work with all ACPI 1.0
17903 interpreters, since the operators are simply translated to If/Else
17906 The ACPI 2.0 ElseIf operator is implemented and will also work
17907 with 1.0 interpreters, for the same reason.
17909 Implemented support for ACPI 2.0 variable-length packages. These
17910 packages have a separate opcode, and their size is determined by
17911 the interpreter at run-time.
17913 Documentation The ACPI CA Programmer Reference has been updated to
17914 reflect the new interfaces and changes to existing interfaces.
17916 ------------------------------------------
17917 Summary of changes for this label: 06_15_01
17919 ACPI CA Core Subsystem:
17921 Fixed a problem where a DWORD-accessed field within a Buffer
17922 object would get its byte address inadvertently rounded down to
17923 the nearest DWORD. Buffers are always Byte-accessible.
17925 ASL Compiler, version X2024:
17927 Fixed a problem where the Switch() operator would either fault or
17928 hang the compiler. Note however, that the AML code for this ACPI
17929 2.0 operator is not yet implemented.
17931 Compiler uses the new AcpiOsGetTimer interface to obtain compile
17934 Implementation of the CreateField operator automatically converts
17935 a reference to a named field within a resource descriptor from a
17936 byte offset to a bit offset if required.
17938 Added some missing named fields from the resource descriptor
17939 support. These are the names that are automatically created by the
17940 compiler to reference fields within a descriptor. They are only
17941 valid at compile time and are not passed through to the AML
17944 Resource descriptor named fields are now typed as Integers and
17945 subject to compile-time typechecking when used in expressions.
17947 ------------------------------------------
17948 Summary of changes for this label: 05_18_01
17950 ACPI CA Core Subsystem:
17952 Fixed a couple of problems in the Field support code where bits
17953 from adjacent fields could be returned along with the proper field
17954 bits. Restructured the field support code to improve performance,
17955 readability and maintainability.
17957 New DEBUG_PRINTP macro automatically inserts the procedure name
17958 into the output, saving hundreds of copies of procedure name
17959 strings within the source, shrinking the memory footprint of the
17960 debug version of the core subsystem.
17962 Source Code Structure:
17964 The source code directory tree was restructured to reflect the
17965 current organization of the component architecture. Some files
17966 and directories have been moved and/or renamed.
17970 Fixed leaking kacpidpc processes.
17972 Fixed queueing event data even when /proc/acpi/event is not
17975 ASL Compiler, version X2020:
17977 Memory allocation performance enhancement - over 24X compile time
17978 improvement on large ASL files. Parse nodes and namestring
17979 buffers are now allocated from a large internal compiler buffer.
17981 The temporary .SRC file is deleted unless the "-s" option is
17984 The "-d" debug output option now sends all output to the .DBG file
17985 instead of the console.
17987 "External" second parameter is now optional
17989 "ElseIf" syntax now properly allows the predicate
17991 Last operand to "Load" now recognized as a Target operand
17993 Debug object can now be used anywhere as a normal object.
17995 ResourceTemplate now returns an object of type BUFFER
17997 EISAID now returns an object of type INTEGER
17999 "Index" now works with a STRING operand
18001 "LoadTable" now accepts optional parameters
18003 "ToString" length parameter is now optional
18005 "Interrupt (ResourceType," parse error fixed.
18007 "Register" with a user-defined region space parse error fixed
18009 Escaped backslash at the end of a string ("\\") scan/parse error
18012 "Revision" is now an object of type INTEGER.
18016 ------------------------------------------
18017 Summary of changes for this label: 05_02_01
18021 /proc/acpi/event now blocks properly.
18023 Removed /proc/sys/acpi. You can still dump your DSDT from
18026 ACPI CA Core Subsystem:
18028 Fixed a problem introduced in the previous label where some of the
18029 "small" resource descriptor types were not recognized.
18031 Improved error messages for the case where an ASL Field is outside
18032 the range of the parent operation region.
18034 ASL Compiler, version X2018:
18037 Added error detection for ASL Fields that extend beyond the length
18038 of the parent operation region (only if the length of the region
18039 is known at compile time.) This includes fields that have a
18040 minimum access width that is smaller than the parent region, and
18041 individual field units that are partially or entirely beyond the
18042 extent of the parent.
18046 ------------------------------------------
18047 Summary of changes for this label: 04_27_01
18049 ACPI CA Core Subsystem:
18051 Fixed a problem where the namespace mutex could be released at the
18052 wrong time during execution of AcpiRemoveAddressSpaceHandler.
18054 Added optional thread ID output for debug traces, to simplify
18055 debugging of multiple threads. Added context switch notification
18056 when the debug code realizes that a different thread is now
18057 executing ACPI code.
18059 Some additional external data types have been prefixed with the
18060 string "ACPI_" for consistency. This may effect existing code.
18061 The data types affected are the external callback typedefs - e.g.,
18063 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18067 Fixed an issue with the OSL semaphore implementation where a
18068 thread was waking up with an error from receiving a SIGCHLD
18071 Linux version of ACPI CA now uses the system C library for string
18072 manipulation routines instead of a local implementation.
18074 Cleaned up comments and removed TBDs.
18076 ASL Compiler, version X2017:
18078 Enhanced error detection and reporting for all file I/O
18083 Programmer Reference updated to version 1.06.
18087 ------------------------------------------
18088 Summary of changes for this label: 04_13_01
18090 ACPI CA Core Subsystem:
18092 Restructured support for BufferFields and RegionFields.
18093 BankFields support is now fully operational. All known 32-bit
18094 limitations on field sizes have been removed. Both BufferFields
18095 and (Operation) RegionFields are now supported by the same field
18098 Resource support now supports QWORD address and IO resources. The
18099 16/32/64 bit address structures and the Extended IRQ structure
18100 have been changed to properly handle Source Resource strings.
18102 A ThreadId of -1 is now used to indicate a "mutex not acquired"
18103 condition internally and must never be returned by AcpiOsThreadId.
18104 This reserved value was changed from 0 since Unix systems allow a
18109 Driver code reorganized to enhance portability
18111 Added a kernel configuration option to control ACPI_DEBUG
18113 Fixed the EC driver to honor _GLK.
18115 ASL Compiler, version X2016:
18117 Fixed support for the "FixedHw" keyword. Previously, the FixedHw
18118 address space was set to 0, not 0x7f as it should be.
18120 ------------------------------------------
18121 Summary of changes for this label: 03_13_01
18123 ACPI CA Core Subsystem:
18125 During ACPI initialization, the _SB_._INI method is now run if
18128 Notify handler fix - notifies are deferred until the parent method
18129 completes execution. This fixes the "mutex already acquired"
18130 issue seen occasionally.
18132 Part of the "implicit conversion" rules in ACPI 2.0 have been
18133 found to cause compatibility problems with existing ASL/AML. The
18134 convert "result-to-target-type" implementation has been removed
18135 for stores to method Args and Locals. Source operand conversion
18136 is still fully implemented. Possible changes to ACPI 2.0
18137 specification pending.
18139 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18142 Fix for compiler warnings for 64-bit compiles.
18146 /proc output aligned for easier parsing.
18148 Release-version compile problem fixed.
18150 New kernel configuration options documented in Configure.help.
18152 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18157 Power resource driver integrated with bus manager.
18159 Fixed kernel fault during active cooling for thermal zones.
18163 The source code tree has been restructured.
18167 ------------------------------------------
18168 Summary of changes for this label: 03_02_01
18170 Linux OS Services Layer (OSL):
18172 Major revision of all Linux-specific code.
18174 Modularized all ACPI-specific drivers.
18176 Added new thermal zone and power resource drivers.
18178 Revamped /proc interface (new functionality is under /proc/acpi).
18180 New kernel configuration options.
18182 Linux known issues:
18184 New kernel configuration options not documented in Configure.help
18188 Module dependencies not currently implemented. If used, they
18189 should be loaded in this order: busmgr, power, ec, system,
18190 processor, battery, ac_adapter, button, thermal.
18192 Modules will not load if CONFIG_MODVERSION is set.
18194 IBM 600E - entering S5 may reboot instead of shutting down.
18196 IBM 600E - Sleep button may generate "Invalid <NULL> context"
18199 Some systems may fail with "execution mutex already acquired"
18202 ACPI CA Core Subsystem:
18204 Added a new OSL Interface, AcpiOsGetThreadId. This was required
18205 for the deadlock detection code. Defined to return a non-zero, 32-
18206 bit thread ID for the currently executing thread. May be a non-
18207 zero constant integer on single-thread systems.
18209 Implemented deadlock detection for internal subsystem mutexes. We
18210 may add conditional compilation for this code (debug only) later.
18212 ASL/AML Mutex object semantics are now fully supported. This
18213 includes multiple acquires/releases by owner and support for the
18215 Mutex SyncLevel parameter.
18217 A new "Force Release" mechanism automatically frees all ASL
18218 Mutexes that have been acquired but not released when a thread
18219 exits the interpreter. This forces conformance to the ACPI spec
18220 ("All mutexes must be released when an invocation exits") and
18221 prevents deadlocked ASL threads. This mechanism can be expanded
18222 (later) to monitor other resource acquisitions if OEM ASL code
18223 continues to misbehave (which it will).
18225 Several new ACPI exception codes have been added for the Mutex
18228 Recursive method calls are now allowed and supported (the ACPI
18229 spec does in fact allow recursive method calls.) The number of
18230 recursive calls is subject to the restrictions imposed by the
18231 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18234 Implemented support for the SyncLevel parameter for control
18235 methods (ACPI 2.0 feature)
18237 Fixed a deadlock problem when multiple threads attempted to use
18240 Fixed a problem where the string length of a String package
18241 element was not always set in a package returned from
18242 AcpiEvaluateObject.
18244 Fixed a problem where the length of a String package element was
18245 not always included in the length of the overall package returned
18246 from AcpiEvaluateObject.
18248 Added external interfaces (Acpi*) to the ACPI debug memory
18249 manager. This manager keeps a list of all outstanding
18250 allocations, and can therefore detect memory leaks and attempts to
18251 free memory blocks more than once. Useful for code such as the
18252 power manager, etc. May not be appropriate for device drivers.
18253 Performance with the debug code enabled is slow.
18255 The ACPI Global Lock is now an optional hardware element.
18257 ASL Compiler Version X2015:
18259 Integrated changes to allow the compiler to be generated on
18260 multiple platforms.
18262 Linux makefile added to generate the compiler on Linux
18266 All platform-specific headers have been moved to their own
18267 subdirectory, Include/Platform.
18269 New source file added, Interpreter/ammutex.c
18271 New header file, Include/acstruct.h
18275 The programmer reference has been updated for the following new
18276 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18278 ------------------------------------------
18279 Summary of changes for this label: 02_08_01
18281 Core ACPI CA Subsystem: Fixed a problem where an error was
18282 incorrectly returned if the return resource buffer was larger than
18283 the actual data (in the resource interfaces).
18285 References to named objects within packages are resolved to the
18287 full pathname string before packages are returned directly (via
18288 the AcpiEvaluateObject interface) or indirectly via the resource
18291 Linux OS Services Layer (OSL):
18293 Improved /proc battery interface.
18296 Added C-state debugging output and other miscellaneous fixes.
18298 ASL Compiler Version X2014:
18300 All defined method arguments can now be used as local variables,
18301 including the ones that are not actually passed in as parameters.
18302 The compiler tracks initialization of the arguments and issues an
18303 exception if they are used without prior assignment (just like
18306 The -o option now specifies a filename prefix that is used for all
18307 output files, including the AML output file. Otherwise, the
18308 default behavior is as follows: 1) the AML goes to the file
18309 specified in the DSDT. 2) all other output files use the input
18310 source filename as the base.
18312 ------------------------------------------
18313 Summary of changes for this label: 01_25_01
18315 Core ACPI CA Subsystem: Restructured the implementation of object
18316 store support within the interpreter. This includes support for
18317 the Store operator as well as any ASL operators that include a
18320 Partially implemented support for Implicit Result-to-Target
18321 conversion. This is when a result object is converted on the fly
18322 to the type of an existing target object. Completion of this
18323 support is pending further analysis of the ACPI specification
18324 concerning this matter.
18326 CPU-specific code has been removed from the subsystem (hardware
18329 New Power Management Timer functions added
18331 Linux OS Services Layer (OSL): Moved system state transition code
18332 to the core, fixed it, and modified Linux OSL accordingly.
18334 Fixed C2 and C3 latency calculations.
18337 We no longer use the compilation date for the version message on
18338 initialization, but retrieve the version from AcpiGetSystemInfo().
18340 Incorporated for fix Sony VAIO machines.
18342 Documentation: The Programmer Reference has been updated and
18346 ASL Compiler: Version X2013: Fixed a problem where the line
18347 numbering and error reporting could get out of sync in the
18348 presence of multiple include files.
18350 ------------------------------------------
18351 Summary of changes for this label: 01_15_01
18353 Core ACPI CA Subsystem:
18355 Implemented support for type conversions in the execution of the
18356 ASL Concatenate operator (The second operand is converted to
18357 match the type of the first operand before concatenation.)
18359 Support for implicit source operand conversion is partially
18360 implemented. The ASL source operand types Integer, Buffer, and
18361 String are freely interchangeable for most ASL operators and are
18362 converted by the interpreter on the fly as required. Implicit
18363 Target operand conversion (where the result is converted to the
18364 target type before storing) is not yet implemented.
18366 Support for 32-bit and 64-bit BCD integers is implemented.
18368 Problem fixed where a field read on an aligned field could cause a
18369 read past the end of the field.
18371 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18372 does not return a value, but the caller expects one. (The ASL
18373 compiler flags this as a warning.)
18378 1. Static typechecking of all operands is implemented. This
18379 prevents the use of invalid objects (such as using a Package where
18380 an Integer is required) at compile time instead of at interpreter
18382 2. The ASL source line is printed with ALL errors and warnings.
18383 3. Bug fix for source EOF without final linefeed.
18384 4. Debug option is split into a parse trace and a namespace trace.
18385 5. Namespace output option (-n) includes initial values for
18386 integers and strings.
18387 6. Parse-only option added for quick syntax checking.
18388 7. Compiler checks for duplicate ACPI name declarations
18391 1. Relaxed typechecking to allow interchangeability between
18392 strings, integers, and buffers. These types are now converted by
18393 the interpreter at runtime.
18394 2. Compiler reports time taken by each internal subsystem in the
18398 ------------------------------------------
18399 Summary of changes for this label: 12_14_00
18403 This is the first official release of the compiler. Since the
18404 compiler requires elements of the Core Subsystem, this label
18405 synchronizes everything.
18407 ------------------------------------------
18408 Summary of changes for this label: 12_08_00
18411 Fixed a problem where named references within the ASL definition
18412 of both OperationRegions and CreateXXXFields did not work
18413 properly. The symptom was an AE_AML_OPERAND_TYPE during
18414 initialization of the region/field. This is similar (but not
18415 related internally) to the problem that was fixed in the last
18418 Implemented both 32-bit and 64-bit support for the BCD ASL
18419 functions ToBCD and FromBCD.
18421 Updated all legal headers to include "2000" in the copyright
18424 ------------------------------------------
18425 Summary of changes for this label: 12_01_00
18427 Fixed a problem where method invocations within the ASL definition
18428 of both OperationRegions and CreateXXXFields did not work
18429 properly. The symptom was an AE_AML_OPERAND_TYPE during
18430 initialization of the region/field:
18432 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18433 [DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18436 Fixed a problem where operators with more than one nested
18437 subexpression would fail. The symptoms were varied, by mostly
18438 AE_AML_OPERAND_TYPE errors. This was actually a rather serious
18439 problem that has gone unnoticed until now.
18441 Subtract (Add (1,2), Multiply (3,4))
18443 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18444 previous build (The prefix part of a relative path was handled
18447 Fixed a problem where Operation Region initialization failed if
18448 the operation region name was a "namepath" instead of a simple
18449 "nameseg". Symptom was an AE_NO_OPERAND error.
18451 Fixed a problem where an assignment to a local variable via the
18452 indirect RefOf mechanism only worked for the first such
18453 assignment. Subsequent assignments were ignored.
18455 ------------------------------------------
18456 Summary of changes for this label: 11_15_00
18458 ACPI 2.0 table support with backwards support for ACPI 1.0 and the
18459 0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables,
18460 the AML interpreter does NOT have support for the new 2.0 ASL
18461 grammar terms at this time.
18463 All ACPI hardware access is via the GAS structures in the ACPI 2.0
18466 All physical memory addresses across all platforms are now 64 bits
18467 wide. Logical address width remains dependent on the platform
18470 AcpiOsMapMemory interface changed to a 64-bit physical address.
18472 The AML interpreter integer size is now 64 bits, as per the ACPI
18475 For backwards compatibility with ACPI 1.0, ACPI tables with a
18476 revision number less than 2 use 32-bit integers only.
18478 Fixed a problem where the evaluation of OpRegion operands did not
18479 always resolve them to numbers properly.
18481 ------------------------------------------
18482 Summary of changes for this label: 10_20_00
18484 Fix for CBN_._STA issue. This fix will allow correct access to
18485 CBN_ OpRegions when the _STA returns 0x8.
18487 Support to convert ACPI constants (Ones, Zeros, One) to actual
18488 values before a package object is returned
18490 Fix for method call as predicate to if/while construct causing
18491 incorrect if/while behavior
18493 Fix for Else block package lengths sometimes calculated wrong (if
18496 Fix for Processor object length field, was always zero
18498 Table load abort if FACP sanity check fails
18500 Fix for problem with Scope(name) if name already exists
18502 Warning emitted if a named object referenced cannot be found
18503 (resolved) during method execution.
18509 ------------------------------------------
18510 Summary of changes for this label: 9_29_00
18512 New table initialization interfaces: AcpiInitializeSubsystem no
18513 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18514 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18515 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18518 Note: These interface changes require changes to all existing OSDs
18520 The PCI_Config default address space handler is always installed
18521 at the root namespace object.
18523 -------------------------------------------
18524 Summary of changes for this label: 09_15_00
18526 The new initialization architecture is implemented. New
18527 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18528 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18530 (Namespace is automatically loaded when a table is loaded)
18532 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
18533 52 bytes to 32 bytes. There is usually one of these for every
18534 namespace object, so the memory savings is significant.
18536 Implemented just-in-time evaluation of the CreateField operators.
18538 Bug fixes for IA-64 support have been integrated.
18540 Additional code review comments have been implemented
18542 The so-called "third pass parse" has been replaced by a final walk
18543 through the namespace to initialize all operation regions (address
18544 spaces) and fields that have not yet been initialized during the
18545 execution of the various _INI and REG methods.
18547 New file - namespace/nsinit.c
18549 -------------------------------------------
18550 Summary of changes for this label: 09_01_00
18552 Namespace manager data structures have been reworked to change the
18553 primary object from a table to a single object. This has
18554 resulted in dynamic memory savings of 3X within the namespace and
18555 2X overall in the ACPI CA subsystem.
18557 Fixed problem where the call to AcpiEvFindPciRootBuses was
18558 inadvertently left commented out.
18560 Reduced the warning count when generating the source with the GCC
18563 Revision numbers added to each module header showing the
18564 SourceSafe version of the file. Please refer to this version
18565 number when giving us feedback or comments on individual modules.
18567 The main object types within the subsystem have been renamed to
18568 clarify their purpose:
18570 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18571 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18572 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18574 NOTE: no changes to the initialization sequence are included in
18577 -------------------------------------------
18578 Summary of changes for this label: 08_23_00
18580 Fixed problem where TerminateControlMethod was being called
18581 multiple times per method
18583 Fixed debugger problem where single stepping caused a semaphore to
18586 Improved performance through additional parse object caching -
18587 added ACPI_EXTENDED_OP type
18589 -------------------------------------------
18590 Summary of changes for this label: 08_10_00
18592 Parser/Interpreter integration: Eliminated the creation of
18593 complete parse trees for ACPI tables and control methods.
18594 Instead, parse subtrees are created and then deleted as soon as
18595 they are processed (Either entered into the namespace or executed
18596 by the interpreter). This reduces the use of dynamic kernel
18597 memory significantly. (about 10X)
18599 Exception codes broken into classes and renumbered. Be sure to
18600 recompile all code that includes acexcep.h. Hopefully we won't
18601 have to renumber the codes again now that they are split into
18602 classes (environment, programmer, AML code, ACPI table, and
18605 Fixed some additional alignment issues in the Resource Manager
18608 Implemented semaphore tracking in the AcpiExec utility, and fixed
18609 several places where mutexes/semaphores were being unlocked
18610 without a corresponding lock operation. There are no known
18611 semaphore or mutex "leaks" at this time.
18613 Fixed the case where an ASL Return operator is used to return an
18616 -------------------------------------------
18617 Summary of changes for this label: 07_28_00
18619 Fixed a problem with the way addresses were calculated in
18620 AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem
18621 manifested itself when a Field was created with WordAccess or
18622 DwordAccess, but the field unit defined within the Field was less
18624 than a Word or Dword.
18626 Fixed a problem in AmlDumpOperands() module's loop to pull
18627 operands off of the operand stack to display information. The
18628 problem manifested itself as a TLB error on 64-bit systems when
18629 accessing an operand stack with two or more operands.
18631 Fixed a problem with the PCI configuration space handlers where
18632 context was getting confused between accesses. This required a
18633 change to the generic address space handler and address space
18634 setup definitions. Handlers now get both a global handler context
18635 (this is the one passed in by the user when executing
18636 AcpiInstallAddressSpaceHandler() and a specific region context
18637 that is unique to each region (For example, the _ADR, _SEG and
18638 _BBN values associated with a specific region). The generic
18639 function definitions have changed to the following:
18641 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18642 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18643 *HandlerContext, // This used to be void *Context void
18644 *RegionContext); // This is an additional parameter
18646 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18647 RegionHandle, UINT32 Function, void *HandlerContext, void
18648 **RegionContext); // This used to be **ReturnContext
18650 -------------------------------------------
18651 Summary of changes for this label: 07_21_00
18653 Major file consolidation and rename. All files within the
18654 interpreter have been renamed as well as most header files. This
18655 was done to prevent collisions with existing files in the host
18656 OSs -- filenames such as "config.h" and "global.h" seem to be
18657 quite common. The VC project files have been updated. All
18658 makefiles will require modification.
18660 The parser/interpreter integration continues in Phase 5 with the
18661 implementation of a complete 2-pass parse (the AML is parsed
18662 twice) for each table; This avoids the construction of a huge
18663 parse tree and therefore reduces the amount of dynamic memory
18664 required by the subsystem. Greater use of the parse object cache
18665 means that performance is unaffected.
18667 Many comments from the two code reviews have been rolled in.
18669 The 64-bit alignment support is complete.
18671 -------------------------------------------
18672 Summary of changes for this label: 06_30_00
18674 With a nod and a tip of the hat to the technology of yesteryear,
18675 we've added support in the source code for 80 column output
18676 devices. The code is now mostly constrained to 80 columns or
18677 less to support environments and editors that 1) cannot display
18678 or print more than 80 characters on a single line, and 2) cannot
18679 disable line wrapping.
18681 A major restructuring of the namespace data structure has been
18682 completed. The result is 1) cleaner and more
18683 understandable/maintainable code, and 2) a significant reduction
18684 in the dynamic memory requirement for each named ACPI object
18687 -------------------------------------------
18688 Summary of changes for this label: 06_23_00
18690 Linux support has been added. In order to obtain approval to get
18691 the ACPI CA subsystem into the Linux kernel, we've had to make
18692 quite a few changes to the base subsystem that will affect all
18693 users (all the changes are generic and OS- independent). The
18694 effects of these global changes have been somewhat far reaching.
18695 Files have been merged and/or renamed and interfaces have been
18696 renamed. The major changes are described below.
18698 Osd* interfaces renamed to AcpiOs* to eliminate namespace
18699 pollution/confusion within our target kernels. All OSD
18700 interfaces must be modified to match the new naming convention.
18702 Files merged across the subsystem. A number of the smaller source
18703 and header files have been merged to reduce the file count and
18704 increase the density of the existing files. There are too many
18705 to list here. In general, makefiles that call out individual
18706 files will require rebuilding.
18708 Interpreter files renamed. All interpreter files now have the
18709 prefix am* instead of ie* and is*.
18711 Header files renamed: The acapi.h file is now acpixf.h. The
18712 acpiosd.h file is now acpiosxf.h. We are removing references to
18713 the acronym "API" since it is somewhat windowsy. The new name is
18714 "external interface" or xface or xf in the filenames.j
18717 All manifest constants have been forced to upper case (some were
18718 mixed case.) Also, the string "ACPI_" has been prepended to many
18719 (not all) of the constants, typedefs, and structs.
18721 The globals "DebugLevel" and "DebugLayer" have been renamed
18722 "AcpiDbgLevel" and "AcpiDbgLayer" respectively.
18724 All other globals within the subsystem are now prefixed with
18725 "AcpiGbl_" Internal procedures within the subsystem are now
18726 prefixed with "Acpi" (with only a few exceptions). The original
18727 two-letter abbreviation for the subcomponent remains after "Acpi"
18728 - for example, CmCallocate became AcpiCmCallocate.
18730 Added a source code translation/conversion utility. Used to
18731 generate the Linux source code, it can be modified to generate
18732 other types of source as well. Can also be used to cleanup
18733 existing source by removing extraneous spaces and blank lines.
18734 Found in tools/acpisrc/*
18736 OsdUnMapMemory was renamed to OsdUnmapMemory and then
18737 AcpiOsUnmapMemory. (UnMap became Unmap).
18739 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18740 When set to one, this indicates that the caller wants to use the
18742 semaphore as a mutex, not a counting semaphore. ACPI CA uses
18743 both types. However, implementers of this call may want to use
18744 different OS primitives depending on the type of semaphore
18745 requested. For example, some operating systems provide separate
18747 "mutex" and "semaphore" interfaces - where the mutex interface is
18748 much faster because it doesn't have all the overhead of a full
18749 semaphore implementation.
18751 Fixed a deadlock problem where a method that accesses the PCI
18752 address space can block forever if it is the first access to the
18755 -------------------------------------------
18756 Summary of changes for this label: 06_02_00
18758 Support for environments that cannot handle unaligned data
18759 accesses (e.g. firmware and OS environments devoid of alignment
18760 handler technology namely SAL/EFI and the IA-64 Linux kernel) has
18761 been added (via configurable macros) in these three areas: -
18762 Transfer of data from the raw AML byte stream is done via byte
18763 moves instead of word/dword/qword moves. - External objects are
18764 aligned within the user buffer, including package elements (sub-
18765 objects). - Conversion of name strings to UINT32 Acpi Names is now
18768 The Store operator was modified to mimic Microsoft's
18769 implementation when storing to a Buffer Field.
18771 Added a check of the BM_STS bit before entering C3.
18773 The methods subdirectory has been obsoleted and removed. A new
18774 file, cmeval.c subsumes the functionality.
18776 A 16-bit (DOS) version of AcpiExec has been developed. The
18777 makefile is under the acpiexec directory.