xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision 2f513db7)
1----------------------------------------
210 January 2020. Summary of changes for version 20200110:
3
4
51) ACPICA kernel-resident subsystem:
6
7Updated all copyrights to 2020. This affects all ACPICA source code
8modules.
9
10
112) iASL Compiler/Disassembler and ACPICA tools:
12
13ASL test suite (ASLTS): Updated all copyrights to 2020.
14
15Tools and utilities: Updated all signon copyrights to 2020.
16
17iASL: fix forward reference analysis for field declarations. Fixes
18forward reference analysis for field declarations by searching the
19parent scope for the named object when the object is not present in
20the current scope.
21
22iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
23full pathname of the name that already exists is printed.
24
25iASL: Enhance duplicate Case() detection for buffers. Add check for
26buffers with no initializer list (these buffers will be filled with
27zeros at runtime.)
28
29
30----------------------------------------
3113 December 2019. Summary of changes for version 20191213:
32
33
341) ACPICA kernel-resident subsystem:
35
36Return a Buffer object for all fields created via the CreateField
37operator. Previously, an Integer would be returned if the size of
38the field was less than or equal to the current size of an Integer.
39Although this goes against the ACPI specification, it provides
40compatibility with other ACPI implementations. Also updated the
41ASLTS test suite to reflect this new behavior.
42
432) iASL Compiler/Disassembler and ACPICA tools:
44
45iASL: Implemented detection of (and throw an error for) duplicate
46values for Case statements within a single Switch statement. Duplicate
47Integers, Strings, and Buffers are supported.
48
49iASL: Fix error logging issue during multiple file compilation --
50Switch to the correct input file during error node creation.
51
52iASL: For duplicate named object creation, now emit an error instead
53of a warning - since this will cause a runtime error.
54
55AcpiSrc: Add unix line-ending support for non-Windows builds.
56
57iASL: Add an error condition for an attempt to create a NameString
58with > 255 NameSegs (the max allowable via the AML definition).
59
60
61----------------------------------------
6218 October 2019. Summary of changes for version 20191018:
63
64
651) ACPICA kernel-resident subsystem:
66
67Debugger: added a new command: ?Fields [address space ID]?. This command
68dumps the contents of all field units that are defined within the
69namespace with a particular address space ID.
70
71Modified the external interface AcpiLoadTable() to return a table index.
72This table index can be used for unloading a table for debugging.
73    ACPI_STATUS
74    AcpiLoadTable (
75        ACPI_TABLE_HEADER       *Table,
76        UINT32                  *TableIndex))
77
78Implemented a new external interface: AcpiUnloadTable() This new function
79takes a table index as an argument and unloads the table. Useful for
80debugging only.
81    ACPI_STATUS
82    AcpiUnloadTable (
83        UINT32                  TableIndex))
84
85Ported the AcpiNames utility to use the new table initialization
86sequence. The utility was broken before this change. Also, it was
87required to include most of the AML interpreter into the utility in order
88to process table initialization (module-level code execution.)
89
90Update for results from running Clang V8.0.1. This fixes all "dead
91assignment" warnings. There are still several "Dereference of NULL
92pointer" warnings, but these have been found to be false positive
93warnings.
94
95
962) iASL Compiler/Disassembler and ACPICA tools:
97
98iASL: numerous table compiler changes to ensure that the usage of
99yacc/bison syntax is POSIX-compliant.
100
101iASL/disassembler: several simple bug fixes in the data table
102disassembler.
103
104Acpiexec: expanded the initialization file (the -fi option) to initialize
105strings, buffers, packages, and field units.
106
107
108----------------------------------------
10916 August 2019. Summary of changes for version 20190816:
110
111This release is available at https://acpica.org/downloads
112
113
1141) ACPICA kernel-resident subsystem:
115
116Modified the OwnerId mechanism to allow for more Owner Ids. The previous
117limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
118exceptions on machines with a large number of initialization threads,
119many CPU cores and nested initialization control methods.
120
121Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
122checking if the given GPE (as represented by a GPE device handle and a
123GPE number) is currently active and dispatching it (if that's the case)
124outside of interrupt context.
125
126Table load: exit the interpreter before initializing objects within the
127new table This prevents re-acquiring the interpreter lock when loading
128tables
129
130Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
131uk Kim
132
133Macros: removed pointer math on a null pointer. Causes warnings on some
134compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
135instead of using arithmetic.
136
137Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
138across all "printf-like" internal functions. Also, cleanup all calls to
139such functions (both in 32-bit mode and 64-bit mode) now that they are
140analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
141
142
1432) iASL Compiler/Disassembler and ACPICA tools:
144
145iASL: implemented a new data table compiler flex/bison front-end. This
146change is internal and is not intended to result in changes to the
147compiled code. This new compiler front-end can be invoked using the -tp
148option for now, until the old mechanism is removed.
149
150ASLTS: Implemented a new data table compiler test suite. This test suite
151generates all table templates and compile/disassemble/re-compile/binary-
152compare each file.
153
154iASL: return -1 if AML files were not generated due to compiler errors
155
156iASL: added a warning on use of the now-legacy ASL Processor () keyword.
157
158iASL: added an error on _UID object declaration that returns a String
159within a Processor () declaration. A _UID for a processor must be an
160Integer.
161
162iASL: added a null terminator to name strings that consist only of
163multiple parent prefixes (^)
164
165iASL: added support to compile both ASL and data table files in a single
166command.
167
168Updated the tool generation project files that were recently migrated to
169MSVC 2017 to eliminate all new warnings. The new project files appear in
170the directory \acpica\generate\msvc2017. This change effectively
171deprecates the older project files in \acpica\generate\msvc9.
172
173
174----------------------------------------
17503 July 2019. Summary of changes for version 20190703:
176
177
1781) ACPICA kernel-resident subsystem:
179
180Remove legacy module-level support code. There were still some remnants
181of the legacy module-level code executions. Since we no longer support
182this option, this is essentially dead code and has been removed from the
183ACPICA source.
184
185iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
186scope. If these named objects are declared outside the root scope, they
187will not be invoked by any host Operating System.
188
189Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
190one) can be enabled in two situations. First, the GPEs with existing _Lxx
191and _Exx methods are enabled implicitly by ACPICA during system
192initialization.  Second, the GPEs without these methods (like GPEs listed
193by _PRW objects for wakeup devices) need to be enabled directly by the
194code that is going to use them (e.g. ACPI power management or device
195drivers).
196
197In the former case, if the status of a given GPE is set to start with,
198its handler method (either _Lxx or _Exx) needs to be invoked to take care
199of the events (possibly) signaled before the GPE was enabled. In the
200latter case, however, the first caller of AcpiEnableGpe() for a given GPE
201should not be expected to care about any events that might be signaled
202through it earlier.  In that case, it is better to clear the status of
203the GPE before enabling it, to prevent stale events from triggering
204unwanted actions (like spurious system resume, for example).
205
206For this reason, modify AcpiEvAddGpeReference() to take an additional
207boolean argument indicating whether or not the GPE status needs to be
208cleared when its reference counter changes from zero to one and make
209AcpiEnableGpe() pass TRUE to it through that new argument.
210
211
2122) iASL Compiler/Disassembler and ACPICA tools:
213
214The tool generation process has been migrated to MSVC 2017, and all
215project files have been upgraded. The new project files appear in the
216directory \acpica\generate\msvc2017. This change effectively deprecates
217the older project files in \acpica\generate\msvc9.
218
219iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
220scope. If these named objects are declared outside the root scope, they
221will not be invoked by any host Operating System
222
223----------------------------------------
22409 May 2019. Summary of changes for version 20190509:
225
226
2271) ACPICA kernel-resident subsystem:
228
229Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
230them") that causes problems with Thunderbolt controllers to occur if a
231dock device is connected at init time (the xhci_hcd and thunderbolt
232modules crash which prevents peripherals connected through them from
233working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
234Dispatch active GPEs at init time") to get undone, so the problem
235addressed by commit ecc1165b8b74 appears again as a result of it.
236
237
2382) iASL Compiler/Disassembler and ACPICA tools:
239
240Reverted iASL: Additional forward reference detection. This change
241reverts forward reference detection for field declarations. The feature
242unintentionally emitted AML bytecode with incorrect package lengths for
243some ASL code related to Fields and OperationRegions. This malformed AML
244can cause systems to crash
245during boot. The malformed AML bytecode is emitted in iASL version
24620190329 and 20190405.
247
248iASL: improve forward reference detection. This change improves forward
249reference detection for named objects inside of scopes. If a parse object
250has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
251a named object that is declared later in the AML bytecode. This is
252allowed if the reference is inside of a method and the declaration is
253outside of a method like so:
254
255DefinitionBlock(...)
256{
257    Method (TEST)
258    {
259        Return (NUM0)
260    }
261    Name (NUM0,0)
262}
263
264However, if the declaration and reference are both in the same method or
265outside any methods, this is a forward reference and should be marked as
266an error because it would result in runtime errors.
267
268DefinitionBlock(...)
269{
270    Name (BUFF, Buffer (NUM0) {}) // Forward reference
271    Name (NUM0, 0x0)
272
273    Method (TEST)
274    {
275        Local0 = NUM1
276        Name (NUM1, 0x1) // Forward reference
277        return (Local0)
278    }
279}
280
281iASL: Implemented additional buffer overflow analysis for BufferField
282declarations. Check if a buffer index argument to a create buffer field
283operation is beyond the end of the target buffer.
284
285This affects these AML operators:
286
287   AML_CREATE_FIELD_OP
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
293
294 There are three conditions that must be satisfied in order to allow this
295validation at compile time:
296
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.
300
301Example:
302    Name (BUF1, Buffer() {1,2})
303    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
304
305dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
306Error    6165 -                           ^ Buffer index beyond end of
307target buffer
308
309
310----------------------------------------
31105 April 2019. Summary of changes for version 20190405:
312
313
3141) ACPICA kernel-resident subsystem:
315
316Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
317unconditionally clearing ACPI IRQs during suspend/resume") was added
318earlier to stop clearing of event status bits unconditionally on suspend
319and resume paths. Though this change fixed an issue on suspend path, it
320introduced regressions on several resume paths. In the case of S0ix,
321events are enabled as part of device suspend path. If status bits for the
322events are set when they are enabled, it could result in premature wake
323from S0ix. If status is cleared for any event that is being enabled so
324that any stale events are cleared out. In case of S0ix, events are
325enabled as part of device suspend path. If status bits for the events are
326set when they are enabled, it could result in premature wake from S0ix.
327
328This change ensures that status is cleared for any event that is being
329enabled so that any stale events are cleared out.
330
331
3322) iASL Compiler/Disassembler and ACPICA tools:
333
334iASL: Implemented an enhanced multiple file compilation that combines
335named objects from all input files to a single namespace. With this
336feature, any unresolved external declarations as well as duplicate named
337object declarations can be detected during compilation rather than
338generating errors much later at runtime. The following commands are
339examples that utilize this feature:
340    iasl dsdt.asl ssdt.asl
341    iasl dsdt.asl ssdt1.asl ssdt2.asl
342    iasl dsdt.asl ssdt*.asl
343
344----------------------------------------
34529 March 2019. Summary of changes for version 20190329:
346
347
3481) ACPICA kernel-resident subsystem:
349
350Namespace support: Remove the address nodes from global list after method
351termination. The global address list contains pointers to namespace nodes
352that represent Operation Regions. This change properly removes Operation
353Region namespace nodes that are declared dynamically during method
354execution.
355
356Linux: Use a different debug default than ACPICA. There was a divergence
357between Linux and the ACPICA codebases. In order to resolve this
358divergence, Linux now declares its own debug default in aclinux.h
359
360Renamed some internal macros to improve code understanding and
361maintenance. The macros below all operate on single 4-character ACPI
362NameSegs, 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
366
367Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
368table.
369
370Test suite: Update makefiles, add PCC operation region support
371
372
3732) iASL Compiler/Disassembler and Tools:
374
375iASL: Implemented additional illegal forward reference detection. Now
376detect and emit an error upon detection of a forward reference from a
377Field to an Operation Region. This will fail at runtime if allowed to
378pass the compiler.
379
380AcpiExec: Add an address list check for dynamic Operation Regions. This
381feature performs a sanity test for each node the global address list.
382This is done in order to ensure that all dynamic operation regions are
383properly removed from the global address list and no dangling pointers
384are left behind.
385
386Disassembler: Improved generation of resource pathnames. This change
387improves the code that generates resource descriptor and resource tag
388pathnames. The original code used a bunch of str* C library functions
389that caused warnings on some compilers.
390
391iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
392function can overwrite buffers if the calling code is not very careful.
393In the case of generating a module/table header, use of memmove is a
394better implementation.
395
396
3973) Status of new features that have not been completed at this time:
398
399iASL: Implementing an enhanced multiple file compilation into a single
400namespace feature (Status): This feature will be released soon, and
401allows multiple ASL files to be compiled into the same single namespace.
402By doing so, any unresolved external declarations as well as duplicate
403named object declarations can be detected during compilation (rather than
404later during runtime). The following commands are examples that utilize
405this feature:
406    iasl dsdt.asl ssdt.asl
407    iasl dsdt.asl ssdt1.asl ssdt2.asl
408    iasl dsdt.asl ssdt*.asl
409
410ASL tutorial status: Feedback is being gathered internally and the
411current plan is to publish this tutorial on the ACPICA website after a
412final review by a tech writer.
413
414----------------------------------------
41515 February 2019. Summary of changes for version 20190215:
416
417
4180) Support for ACPI specification version 6.3:
419
420Add PCC operation region support for the AML interpreter. This adds PCC
421operation region support in the AML interpreter and a default handler for
422acpiexec. The change also renames the PCC region address space keyword to
423PlatformCommChannel.
424
425Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
426These methods provide OSPM with health information and device boot
427status.
428
429PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
430defines if the trigger needs to be invoked by OSPM before or at the end
431of kernel crash dump processing/handling operation.
432
433SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
434is used for describing devices such as heterogeneous processors,
435accelerators, GPUs, and IO devices with integrated compute or DMA
436engines.
437
438MADT: Add support for statistical profiling in GICC. Statistical
439profiling extension (SPE) is an architecture-specific feature for ARM.
440
441MADT: Add online capable flag. If this bit is set, system hardware
442supports enabling this processor during OS runtime.
443
444New Error Disconnect Recover Notification value. There are a number of
445scenarios where system Firmware in collaboration with hardware may
446disconnect one or more devices from the rest of the system for purposes
447of error containment. Firmware can use this new notification value to
448alert OSPM of such a removal.
449
450PPTT: New additional fields in Processor Structure Flags. These flags
451provide more information about processor topology.
452
453NFIT/Disassembler: Change a field name from "Address Range" to "Region
454Type".
455
456HMAT updates: make several existing fields to be reserved as well as
457rename subtable 0 to "memory proximity domain attributes".
458
459GTDT: Add support for new GTDT Revision 3. This revision adds information
460for the EL2 timer.
461
462iASL: Update the HMAT example template for new fields.
463
464iASL: Add support for the new revision of the GTDT (Rev 3).
465
466
4671) ACPICA kernel-resident subsystem:
468
469AML Parser: fix the main AML parse loop to correctly skip erroneous
470extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
471byte extended opcodes. If an error occurs during an AML table load, the
472AML parser will continue loading the table by skipping the offending
473opcode. This implements a "load table at any cost" philosophy.
474
475
4762) iASL Compiler/Disassembler and Tools:
477
478iASL: Add checks for illegal object references, such as a reference
479outside of method to an object within a method. Such an object is only
480temporary.
481
482iASL: Emit error for creation of a zero-length operation region. Such a
483region is rather pointless. If encountered, a runtime error is also
484implemented in the interpeter.
485
486Debugger: Fix a possible fault with the "test objects" command.
487
488iASL: Makefile: support parent directory filenames containing embedded
489spaces.
490
491iASL: Update the TPM2 template to revision 4.
492
493iASL: Add the ability to report specific warnings or remarks as errors.
494
495Disassembler: Disassemble OEMx tables as actual AML byte code.
496Previously, these tables were treated as "unknown table".
497
498iASL: Add definition and disassembly for TPM2 revision 3.
499
500iASL: Add support for TPM2 rev 3 compilation.
501
502
503----------------------------------------
50408 January 2019. Summary of changes for version 20190108:
505
506
5071) ACPICA kernel-resident subsystem:
508
509Updated all copyrights to 2019. This affects all source code modules.
510
511
5122) iASL Compiler/Disassembler and Tools:
513
514ASL test suite (ASLTS): Updated all copyrights to 2019.
515
516Tools: Updated all signon copyrights to 2019.
517
518AcpiExec: Added a new option to dump extra information concerning any
519memory leaks detected by the internal object/cache tracking mechanism. -
520va
521
522iASL: Updated the table template for the TPM2 table to the newest version
523of the table (Revision 4)
524
525
526----------------------------------------
52713 December 2018. Summary of changes for version 20181213:
528
529
5301) ACPICA Kernel-resident Subsystem:
531
532Fixed some buffer length issues with the GenericSerialBus, related to two
533of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
534which are rarely seen in the field. For these, the LEN field of the ASL
535buffer is now ignored. Hans de Goede
536
537Implemented a new object evaluation trace mechanism for control methods
538and data objects. This includes nested control methods. It is
539particularly useful for examining the ACPI execution during system
540initialization since the output is relatively terse. The flag below
541enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
542   #define ACPI_LV_EVALUATION          0x00080000
543
544Examples:
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
553
554Added two recently-defined _OSI strings. See
555https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
556osi.
557   "Windows 2018"
558   "Windows 2018.2"
559
560Update for buffer-to-string conversions via the ToHexString ASL operator.
561A "0x" is now prepended to each of the hex values in the output string.
562This provides compatibility with other ACPI implementations. The ACPI
563specification is somewhat vague on this issue.
564   Example output string after conversion:
565"0x01,0x02,0x03,0x04,0x05,0x06"
566
567Return a run-time error for TermArg expressions within individual package
568elements. Although this is technically supported by the ASL grammar,
569other ACPI implementations do not support this either. Also, this fixes a
570fault if this type of construct is ever encountered (it never has been).
571
572
5732) iASL Compiler/Disassembler and Tools:
574
575iASL: Implemented a new compile option (-ww) that will promote individual
576warnings and remarks to errors. This is intended to enhance the firmware
577build process.
578
579AcpiExec: Implemented a new command-line option (-eo) to support the new
580object evaluation trace mechanism described above.
581
582Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
583instead of a "unknown table" message.
584
585AcpiHelp: 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
587used for "xx" and "x".
588
589----------------------------------------
59031 October 2018. Summary of changes for version 20181031:
591
592
593An Operation Region regression was fixed by properly adding address
594ranges to a global list during initialization. This allows OS to
595accurately check for overlapping regions between native devices (such as
596PCI) and Operation regions as well as checking for region conflicts
597between two Operation Regions.
598
599Added support for the 2-byte extended opcodes in the code/feature that
600attempts to continue parsing during the table load phase. Skip parsing
601Device declarations (and other extended opcodes) when an error occurs
602during parsing. Previously, only single-byte opcodes were supported.
603
604Cleanup: Simplified the module-level code support by eliminating a
605useless global variable (AcpiGbl_GroupModuleLeveCode).
606
607
6082) iASL Compiler/Disassembler and Tools:
609
610iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
611could cause a fault in the preprocessor. This was an inadvertent side-
612effect from moving more allocations/frees to the local cache/memory
613mechanism.
614
615iASL: Enhanced error detection by validating that all NameSeg elements
616within a NamePatch actually exist. The previous behavior was spotty at
617best, and such errors could be improperly ignored at compiler time (never
618at runtime, however. There are two new error messages, as shown in the
619examples below:
620
621dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
622Error    6161 -                              ^ One or more objects within
623the Pathname do not exist (TTTT.BXXX)
624
625dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
626Error    6160 -        One or more prefix Scopes do not exist ^
627(BBBB.CBF1)
628
629iASL: Disassembler/table-compiler: Added support for the static data
630table TPM2 revision 3 (an older version of TPM2). The support has been
631added for the compiler and the disassembler.
632
633Fixed compilation of DOS format data table file on Unix/Linux systems.
634iASL now properly detects line continuations (\) for DOS format data
635table definition language files on when executing on Unix/Linux.
636
637----------------------------------------
63803 October 2018. Summary of changes for version 20181003:
639
640
6412) iASL Compiler/Disassembler and Tools:
642
643Fixed a regression introduced in version 20180927 that could cause the
644compiler to fault, especially with NamePaths containing one or more
645carats (^). Such as: ^^_SB_PCI0
646
647Added a new remark for the Sleep() operator when the sleep time operand
648is larger than one second. This is a very long time for the ASL/BIOS code
649and may not be what was intended by the ASL writer.
650
651----------------------------------------
65227 September 2018. Summary of changes for version 20180927:
653
654
6551) ACPICA kernel-resident subsystem:
656
657Updated the GPE support to clear the status of all ACPI events when
658entering any/all sleep states in order to avoid premature wakeups. In
659theory, this may cause some wakeup events to be missed, but the
660likelihood of this is small. This change restores the original behavior
661of the ACPICA code in order to fix a regression seen from the previous
662"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
663This regression could cause some systems to incorrectly wake immediately.
664
665Updated the execution of the _REG methods during initialization and
666namespace loading to bring the behavior into closer conformance to the
667ACPI specification and other ACPI implementations:
668
669From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
670    "Control methods must assume all operation regions are inaccessible
671until the _REG(RegionSpace, 1) method is executed"
672
673    "The exceptions to this rule are:
6741.  OSPM must guarantee that the following operation regions are always
675accessible:
676    SystemIO operation regions.
677    SystemMemory operation regions when accessing memory returned by the
678System Address Map reporting interfaces."
679
680Since the state of both the SystemIO and SystemMemory address spaces are
681defined by the specification to never change, this ACPICA change ensures
682that now _REG is never called on them. This solves some problems seen in
683the field and provides compatibility with other ACPI implementations. An
684update to the upcoming new version of the ACPI specification will help
685clarify this behavior.
686
687Updated the implementation of support for the Generic Serial Bus. For the
688"bidirectional" protocols, the internal implementation now automatically
689creates a return data buffer of the maximum size (255). This handles the
690worst-case for data that is returned from the serial bus handler, and
691fixes some problems seen in the field. This new buffer is directly
692returned to the ASL. As such, there is no true "bidirectional" buffer,
693which matches the ACPI specification. This is the reason for the "double
694store" seen in the example ASL code in the specification, shown below:
695
696Word Process Call (AttribProcessCall):
697    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
698    Field(TOP1, BufferAcc, NoLock, Preserve)
699    {
700        FLD1, 8, // Virtual register at command value 1.
701    }
702
703    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
704                             // as BUFF
705    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
706
707    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
708    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
709transaction
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.
713
714
7152) iASL Compiler/Disassembler and Tools:
716
717iASL: Implemented detection of extraneous/redundant uses of the Offset()
718operator within a Field Unit list. A remark is now issued for these. For
719example, the first two of the Offset() operators below are extraneous.
720Because both the compiler and the interpreter track the offsets
721automatically, these Offsets simply refer to the current offset and are
722unnecessary. Note, when optimization is enabled, the iASL compiler will
723in fact remove the redundant Offset operators and will not emit any AML
724code for them.
725
726    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
727    Field (OPR1)
728    {
729        Offset (0),     // Never needed
730        FLD1, 32,
731        Offset (4),     // Redundant, offset is already 4 (bytes)
732        FLD2, 8,
733        Offset (64),    // OK use of Offset.
734        FLD3, 16,
735    }
736dsdt.asl     14:         Offset (0),
737Remark   2158 -                 ^ Unnecessary/redundant use of Offset
738operator
739
740dsdt.asl     16:         Offset (4),
741Remark   2158 -                 ^ Unnecessary/redundant use of Offset
742operator
743
744----------------------------------------
74510 August 2018. Summary of changes for version 20180810:
746
747
7481) ACPICA kernel-resident subsystem:
749
750Initial ACPI table loading: Attempt to continue loading ACPI tables
751regardless of malformed AML. Since migrating table initialization to the
752new module-level code support, the AML interpreter rejected tables upon
753any ACPI error encountered during table load. This is a problem because
754non-serious ACPI errors during table load do not necessarily mean that
755the entire definition block (DSDT or SSDT) is invalid. This change
756improves the table loading by ignoring some types of errors that can be
757generated by incorrect AML. This can range from object type errors, scope
758errors, and index errors.
759
760Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
761during suspend/resume. The status of ACPI events is no longer cleared
762when entering the ACPI S5 system state (power off) which caused some
763systems to power up immediately after turning off power in certain
764situations. This was a functional regression. It was fixed by clearing
765the status of all ACPI events again when entering S5 (for system-wide
766suspend or hibernation the clearing of the status of all events is not
767desirable, as it might cause the kernel to miss wakeup events sometimes).
768Rafael Wysocki.
769
770
7712) iASL Compiler/Disassembler and Tools:
772
773AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
774elements listed in the initialization file were previously initialized
775after the table load and before executing module-level code blocks.
776Recent changes in the module-level code support means that the table load
777becomes a large control method execution. If fields are used within
778module-level code and we are executing with the -fi option, the
779initialization values were used to initialize the namespace object(s)
780only after the table was finished loading. This change Provides an early
781initialization of objects specified in the initialization file so that
782field unit values are populated during the table load (not after the
783load).
784
785AcpiExec: Fixed a small memory leak regression that could result in
786warnings during exit of the utility. These warnings were similar to
787these:
788    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
789    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
790
791----------------------------------------
79229 June 2018. Summary of changes for version 20180629:
793
794
7951) iASL Compiler/Disassembler and Tools:
796
797iASL: Fixed a regression related to the use of the ASL External
798statement. Error checking for the use of the External() statement has
799been relaxed. Previously, a restriction on the use of External meant that
800the referenced named object was required to be defined in a different
801table (an SSDT). Thus it would be an error to declare an object as an
802external and then define the same named object in the same table. For
803example:
804    DefinitionBlock (...)
805    {
806        External (DEV1)
807        Device (DEV1){...} // This was an error
808    }
809However, this behavior has caused regressions in some existing ASL code,
810because there is code that depends on named objects and externals (with
811the same name) being declared in the same table. This change will allow
812the ASL code above to compile without errors or warnings.
813
814iASL: Implemented ASL language extensions for four operators to make some
815of 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)
821For the Field operators above, the AccessType, LockRule, and UpdateRule
822are now optional arguments. The default values are:
823        AccessType: AnyAcc
824        LockRule:   NoLock
825        UpdateRule: Preserve
826    4) Mutex (MutexName, SyncLevel)
827For this operator, the SyncLevel argument is now optional. This argument
828is rarely used in any meaningful way by ASL code, and thus it makes sense
829to make it optional. The default value is:
830        SyncLevel:  0
831
832iASL: Attempted use of the ASL Unload() operator now results in the
833following warning:
834    "Unload is not supported by all operating systems"
835This is in fact very true, and the Unload operator may be completely
836deprecated in the near future.
837
838AcpiExec: Fixed a regression for the -fi option (Namespace initialization
839file. Recent changes in the ACPICA module-level code support altered the
840table load/initialization sequence . This means that the table load has
841become a large method execution of the table itself. If Operation Region
842Fields are used within any module-level code and the -fi option was
843specified, the initialization values were populated only after the table
844had completely finished loading (and thus the module-level code had
845already been executed). This change moves the initialization of objects
846listed in the initialization file to before the table is executed as a
847method. Field unit values are now initialized before the table execution
848is performed.
849
850----------------------------------------
85131 May 2018. Summary of changes for version 20180531:
852
853
8541) ACPICA kernel-resident Subsystem:
855
856Implemented additional support to help ensure that a DSDT or SSDT is
857fully loaded even if errors are incurred during the load. The majority of
858the problems that are seen is the failure of individual AML operators
859that occur during execution of any module-level code (MLC) existing in
860the table. This support adds a mechanism to abort the current ASL
861statement (AML opcode), emit an error message, and to simply move on to
862the next opcode -- instead of aborting the entire table load. This is
863different than the execution of a control method where the entire method
864is aborted upon any error. The goal is to perform a very "best effort" to
865load the ACPI tables. The most common MLC errors that have been seen in
866the field are direct references to unresolved ASL/AML symbols (referenced
867directly without the use of the CondRefOf operator to validate the
868symbol). This new ACPICA behavior is now compatible with other ACPI
869implementations.
870
871Interpreter: The Unload AML operator is no longer supported for the
872reasons below. An AE_NOT_IMPLEMENTED exception is returned.
8731) A correct implementation on at least some hosts may not be possible.
8742) Other ACPI implementations do not correctly/fully support it.
8753) It requires host device driver support which is not known to exist.
876    (To properly support namespace unload out from underneath.)
8774) This AML operator has never been seen in the field.
878
879Parser: Added a debug option to dump AML parse sub-trees as they are
880being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
881ACPI_DB_PARSE_TREES.
882
883Debugger: Reduced the verbosity for errors incurred during table load and
884module-level code execution.
885
886Completed an investigation into adding a namespace node "owner list"
887instead of the current "owner ID" associated with namespace nodes. This
888list would link together all nodes that are owned by an individual
889control method. The purpose would be to enhance control method execution
890by speeding up cleanup during method exit (all namespace nodes created by
891a method are deleted upon method termination.) Currently, the entire
892namespace must be searched for matching owner IDs if (and only if) the
893method creates named objects outside of the local scope. However, by far
894the most common case is that methods create objects locally, not outside
895the method scope. There is already an ACPICA optimization in place that
896only searches the entire namespace in the rare case of a method creating
897objects elsewhere in the namespace. Therefore, it is felt that the
898overhead of adding an additional pointer to each namespace node to
899implement the owner list makes this feature unnecessary.
900
901
9022) iASL Compiler/Disassembler and Tools:
903
904iASL, Disassembler, and Template generator: Implemented support for
905Revision D of the IORT table. Adds a new subtable that is used to specify
906SMMUv3 PMCGs. rmurphy-arm.
907
908Disassembler: Restored correct table header validation for the "special"
909ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
910table header and must be special-cased. This was a regression that has
911been present for apparently a long time.
912
913AcpiExec: Reduced verbosity of the local exception handler implemented
914within acpiexec. This handler is invoked by ACPICA upon any exceptions
915generated during control method execution. A new option was added: -vh
916restores the original verbosity level if desired.
917
918AcpiExec: 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
920behavior of the corresponding iASL -x option.
921
922AcpiExec: Restored a force-exit on multiple control-c (sigint)
923interrupts. This allows program termination even if other issues cause
924the control-c to fail.
925
926ASL test suite (ASLTS): Added tests for the recently implemented package
927element resolution mechanism that allows forward references to named
928objects from individual package elements (this mechanism provides
929compatibility with other ACPI implementations.)
930
931
932----------------------------------------
9338 May 2018. Summary of changes for version 20180508:
934
935
9361) ACPICA kernel-resident subsystem:
937
938Completed the new (recently deployed) package resolution mechanism for
939the Load and LoadTable ASL/AML operators. This fixes a regression that
940was introduced in version 20180209 that could result in an
941AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
942(SSDT) that contains package objects.
943
944
9452) iASL Compiler/Disassembler and Tools:
946
947AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
9481 MB. This change allows for table offsets within the acpidump file to be
949up to 8 characters. These changes are backwards compatible with existing
950acpidump files.
951
952
953----------------------------------------
95427 April 2018. Summary of changes for version 20180427:
955
956
9571) ACPICA kernel-resident subsystem:
958
959Debugger: Added support for Package objects in the "Test Objects"
960command. This command walks the entire namespace and evaluates all named
961data objects (Integers, Strings, Buffers, and now Packages).
962
963Improved error messages for the namespace root node. Originally, the root
964was referred to by the confusing string "\___". This has been replaced by
965"Namespace Root" for clarification.
966
967Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
968Ian King <colin.king@canonical.com>.
969
970
9712) iASL Compiler/Disassembler and Tools:
972
973iASL: Implemented support to detect and flag illegal forward references.
974For compatibility with other ACPI implementations, these references are
975now illegal at the root level of the DSDT or SSDTs. Forward references
976have always been illegal within control methods. This change should not
977affect existing ASL/AML code because of the fact that these references
978have always been illegal in the other ACPI implementation.
979
980iASL: Added error messages for the case where a table OEM ID and OEM
981TABLE ID strings are longer than the ACPI-defined length. Previously,
982these strings were simply silently truncated.
983
984iASL: Enhanced the -tc option (which creates an AML hex file in C,
985suitable for import into a firmware project):
986  1) Create a unique name for the table, to simplify use of multiple
987SSDTs.
988  2) Add a protection #ifdef in the file, similar to a .h header file.
989With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
990evan.lloyd@arm.com
991
992AcpiExec: Added a new option, -df, to disable the local fault handler.
993This is useful during debugging, where it may be desired to drop into a
994debugger on a fault.
995
996----------------------------------------
99713 March 2018. Summary of changes for version 20180313:
998
999
10001) ACPICA kernel-resident subsystem:
1001
1002Implemented various improvements to the GPE support:
1003
10041) Dispatch all active GPEs at initialization time so that no GPEs are
1005lost.
10062) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1007before devices are enumerated.
10083) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1009IRQs are not lost.
10104) Add parallel GPE handling to eliminate the possibility of dispatching
1011the same GPE twice.
10125) Dispatch any pending GPEs after enabling for the first time.
1013
1014AcpiGetObjectInfo - removed support for the _STA method. This was causing
1015problems on some platforms.
1016
1017Added a new _OSI string, "Windows 2017.2".
1018
1019Cleaned up and simplified the module-level code support. These changes
1020are in preparation for the eventual removal of the legacy MLC support
1021(deferred execution), replaced by the new MLC architecture which executes
1022the MLC as a table is loaded (DSDT/SSDTs).
1023
1024Changed a compile-time option to a runtime option. Changes the option to
1025ignore ACPI table load-time package resolution errors into a runtime
1026option. Used only for platforms that generate many AE_NOT_FOUND errors
1027during boot. AcpiGbl_IgnorePackageResolutionErrors.
1028
1029Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1030ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1031compilation errors from unused variables (seen with some compilers).
1032
1033
10342) iASL Compiler/Disassembler and Tools:
1035
1036ASLTS: parallelized execution in order to achieve an (approximately) 2X
1037performance increase.
1038
1039ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1040error reporting.
1041
1042----------------------------------------
104309 February 2018. Summary of changes for version 20180209:
1044
1045
10461) ACPICA kernel-resident subsystem:
1047
1048Completed the final integration of the recent changes to Package Object
1049handling and the module-level AML code support. This allows forward
1050references from individual package elements when the package object is
1051declared from within module-level code blocks. Provides compatibility
1052with other ACPI implementations.
1053
1054The new architecture for the AML module-level code has been completed and
1055is now the default for the ACPICA code. This new architecture executes
1056the module-level code in-line as the ACPI table is loaded/parsed instead
1057of the previous architecture which deferred this code until after the
1058table was fully loaded. This solves some ASL code ordering issues and
1059provides compatibility with other ACPI implementations. At this time,
1060there is an option to fallback to the earlier architecture, but this
1061support is deprecated and is planned to be completely removed later this
1062year.
1063
1064Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1065resolution of named reference elements within Package objects. Although
1066this is potentially a serious problem, it can generate a lot of
1067noise/errors on platforms whose firmware carries around a bunch of unused
1068Package objects. To disable these errors, define
1069ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1070errors are always reported for ACPICA applications such as AcpiExec.
1071
1072Fixed a regression related to the explicit type-conversion AML operators
1073(ToXXXX). The regression was introduced early in 2017 but was not seen
1074until recently because these operators are not fully supported by other
1075ACPI implementations and are thus rarely used by firmware developers. The
1076operators are defined by the ACPI specification to not implement the
1077"implicit result object conversion". The regression incorrectly
1078introduced this object conversion for the following explicit conversion
1079operators:
1080    ToInteger
1081    ToString
1082    ToBuffer
1083    ToDecimalString
1084    ToHexString
1085    ToBCD
1086    FromBCD
1087
1088
10892) iASL Compiler/Disassembler and Tools:
1090
1091iASL: Fixed a problem with the compiler constant folding feature as
1092related to the ToXXXX explicit conversion operators. These operators do
1093not support the "implicit result object conversion" by definition. Thus,
1094ASL expressions that use these operators cannot be folded to a simple
1095Store operator because Store implements the implicit conversion. This
1096change uses the CopyObject operator for the ToXXXX operator folding
1097instead. CopyObject is defined to not implement implicit result
1098conversions and is thus appropriate for folding the ToXXXX operators.
1099
1100iASL: Changed the severity of an error condition to a simple warning for
1101the case where a symbol is declared both locally and as an external
1102symbol. This accommodates existing ASL code.
1103
1104AcpiExec: The -ep option to enable the new architecture for module-level
1105code has been removed. It is replaced by the -dp option which instead has
1106the opposite effect: it disables the new architecture (the default) and
1107enables the legacy architecture. When the legacy code is removed in the
1108future, the -dp option will be removed also.
1109
1110----------------------------------------
111105 January 2018. Summary of changes for version 20180105:
1112
1113
11141) ACPICA kernel-resident subsystem:
1115
1116Updated all copyrights to 2018. This affects all source code modules.
1117
1118Fixed a possible build error caused by an unresolved reference to the
1119AcpiUtSafeStrncpy function.
1120
1121Removed NULL pointer arithmetic in the various pointer manipulation
1122macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1123This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1124
1125Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1126Mittal.
1127
1128
11292) iASL Compiler/Disassembler and Tools:
1130
1131ASLTS: Updated all copyrights to 2018.
1132
1133Tools: Updated all signon copyrights to 2018.
1134
1135AcpiXtract: Fixed a regression related to ACPI table signatures where the
1136signature was truncated to 3 characters (instead of 4).
1137
1138AcpiExec: Restore the original terminal mode after the use of the -v and
1139-vd options.
1140
1141ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1142
1143----------------------------------------
114414 December 2017. Summary of changes for version 20171214:
1145
1146
11471) ACPICA kernel-resident subsystem:
1148
1149Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1150interface where the optional "pathname" argument had inadvertently become
1151a required argument returning an error if omitted (NULL pointer
1152argument).
1153
1154Fixed two possible memory leaks related to the recently developed "late
1155resolution" of reference objects within ASL Package Object definitions.
1156
1157Added two recently defined _OSI strings: "Windows 2016" and "Windows
11582017". Mario Limonciello.
1159
1160Implemented and deployed a safer version of the C library function
1161strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1162creation of unterminated strings as a possible result of a standard
1163strncpy.
1164
1165Cleaned up and restructured the global variable file (acglobal.h). There
1166are many changes, but no functional changes.
1167
1168
11692) iASL Compiler/Disassembler and Tools:
1170
1171iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1172optional OemData field at the end of the table was incorrectly required
1173for proper compilation. It is now correctly an optional field.
1174
1175ASLTS: The entire suite was converted from standard ASL to the ASL+
1176language, using the ASL-to-ASL+ converter which is integrated into the
1177iASL compiler. A binary compare of all output files has verified the
1178correctness of the conversion.
1179
1180iASL: Fixed the source code build for platforms where "char" is unsigned.
1181This affected the iASL lexer only. Jung-uk Kim.
1182
1183----------------------------------------
118410 November 2017. Summary of changes for version 20171110:
1185
1186
11871) ACPICA kernel-resident subsystem:
1188
1189This release implements full support for ACPI 6.2A:
1190    NFIT - Added a new subtable, "Platform Capabilities Structure"
1191No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1192errata release of the specification.
1193
1194Other 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
1197Linton
1198
1199Utilities: Modified the string/integer conversion functions to use
1200internal 64-bit divide support instead of a native divide. On 32-bit
1201platforms, a 64-bit divide typically requires a library function which
1202may not be present in the build (kernel or otherwise).
1203
1204Implemented a targeted error message for timeouts returned from the
1205Embedded Controller device driver. This is seen frequently enough to
1206special-case an AE_TIME returned from an EC operation region access:
1207    "Timeout from EC hardware or EC device driver"
1208
1209Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1210runtime error messages have the identical prefix.
1211
1212
12132) iASL Compiler/Disassembler and Tools:
1214
1215AcpiXtract: Fixed a problem with table header detection within the
1216acpidump file. Processing a table could be ended early if a 0x40 (@)
1217appears in the original binary table, resulting in the @ symbol appearing
1218in the decoded ASCII field at the end of the acpidump text line. The
1219symbol caused acpixtract to incorrectly think it had reached the end of
1220the current table and the beginning of a new table.
1221
1222AcpiXtract: Added an option (-f) to ignore some errors during table
1223extraction. This initial implementation ignores non-ASCII and non-
1224printable characters found in the acpidump text file.
1225
1226TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1227for ASLTS. This feature is used to track memory allocations from
1228different memory caches within the ACPICA code. At the end of an ASLTS
1229run, these memory statistics are recorded and stored in a log file.
1230
1231Debugger (user-space version): Implemented a simple "Background" command.
1232Creates a new thread to execute a control method in the background, while
1233control returns to the debugger prompt to allow additional commands.
1234    Syntax: Background <Namepath> [Arguments]
1235
1236----------------------------------------
123729 September 2017. Summary of changes for version 20170929:
1238
1239
12401) ACPICA kernel-resident subsystem:
1241
1242Redesigned and implemented an improved ASL While() loop timeout
1243mechanism. This mechanism is used to prevent infinite loops in the kernel
1244AML interpreter caused by either non-responsive hardware or incorrect AML
1245code. The new implementation uses AcpiOsGetTimer instead of a simple
1246maximum loop count, and is thus more accurate and constant across
1247different machines. The default timeout is currently 30 seconds, but this
1248may be adjusted later.
1249
1250Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1251better reflect the new implementation of the loop timeout mechanism.
1252
1253Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1254and to fix an off-by-one error. Jung-uk Kim.
1255
1256Fixed an EFI build problem by updating the makefiles to for a new file
1257that was added, utstrsuppt.c
1258
1259
12602) iASL Compiler/Disassembler and Tools:
1261
1262Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1263includes support in the table disassembler, compiler, and template
1264generator.
1265
1266iASL: Added an exception for an illegal type of recursive method
1267invocation. If a method creates named objects, the first recursive call
1268will fail at runtime. This change adds an error detection at compile time
1269to catch the problem up front. Note: Marking such a method as
1270"serialized" will not help with this problem, because the same thread can
1271acquire the method mutex more than once. Example compiler and runtime
1272output:
1273
1274    Method (MTH1)
1275    {
1276        Name (INT1, 1)
1277        MTH1 ()
1278    }
1279
1280    dsdt.asl     22: MTH1 ()
1281    Error    6152 -  ^ Illegal recursive call to method
1282                       that creates named objects (MTH1)
1283
1284Previous runtime exception:
1285    ACPI Error: [INT1] Namespace lookup failure,
1286    AE_ALREADY_EXISTS (20170831/dswload2-465)
1287
1288iASL: Updated support for External() opcodes to improve namespace
1289management and error detection. These changes are related to issues seen
1290with multiple-segment namespace pathnames within External declarations,
1291such as below:
1292
1293    External(\_SB.PCI0.GFX0, DeviceObj)
1294    External(\_SB.PCI0.GFX0.ALSI)
1295
1296iASL: Implemented support for multi-line error/warning messages. This
1297enables more detailed and helpful error messages as below, from the
1298initial deployment for the duplicate names error:
1299
1300    DSDT.iiii   1692:       Device(PEG2) {
1301    Error    6074 -                  ^ Name already exists in scope
1302(PEG2)
1303
1304        Original name creation/declaration below:
1305        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1306
1307AcpiXtract: Added additional flexibility to support differing input hex
1308dump formats. Specifically, hex dumps that contain partial disassembly
1309and/or comments within the ACPI table data definition. There exist some
1310dump utilities seen in the field that create this type of hex dump (such
1311as Simics). For example:
1312
1313    DSDT @ 0xdfffd0c0 (10999 bytes)
1314        Signature DSDT
1315        Length 10999
1316        Revision 1
1317        Checksum 0xf3 (Ok)
1318        OEM_ID BXPC
1319        OEM_table_id BXDSDT
1320        OEM_revision 1
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
1324      ...
1325      2af0: 5f 4c 30 46 00 a4 01
1326
1327Test 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
1331
1332iASL: Performed some code/module restructuring. Moved all memory
1333allocation functions to new modules. Two new files, aslallocate.c and
1334aslcache.c
1335
1336----------------------------------------
133731 August 2017. Summary of changes for version 20170831:
1338
1339
13401) ACPICA kernel-resident subsystem:
1341
1342Implemented internal support for full 64-bit addresses that appear in all
1343Generic Address Structure (GAS) structures. Previously, only the lower 32
1344bits were used. Affects the use of GAS structures in the FADT and other
1345tables, as well as the GAS structures passed to the AcpiRead and
1346AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1347
1348Added header support for the PDTT ACPI table (Processor Debug Trigger
1349Table). Full support in the iASL Data Table Compiler and disassembler is
1350forthcoming.
1351
1352
13532) iASL Compiler/Disassembler and Tools:
1354
1355iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1356Properties Topology Table) where a flag bit was specified in the wrong
1357bit position ("Line Size Valid", bit 6).
1358
1359iASL: Implemented support for Octal integer constants as defined by the
1360ASL language grammar, per the ACPI specification. Any integer constant
1361that 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 */
1365
1366iASL: Improved overflow detection for 64-bit string conversions during
1367compilation of integer constants. "Overflow" in this case means a string
1368that represents an integer that is too large to fit into a 64-bit value.
1369Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1370the low-order 32 bits with a warning, as previously implemented. Several
1371new exceptions are defined that indicate a 64-bit overflow, as well as
1372the 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
1376
1377iASL: Added a warning for the case where a ResourceTemplate is declared
1378with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1379this case, the resulting template is created with a single END_TAG
1380descriptor, which is essentially useless.
1381
1382iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1383include compilation error codes as well.
1384
1385----------------------------------------
138628 July 2017. Summary of changes for version 20170728:
1387
1388
13891) ACPICA kernel-resident subsystem:
1390
1391Fixed a regression seen with small resource descriptors that could cause
1392an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1393
1394AML interpreter: Implemented a new feature that allows forward references
1395from individual named references within package objects that are
1396contained within blocks of "module-level code". This provides
1397compatibility with other ACPI implementations and supports existing
1398firmware that depends on this feature. Example:
1399
1400    Name (ABCD, 1)
1401    If (ABCD)                       /* An If() at module-level */
1402    {
1403        Name (PKG1, Package()
1404        {
1405            INT1                    /* Forward reference to object INT1
1406*/
1407        })
1408        Name (INT1, 0x1234)
1409    }
1410
1411AML Interpreter: Fixed a problem with the Alias() operator where aliases
1412to some ASL objects were not handled properly. Objects affected are:
1413Mutex, Event, and OperationRegion.
1414
1415AML Debugger: Enhanced to properly handle AML Alias objects. These
1416objects have one level of indirection which was not fully supported by
1417the debugger.
1418
1419Table Manager: Added support to detect and ignore duplicate SSDTs within
1420the XSDT/RSDT. This error in the XSDT has been seen in the field.
1421
1422EFI 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
1428
1429Added additional support for the _DMA predefined name. _DMA returns a
1430buffer containing a resource template. This change add support within the
1431resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1432resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1433
1434
14352) iASL Compiler/Disassembler and Tools:
1436
1437iASL: Fixed a problem where the internal input line buffer(s) could
1438overflow if there are very long lines in the input ASL source code file.
1439Implemented buffer management that automatically increases the size of
1440the buffers as necessary.
1441
1442iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1443errors. If the specified exception is not raised during compilation, the
1444compiler emits an error. This is intended to support the ASL test suite,
1445but may be useful in other contexts.
1446
1447iASL: Implemented a new predefined macro, __METHOD__, which returns a
1448string containing the name of the current control method that is being
1449compiled.
1450
1451iASL: Implemented debugger and table compiler support for the SDEI ACPI
1452table (Software Delegated Exception Interface). James Morse
1453<james.morse@arm.com>
1454
1455Unix/Linux makefiles: Added an option to disable compile optimizations.
1456The disable occurs when the NOOPT flag is set to TRUE.
1457theracermaster@gmail.com
1458
1459Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1460when there are different tables for 32-bit versus 64-bit.
1461
1462Enhanced error reporting for the ASL test suite (ASLTS) by removing
1463unnecessary/verbose text, and emit the actual line number where an error
1464has occurred. These changes are intended to improve the usefulness of the
1465test suite.
1466
1467----------------------------------------
146829 June 2017. Summary of changes for version 20170629:
1469
1470
14711) ACPICA kernel-resident subsystem:
1472
1473Tables: Implemented a deferred ACPI table verification. This is useful
1474for operating systems where the tables cannot be verified in the early
1475initialization stage due to early memory mapping limitations on some
1476architectures. Lv Zheng.
1477
1478Tables: Removed the signature validation for dynamically loaded tables.
1479Provides compatibility with other ACPI implementations. Previously, only
1480SSDT tables were allowed, as per the ACPI specification. Now, any table
1481signature can be used via the Load() operator. Lv Zheng.
1482
1483Tables: Fixed several mutex issues that could cause errors during table
1484acquisition. Lv Zheng.
1485
1486Tables: Fixed a problem where an ACPI warning could be generated if a
1487null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1488
1489Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1490AcpiPutTable interfaces. This applies to the "late stage" table loading
1491when the use of AcpiPutTable is no longer required (since the system
1492memory manager is fully running and available). Lv Zheng.
1493
1494Fixed/Reverted a regression during processing of resource descriptors
1495that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1496exception in this case.
1497
1498Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1499I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1500
1501Interpreter: Fixed a possible fault if an Alias operator with an invalid
1502or duplicate target is encountered during Alias creation in
1503AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1504
1505Added an option to use designated initializers for function pointers.
1506Kees Cook <keescook@google.com>
1507
1508
15092) iASL Compiler/Disassembler and Tools:
1510
1511iASL: Allow compilation of External declarations with target pathnames
1512that refer to existing named objects within the table. Erik Schmauss.
1513
1514iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1515FieldUnit name also is declared via External in the same table. Erik
1516Schmauss.
1517
1518iASL: Allow existing scope names within pathnames used in External
1519statements. For example:
1520    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1521    Device (ABCD)
1522
1523iASL: IORT ACPI table: Implemented changes required to decode the new
1524Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1525compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1526
1527Disassembler: Don't abort disassembly on errors from External()
1528statements. Erik Schmauss.
1529
1530Disassembler: fixed a possible fault when one of the Create*Field
1531operators references a Resource Template. ACPICA Bugzilla 1396.
1532
1533iASL: In the source code, resolved some naming inconsistences across the
1534parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1535Adds a new file, aslparseop.c
1536
1537----------------------------------------
153831 May 2017. Summary of changes for version 20170531:
1539
1540
15410) ACPI 6.2 support:
1542
1543The ACPI specification version 6.2 has been released and is available at
1544http://uefi.org/specifications
1545
1546This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1547are summarized below.
1548
1549New 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)
1553
1554New 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))
1558
1559Simple updates for existing ACPI tables:
1560    BGRT (two new flag bits)
1561    HEST (New bit defined for several subtables, GHES_ASSIST)
1562
1563New Resource Descriptors and Resource macros (Compiler/Disassembler):
1564    PinConfig()
1565    PinFunction()
1566    PinGroup()
1567    PinGroupConfig()
1568    PinGroupFunction()
1569    New type for hardware error notification (section 18.3.2.9)
1570
1571New 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)
1576
1577ASL 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
1586
1587Miscellaneous:
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)
1593
1594
15951) ACPICA kernel-resident subsystem:
1596
1597Added support to disable ACPI events on hardware-reduced platforms.
1598Eliminates error messages of the form "Could not enable fixed event". Lv
1599Zheng
1600
1601Fixed a problem using Device/Thermal objects with the ObjectType and
1602DerefOf ASL operators. This support had not been fully/properly
1603implemented.
1604
1605Fixed a problem where if a Buffer object containing a resource template
1606was longer than the actual resource template, an error was generated --
1607even though the AML is legal. This case has been seen in the field.
1608
1609Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1610The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1611
1612Added header file changes for the TPM2 ACPI table. Update to new version
1613of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1614
1615Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1616These interfaces are intended to be used only in conjunction with the
1617predefined _DLM method (Device Lock Method). "This object appears in a
1618device scope when AML access to the device must be synchronized with the
1619OS environment".
1620
1621Example Code and Data Size: These are the sizes for the OS-independent
1622acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1623debug version of the code includes the debug output trace mechanism and
1624has a much larger code and data size.
1625
1626  Current Release:
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
1629  Previous Release:
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
1632
1633
16342) iASL Compiler/Disassembler and Tools:
1635
1636iASL: Fixed a problem where an External() declaration could not refer to
1637a Field Unit. Erik Schmauss.
1638
1639Disassembler: Improved support for the Switch/Case operators. This
1640feature will disassemble AML code back to the original Switch operators
1641when possible, instead of an If..Else sequence. David Box
1642
1643iASL and disassembler: Improved the handling of multiple extraneous
1644parentheses for both ASL input and disassembled ASL output.
1645
1646Improved the behavior of the iASL compiler and disassembler to detect
1647improper use of external declarations
1648
1649Disassembler: Now aborts immediately upon detection of an unknown AML
1650opcode. The AML parser has no real way to recover from this, and can
1651result in the creation of an ill-formed parse tree that causes errors
1652later during the disassembly.
1653
1654All tools: Fixed a problem where the Unix application OSL did not handle
1655control-c correctly. For example, a control-c could incorrectly wake the
1656debugger.
1657
1658AcpiExec: Improved the Control-C handling and added a handler for
1659segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1660environments.
1661
1662Reduced the verbosity of the generic unix makefiles. Previously, each
1663compilation displayed the full set of compiler options. This has been
1664eliminated as the options are easily inspected within the makefiles. Each
1665compilation now results in a single line of output.
1666
1667----------------------------------------
166803 March 2017. Summary of changes for version 20170303:
1669
1670
16710) ACPICA licensing:
1672
1673The licensing information at the start of each source code module has
1674been updated. In addition to the Intel license, the dual GPLv2/BSD
1675license has been added for completeness. Now, a single version of the
1676source code should be suitable for all ACPICA customers. This is the
1677major change for this release since it affects all source code modules.
1678
1679
16801) ACPICA kernel-resident subsystem:
1681
1682Fixed two issues with the common asltypes.h header that could cause
1683problems 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)
1687
1688
16892) iASL Compiler/Disassembler and Tools:
1690
1691Disassembler: fixed a regression introduced in 20170224. A fix for a
1692memory leak related to resource descriptor tags (names) could fault when
1693the disassembler was generated with 64-bit compilers.
1694
1695The ASLTS test suite has been updated to implement a new testing
1696architecture. During generation of the suite from ASL source, both the
1697ASL and ASL+ compilers are now validated, as well as the disassembler
1698itself (Erik Schmauss). The architecture executes as follows:
1699
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.
1706
1707----------------------------------------
170824 February 2017. Summary of changes for version 20170224:
1709
1710
17111) ACPICA kernel-resident subsystem:
1712
1713Interpreter: Fixed two issues with the control method return value auto-
1714repair feature, where an attempt to double-delete an internal object
1715could result in an ACPICA warning (for _CID repair and others). No fault
1716occurs, however, because the attempted deletion (actually a release to an
1717internal cache) is detected and ignored via object poisoning.
1718
1719Debugger: Fixed an AML interpreter mutex issue during the single stepping
1720of control methods. If certain debugger commands are executed during
1721stepping, a mutex acquire/release error could occur. Lv Zheng.
1722
1723Fixed some issues generating ACPICA with the Intel C compiler by
1724restoring the original behavior and compiler-specific include file in
1725acenv.h. Lv Zheng.
1726
1727Example Code and Data Size: These are the sizes for the OS-independent
1728acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1729debug version of the code includes the debug output trace mechanism and
1730has a much larger code and data size.
1731
1732  Current Release:
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
1735  Previous Release:
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
1738
1739
17402) iASL Compiler/Disassembler and Tools:
1741
1742iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1743tool has been designed, implemented, and included in this release. The
1744key feature of this utility is that the original comments within the
1745input ASL file are preserved during the conversion process, and included
1746within the converted ASL+ file -- thus creating a transparent conversion
1747of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1748
1749    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
1750converted code
1751
1752iASL/Disassembler: Improved the detection and correct disassembly of
1753Switch/Case operators. This feature detects sequences of if/elseif/else
1754operators that originated from ASL Switch/Case/Default operators and
1755emits the original operators. David Box.
1756
1757iASL: Improved the IORT ACPI table support in the following areas. Lv
1758Zheng:
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.
1762
1763Disassembler: Enhanced the detection and disassembly of resource
1764template/descriptor within a Buffer object. An EndTag descriptor is now
1765required to have a zero second byte, since all known ASL compilers emit
1766this. This helps eliminate incorrect decisions when a buffer is
1767disassembled (false positives on resource templates).
1768
1769----------------------------------------
177019 January 2017. Summary of changes for version 20170119:
1771
1772
17731) General ACPICA software:
1774
1775Entire source code base: Added the 2017 copyright to all source code
1776legal/licensing module headers and utility/tool signons. This includes
1777the standard Linux dual-license header. This affects virtually every file
1778in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
1779the ACPICA test suite.
1780
1781
17822) iASL Compiler/Disassembler and Tools:
1783
1784iASL: Removed/fixed an inadvertent remark when a method argument
1785containing a reference is used as a target operand within the method (and
1786never used as a simple argument), as in the example below. Jeffrey Hugo.
1787
1788    dsdt.asl   1507:    Store(0x1, Arg0)
1789    Remark   2146 -                ^ Method Argument is never used (Arg0)
1790
1791All tools: Removed the bit width of the compiler that generated the tool
1792from the common signon for all user space tools. This proved to be
1793confusing and unnecessary. This includes similar removal of HARDWARE_NAME
1794from the generic makefiles (Thomas Petazzoni). Example below.
1795
1796    Old:
1797    ASL+ Optimizing Compiler version 20170119-32
1798    ASL+ Optimizing Compiler version 20170119-64
1799
1800    New:
1801    ASL+ Optimizing Compiler version 20170119
1802
1803----------------------------------------
180422 December 2016. Summary of changes for version 20161222:
1805
1806
18071) ACPICA kernel-resident subsystem:
1808
1809AML Debugger: Implemented a new mechanism to simplify and enhance
1810debugger integration into all environments, including kernel debuggers
1811and user-space utilities, as well as remote debug services. This
1812mechanism essentially consists of new OSL interfaces to support debugger
1813initialization/termination, as well as wait/notify interfaces to perform
1814the debugger handshake with the host. Lv Zheng.
1815
1816    New OSL interfaces:
1817        AcpiOsInitializeDebugger (void)
1818        AcpiOsTerminateDebugger (void)
1819        AcpiOsWaitCommandReady (void)
1820        AcpiOsNotifyCommandComplete (void)
1821
1822    New OS services layer:
1823        osgendbg.c -- Example implementation, and used for AcpiExec
1824
1825Update for Generic Address Space (GAS) support: Although the AccessWidth
1826and/or BitOffset fields of the GAS are not often used, this change now
1827fully supports these fields. This affects the internal support for FADT
1828registers, registers in other ACPI data tables, and the AcpiRead and
1829AcpiWrite public interfaces. Lv Zheng.
1830
1831Sleep support: In order to simplify integration of ACPI sleep for the
1832various host operating systems, a new OSL interface has been introduced.
1833AcpiOsEnterSleep allows the host to perform any required operations
1834before the final write to the sleep control register(s) is performed by
1835ACPICA. Lv Zheng.
1836
1837    New OSL interface:
1838        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1839
1840    Called from these internal interfaces:
1841        AcpiHwLegacySleep
1842        AcpiHwExtendedSleep
1843
1844EFI support: Added a very small EFI/ACPICA example application. Provides
1845a simple demo for EFI integration, as well as assisting with resolution
1846of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1847
1848    source/tools/efihello/efihello.c
1849
1850Local C library: Implemented several new functions to enhance ACPICA
1851portability, for environments where these clib functions are not
1852available (such as EFI). Lv Zheng:
1853    putchar
1854    getchar
1855    strpbrk
1856    strtok
1857    memmove
1858
1859Fixed a regression where occasionally a valid resource descriptor was
1860incorrectly detected as invalid at runtime, and a
1861AE_AML_NO_RESOURCE_END_TAG was returned.
1862
1863Fixed a problem with the recently implemented support that enables
1864control method invocations as Target operands to many ASL operators.
1865Warnings of this form: "Needed type [Reference], found [Processor]" were
1866seen at runtime for some method invocations.
1867
1868Example Code and Data Size: These are the sizes for the OS-independent
1869acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1870debug version of the code includes the debug output trace mechanism and
1871has a much larger code and data size.
1872
1873  Current Release:
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
1876  Previous Release:
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
1879
1880
18812) iASL Compiler/Disassembler and Tools:
1882
1883Disassembler: Enhanced output by adding the capability to detect and
1884disassemble ASL Switch/Case statements back to the original ASL source
1885code instead of if/else blocks. David Box.
1886
1887AcpiHelp: Split a large file into separate files based upon
1888functionality/purpose. New files are:
1889    ahaml.c
1890    ahasl.c
1891
1892----------------------------------------
189317 November 2016. Summary of changes for version 20161117:
1894
1895
18961) ACPICA kernel-resident subsystem:
1897
1898Table Manager: Fixed a regression introduced in 20160729, "FADT support
1899cleanup". This was an attempt to remove all references in the source to
1900the FADT version 2, which never was a legal version number. It was
1901skipped because it was an early version of 64-bit support that was
1902eventually abandoned for the current 64-bit support.
1903
1904Interpreter: Fixed a problem where runtime implicit conversion was
1905incorrectly disabled for the ASL operators below. This brings the
1906behavior into compliance with the ACPI specification:
1907    FromBCD
1908    ToBCD
1909    ToDecimalString
1910    ToHexString
1911    ToInteger
1912    ToBuffer
1913
1914Table Manager: Added a new public interface, AcpiPutTable, used to
1915release and free an ACPI table returned by AcpiGetTable and related
1916interfaces. Lv Zheng.
1917
1918Example Code and Data Size: These are the sizes for the OS-independent
1919acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1920debug version of the code includes the debug output trace mechanism and
1921has a much larger code and data size.
1922
1923  Current Release:
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
1926  Previous Release:
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
1929
1930
19312) iASL Compiler/Disassembler and Tools:
1932
1933Disassembler: Fixed a regression for disassembly of Resource Template.
1934Detection of templates in the AML stream missed some types of templates.
1935
1936iASL: Fixed a problem where an Access Size error was returned for the PCC
1937address space when the AccessSize of the GAS register is greater than a
1938DWORD. Hoan Tran.
1939
1940iASL: Implemented several grammar changes for the operators below. These
1941changes 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
1945that
1946                   do not return a reference (Changed TermArg to
1947SuperName).
1948
1949iASL: Control method invocations are now allowed for Target operands, as
1950per the ACPI specification. Removed error for using a control method
1951invocation as a Target operand.
1952
1953Disassembler: Improved detection of Resource Templates, Unicode, and
1954Strings within Buffer objects. These subtypes do not contain a specific
1955opcode to indicate the originating ASL code, and they must be detected by
1956other means within the disassembler.
1957
1958iASL: Implemented an optimization improvement for 32-bit ACPI tables
1959(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
1960only after 64-bit to 32-bit truncation. A truncation warning message is
1961still emitted, however.
1962
1963AcpiXtract: Implemented handling for both types of line terminators (LF
1964or CR/LF) so that it can accept AcpiDump output files from any system.
1965Peter Wu.
1966
1967AcpiBin: 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
1970
1971----------------------------------------
197230 September 2016. Summary of changes for version 20160930:
1973
1974
19751) ACPICA kernel-resident subsystem:
1976
1977Fixed a regression in the internal AcpiTbFindTable function where a non
1978AE_OK exception could inadvertently be returned even if the function did
1979not fail. This problem affects the following operators:
1980    DataTableRegion
1981    LoadTable
1982
1983Fixed a regression in the LoadTable operator where a load to any
1984namespace location other than the root no longer worked properly.
1985
1986Increased the maximum loop count value that will result in the
1987AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
1988prevent infinite loops within the AML interpreter and thus the host OS
1989kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
19901,048,575).
1991
1992Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
1993acpixf.h file. This allows hosts to easily configure the maximum loop
1994count at runtime.
1995
1996Removed an illegal character in the strtoul64.c file. This character
1997caused errors with some C compilers.
1998
1999Example Code and Data Size: These are the sizes for the OS-independent
2000acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2001debug version of the code includes the debug output trace mechanism and
2002has a much larger code and data size.
2003
2004  Current Release:
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
2007  Previous Release:
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
2010
2011
20122) iASL Compiler/Disassembler and Tools:
2013
2014Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2015the simpler ASL ElseIf keyword. During the conversion, a trailing If
2016block could be lost and missing from the disassembled output.
2017
2018iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2019the missing rule caused a parse error when using the Index operator as an
2020operand to ObjectType. This construct now compiles properly. Example:
2021    ObjectType(PKG1[4]).
2022
2023iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2024option). Previously, unresolved symbols could cause a protection fault.
2025Such symbols are now marked as unresolved in the map file.
2026
2027iASL: Implemented support to allow control method invocations as an
2028operand to the ASL DeRefOf operator. Example:
2029    DeRefOf(MTH1(Local0))
2030
2031Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2032possible _PLD buffer now includes examination of both the normal buffer
2033length (16 or 20) as well as the surrounding AML package length.
2034
2035Disassembler: Fixed a problem with the decoding of complex expressions
2036within the Divide operator for ASL+. For the case where both the quotient
2037and remainder targets are specified, the entire statement cannot be
2038disassembled. Previously, the output incorrectly contained a mix of ASL-
2039and ASL+ operators. This mixed statement causes a syntax error when
2040compiled. Example:
2041    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2042disassembled to:
2043    Divide (INT1 + 6, 128, RSLT, QUOT)
2044
2045iASL/Tools: Added support to process AML and non-AML ACPI tables
2046consistently. For the disassembler and AcpiExec, allow all types of ACPI
2047tables (AML and data tables). For the iASL -e option, allow only AML
2048tables (DSDT/SSDT).
2049
2050----------------------------------------
205131 August 2016. Summary of changes for version 20160831:
2052
2053
20541) ACPICA kernel-resident subsystem:
2055
2056Improve support for the so-called "module-level code", which is defined
2057to be math, logical and control AML opcodes that appear outside of any
2058control method. This change improves the support by adding more opcodes
2059that can be executed in the manner. Some other issues have been solved,
2060and the ASL grammar changes to support such code under all scope
2061operators (Device, etc.) are complete. Lv Zheng.
2062
2063UEFI support: these OSL functions have been implemented. This is an
2064additional step toward supporting the AcpiExec utility natively (with
2065full hardware access) under UEFI. Marcelo Ferreira.
2066    AcpiOsReadPciConfiguration
2067    AcpiOsWritePciConfiguration
2068
2069Fixed a possible mutex error during control method auto-serialization. Lv
2070Zheng.
2071
2072Updated support for the Generic Address Structure by fully implementing
2073all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2074Zheng.
2075
2076Updated the return value for the internal _OSI method. Instead of
20770xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2078for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2079implementations, and will be reflected and clarified in the next version
2080of the ACPI specification.
2081
2082Implemented two new table events that can be passed to an ACPICA table
2083handler. These events are used to indicate a table installation or
2084uninstallation. These events are used in addition to existed table load
2085and unload events. Lv Zheng.
2086
2087Implemented a cleanup for all internal string-to-integer conversions.
2088Consolidate multiple versions of this functionality and limit possible
2089bases to either 10 or 16 to simplify the code. Adds a new file,
2090utstrtoul64.
2091
2092Cleanup the inclusion order of the various compiler-specific headers.
2093This simplifies build configuration management. The compiler-specific
2094headers are now split out from the host-specific headers. Lv Zheng.
2095
2096Example Code and Data Size: These are the sizes for the OS-independent
2097acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2098debug version of the code includes the debug output trace mechanism and
2099has a much larger code and data size.
2100
2101  Current Release:
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
2104
2105
21062) iASL Compiler/Disassembler and Tools:
2107
2108iASL/AcpiExec: Added a command line option to display the build date/time
2109of the tool (-vd). This can be useful to verify that the correct version
2110of the tools are being used.
2111
2112AML Debugger: Implemented a new subcommand ("execute predef") to execute
2113all predefined control methods and names within the current namespace.
2114This can be useful for debugging problems with ACPI tables and the ACPI
2115namespace.
2116
2117----------------------------------------
211829 July 2016. Summary of changes for version 20160729:
2119
2120
21211) ACPICA kernel-resident subsystem:
2122
2123Implemented basic UEFI support for the various ACPICA tools. This
2124includes:
21251) An OSL to implement the various AcpiOs* interfaces on UEFI.
21262) Support to obtain the ACPI tables on UEFI.
21273) Local implementation of required C library functions not available on
2128UEFI.
21294) A front-end (main) function for the tools for UEFI-related
2130initialization.
2131
2132The initial deployment of this support is the AcpiDump utility executing
2133as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2134Current environments supported are Linux/Unix. MSVC generation is not
2135supported at this time. See the generate/efi/README file for build
2136instructions. Lv Zheng.
2137
2138Future plans include porting the AcpiExec utility to execute natively on
2139the platform with I/O and memory access. This will allow viewing/dump of
2140the platform namespace and native execution of ACPI control methods that
2141access the actual hardware. To fully implement this support, the OSL
2142functions below must be implemented with UEFI interfaces. Any community
2143help in the implementation of these functions would be appreciated:
2144    AcpiOsReadPort
2145    AcpiOsWritePort
2146    AcpiOsReadMemory
2147    AcpiOsWriteMemory
2148    AcpiOsReadPciConfiguration
2149    AcpiOsWritePciConfiguration
2150
2151Restructured and standardized the C library configuration for ACPICA,
2152resulting in the various configuration options below. This includes a
2153global restructuring of the compiler-dependent and platform-dependent
2154include files. These changes may affect the existing platform-dependent
2155configuration files on some hosts. Lv Zheng.
2156
2157The current C library configuration options appear below. For any issues,
2158it may be helpful to examine the existing compiler-dependent and
2159platform-dependent files as examples. Lv Zheng.
2160
21611) Linux kernel:
2162    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2163library.
2164    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
21652) Unix/Windows/BSD applications:
2166    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2167library.
2168    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
21693) UEFI applications:
2170    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2171library.
2172    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
21734) 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.
2176
2177
2178AML interpreter: "module-level code" support. Allows for execution of so-
2179called "executable" AML code (math/logical operations, etc.) outside of
2180control methods not just at the module level (top level) but also within
2181any scope declared outside of a control method - Scope{}, Device{},
2182Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2183
2184Simplified the configuration of the "maximum AML loops" global option by
2185adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2186modified at runtime.
2187
2188
2189Example Code and Data Size: These are the sizes for the OS-independent
2190acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2191debug version of the code includes the debug output trace mechanism and
2192has a much larger code and data size.
2193
2194  Current Release:
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
2197
2198
21992) iASL Compiler/Disassembler and Tools:
2200
2201iASL: Add full support for the RASF ACPI table (RAS Features Table).
2202Includes disassembler, data table compiler, and header support.
2203
2204iASL Expand "module-level code" support. Allows for
2205compilation/disassembly of so-called "executable" AML code (math/logical
2206operations, etc.) outside of control methods not just at the module level
2207(top level) but also within any scope declared outside of a control
2208method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2209ThermalZone{}.
2210
2211AcpiDump: Added support for dumping all SSDTs on newer versions of
2212Windows. These tables are now easily available -- SSDTs are not available
2213through the registry on older versions.
2214
2215----------------------------------------
221627 May 2016. Summary of changes for version 20160527:
2217
2218
22191) ACPICA kernel-resident subsystem:
2220
2221Temporarily reverted the new arbitrary bit length/alignment support in
2222AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2223a number of regressions with the new code that need to be fully resolved
2224and tested before this support can be finally integrated into ACPICA.
2225Apologies for any inconveniences these issues may have caused.
2226
2227The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2228ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2229and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2230
2231Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2232option. Adds a new return macro, return_STR. Junk-uk Kim.
2233
2234Example Code and Data Size: These are the sizes for the OS-independent
2235acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2236debug version of the code includes the debug output trace mechanism and
2237has a much larger code and data size.
2238
2239  Current Release:
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
2242  Previous Release:
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
2245
2246----------------------------------------
224722 April 2016. Summary of changes for version 20160422:
2248
22491) ACPICA kernel-resident subsystem:
2250
2251Fixed a regression in the GAS (generic address structure) arbitrary bit
2252support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2253and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2254
2255ACPI 6.0: Added support for new/renamed resource macros. One new argument
2256was added to each of these macros, and the original name has been
2257deprecated. The AML disassembler will always disassemble to the new
2258names. Support for the new macros was added to iASL, disassembler,
2259resource manager, and the acpihelp utility. ACPICA BZ 1274.
2260
2261    I2cSerialBus  -> I2cSerialBusV2
2262    SpiSerialBus  -> SpiSerialBusV2
2263    UartSerialBus -> UartSerialBusV2
2264
2265ACPI 6.0: Added support for a new integer field that was appended to the
2266package object returned by the _BIX method. This adds iASL compile-time
2267and AML runtime error checking. ACPICA BZ 1273.
2268
2269ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2270Subspace Type2" (Headers, Disassembler, and data table compiler).
2271
2272Example Code and Data Size: These are the sizes for the OS-independent
2273acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2274debug version of the code includes the debug output trace mechanism and
2275has a much larger code and data size.
2276
2277  Current Release:
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
2280  Previous Release:
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
2283
2284
22852) iASL Compiler/Disassembler and Tools:
2286
2287iASL: Implemented an ASL grammar extension to allow/enable executable
2288"module-level code" to be created and executed under the various
2289operators that create new scopes. This type of AML code is already
2290supported in all known AML interpreters, and the grammar change will
2291appear in the next version of the ACPI specification. Simplifies the
2292conditional runtime creation of named objects under these object types:
2293
2294    Device
2295    PowerResource
2296    Processor
2297    Scope
2298    ThermalZone
2299
2300iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2301ease-of-use to the ASL language. The syntax is similar to the
2302corresponding C operator, and is implemented with the existing AML While
2303opcode -- thus requiring no changes to existing AML interpreters.
2304
2305    For (Initialize, Predicate, Update) {TermList}
2306
2307Grammar:
2308    ForTerm :=
2309        For (
2310            Initializer    // Nothing | TermArg => ComputationalData
2311            Predicate      // Nothing | TermArg => ComputationalData
2312            Update         // Nothing | TermArg => ComputationalData
2313        ) {TermList}
2314
2315
2316iASL: The _HID/_ADR detection and validation has been enhanced to search
2317under conditionals in order to allow these objects to be conditionally
2318created at runtime.
2319
2320iASL: Fixed several issues with the constant folding feature. The
2321improvement allows better detection and resolution of statements that can
2322be folded at compile time. ACPICA BZ 1266.
2323
2324iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2325conversion to the ASL ElseIf operator where incorrect ASL code could be
2326generated.
2327
2328iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2329sometimes an extra (and extraneous) set of parentheses were emitted for
2330some combinations of operators. Although this did not cause any problems
2331with recompilation of the disassembled code, it made the code more
2332difficult to read. David Box. ACPICA BZ 1231.
2333
2334iASL: Changed to ignore the unreferenced detection for predefined names
2335of resource descriptor elements, when the resource descriptor is
2336created/defined within a control method.
2337
2338iASL: Disassembler: Fix a possible fault with externally declared Buffer
2339objects.
2340
2341----------------------------------------
234218 March 2016. Summary of changes for version 20160318:
2343
23441) ACPICA kernel-resident subsystem:
2345
2346Added support for arbitrary bit lengths and bit offsets for registers
2347defined by the Generic Address Structure. Previously, only aligned bit
2348lengths of 8/16/32/64 were supported. This was sufficient for many years,
2349but recently some machines have been seen that require arbitrary bit-
2350level support. ACPICA BZ 1240. Lv Zheng.
2351
2352Fixed an issue where the \_SB._INI method sometimes must be evaluated
2353before any _REG methods are evaluated. Lv Zheng.
2354
2355Implemented several changes related to ACPI table support
2356(Headers/Disassembler/TableCompiler):
2357NFIT: For ACPI 6.1, updated to add some additional new fields and
2358constants.
2359FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
23606).
2361DMAR: Added new constants per the 10/2014 DMAR spec.
2362IORT: Added new subtable per the 10/2015 IORT spec.
2363HEST: For ACPI 6.1, added new constants and new subtable.
2364DBG2: Added new constants per the 12/2015 DBG2 spec.
2365FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2366ACPICA BZ 1249.
2367ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2368
2369Updated header support for the DMAR table to match the current version of
2370the related spec.
2371
2372Added extensions to the ASL Concatenate operator to allow any ACPI object
2373to be passed as an operand. Any object other than Integer/String/Buffer
2374simply returns a string containing the object type. This extends the
2375usefulness of the Printf macros. Previously, Concatenate would abort the
2376control method if a non-data object was encountered.
2377
2378ACPICA source code: Deployed the C "const" keyword across the source code
2379where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2380
2381Example Code and Data Size: These are the sizes for the OS-independent
2382acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2383debug version of the code includes the debug output trace mechanism and
2384has a much larger code and data size.
2385
2386  Current Release:
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
2389  Previous Release:
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
2392
2393
23942) iASL Compiler/Disassembler and Tools:
2395
2396iASL/Disassembler: Improved the heuristic used to determine the number of
2397arguments for an externally defined control method (a method in another
2398table). 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
2400will completely solve this problem as it is deployed (automatically) in
2401newer BIOS code.
2402
2403iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2404statements that could cause errors when the disassembled file is
2405compiled. ACPICA BZ 1243. David Box.
2406
2407iASL: Fixed a regression caused by the merger of the two versions of the
2408local strtoul64. Because of a dependency on a global variable, strtoul64
2409could return an error for integers greater than a 32-bit value. ACPICA BZ
24101260.
2411
2412iASL: Fixed a regression where a fault could occur for an ASL Return
2413statement if it invokes a control method that is not resolved. ACPICA BZ
24141264.
2415
2416AcpiXtract: Improved input file validation: detection of binary files and
2417non-acpidump text files.
2418
2419----------------------------------------
242012 February 2016. Summary of changes for version 20160212:
2421
24221) ACPICA kernel-resident subsystem:
2423
2424Implemented full support for the ACPI 6.1 specification (released in
2425January). This version of the specification is available at:
2426http://www.uefi.org/specifications
2427
2428Only a relatively small number of changes were required in ACPICA to
2429support ACPI 6.1, in these areas:
2430- New predefined names
2431- New _HID values
2432- A new subtable for HEST
2433- A few other header changes for new values
2434
2435Ensure \_SB_._INI is executed before any _REG methods are executed. There
2436appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2437
2438Reverted a change made in version 20151218 which enabled method
2439invocations to be targets of various ASL operators (SuperName and Target
2440grammar elements). While the new behavior is supported by the ACPI
2441specification, other AML interpreters do not support this behavior and
2442never will. The ACPI specification will be updated for ACPI 6.2 to remove
2443this support. Therefore, the change was reverted to the original ACPICA
2444behavior.
2445
2446ACPICA now supports the GCC 6 compiler.
2447
2448Current 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
2451Previous Release:
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
2454
2455
24562) iASL Compiler/Disassembler and Tools:
2457
2458Completed full support for the ACPI 6.0 External() AML opcode. The
2459compiler emits an external AML opcode for each ASL External statement.
2460This opcode is used by the disassembler to assist with the disassembly of
2461external control methods by specifying the required number of arguments
2462for the method. AML interpreters do not use this opcode. To ensure that
2463interpreters do not even see the opcode, a block of one or more external
2464opcodes is surrounded by an "If(0)" construct. As this feature becomes
2465commonly deployed in BIOS code, the ability of disassemblers to correctly
2466disassemble AML code will be greatly improved. David Box.
2467
2468iASL: Implemented support for an optional cross-reference output file.
2469The -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
2474
2475iASL: Method invocations as ASL Target operands are now disallowed and
2476flagged as errors in preparation for ACPI 6.2 (see the description of the
2477problem above).
2478
2479----------------------------------------
24808 January 2016. Summary of changes for version 20160108:
2481
24821) ACPICA kernel-resident subsystem:
2483
2484Updated all ACPICA copyrights and signons to 2016: Added the 2016
2485copyright to all source code module headers and utility/tool signons.
2486This includes the standard Linux dual-license header. This affects
2487virtually every file in the ACPICA core subsystem, iASL compiler, all
2488ACPICA utilities, and the ACPICA test suite.
2489
2490Fixed a regression introduced in version 20151218 concerning the
2491execution of so-called module-level ASL/AML code. Namespace objects
2492created under a module-level If() construct were not properly/fully
2493entered into the namespace and could cause an interpreter fault when
2494accessed.
2495
2496Example Code and Data Size: These are the sizes for the OS-independent
2497acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2498debug version of the code includes the debug output trace mechanism and
2499has a much larger code and data size.
2500
2501Current Release:
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
2504  Previous Release:
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
2507
2508
25092) iASL Compiler/Disassembler and Tools:
2510
2511Fixed a problem with the compilation of the GpioIo and GpioInt resource
2512descriptors. The _PIN field name was incorrectly defined to be an array
2513of 32-bit values, but the _PIN values are in fact 16 bits each. This
2514would cause incorrect bit width warnings when using Word (16-bit) fields
2515to access the descriptors.
2516
2517
2518----------------------------------------
251918 December 2015. Summary of changes for version 20151218:
2520
25211) ACPICA kernel-resident subsystem:
2522
2523Implemented per-AML-table execution of "module-level code" as individual
2524ACPI tables are loaded into the namespace during ACPICA initialization.
2525In other words, any module-level code within an AML table is executed
2526immediately after the table is loaded, instead of batched and executed
2527after all of the tables have been loaded. This provides compatibility
2528with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2529David Box.
2530
2531To fully support the feature above, the default operation region handlers
2532for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2533installed before any ACPI tables are loaded. This enables module-level
2534code to access these address spaces during the table load and module-
2535level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2536Box.
2537
2538Implemented several changes to the internal _REG support in conjunction
2539with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2540utilities for the changes above. Although these tools were changed, host
2541operating systems that simply use the default handlers for SystemMemory,
2542SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2543
2544For example, in the code below, DEV1 is conditionally added to the
2545namespace by the DSDT via module-level code that accesses an operation
2546region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2547created immediately after the DSDT is loaded in order for the SSDT to
2548successfully reference DEV1. Previously, this code would cause an
2549AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2550fully supported by ACPICA.
2551
2552    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2553    {
2554        OperationRegion (OPR1, SystemMemory, 0x400, 32)
2555        Field (OPR1, AnyAcc, NoLock, Preserve)
2556        {
2557            FLD1, 1
2558        }
2559        If (FLD1)
2560        {
2561            Device (\DEV1)
2562            {
2563            }
2564        }
2565    }
2566    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2567    {
2568        External (\DEV1, DeviceObj)
2569        Scope (\DEV1)
2570        {
2571        }
2572    }
2573
2574Fixed an AML interpreter problem where control method invocations were
2575not handled correctly when the invocation was itself a SuperName argument
2576to another ASL operator. In these cases, the method was not invoked.
2577ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2578argument:
2579    Store
2580    Acquire, Wait
2581    CondRefOf, RefOf
2582    Decrement, Increment
2583    Load, Unload
2584    Notify
2585    Signal, Release, Reset
2586    SizeOf
2587
2588Implemented automatic String-to-ObjectReference conversion support for
2589packages returned by predefined names (such as _DEP). A common BIOS error
2590is to add double quotes around an ObjectReference namepath, which turns
2591the reference into an unexpected string object. This support detects the
2592problem and corrects it before the package is returned to the caller that
2593invoked the method. Lv Zheng.
2594
2595Implemented extensions to the Concatenate operator. Concatenate now
2596accepts any type of object, it is not restricted to simply
2597Integer/String/Buffer. For objects other than these 3 basic data types,
2598the argument is treated as a string containing the name of the object
2599type. This expands the utility of Concatenate and the Printf/Fprintf
2600macros. ACPICA BZ 1222.
2601
2602Cleaned up the output of the ASL Debug object. The timer() value is now
2603optional and no longer emitted by default. Also, the basic data types of
2604Integer/String/Buffer are simply emitted as their values, without a data
2605type string -- since the data type is obvious from the output. ACPICA BZ
26061221.
2607
2608Example Code and Data Size: These are the sizes for the OS-independent
2609acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2610debug version of the code includes the debug output trace mechanism and
2611has a much larger code and data size.
2612
2613  Current Release:
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
2616  Previous Release:
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
2619
2620
26212) iASL Compiler/Disassembler and Tools:
2622
2623iASL: Fixed some issues with the ASL Include() operator. This operator
2624was incorrectly defined in the iASL parser rules, causing a new scope to
2625be opened for the code within the include file. This could lead to
2626several issues, including allowing ASL code that is technically illegal
2627and not supported by AML interpreters. Note, this does not affect the
2628related #include preprocessor operator. ACPICA BZ 1212.
2629
2630iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2631operator is essentially an ASL macro since there is no AML opcode
2632associated with it. The code emitted by the iASL compiler for ElseIf is
2633an Else opcode followed immediately by an If opcode. The disassembler
2634will now emit an ElseIf if it finds an Else immediately followed by an
2635If. This simplifies the decoded ASL, especially for deeply nested
2636If..Else and large Switch constructs. Thus, the disassembled code more
2637closely follows the original source ASL. ACPICA BZ 1211. Example:
2638
2639    Old disassembly:
2640        Else
2641        {
2642            If (Arg0 == 0x02)
2643            {
2644                Local0 = 0x05
2645            }
2646        }
2647
2648    New disassembly:
2649        ElseIf (Arg0 == 0x02)
2650        {
2651            Local0 = 0x05
2652        }
2653
2654AcpiExec: Added support for the new module level code behavior and the
2655early region installation. This required a small change to the
2656initialization, since AcpiExec must install its own operation region
2657handlers.
2658
2659AcpiExec: Added support to make the debug object timer optional. Default
2660is timer disabled. This cleans up the debug object output -- the timer
2661data is rarely used.
2662
2663AcpiExec: Multiple ACPI tables are now loaded in the order that they
2664appear on the command line. This can be important when there are
2665interdependencies/references between the tables.
2666
2667iASL/Templates. Add support to generate template files with multiple
2668SSDTs within a single output file. Also added ommand line support to
2669specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
26701223, 1225.
2671
2672
2673----------------------------------------
267424 November 2015. Summary of changes for version 20151124:
2675
26761) ACPICA kernel-resident subsystem:
2677
2678Fixed a possible regression for a previous update to FADT handling. The
2679FADT no longer has a fixed table ID, causing some issues with code that
2680was hardwired to a specific ID. Lv Zheng.
2681
2682Fixed a problem where the method auto-serialization could interfere with
2683the current SyncLevel. This change makes the auto-serialization support
2684transparent to the SyncLevel support and management.
2685
2686Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2687interface is intended for early access to the namespace during the
2688initial namespace device discovery walk. The _SUB method has been seen to
2689access operation regions in some cases, causing errors because the
2690operation regions are not fully initialized.
2691
2692AML Debugger: Fixed some issues with the terminate/quit/exit commands
2693that can cause faults. Lv Zheng.
2694
2695AML Debugger: Add thread ID support so that single-step mode only applies
2696to the AML Debugger thread. This prevents runtime errors within some
2697kernels. Lv Zheng.
2698
2699Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2700methods that are invoked by this interface are optional, removed warnings
2701emitted for the case where one or more of these methods do not exist.
2702ACPICA BZ 1208, original change by Prarit Bhargava.
2703
2704Made a major pass through the entire ACPICA source code base to
2705standardize formatting that has diverged a bit over time. There are no
2706functional changes, but this will of course cause quite a few code
2707differences from the previous ACPICA release.
2708
2709Example Code and Data Size: These are the sizes for the OS-independent
2710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2711debug version of the code includes the debug output trace mechanism and
2712has a much larger code and data size.
2713
2714  Current Release:
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
2717  Previous Release:
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
2720
2721
27222) iASL Compiler/Disassembler and Tools:
2723
2724iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2725definition blocks within a single ASL file and the resulting AML file.
2726Support for this type of file was also added to the various tools that
2727use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2728example code below shows two definition blocks within the same file:
2729
2730    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
27310x12345678)
2732    {
2733    }
2734    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2735    {
2736    }
2737
2738iASL: Enhanced typechecking for the Name() operator. All expressions for
2739the value of the named object must be reduced/folded to a single constant
2740at compile time, as per the ACPI specification (the AML definition of
2741Name()).
2742
2743iASL: Fixed some code indentation issues for the -ic and -ia options (C
2744and assembly headers). Now all emitted code correctly begins in column 1.
2745
2746iASL: Added an error message for an attempt to open a Scope() on an
2747object defined in an SSDT. The DSDT is always loaded into the namespace
2748first, so any attempt to open a Scope on an SSDT object will fail at
2749runtime.
2750
2751
2752----------------------------------------
275330 September 2015. Summary of changes for version 20150930:
2754
27551) ACPICA kernel-resident subsystem:
2756
2757Debugger: Implemented several changes and bug fixes to assist support for
2758the 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.
2762
2763Interpreter: Updated runtime typechecking for all operators that have
2764target operands. The operand is resolved and validated that it is legal.
2765For example, the target cannot be a non-data object such as a Device,
2766Mutex, ThermalZone, etc., as per the ACPI specification.
2767
2768Debugger: Fixed the double-mutex user I/O handshake to work when local
2769deadlock detection is enabled.
2770
2771Debugger: limited display of method locals and arguments (LocalX and
2772ArgX) to only those that have actually been initialized. This prevents
2773lines of extraneous output.
2774
2775Updated the definition of the NFIT table to correct the bit polarity of
2776one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2777
2778Example Code and Data Size: These are the sizes for the OS-independent
2779acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2780debug version of the code includes the debug output trace mechanism and
2781has a much larger code and data size.
2782
2783  Current Release:
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
2786  Previous Release:
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
2789
2790
27912) iASL Compiler/Disassembler and Tools:
2792
2793iASL: Improved the compile-time typechecking for operands of many of the
2794ASL operators:
2795
2796-- Added an option to disable compiler operand/operator typechecking (-
2797ot).
2798
2799-- For the following operators, the TermArg operands are now validated
2800when possible to be Integer data objects: BankField, OperationRegion,
2801DataTableRegion, Buffer, and Package.
2802
2803-- Store (Source, Target): Both the source and target operands are
2804resolved and checked that the operands are both legal. For example,
2805neither operand can be a non-data object such as a Device, Mutex,
2806ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
2807operator can be used to store an object to any type of target object.
2808
2809-- Store (Source, Target): If the source is a Package object, the target
2810must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
2811is a Package, the source must also be a Package.
2812
2813-- Store (Source, Target): A warning is issued if the source and target
2814resolve to the identical named object.
2815
2816-- Store (Source, <method invocation>): An error is generated for the
2817target method invocation, as this construct is not supported by the AML
2818interpreter.
2819
2820-- For all ASL math and logic operators, the target operand must be a
2821data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
2822includes the function return value also.
2823
2824-- External declarations are also included in the typechecking where
2825possible. External objects defined using the UnknownObj keyword cannot be
2826typechecked, however.
2827
2828iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
2829operator:
2830- Legacy code: Index(PKG1, 3)
2831- New ASL+ code: PKG1[3]
2832This completes the ACPI 6.0 ASL+ support as it was the only operator not
2833supported.
2834
2835iASL: Fixed the file suffix for the preprocessor output file (.i). Two
2836spaces were inadvertently appended to the filename, causing file access
2837and deletion problems on some systems.
2838
2839ASL Test Suite (ASLTS): Updated the master makefile to generate all
2840possible compiler output files when building the test suite -- thus
2841exercising these features of the compiler. These files are automatically
2842deleted when the test suite exits.
2843
2844
2845----------------------------------------
284618 August 2015. Summary of changes for version 20150818:
2847
28481) ACPICA kernel-resident subsystem:
2849
2850Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
2851Zheng. ACPICA BZ 1186.
2852
2853Completed development to ensure that the ACPICA Disassembler and Debugger
2854are fully standalone components of ACPICA. Removed cross-component
2855dependences. Lv Zheng.
2856
2857The max-number-of-AML-loops is now runtime configurable (previously was
2858compile-time only). This is essentially a loop timeout to force-abort
2859infinite AML loops. ACPCIA BZ 1192.
2860
2861Debugger: Cleanup output to dump ACPI names and namepaths without any
2862trailing underscores. Lv Zheng. ACPICA BZ 1135.
2863
2864Removed unnecessary conditional compilations across the Debugger and
2865Disassembler components where entire modules could be left uncompiled.
2866
2867The aapits test is deprecated and has been removed from the ACPICA git
2868tree. The test has never been completed and has not been maintained, thus
2869becoming rather useless. ACPICA BZ 1015, 794.
2870
2871A 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
2876Moore.
2877- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
2878ACPICA BZ 1184.
2879- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
2880operators.
2881- Debugger: Split debugger initialization/termination interfaces. Lv
2882Zheng.
2883- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
2884identification.
2885- AcpiExec: Add debug message during _REG method phase during table
2886load/init.
2887- AcpiNames: Fix a regression where some output was missing and no longer
2888emitted.
2889- Debugger: General cleanup and simplification. Lv Zheng.
2890- Disassembler: Cleanup use of several global option variables. Lv Zheng.
2891
2892Example Code and Data Size: These are the sizes for the OS-independent
2893acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2894debug version of the code includes the debug output trace mechanism and
2895has a much larger code and data size.
2896
2897  Current Release:
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
2900  Previous Release:
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
2903
2904
29052) iASL Compiler/Disassembler and Tools:
2906
2907AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
2908were not handled properly and caused load errors. Now, properly invoke
2909and use the ACPICA auto-reallocate mechanism for ACPI table data
2910structures. ACPICA BZ 1188
2911
2912AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
2913BZ 1190.
2914
2915AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
2916AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
2917executed during initialization. ACPICA BZ 1187, 1189.
2918
2919iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
2920that corresponds to each disassembled ASL statement, to simplify
2921debugging. ACPICA BZ 1191.
2922
2923Debugger: Add option to the "objects" command to display a summary of the
2924current namespace objects (Object type and count). This is displayed if
2925the command is entered with no arguments.
2926
2927AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2928
2929
2930----------------------------------------
293117 July 2015. Summary of changes for version 20150717:
2932
29331) ACPICA kernel-resident subsystem:
2934
2935Improved the partitioning between the Debugger and Disassembler
2936components. This allows the Debugger to be used standalone within kernel
2937code without the Disassembler (which is used for single stepping also).
2938This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2939
2940Debugger: Implemented a new command to trace the execution of control
2941methods (Trace). This is especially useful for the in-kernel version of
2942the debugger when file I/O may not be available for method trace output.
2943See the ACPICA reference for more information. Lv Zheng.
2944
2945Moved all C library prototypes (used for the local versions of these
2946functions when requested) to a new header, acclib.h
2947Cleaned up the use of non-ANSI C library functions. These functions are
2948implemented locally in ACPICA. Moved all such functions to a common
2949source file, utnonansi.c
2950
2951Debugger: Fixed a problem with the "!!" command (get last command
2952executed) where the debugger could enter an infinite loop and eventually
2953crash.
2954
2955Removed the use of local macros that were used for some of the standard C
2956library functions to automatically cast input parameters. This mostly
2957affected the is* functions where the input parameter is defined to be an
2958int. This required a few modifications to the main ACPICA source code to
2959provide casting for these functions and eliminate possible compiler
2960warnings for these parameters.
2961
2962Across the source code, added additional status/error checking to resolve
2963issues discovered by static source code analysis tools such as Coverity.
2964
2965Example Code and Data Size: These are the sizes for the OS-independent
2966acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2967debug version of the code includes the debug output trace mechanism and
2968has a much larger code and data size.
2969
2970  Current Release:
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
2973  Previous Release:
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
2976
2977
29782) iASL Compiler/Disassembler and Tools:
2979
2980iASL: Fixed a regression where the device map file feature no longer
2981worked properly when used in conjunction with the disassembler. It only
2982worked properly with the compiler itself.
2983
2984iASL: Implemented a new warning for method LocalX variables that are set
2985but never used (similar to a C compiler such as gcc). This also applies
2986to ArgX variables that are not defined by the parent method, and are
2987instead (legally) used as local variables.
2988
2989iASL/Preprocessor: Finished the pass-through of line numbers from the
2990preprocessor to the compiler. This ensures that compiler errors/warnings
2991have the correct original line numbers and filenames, regardless of any
2992#include files.
2993
2994iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2995pass-through of comments to the preprocessor output file (which becomes
2996the compiler input file). Also fixed a problem with // comments that
2997appear after a math expression.
2998
2999iASL: Added support for the TCPA server table to the table compiler and
3000template generator. (The client table was already previously supported)
3001
3002iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3003identify the iASL compiler.
3004
3005Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3006multiple times. The new names are ACPI_SIGN_NEGATIVE and
3007ACPI_SIGN_POSITIVE.
3008
3009AcpiHelp: Update to expand help messages for the iASL preprocessor
3010directives.
3011
3012
3013----------------------------------------
301419 June 2015. Summary of changes for version 20150619:
3015
3016Two regressions in version 20150616 have been addressed:
3017
3018Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3019etc.) This update changes ACPICA to only use the standard headers for
3020functions, or the prototypes for the local versions of the C library
3021functions. Across the source code, this required some additional casts
3022for some Clib invocations for portability. Moved all local prototypes to
3023a new file, acclib.h
3024
3025Fixes several problems with recent changes to the handling of the FACS
3026table that could cause some systems not to boot.
3027
3028
3029----------------------------------------
303016 June 2015. Summary of changes for version 20150616:
3031
3032
30331) ACPICA kernel-resident subsystem:
3034
3035Across the entire ACPICA source code base, the various macros for the C
3036library functions (such as ACPI_STRLEN, etc.) have been removed and
3037replaced by the standard C library names (strlen, etc.) The original
3038purpose for these macros is no longer applicable. This simplification
3039reduces the number of macros used in the ACPICA source code
3040significantly, improving readability and maintainability.
3041
3042Implemented 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
3044enables the replacement of existing namespace objects that were installed
3045via the DSDT and/or SSDTs. The primary purpose for this is to replace
3046buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3047for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3048Moore.
3049
3050Added support for systems with (improperly) two FACS tables -- a "32-bit"
3051table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3052X field). This change will support both automatically. There continues to
3053be systems found with this issue. This support requires a change to the
3054AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3055been added to allow the host to select which FACS is desired
3056(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3057details Lv Zheng.
3058
3059Added a new feature to allow for systems that do not contain an FACS.
3060Although this is already supported on hardware-reduced platforms, the
3061feature has been extended for all platforms. The reasoning is that we do
3062not want to abort the entire ACPICA initialization just because the
3063system is seriously buggy and has no FACS.
3064
3065Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3066not correctly transcribed from the ACPI specification in ACPICA version
306720150515.
3068
3069Implemented support for the _CLS object in the AcpiGetObjectInfo external
3070interface.
3071
3072Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3073recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3074compiler also updated. Note: The TCPA "server" table is not supported by
3075the disassembler/table-compiler at this time.
3076
3077ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3078
3079Example Code and Data Size: These are the sizes for the OS-independent
3080acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3081debug version of the code includes the debug output trace mechanism and
3082has a much larger code and data size.
3083
3084  Current Release:
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
3087  Previous Release:
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
3090
3091
30922) iASL Compiler/Disassembler and Tools:
3093
3094Disassembler: Fixed a problem with the new symbolic operator disassembler
3095where incorrect ASL code could be emitted in some cases for the "non-
3096commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3097ShiftRight. The actual problem cases seem to be rather unusual in common
3098ASL code, however. David Box.
3099
3100Modified the linux version of acpidump to obtain ACPI tables from not
3101just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3102Zheng.
3103
3104iASL: Fixed a problem where the user preprocessor output file (.i)
3105contained extra data that was not expected. The compiler was using this
3106file as a temporary file and passed through #line directives in order to
3107keep compiler error messages in sync with the input file and line number
3108across multiple include files. The (.i) is no longer a temporary file as
3109the compiler uses a new, different file for the original purpose.
3110
3111iASL: Fixed a problem where comments within the original ASL source code
3112file were not passed through to the preprocessor output file, nor any
3113listing files.
3114
3115iASL: Fixed some issues for the handling of the "#include" preprocessor
3116directive and the similar (but not the same) "Include" ASL operator.
3117
3118iASL: Add support for the new OSDT in both the disassembler and compiler.
3119
3120iASL: Fixed a problem with the constant folding support where a Buffer
3121object could be incorrectly generated (incorrectly formed) during a
3122conversion to a Store() operator.
3123
3124AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3125description text for the _REV predefined name. _REV now permanently
3126returns 2, as per the ACPI 6.0 specification.
3127
3128Debugger: Enhanced the output of the Debug ASL object for references
3129produced by the Index operator. For Buffers and strings, only output the
3130actual byte pointed to by the index. For packages, only print the single
3131package element decoded by the index. Previously, the entire
3132buffer/string/package was emitted.
3133
3134iASL/Table-compiler: Fixed a regression where the "generic" data types
3135were no longer recognized, causing errors.
3136
3137
3138----------------------------------------
313915 May 2015. Summary of changes for version 20150515:
3140
3141This release implements most of ACPI 6.0 as described below.
3142
31431) ACPICA kernel-resident subsystem:
3144
3145Implemented runtime argument checking and return value checking for all
3146new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3147_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3148
3149Example Code and Data Size: These are the sizes for the OS-independent
3150acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3151debug version of the code includes the debug output trace mechanism and
3152has a much larger code and data size.
3153
3154  Current Release:
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
3157  Previous Release:
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
3160
3161
31622) iASL Compiler/Disassembler and Tools:
3163
3164iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3165names (argument count validation and return value typechecking.)
3166
3167iASL disassembler and table compiler: implemented support for all new
3168ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3169
3170iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3171tables: FADT, MADT.
3172
3173iASL preprocessor: Added a new directive to enable inclusion of binary
3174blobs into ASL code. The new directive is #includebuffer. It takes a
3175binary file as input and emits a named ascii buffer object into the ASL
3176code.
3177
3178AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3179
3180AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3181directives.
3182
3183AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3184tables.
3185
3186
3187----------------------------------------
318810 April 2015. Summary of changes for version 20150410:
3189
3190Reverted a change introduced in version 20150408 that caused
3191a regression in the disassembler where incorrect operator
3192symbols could be emitted.
3193
3194
3195----------------------------------------
319608 April 2015. Summary of changes for version 20150408:
3197
3198
31991) ACPICA kernel-resident subsystem:
3200
3201Permanently set the return value for the _REV predefined name. It now
3202returns 2 (was 5). This matches other ACPI implementations. _REV will be
3203deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3204for ACPI 2.0 and later. It should never be used to differentiate or
3205identify operating systems.
3206
3207Added the "Windows 2015" string to the _OSI support. ACPICA will now
3208return TRUE to a query with this string.
3209
3210Fixed several issues with the local version of the printf function.
3211
3212Added the C99 compiler option (-std=c99) to the Unix makefiles.
3213
3214  Current Release:
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
3217  Previous Release:
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
3220
3221
32222) iASL Compiler/Disassembler and Tools:
3223
3224iASL: Implemented an enhancement to the constant folding feature to
3225transform 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)
3228
3229Updated support for the SLIC table (Software Licensing Description Table)
3230in both the Data Table compiler and the disassembler. The SLIC table
3231support now conforms to "Microsoft Software Licensing Tables (SLIC and
3232MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3233following the ACPI header is now defined to be "Proprietary Data", and as
3234such, can only be entered or displayed as a hex data block.
3235
3236Implemented full support for the MSDM table as described in the document
3237above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3238following the ACPI header is defined to be "Proprietary Data", and can
3239only be entered or displayed as a hex data block.
3240
3241Implemented the -Pn option for the iASL Table Compiler (was only
3242implemented for the ASL compiler). This option disables the iASL
3243preprocessor.
3244
3245Disassembler: For disassembly of Data Tables, added a comment field
3246around the Ascii equivalent data that is emitted as part of the "Raw
3247Table Data" block. This prevents the iASL Preprocessor from possible
3248confusion if/when the table is compiled.
3249
3250Disassembler: Added an option (-df) to force the disassembler to assume
3251that the table being disassembled contains valid AML. This feature is
3252useful for disassembling AML files that contain ACPI signatures other
3253than DSDT or SSDT (such as OEMx or other signatures).
3254
3255Changes for the EFI version of the tools:
32561) Fixed a build error/issue
32572) Fixed a cast warning
3258
3259iASL: Fixed a path issue with the __FILE__ operator by making the
3260directory prefix optional within the internal SplitInputFilename
3261function.
3262
3263Debugger: Removed some unused global variables.
3264
3265Tests: Updated the makefile for proper generation of the AAPITS suite.
3266
3267
3268----------------------------------------
326904 February 2015. Summary of changes for version 20150204:
3270
3271ACPICA kernel-resident subsystem:
3272
3273Updated all ACPICA copyrights and signons to 2014. Added the 2014
3274copyright to all module headers and signons, including the standard Linux
3275header. This affects virtually every file in the ACPICA core subsystem,
3276iASL compiler, all ACPICA utilities, and the test suites.
3277
3278Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3279A raw gpe handling mechanism was created to allow better handling of GPE
3280storms that aren't easily managed by the normal handler. The raw handler
3281allows disabling/renabling of the the GPE so that interrupt storms can be
3282avoided in cases where events cannot be timely serviced. In this
3283scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3284GPE. This API will leave the reference counts undisturbed, thereby
3285preventing unintentional clearing of the GPE when the intent in only to
3286temporarily disable it. Raw handlers allow enabling and disabling of a
3287GPE by removing GPE register locking. As such, raw handlers much provide
3288their own locks while using GPE API's to protect access to GPE data
3289structures.
3290Lv Zheng
3291
3292Events: Always modify GPE registers under the GPE lock.
3293Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3294values. Reported as bug by joe.liu@apple.com.
3295
3296Unix makefiles: Separate option to disable optimizations and
3297_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3298NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3299purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3300errors when building ACPICA. This allows disabling the option without
3301also having to disable optimazations.
3302David Box
3303
3304  Current Release:
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
3307
3308--
3309--------------------------------------
331007 November 2014. Summary of changes for version 20141107:
3311
3312This release is available at https://acpica.org/downloads
3313
3314This release introduces and implements language extensions to ASL that
3315provide support for symbolic ("C-style") operators and expressions. These
3316language extensions are known collectively as ASL+.
3317
3318
33191) iASL Compiler/Disassembler and Tools:
3320
3321Disassembler: Fixed a problem with disassembly of the UartSerialBus
3322macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3323Box.
3324
3325Disassembler: Fixed the Unicode macro support to add escape sequences.
3326All non-printable ASCII values are emitted as escape sequences, as well
3327as the standard escapes for quote and backslash. Ensures that the
3328disassembled macro can be correctly recompiled.
3329
3330iASL: Added Printf/Fprintf macros for formatted output. These macros are
3331translated to existing AML Concatenate and Store operations. Printf
3332writes to the ASL Debug object. Fprintf allows the specification of an
3333ASL name as the target. Only a single format specifier is required, %o,
3334since the AML interpreter dynamically converts objects to the required
3335type. David E. Box.
3336
3337    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3338                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3339                 ": Unexpected value for "), Arg1), ", "), Arg2),
3340                 " at line "), Arg3), Debug)
3341
3342    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3343                 Arg0, Arg1, Arg2, Arg3)
3344
3345    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3346                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3347
3348    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3349
3350iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3351ASL parse tree before the AML code is generated. This allows blocks of
3352ASL code to be removed in order to help locate and identify problem
3353devices and/or code. David E. Box.
3354
3355AcpiExec: Added support (-fi) for an optional namespace object
3356initialization file. This file specifies initial values for namespace
3357objects as necessary for debugging and testing different ASL code paths
3358that may be taken as a result of BIOS options.
3359
3360
33612) Overview of symbolic operator support for ASL (ASL+)
3362-------------------------------------------------------
3363
3364As an extension to the ASL language, iASL implements support for symbolic
3365(C-style) operators for math and logical expressions. This can greatly
3366simplify ASL code as well as improve both readability and
3367maintainability. These language extensions can exist concurrently with
3368all legacy ASL code and expressions.
3369
3370The symbolic extensions are 100% compatible with existing AML
3371interpreters, since no new AML opcodes are created. To implement the
3372extensions, the iASL compiler transforms the symbolic expressions into
3373the legacy ASL/AML equivalents at compile time.
3374
3375Full symbolic expressions are supported, along with the standard C
3376precedence and associativity rules.
3377
3378Full disassembler support for the symbolic expressions is provided, and
3379creates an automatic migration path for existing ASL code to ASL+ code
3380via the disassembly process. By default, the disassembler now emits ASL+
3381code with symbolic expressions. An option (-dl) is provided to force the
3382disassembler to emit legacy ASL code if desired.
3383
3384Below is the complete list of the currently supported symbolic operators
3385with examples. See the iASL User Guide for additional information.
3386
3387
3388ASL+ Syntax      Legacy ASL Equivalent
3389-----------      ---------------------
3390
3391    // Math operators
3392
3393Z = X + Y        Add (X, Y, Z)
3394Z = X - Y        Subtract (X, Y, Z)
3395Z = X * Y        Multiply (X, Y, Z)
3396Z = X / Y        Divide (X, Y, , Z)
3397Z = X % Y        Mod (X, Y, Z)
3398Z = X << Y       ShiftLeft (X, Y, Z)
3399Z = X >> Y       ShiftRight (X, Y, Z)
3400Z = X & Y        And (X, Y, Z)
3401Z = X | Y        Or (X, Y, Z)
3402Z = X ^ Y        Xor (X, Y, Z)
3403Z = ~X           Not (X, Z)
3404X++              Increment (X)
3405X--              Decrement (X)
3406
3407    // Logical operators
3408
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)
3416(X || Y)         LOr (X, Y)
3417(!X)             LNot (X)
3418
3419    // Assignment and compound assignment operations
3420
3421X = Y           Store (Y, X)
3422X += Y          Add (X, Y, X)
3423X -= Y          Subtract (X, Y, X)
3424X *= Y          Multiply (X, Y, X)
3425X /= Y          Divide (X, Y, , X)
3426X %= Y          Mod (X, Y, X)
3427X <<= Y         ShiftLeft (X, Y, X)
3428X >>= Y         ShiftRight (X, Y, X)
3429X &= Y          And (X, Y, X)
3430X |= Y          Or (X, Y, X)
3431X ^= Y          Xor (X, Y, X)
3432
3433
34343) ASL+ Examples:
3435-----------------
3436
3437Legacy ASL:
3438        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3439            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
34400x03FB),
3441            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3442        {
3443            And (MEMB, 0xFFFFFFF0, SRMB)
3444            Store (MEMB, Local2)
3445            Store (PDBM, Local1)
3446            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3447            Store (SRMB, MEMB)
3448            Or (PDBM, 0x02, PDBM)
3449        }
3450
3451ASL+ version:
3452        If (((R510 & 0x03FB) == 0x02E0) ||
3453            ((R520 & 0x03FB) == 0x02E0) ||
3454            ((R530 & 0x03FB) == 0x02E0) ||
3455            ((R540 & 0x03FB) == 0x02E0))
3456        {
3457            SRMB = (MEMB & 0xFFFFFFF0)
3458            Local2 = MEMB
3459            Local1 = PDBM
3460            PDBM &= 0xFFFFFFFFFFFFFFF9
3461            MEMB = SRMB
3462            PDBM |= 0x02
3463        }
3464
3465Legacy ASL:
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)
3475
3476ASL+ version:
3477        Local1 = 0x1234
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))
3486
3487
3488----------------------------------------
348926 September 2014. Summary of changes for version 20140926:
3490
34911) ACPICA kernel-resident subsystem:
3492
3493Updated the GPIO operation region handler interface (GeneralPurposeIo).
3494In order to support GPIO Connection objects with multiple pins, along
3495with the related Field objects, the following changes to the interface
3496have been made: The Address is now defined to be the offset in bits of
3497the field unit from the previous invocation of a Connection. It can be
3498viewed as a "Pin Number Index" into the connection resource descriptor.
3499The BitWidth is the exact bit width of the field. It is usually one bit,
3500but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3501additional information and examples.
3502
3503GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3504corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3505by the firmware), so that they cannot fire until they are enabled via
3506AcpiUpdateAllGpes. Rafael J. Wysocki.
3507
3508Added a new return flag for the Event/GPE status interfaces --
3509AcpiGetEventStatus and AcpiGetGpeStatus. The new
3510ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3511GPE currently has a handler associated with it, and can thus actually
3512affect the system. Lv Zheng.
3513
3514Example Code and Data Size: These are the sizes for the OS-independent
3515acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3516debug version of the code includes the debug output trace mechanism and
3517has a much larger code and data size.
3518
3519  Current Release:
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
3522  Previous Release:
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
3525
35262) iASL Compiler/Disassembler and Tools:
3527
3528iASL: Fixed a memory allocation/free regression introduced in 20140828
3529that could cause the compiler to crash. This was introduced inadvertently
3530during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
35311113.
3532
3533iASL: Removed two error messages that have been found to create false
3534positives, until they can be fixed and fully validated (ACPICA BZ 1112):
35351) Illegal forward reference within a method
35362) Illegal reference across two methods
3537
3538iASL: Implemented a new option (-lm) to create a hardware mapping file
3539that summarizes all GPIO, I2C, SPI, and UART connections. This option
3540works for both the compiler and disassembler. See the iASL compiler user
3541guide for additional information and examples (section 6.4.6).
3542
3543AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3544version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3545a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3546
3547AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3548unless STDIN is actually a terminal. Assists with batch-mode processing.
3549ACPICA BZ 1114.
3550
3551Disassembler/AcpiHelp: Added another large group of recognized _HID
3552values.
3553
3554
3555----------------------------------------
355628 August 2014. Summary of changes for version 20140828:
3557
35581) ACPICA kernel-resident subsystem:
3559
3560Fixed a problem related to the internal use of the Timer() operator where
3561a 64-bit divide could cause an attempted link to a double-precision math
3562library. This divide is not actually necessary, so the code was
3563restructured to eliminate it. Lv Zheng.
3564
3565ACPI 5.1: Added support for the runtime validation of the _DSD package
3566(similar to the iASL support).
3567
3568ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3569SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3570
3571Example Code and Data Size: These are the sizes for the OS-independent
3572acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3573debug version of the code includes the debug output trace mechanism and
3574has a much larger code and data size.
3575
3576  Current Release:
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
3579  Previous Release:
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
3582
35832) iASL Compiler/Disassembler and Tools:
3584
3585AcpiExec: Fixed a problem on unix systems where the original terminal
3586state was not always properly restored upon exit. Seen when using the -v
3587option. ACPICA BZ 1104.
3588
3589iASL: Fixed a problem with the validation of the ranges/length within the
3590Memory24 resource descriptor. There was a boundary condition when the
3591range was equal to the (length -1) caused by the fact that these values
3592are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3593
3594Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3595polarity
3596flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3597is
3598now supported properly.
3599
3600ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3601in the disassembler, data table compiler, and table template generator.
3602
3603iASL: Added a requirement for Device() objects that one of either a _HID
3604or _ADR must exist within the scope of a Device, as per the ACPI
3605specification. Remove a similar requirement that was incorrectly in place
3606for the _DSD object.
3607
3608iASL: Added error detection for illegal named references within control
3609methods that would cause runtime failures. Now trapped as errors are: 1)
3610References to objects within a non-parent control method. 2) Forward
3611references (within a method) -- for control methods, AML interpreters use
3612a one-pass parse of control methods. ACPICA BZ 1008.
3613
3614iASL: Added error checking for dependencies related to the _PSx power
3615methods. ACPICA BZ 1029.
36161) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3617_PS3.
36182) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3619scope.
3620
3621iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3622deploying the existing object and string caches and adding new caches for
3623the table compiler.
3624
3625iASL: Split the huge parser source file into multiple subfiles to improve
3626manageability. Generation now requires the M4 macro preprocessor, which
3627is part of the Bison distribution on both unix and windows platforms.
3628
3629AcpiSrc: Fixed and removed all extraneous warnings generated during
3630entire ACPICA source code scan and/or conversion.
3631
3632
3633----------------------------------------
3634
363524 July 2014. Summary of changes for version 20140724:
3636
3637The ACPI 5.1 specification has been released and is available at:
3638http://uefi.org/specs/access
3639
3640
36410) ACPI 5.1 support in ACPICA:
3642
3643ACPI 5.1 is fully supported in ACPICA as of this release.
3644
3645New predefined names. Support includes iASL and runtime ACPICA
3646validation.
3647    _CCA (Cache Coherency Attribute).
3648    _DSD (Device-Specific Data). David Box.
3649
3650Modifications to existing ACPI tables. Support includes headers, iASL
3651Data 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.
3656
3657Miscellaneous.
3658    New notification type for System Resource Affinity change events.
3659
3660
36611) ACPICA kernel-resident subsystem:
3662
3663Fixed a regression introduced in 20140627 where a fault can happen during
3664the deletion of Alias AML namespace objects. The problem affected both
3665the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3666
3667Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3668simple mechanism to enable wake GPEs that have no associated handler or
3669control method. Rafael Wysocki.
3670
3671Updated the AcpiEnableGpe interface to disallow the enable if there is no
3672handler or control method associated with the particular GPE. This will
3673help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3674
3675Updated GPE handling and dispatch by disabling the GPE before clearing
3676the status bit for edge-triggered GPEs. Lv Zheng.
3677
3678Added Timer() support to the AML Debug object. The current timer value is
3679now displayed with each invocation of (Store to) the debug object to
3680enable simple generation of execution times for AML code (method
3681execution for example.) ACPICA BZ 1093.
3682
3683Example Code and Data Size: These are the sizes for the OS-independent
3684acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3685debug version of the code includes the debug output trace mechanism and
3686has a much larger code and data size.
3687
3688  Current Release:
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
3691  Previous Release:
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
3694
3695
36962) iASL Compiler/Disassembler and Tools:
3697
3698Fixed an issue with the recently added local printf implementation,
3699concerning width/precision specifiers that could cause incorrect output.
3700Lv Zheng. ACPICA BZ 1094.
3701
3702Disassembler: Added support to detect buffers that contain UUIDs and
3703disassemble them to an invocation of the ToUUID operator. Also emit
3704commented descriptions of known ACPI-related UUIDs.
3705
3706AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3707-u. Adds three new files.
3708
3709iASL: Update table compiler and disassembler for DMAR table changes that
3710were introduced in September 2013. With assistance by David Woodhouse.
3711
3712----------------------------------------
371327 June 2014. Summary of changes for version 20140627:
3714
37151) ACPICA kernel-resident subsystem:
3716
3717Formatted Output: Implemented local versions of standard formatted output
3718utilities such as printf, etc. Over time, it has been discovered that
3719there are in fact many portability issues with printf, and the addition
3720of this feature will fix/prevent these issues once and for all. Some
3721known issues are summarized below:
3722
37231) Output of 64-bit values is not portable. For example, UINT64 is %ull
3724for the Linux kernel and is %uI64 for some MSVC versions.
37252) Invoking printf consistently in a manner that is portable across both
372632-bit and 64-bit platforms is difficult at best in many situations.
37273) The output format for pointers varies from system to system (leading
3728zeros especially), and leads to inconsistent output from ACPICA across
3729platforms.
37304) Certain platform-specific printf formats may conflict with ACPICA use.
37315) If there is no local C library available, ACPICA now has local support
3732for printf.
3733
3734-- To address these printf issues in a complete manner, ACPICA now
3735directly implements a small subset of printf format specifiers, only
3736those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3737
3738Implemented support for ACPICA generation within the EFI environment.
3739Initially, the AcpiDump utility is supported in the UEFI shell
3740environment. Lv Zheng.
3741
3742Added a new external interface, AcpiLogError, to improve ACPICA
3743portability. This allows the host to redirect error messages from the
3744ACPICA utilities. Lv Zheng.
3745
3746Added and deployed new OSL file I/O interfaces to improve ACPICA
3747portability:
3748  AcpiOsOpenFile
3749  AcpiOsCloseFile
3750  AcpiOsReadFile
3751  AcpiOsWriteFile
3752  AcpiOsGetFileOffset
3753  AcpiOsSetFileOffset
3754There are C library implementations of these functions in the new file
3755service_layers/oslibcfs.c -- however, the functions can be implemented by
3756the local host in any way necessary. Lv Zheng.
3757
3758Implemented a mechanism to disable/enable ACPI table checksum validation
3759at runtime. This can be useful when loading tables very early during OS
3760initialization when it may not be possible to map the entire table in
3761order to compute the checksum. Lv Zheng.
3762
3763Fixed a buffer allocation issue for the Generic Serial Bus support.
3764Originally, a fixed buffer length was used. This change allows for
3765variable-length buffers based upon the protocol indicated by the field
3766access attributes. Reported by Lan Tianyu. Lv Zheng.
3767
3768Fixed a problem where an object detached from a namespace node was not
3769properly terminated/cleared and could cause a circular list problem if
3770reattached. ACPICA BZ 1063. David Box.
3771
3772Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3773
3774Fixed a possible memory leak in an error return path within the function
3775AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3776
3777Example Code and Data Size: These are the sizes for the OS-independent
3778acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3779debug version of the code includes the debug output trace mechanism and
3780has a much larger code and data size.
3781
3782  Current Release:
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
3785  Previous Release:
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
3788
3789
37902) iASL Compiler/Disassembler and Tools:
3791
3792Disassembler: Add dump of ASCII equivalent text within a comment at the
3793end of each line of the output for the Buffer() ASL operator.
3794
3795AcpiDump: 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
3798the ACPI 2.0 GUID fails.
3799
3800iASL: Fixed a problem where the compiler could fault if incorrectly given
3801an acpidump output file as input. ACPICA BZ 1088. David Box.
3802
3803AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
3804they are invoked without any arguments.
3805
3806Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
38071086. Colin Ian King.
3808
3809Disassembler: Cleaned up a block of code that extracts a parent Op
3810object. Added a comment that explains that the parent is guaranteed to be
3811valid in this case. ACPICA BZ 1069.
3812
3813
3814----------------------------------------
381524 April 2014. Summary of changes for version 20140424:
3816
38171) ACPICA kernel-resident subsystem:
3818
3819Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
3820Some of these tables are known to contain a trailing NULL entry. Lv
3821Zheng.
3822
3823Removed an extraneous error message for the case where there are a large
3824number of system GPEs (> 124). This was the "32-bit FADT register is too
3825long to convert to GAS struct" message, which is irrelevant for GPEs
3826since 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
3828support for GPE numbers > 255, where some "GPE number" fields were 8-bits
3829internally.
3830
3831Implemented and deployed additional configuration support for the public
3832ACPICA external interfaces. Entire classes of interfaces can now be
3833easily modified or configured out, replaced by stubbed inline functions
3834by default. Lv Zheng.
3835
3836Moved all public ACPICA runtime configuration globals to the public
3837ACPICA external interface file for convenience. Also, removed some
3838obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3839
3840Documentation: Added a new section to the ACPICA reference describing the
3841maximum number of GPEs that can be supported by the FADT-defined GPEs in
3842block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
3843reference.
3844
3845Example Code and Data Size: These are the sizes for the OS-independent
3846acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3847debug version of the code includes the debug output trace mechanism and
3848has a much larger code and data size.
3849
3850  Current Release:
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
3853  Previous Release:
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
3856
3857
38582) iASL Compiler/Disassembler and Tools:
3859
3860iASL and disassembler: Add full support for the LPIT table (Low Power
3861Idle Table). Includes support in the disassembler, data table compiler,
3862and template generator.
3863
3864AcpiDump utility:
38651) Add option to force the use of the RSDT (over the XSDT).
38662) Improve validation of the RSDP signature (use 8 chars instead of 4).
3867
3868iASL: Add check for predefined packages that are too large.  For
3869predefined names that contain subpackages, check if each subpackage is
3870too large. (Check for too small already exists.)
3871
3872Debugger: Updated the GPE command (which simulates a GPE by executing the
3873GPE code paths in ACPICA). The GPE device is now optional, and defaults
3874to the GPE 0/1 FADT-defined blocks.
3875
3876Unix application OSL: Update line-editing support. Add additional error
3877checking and take care not to reset terminal attributes on exit if they
3878were never set. This should help guarantee that the terminal is always
3879left in the previous state on program exit.
3880
3881
3882----------------------------------------
388325 March 2014. Summary of changes for version 20140325:
3884
38851) ACPICA kernel-resident subsystem:
3886
3887Updated the auto-serialize feature for control methods. This feature
3888automatically serializes all methods that create named objects in order
3889to prevent runtime errors. The update adds support to ignore the
3890currently executing AML SyncLevel when invoking such a method, in order
3891to prevent disruption of any existing SyncLevel priorities that may exist
3892in the AML code. Although the use of SyncLevels is relatively rare, this
3893change fixes a regression where an AE_AML_MUTEX_ORDER exception can
3894appear on some machines starting with the 20140214 release.
3895
3896Added a new external interface to allow the host to install ACPI tables
3897very early, before the namespace is even created. AcpiInstallTable gives
3898the host additional flexibility for ACPI table management. Tables can be
3899installed directly by the host as if they had originally appeared in the
3900XSDT/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
3902with additional internal restructuring and cleanup. See the ACPICA
3903Reference for interface details. Lv Zheng.
3904
3905Added validation of the checksum for all incoming dynamically loaded
3906tables (via external interfaces or via AML Load/LoadTable operators). Lv
3907Zheng.
3908
3909Updated the use of the AcpiOsWaitEventsComplete interface during Notify
3910and GPE handler removal. Restructured calls to eliminate possible race
3911conditions. Lv Zheng.
3912
3913Added a warning for the use/execution of the ASL/AML Unload (table)
3914operator. This will help detect and identify machines that use this
3915operator if and when it is ever used. This operator has never been seen
3916in the field and the usage model and possible side-effects of the drastic
3917runtime action of a full table removal are unknown.
3918
3919Reverted the use of #pragma push/pop which was introduced in the 20140214
3920release. It appears that push and pop are not implemented by enough
3921compilers to make the use of this feature feasible for ACPICA at this
3922time. However, these operators may be deployed in a future ACPICA
3923release.
3924
3925Added the missing EXPORT_SYMBOL macros for the install and remove SCI
3926handler interfaces.
3927
3928Source code generation:
39291) Disabled the use of the "strchr" macro for the gcc-specific
3930generation. For some versions of gcc, this macro can periodically expose
3931a compiler bug which in turn causes compile-time error(s).
39322) Added support for PPC64 compilation. Colin Ian King.
3933
3934Example Code and Data Size: These are the sizes for the OS-independent
3935acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3936debug version of the code includes the debug output trace mechanism and
3937has a much larger code and data size.
3938
3939  Current Release:
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
3942  Previous Release:
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
3945
3946
39472) iASL Compiler/Disassembler and Tools:
3948
3949Disassembler: Added several new features to improve the readability of
3950the resulting ASL code. Extra information is emitted within comment
3951fields in the ASL code:
39521) Known _HID/_CID values are decoded to descriptive text.
39532) Standard values for the Notify() operator are decoded to descriptive
3954text.
39553) Target operands are expanded to full pathnames (in a comment) when
3956possible.
3957
3958Disassembler: Miscellaneous updates for extern() handling:
39591) Abort compiler if file specified by -fe option does not exist.
39602) Silence unnecessary warnings about argument count mismatches.
39613) Update warning messages concerning unresolved method externals.
39624) Emit "UnknownObj" keyword for externals whose type cannot be
3963determined.
3964
3965AcpiHelp utility:
39661) Added the -a option to display both the ASL syntax and the AML
3967encoding for an input ASL operator. This effectively displays all known
3968information about an ASL operator with one AcpiHelp invocation.
39692) Added substring match support (similar to a wildcard) for the -i
3970(_HID/PNP IDs) option.
3971
3972iASL/Disassembler: Since this tool does not yet support execution on big-
3973endian machines, added detection of endianness and an error message if
3974execution is attempted on big-endian. Support for big-endian within iASL
3975is a feature that is on the ACPICA to-be-done list.
3976
3977AcpiBin utility:
39781) Remove option to extract binary files from an acpidump; this function
3979is made obsolete by the AcpiXtract utility.
39802) General cleanup of open files and allocated buffers.
3981
3982
3983----------------------------------------
398414 February 2014. Summary of changes for version 20140214:
3985
39861) ACPICA kernel-resident subsystem:
3987
3988Implemented a new mechanism to proactively prevent problems with ill-
3989behaved reentrant control methods that create named ACPI objects. This
3990behavior is illegal as per the ACPI specification, but is nonetheless
3991frequently seen in the field. Previously, this could lead to an
3992AE_ALREADY_EXISTS exception if the method was actually entered by more
3993than one thread. This new mechanism detects such methods at table load
3994time and marks them "serialized" to prevent reentrancy. A new global
3995option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3996feature if desired. This mechanism and global option obsoletes and
3997supersedes the previous AcpiGbl_SerializeAllMethods option.
3998
3999Added the "Windows 2013" string to the _OSI support. ACPICA will now
4000respond TRUE to _OSI queries with this string. It is the stated policy of
4001ACPICA to add new strings to the _OSI support as soon as possible after
4002they are defined. See the full ACPICA _OSI policy which has been added to
4003the utilities/utosi.c file.
4004
4005Hardened/updated the _PRT return value auto-repair code:
40061) Do not abort the repair on a single subpackage failure, continue to
4007check all subpackages.
40082) Add check for the minimum subpackage length (4).
40093) Properly handle extraneous NULL package elements.
4010
4011Added support to avoid the possibility of infinite loops when traversing
4012object linked lists. Never allow an infinite loop, even in the face of
4013corrupted object lists.
4014
4015ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4016pack(pop) directives to ensure that the ACPICA headers are independent of
4017compiler settings or other host headers.
4018
4019Example Code and Data Size: These are the sizes for the OS-independent
4020acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4021debug version of the code includes the debug output trace mechanism and
4022has a much larger code and data size.
4023
4024  Current Release:
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
4027  Previous Release:
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
4030
4031
40322) iASL Compiler/Disassembler and Tools:
4033
4034iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4035first reserved field was incorrectly forced to have a value of zero. This
4036change correctly forces the field to have a value of one. ACPICA BZ 1081.
4037
4038Debugger: Added missing support for the "Extra" and "Data" subobjects
4039when displaying object data.
4040
4041Debugger: Added support to display entire object linked lists when
4042displaying object data.
4043
4044iASL: Removed the obsolete -g option to obtain ACPI tables from the
4045Windows registry. This feature has been superseded by the acpidump
4046utility.
4047
4048
4049----------------------------------------
405014 January 2014. Summary of changes for version 20140114:
4051
40521) ACPICA kernel-resident subsystem:
4053
4054Updated all ACPICA copyrights and signons to 2014. Added the 2014
4055copyright to all module headers and signons, including the standard Linux
4056header. This affects virtually every file in the ACPICA core subsystem,
4057iASL compiler, all ACPICA utilities, and the test suites.
4058
4059Improved parameter validation for AcpiInstallGpeBlock. Added the
4060following checks:
40611) The incoming device handle refers to type ACPI_TYPE_DEVICE.
40622) There is not already a GPE block attached to the device.
4063Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4064device.
4065
4066Correctly support "references" in the ACPI_OBJECT. This change fixes the
4067support to allow references (namespace nodes) to be passed as arguments
4068to control methods via the evaluate object interface. This is probably
4069most useful for testing purposes, however.
4070
4071Improved support for 32/64 bit physical addresses in printf()-like
4072output. This change improves the support for physical addresses in printf
4073debug statements and other output on both 32-bit and 64-bit hosts. It
4074consistently outputs the appropriate number of bytes for each host. The
4075%p specifier is unsatisfactory since it does not emit uniform output on
4076all hosts/clib implementations (on some, leading zeros are not supported,
4077leading to difficult-to-read output).
4078
4079Example Code and Data Size: These are the sizes for the OS-independent
4080acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4081debug version of the code includes the debug output trace mechanism and
4082has a much larger code and data size.
4083
4084  Current Release:
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
4087  Previous Release:
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
4090
4091
40922) iASL Compiler/Disassembler and Tools:
4093
4094iASL: Fix a possible fault when using the Connection() operator. Fixes a
4095problem if the parent Field definition for the Connection operator refers
4096to an operation region that does not exist. ACPICA BZ 1064.
4097
4098AcpiExec: Load of local test tables is now optional. The utility has the
4099capability to load some various tables to test features of ACPICA.
4100However, there are enough of them that the output of the utility became
4101confusing. With this change, only the required local tables are displayed
4102(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4103line specification. This makes the default output simler and easier to
4104understand. The -el command line option restores the original behavior
4105for testing purposes.
4106
4107AcpiExec: Added support for overlapping operation regions. This change
4108expands the simulation of operation regions by supporting regions that
4109overlap within the given address space. Supports SystemMemory and
4110SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4111
4112AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4113allows AcpiExec to simulate these address spaces, similar to the current
4114support for SystemMemory and SystemIO.
4115
4116Debugger: Added new command to read/write/compare all namespace objects.
4117The command "test objects" will exercise the entire namespace by writing
4118new values to each data object, and ensuring that the write was
4119successful. The original value is then restored and verified.
4120
4121Debugger: Added the "test predefined" command. This change makes this
4122test public and puts it under the new "test" command. The test executes
4123each and every predefined name within the current namespace.
4124
4125
4126----------------------------------------
412718 December 2013. Summary of changes for version 20131218:
4128
4129Global note: The ACPI 5.0A specification was released this month. There
4130are no changes needed for ACPICA since this release of ACPI is an
4131errata/clarification release. The specification is available at
4132acpi.info.
4133
4134
41351) ACPICA kernel-resident subsystem:
4136
4137Added validation of the XSDT root table if it is present. Some older
4138platforms contain an XSDT that is ill-formed or otherwise invalid (such
4139as containing some or all entries that are NULL pointers). This change
4140adds a new function to validate the XSDT before actually using it. If the
4141XSDT is found to be invalid, ACPICA will now automatically fall back to
4142using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4143ACPICA and enhanced by Lv Zheng and Bob Moore.
4144
4145Added a runtime option to ignore the XSDT and force the use of the RSDT.
4146This change adds a runtime option that will force ACPICA to use the RSDT
4147instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4148requires that an XSDT be used instead of the RSDT, the XSDT has been
4149found to be corrupt or ill-formed on some machines. Lv Zheng.
4150
4151Added a runtime option to favor 32-bit FADT register addresses over the
415264-bit addresses. This change adds an option to favor 32-bit FADT
4153addresses when there is a conflict between the 32-bit and 64-bit versions
4154of the same register. The default behavior is to use the 64-bit version
4155in accordance with the ACPI specification. This can now be overridden via
4156the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4157
4158During the change above, the internal "Convert FADT" and "Verify FADT"
4159functions have been merged to simplify the code, making it easier to
4160understand and maintain. ACPICA BZ 933.
4161
4162Improve exception reporting and handling for GPE block installation.
4163Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4164status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4165
4166Added helper macros to extract bus/segment numbers from the HEST table.
4167This change adds two macros to extract the encoded bus and segment
4168numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4169Betty Dall <betty.dall@hp.com>
4170
4171Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4172by ACPICA. It is not a public macro, so it should have no effect on
4173existing OSV code. Lv Zheng.
4174
4175Example Code and Data Size: These are the sizes for the OS-independent
4176acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4177debug version of the code includes the debug output trace mechanism and
4178has a much larger code and data size.
4179
4180  Current Release:
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
4183  Previous Release:
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
4186
4187
41882) iASL Compiler/Disassembler and Tools:
4189
4190Disassembler: Improved pathname support for emitted External()
4191statements. This change adds full pathname support for external names
4192that have been resolved internally by the inclusion of additional ACPI
4193tables (via the iASL -e option). Without this change, the disassembler
4194can emit multiple externals for the same object, or it become confused
4195when the Scope() operator is used on an external object. Overall, greatly
4196improves the ability to actually recompile the emitted ASL code when
4197objects a referenced across multiple ACPI tables. Reported by Michael
4198Tsirkin (mst@redhat.com).
4199
4200Tests/ASLTS: Updated functional control suite to execute with no errors.
4201David Box. Fixed several errors related to the testing of the interpreter
4202slack mode. Lv Zheng.
4203
4204iASL: Added support to detect names that are declared within a control
4205method, but are unused (these are temporary names that are only valid
4206during the time the method is executing). A remark is issued for these
4207cases. ACPICA BZ 1022.
4208
4209iASL: Added full support for the DBG2 table. Adds full disassembler,
4210table compiler, and template generator support for the DBG2 table (Debug
4211Port 2 table).
4212
4213iASL: Added full support for the PCCT table, update the table definition.
4214Updates the PCCT table definition in the actbl3.h header and adds table
4215compiler and template generator support.
4216
4217iASL: Added an option to emit only error messages (no warnings/remarks).
4218The -ve option will enable only error messages, warnings and remarks are
4219suppressed. This can simplify debugging when only the errors are
4220important, such as when an ACPI table is disassembled and there are many
4221warnings and remarks -- but only the actual errors are of real interest.
4222
4223Example ACPICA code (source/tools/examples): Updated the example code so
4224that it builds to an actual working program, not just example code. Added
4225ACPI tables and execution of an example control method in the DSDT. Added
4226makefile support for Unix generation.
4227
4228
4229----------------------------------------
423015 November 2013. Summary of changes for version 20131115:
4231
4232This release is available at https://acpica.org/downloads
4233
4234
42351) ACPICA kernel-resident subsystem:
4236
4237Resource Manager: Fixed loop termination for the "get AML length"
4238function. The loop previously had an error termination on a NULL resource
4239pointer, which can never happen since the loop simply increments a valid
4240resource pointer. This fix changes the loop to terminate with an error on
4241an invalid end-of-buffer condition. The problem can be seen as an
4242infinite loop by callers to AcpiSetCurrentResources with an invalid or
4243corrupted resource descriptor, or a resource descriptor that is missing
4244an END_TAG descriptor. Reported by Dan Carpenter
4245<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4246
4247Table unload and ACPICA termination: Delete all attached data objects
4248during namespace node deletion. This fix updates namespace node deletion
4249to delete the entire list of attached objects (attached via
4250AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
42511024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4252
4253ACPICA termination: Added support to delete all objects attached to the
4254root namespace node. This fix deletes any and all objects that have been
4255attached to the root node via AcpiAttachData. Previously, none of these
4256objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4257
4258Debug output: Do not emit the function nesting level for the in-kernel
4259build. The nesting level is really only useful during a single-thread
4260execution. Therefore, only enable this output for the AcpiExec utility.
4261Also, only emit the thread ID when executing under AcpiExec (Context
4262switches are still always detected and a message is emitted). ACPICA BZ
4263972.
4264
4265Example Code and Data Size: These are the sizes for the OS-independent
4266acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4267debug version of the code includes the debug output trace mechanism and
4268has a much larger code and data size.
4269
4270  Current Release:
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
4273  Previous Release:
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
4276
4277
42782) iASL Compiler/Disassembler and Tools:
4279
4280AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4281correct portable POSIX header for terminal control functions.
4282
4283Disassembler: Fixed control method invocation issues related to the use
4284of the CondRefOf() operator. The problem is seen in the disassembly where
4285control method invocations may not be disassembled properly if the
4286control method name has been used previously as an argument to CondRefOf.
4287The solution is to not attempt to emit an external declaration for the
4288CondRefOf target (it is not necessary in the first place). This prevents
4289disassembler object type confusion. ACPICA BZ 988.
4290
4291Unix Makefiles: Added an option to disable compiler optimizations and the
4292_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4293with optimizations (reportedly, gcc 4.4 for example). This change adds a
4294command line option for make (NOOPT) that disables all compiler
4295optimizations and the _FORTIFY_SOURCE compiler flag. The default
4296optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
42971034. Lv Zheng, Bob Moore.
4298
4299Tests/ASLTS: Added options to specify individual test cases and modes.
4300This allows testers running aslts.sh to optionally specify individual
4301test modes and test cases. Also added an option to disable the forced
4302generation of the ACPICA tools from source if desired. Lv Zheng.
4303
4304----------------------------------------
430527 September 2013. Summary of changes for version 20130927:
4306
4307This release is available at https://acpica.org/downloads
4308
4309
43101) ACPICA kernel-resident subsystem:
4311
4312Fixed a problem with store operations to reference objects. This change
4313fixes a problem where a Store operation to an ArgX object that contained
4314a
4315reference to a field object did not complete the automatic dereference
4316and
4317then write to the actual field object. Instead, the object type of the
4318field object was inadvertently changed to match the type of the source
4319operand. The new behavior will actually write to the field object (buffer
4320field or field unit), thus matching the correct ACPI-defined behavior.
4321
4322Implemented support to allow the host to redefine individual OSL
4323prototypes. This change enables the host to redefine OSL prototypes found
4324in the acpiosxf.h file. This allows the host to implement OSL interfaces
4325with a macro or inlined function. Further, it allows the host to add any
4326additional required modifiers such as __iomem, __init, __exit, etc., as
4327necessary on a per-interface basis. Enables maximum flexibility for the
4328OSL interfaces. Lv Zheng.
4329
4330Hardcoded the access width for the FADT-defined reset register. The ACPI
4331specification requires the reset register width to be 8 bits. ACPICA now
4332hardcodes the width to 8 and ignores the FADT width value. This provides
4333compatibility with other ACPI implementations that have allowed BIOS code
4334with bad register width values to go unnoticed. Matthew Garett, Bob
4335Moore,
4336Lv Zheng.
4337
4338Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4339used
4340in the OSL header (acpiosxf). The change modifies the position of this
4341macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4342build issues if the OSL defines the implementation of the interface to be
4343an inline stub function. Lv Zheng.
4344
4345Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4346initialization interfaces. This change adds a new macro for the main init
4347and terminate external interfaces in order to support hosts that require
4348additional or different processing for these functions. Changed from
4349ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4350Zheng, Bob Moore.
4351
4352Cleaned up the memory allocation macros for configurability. In the
4353common
4354case, the ACPI_ALLOCATE and related macros now resolve directly to their
4355respective AcpiOs* OSL interfaces. Two options:
43561) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4357default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
43582) For AcpiExec (and for debugging), the macros can optionally be
4359resolved
4360to the local ACPICA interfaces that track each allocation (local tracking
4361is used to immediately detect memory leaks).
4362Lv Zheng.
4363
4364Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4365to predefine this macro to either TRUE or FALSE during the system build.
4366
4367Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4368
4369Example Code and Data Size: These are the sizes for the OS-independent
4370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4371debug version of the code includes the debug output trace mechanism and
4372has a much larger code and data size.
4373
4374  Current Release:
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
4377  Previous Release:
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
4380
4381
43822) iASL Compiler/Disassembler and Tools:
4383
4384iASL: Implemented wildcard support for the -e option. This simplifies use
4385when there are many SSDTs that must be included to resolve external
4386method
4387declarations. ACPICA BZ 1041. Example:
4388    iasl -e ssdt*.dat -d dsdt.dat
4389
4390AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4391adds a portable module that implements full history and limited line
4392editing for Unix and Linux systems. It does not use readline() due to
4393portability issues. Instead it uses the POSIX termio interface to put the
4394terminal in raw input mode so that the various special keys can be
4395trapped
4396(such as up/down-arrow for history support and left/right-arrow for line
4397editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4398
4399AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4400one or more spaces. This provides compatible with early or different
4401versions of the AcpiDump utility. ACPICA BZ 1044.
4402
4403AcpiDump: Do not ignore tables that contain only an ACPI table header.
4404Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4405no other data. This change adds support to dump these tables. Any tables
4406shorter than the length of an ACPI table header remain in error (an error
4407message is emitted). Reported by Yi Li.
4408
4409Debugger: Echo actual command along with the "unknown command" message.
4410
4411----------------------------------------
441223 August 2013. Summary of changes for version 20130823:
4413
44141) ACPICA kernel-resident subsystem:
4415
4416Implemented support for host-installed System Control Interrupt (SCI)
4417handlers. Certain ACPI functionality requires the host to handle raw
4418SCIs. For example, the "SCI Doorbell" that is defined for memory power
4419state support requires the host device driver to handle SCIs to examine
4420if the doorbell has been activated. Multiple SCI handlers can be
4421installed to allow for future expansion. New external interfaces are
4422AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4423details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4424
4425Operation region support: Never locally free the handler "context"
4426pointer. This change removes some dangerous code that attempts to free
4427the handler context pointer in some (rare) circumstances. The owner of
4428the handler owns this pointer and the ACPICA code should never touch it.
4429Although not seen to be an issue in any kernel, it did show up as a
4430problem (fault) under AcpiExec. Also, set the internal storage field for
4431the context pointer to zero when the region is deactivated, simply for
4432sanity. David Box. ACPICA BZ 1039.
4433
4434AcpiRead: On error, do not modify the return value target location. If an
4435error happens in the middle of a split 32/32 64-bit I/O operation, do not
4436modify the target of the return value pointer. Makes the code consistent
4437with the rest of ACPICA. Bjorn Helgaas.
4438
4439Example Code and Data Size: These are the sizes for the OS-independent
4440acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4441debug version of the code includes the debug output trace mechanism and
4442has a much larger code and data size.
4443
4444  Current Release:
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
4447  Previous Release:
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
4450
4451
44522) iASL Compiler/Disassembler and Tools:
4453
4454AcpiDump: Implemented several new features and fixed some problems:
44551) Added support to dump the RSDP, RSDT, and XSDT tables.
44562) Added support for multiple table instances (SSDT, UEFI).
44573) Added option to dump "customized" (overridden) tables (-c).
44584) Fixed a problem where some table filenames were improperly
4459constructed.
44605) Improved some error messages, removed some unnecessary messages.
4461
4462iASL: Implemented additional support for disassembly of ACPI tables that
4463contain invocations of external control methods. The -fe<file> option
4464allows the import of a file that specifies the external methods along
4465with the required number of arguments for each -- allowing for the
4466correct disassembly of the table. This is a workaround for a limitation
4467of AML code where the disassembler often cannot determine the number of
4468arguments required for an external control method and generates incorrect
4469ASL code. See the iASL reference for details. ACPICA BZ 1030.
4470
4471Debugger: Implemented a new command (paths) that displays the full
4472pathnames (namepaths) and object types of all objects in the namespace.
4473This is an alternative to the namespace command.
4474
4475Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4476mechanism and any installed handlers.
4477
4478iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4479This can occur if there are too many parent prefixes in a namepath (for
4480example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4481
4482Application OSLs: Set the return value for the PCI read functions. These
4483functions simply return AE_OK, but should set the return value to zero
4484also. This change implements this. ACPICA BZ 1038.
4485
4486Debugger: Prevent possible command line buffer overflow. Increase the
4487size of a couple of the debugger line buffers, and ensure that overflow
4488cannot happen. ACPICA BZ 1037.
4489
4490iASL: Changed to abort immediately on serious errors during the parsing
4491phase. Due to the nature of ASL, there is no point in attempting to
4492compile these types of errors, and they typically end up causing a
4493cascade of hundreds of errors which obscure the original problem.
4494
4495----------------------------------------
449625 July 2013. Summary of changes for version 20130725:
4497
44981) ACPICA kernel-resident subsystem:
4499
4500Fixed a problem with the DerefOf operator where references to FieldUnits
4501and BufferFields incorrectly returned the parent object, not the actual
4502value of the object. After this change, a dereference of a FieldUnit
4503reference results in a read operation on the field to get the value, and
4504likewise, the appropriate BufferField value is extracted from the target
4505buffer.
4506
4507Fixed a problem where the _WAK method could cause a fault under these
4508circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4509method returned no value. The problem is rarely seen because most kernels
4510run ACPICA in slack mode.
4511
4512For the DerefOf operator, a fatal error now results if an attempt is made
4513to dereference a reference (created by the Index operator) to a NULL
4514package element. Provides compatibility with other ACPI implementations,
4515and this behavior will be added to a future version of the ACPI
4516specification.
4517
4518The ACPI Power Management Timer (defined in the FADT) is now optional.
4519This provides compatibility with other ACPI implementations and will
4520appear in the next version of the ACPI specification. If there is no PM
4521Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4522zero in the FADT indicates no PM timer.
4523
4524Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4525allows the host to globally enable/disable all vendor strings, all
4526feature strings, or both. Intended to be primarily used for debugging
4527purposes only. Lv Zheng.
4528
4529Expose the collected _OSI data to the host via a global variable. This
4530data tracks the highest level vendor ID that has been invoked by the BIOS
4531so that the host (and potentially ACPICA itself) can change behaviors
4532based upon the age of the BIOS.
4533
4534Example Code and Data Size: These are the sizes for the OS-independent
4535acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4536debug version of the code includes the debug output trace mechanism and
4537has a much larger code and data size.
4538
4539  Current Release:
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
4542  Previous Release:
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
4545
4546
45472) iASL Compiler/Disassembler and Tools:
4548
4549iASL: Created the following enhancements for the -so option (create
4550offset table):
45511)Add offsets for the last nameseg in each namepath for every supported
4552object type
45532)Add support for Processor, Device, Thermal Zone, and Scope objects
45543)Add the actual AML opcode for the parent object of every supported
4555object type
45564)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4557
4558Disassembler: Emit all unresolved external symbols in a single block.
4559These are external references to control methods that could not be
4560resolved, and thus, the disassembler had to make a guess at the number of
4561arguments to parse.
4562
4563iASL: The argument to the -T option (create table template) is now
4564optional. If not specified, the default table is a DSDT, typically the
4565most common case.
4566
4567----------------------------------------
456826 June 2013. Summary of changes for version 20130626:
4569
45701) ACPICA kernel-resident subsystem:
4571
4572Fixed an issue with runtime repair of the _CST object. Null or invalid
4573elements were not always removed properly. Lv Zheng.
4574
4575Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4576FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4577the maximum number of GPEs is 1016. Use of multiple GPE block devices
4578makes the system-wide number of GPEs essentially unlimited.
4579
4580Example Code and Data Size: These are the sizes for the OS-independent
4581acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4582debug version of the code includes the debug output trace mechanism and
4583has a much larger code and data size.
4584
4585  Current Release:
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
4588  Previous Release:
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
4591
4592
45932) iASL Compiler/Disassembler and Tools:
4594
4595Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4596hosts. Now supports Linux, FreeBSD, and Windows.
4597
4598Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4599Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4600
4601iASL/Preprocessor: Implemented full support for nested
4602#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4603
4604Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4605max. The original purpose of this constraint was to limit the amount of
4606debug output. However, the string function in question (UtPrintString) is
4607now used for the disassembler also, where 256 bytes is insufficient.
4608Reported by RehabMan@GitHub.
4609
4610iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4611tables. ACPICA BZ 999. Lv Zheng.
4612
4613iASL: Fixed a couple of error exit issues that could result in a "Could
4614not delete <file>" message during ASL compilation.
4615
4616AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4617the actual signatures for these tables are "FACP" and "APIC",
4618respectively.
4619
4620AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4621tables are allowed to have multiple instances.
4622
4623----------------------------------------
462417 May 2013. Summary of changes for version 20130517:
4625
46261) ACPICA kernel-resident subsystem:
4627
4628Fixed a regression introduced in version 20130328 for _INI methods. This
4629change fixes a problem introduced in 20130328 where _INI methods are no
4630longer executed properly because of a memory block that was not
4631initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4632<tomasz.nowicki@linaro.org>.
4633
4634Fixed a possible problem with the new extended sleep registers in the
4635ACPI
46365.0 FADT. Do not use these registers (even if populated) unless the HW-
4637reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
46381020. Lv Zheng.
4639
4640Implemented return value repair code for _CST predefined objects: Sort
4641the
4642list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4643
4644Implemented a debug-only option to disable loading of SSDTs from the
4645RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4646ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4647acglobal.h - ACPICA BZ 1005. Lv Zheng.
4648
4649Fixed some issues in the ACPICA initialization and termination code:
4650Tomasz Nowicki <tomasz.nowicki@linaro.org>
46511) Clear events initialized flag upon event component termination. ACPICA
4652BZ 1013.
46532) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
46543) Delete global lock pending lock during termination. ACPICA BZ 1012.
46554) Clear debug buffer global on termination to prevent possible multiple
4656delete. ACPICA BZ 1010.
4657
4658Standardized all switch() blocks across the entire source base. After
4659many
4660years, different formatting for switch() had crept in. This change makes
4661the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4662
4663Split some files to enhance ACPICA modularity and configurability:
46641) Split buffer dump routines into utilities/utbuffer.c
46652) Split internal error message routines into utilities/uterror.c
46663) Split table print utilities into tables/tbprint.c
46674) Split iASL command-line option processing into asloptions.c
4668
4669Makefile enhancements:
46701) Support for all new files above.
46712) Abort make on errors from any subcomponent. Chao Guan.
46723) Add build support for Apple Mac OS X. Liang Qi.
4673
4674Example Code and Data Size: These are the sizes for the OS-independent
4675acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4676debug version of the code includes the debug output trace mechanism and
4677has a much larger code and data size.
4678
4679  Current Release:
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
4682  Previous Release:
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
4685
4686
46872) iASL Compiler/Disassembler and Tools:
4688
4689New utility: Implemented an easily portable version of the acpidump
4690utility to extract ACPI tables from the system (or a file) in an ASCII
4691hex
4692dump format. The top-level code implements the various command line
4693options, file I/O, and table dump routines. To port to a new host, only
4694three functions need to be implemented to get tables -- since this
4695functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4696the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
46971) The Windows version obtains the ACPI tables from the Registry.
46982) The Linux version is under development.
46993) Other hosts - If an OS-dependent module is submitted, it will be
4700distributed with ACPICA.
4701
4702iASL: Fixed a regression for -D preprocessor option (define symbol). A
4703restructuring/change to the initialization sequence caused this option to
4704no longer work properly.
4705
4706iASL: Implemented a mechanism to disable specific warnings and remarks.
4707Adds a new command line option, "-vw <messageid> as well as "#pragma
4708disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4709
4710iASL: Fix for too-strict package object validation. The package object
4711validation for return values from the predefined names is a bit too
4712strict, it does not allow names references within the package (which will
4713be resolved at runtime.) These types of references cannot be validated at
4714compile time. This change ignores named references within package objects
4715for names that return or define static packages.
4716
4717Debugger: Fixed the 80-character command line limitation for the History
4718command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4719
4720iASL: Added control method and package support for the -so option
4721(generates AML offset table for BIOS support.)
4722
4723iASL: issue a remark if a non-serialized method creates named objects. If
4724a thread blocks within the method for any reason, and another thread
4725enters the method, the method will fail because an attempt will be made
4726to
4727create the same (named) object twice. In this case, issue a remark that
4728the method should be marked serialized. NOTE: may become a warning later.
4729ACPICA BZ 909.
4730
4731----------------------------------------
473218 April 2013. Summary of changes for version 20130418:
4733
47341) ACPICA kernel-resident subsystem:
4735
4736Fixed a possible buffer overrun during some rare but specific field unit
4737read operations. This overrun can only happen if the DSDT version is 1 --
4738meaning that all AML integers are 32 bits -- and the field length is
4739between 33 and 55 bits long. During the read, an internal buffer object
4740is
4741created for the field unit because the field is larger than an integer
4742(32
4743bits). However, in this case, the buffer will be incorrectly written
4744beyond the end because the buffer length is less than the internal
4745minimum
4746of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4747long, but a full 8 bytes will be written.
4748
4749Updated the Embedded Controller "orphan" _REG method support. This refers
4750to _REG methods under the EC device that have no corresponding operation
4751region. This is allowed by the ACPI specification. This update removes a
4752dependency on the existence an ECDT table. It will execute an orphan _REG
4753method as long as the operation region handler for the EC is installed at
4754the EC device node and not the namespace root. Rui Zhang (original
4755update), Bob Moore (update/integrate).
4756
4757Implemented run-time argument typechecking for all predefined ACPI names
4758(_STA, _BIF, etc.) This change performs object typechecking on all
4759incoming arguments for all predefined names executed via
4760AcpiEvaluateObject. This ensures that ACPI-related device drivers are
4761passing correct object types as well as the correct number of arguments
4762(therefore identifying any issues immediately). Also, the ASL/namespace
4763definition of the predefined name is checked against the ACPI
4764specification for the proper argument count. Adds one new file,
4765nsarguments.c
4766
4767Changed an exception code for the ASL UnLoad() operator. Changed the
4768exception code for the case where the input DdbHandle is invalid, from
4769AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4770
4771Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
4772global makefile. The use of this flag causes compiler errors on earlier
4773versions of GCC, so it has been removed for compatibility.
4774
4775Miscellaneous cleanup:
47761) Removed some unused/obsolete macros
47772) Fixed a possible memory leak in the _OSI support
47783) Removed an unused variable in the predefined name support
47794) Windows OSL: remove obsolete reference to a memory list field
4780
4781Example Code and Data Size: These are the sizes for the OS-independent
4782acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4783debug version of the code includes the debug output trace mechanism and
4784has a much larger code and data size.
4785
4786  Current Release:
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
4789  Previous Release:
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
4792
4793
47942) iASL Compiler/Disassembler and Tools:
4795
4796AcpiExec: Added installation of a handler for the SystemCMOS address
4797space. This prevents control method abort if a method accesses this
4798space.
4799
4800AcpiExec: Added support for multiple EC devices, and now install EC
4801operation region handler(s) at the actual EC device instead of the
4802namespace root. This reflects the typical behavior of host operating
4803systems.
4804
4805AcpiExec: Updated to ensure that all operation region handlers are
4806installed before the _REG methods are executed. This prevents a _REG
4807method from aborting if it accesses an address space has no handler.
4808AcpiExec installs a handler for every possible address space.
4809
4810Debugger: Enhanced the "handlers" command to display non-root handlers.
4811This change enhances the handlers command to display handlers associated
4812with individual devices throughout the namespace, in addition to the
4813currently supported display of handlers associated with the root
4814namespace
4815node.
4816
4817ASL Test Suite: Several test suite errors have been identified and
4818resolved, reducing the total error count during execution. Chao Guan.
4819
4820----------------------------------------
482128 March 2013. Summary of changes for version 20130328:
4822
48231) ACPICA kernel-resident subsystem:
4824
4825Fixed several possible race conditions with the internal object reference
4826counting mechanism. Some of the external ACPICA interfaces update object
4827reference counts without holding the interpreter or namespace lock. This
4828change adds a spinlock to protect reference count updates on the internal
4829ACPICA objects. Reported by and with assistance from Andriy Gapon
4830(avg@FreeBSD.org).
4831
4832FADT support: Removed an extraneous warning for very large GPE register
4833sets. This change removes a size mismatch warning if the legacy length
4834field for a GPE register set is larger than the 64-bit GAS structure can
4835accommodate. GPE register sets can be larger than the 255-bit width
4836limitation of the GAS structure. Linn Crosetto (linn@hp.com).
4837
4838_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
4839return from this interface. Handles a possible timeout case if
4840ACPI_WAIT_FOREVER is modified by the host to be a value less than
4841"forever". Jung-uk Kim.
4842
4843Predefined name support: Add allowed/required argument type information
4844to
4845the master predefined info table. This change adds the infrastructure to
4846enable typechecking on incoming arguments for all predefined
4847methods/objects. It does not actually contain the code that will fully
4848utilize this information, this is still under development. Also condenses
4849some duplicate code for the predefined names into a new module,
4850utilities/utpredef.c
4851
4852Example Code and Data Size: These are the sizes for the OS-independent
4853acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4854debug version of the code includes the debug output trace mechanism and
4855has a much larger code and data size.
4856
4857  Previous Release:
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
4860  Current Release:
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
4863
4864
48652) iASL Compiler/Disassembler and Tools:
4866
4867iASL: Implemented a new option to simplify the development of ACPI-
4868related
4869BIOS code. Adds support for a new "offset table" output file. The -so
4870option will create a C table containing the AML table offsets of various
4871named objects in the namespace so that BIOS code can modify them easily
4872at
4873boot time. This can simplify BIOS runtime code by eliminating expensive
4874searches for "magic values", enhancing boot times and adding greater
4875reliability. With assistance from Lee Hamel.
4876
4877iASL: Allow additional predefined names to return zero-length packages.
4878Now, all predefined names that are defined by the ACPI specification to
4879return a "variable-length package of packages" are allowed to return a
4880zero length top-level package. This allows the BIOS to tell the host that
4881the requested feature is not supported, and supports existing BIOS/ASL
4882code and practices.
4883
4884iASL: Changed the "result not used" warning to an error. This is the case
4885where an ASL operator is effectively a NOOP because the result of the
4886operation is not stored anywhere. For example:
4887    Add (4, Local0)
4888There is no target (missing 3rd argument), nor is the function return
4889value used. This is potentially a very serious problem -- since the code
4890was probably intended to do something, but for whatever reason, the value
4891was not stored. Therefore, this issue has been upgraded from a warning to
4892an error.
4893
4894AcpiHelp: Added allowable/required argument types to the predefined names
4895info display. This feature utilizes the recent update to the predefined
4896names table (above).
4897
4898----------------------------------------
489914 February 2013. Summary of changes for version 20130214:
4900
49011) ACPICA Kernel-resident Subsystem:
4902
4903Fixed a possible regression on some hosts: Reinstated the safe return
4904macros (return_ACPI_STATUS, etc.) that ensure that the argument is
4905evaluated only once. Although these macros are not needed for the ACPICA
4906code itself, they are often used by ACPI-related host device drivers
4907where
4908the safe feature may be necessary.
4909
4910Fixed several issues related to the ACPI 5.0 reduced hardware support
4911(SOC): Now ensure that if the platform declares itself as hardware-
4912reduced
4913via the FADT, the following functions become NOOPs (and always return
4914AE_OK) because ACPI is always enabled by definition on these machines:
4915  AcpiEnable
4916  AcpiDisable
4917  AcpiHwGetMode
4918  AcpiHwSetMode
4919
4920Dynamic Object Repair: Implemented additional runtime repairs for
4921predefined name return values. Both of these repairs can simplify code in
4922the related device drivers that invoke these methods:
49231) For the _STR and _MLS names, automatically repair/convert an ASCII
4924string to a Unicode buffer.
49252) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
4926a
4927lone end tag descriptor in the following cases: A Return(0) was executed,
4928a null buffer was returned, or no object at all was returned (non-slack
4929mode only). Adds a new file, nsconvert.c
4930ACPICA BZ 998. Bob Moore, Lv Zheng.
4931
4932Resource Manager: Added additional code to prevent possible infinite
4933loops
4934while traversing corrupted or ill-formed resource template buffers. Check
4935for zero-length resource descriptors in all code that loops through
4936resource templates (the length field is used to index through the
4937template). This change also hardens the external AcpiWalkResources and
4938AcpiWalkResourceBuffer interfaces.
4939
4940Local Cache Manager: Enhanced the main data structure to eliminate an
4941unnecessary mechanism to access the next object in the list. Actually
4942provides a small performance enhancement for hosts that use the local
4943ACPICA cache manager. Jung-uk Kim.
4944
4945Example Code and Data Size: These are the sizes for the OS-independent
4946acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4947debug version of the code includes the debug output trace mechanism and
4948has a much larger code and data size.
4949
4950  Previous Release:
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
4953  Current Release:
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
4956
4957
49582) iASL Compiler/Disassembler and Tools:
4959
4960iASL/Disassembler: Fixed several issues with the definition of the ACPI
49615.0 RASF table (RAS Feature Table). This change incorporates late changes
4962that were made to the ACPI 5.0 specification.
4963
4964iASL/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).
4967Includes header file, disassembler, table compiler, and template support
4968for both tables.
4969
4970iASL: Implemented compile-time validation of package objects returned by
4971predefined names. This new feature validates static package objects
4972returned by the various predefined names defined to return packages. Both
4973object types and package lengths are validated, for both parent packages
4974and sub-packages, if any. The code is similar in structure and behavior
4975to
4976the runtime repair mechanism within the AML interpreter and uses the
4977existing predefined name information table. Adds a new file, aslprepkg.c.
4978ACPICA BZ 938.
4979
4980iASL: Implemented auto-detection of binary ACPI tables for disassembly.
4981This feature detects a binary file with a valid ACPI table header and
4982invokes the disassembler automatically. Eliminates the need to
4983specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4984
4985iASL/Disassembler: Added several warnings for the case where there are
4986unresolved control methods during the disassembly. This can potentially
4987cause errors when the output file is compiled, because the disassembler
4988assumes zero method arguments in these cases (it cannot determine the
4989actual number of arguments without resolution/definition of the method).
4990
4991Debugger: Added support to display all resources with a single command.
4992Invocation of the resources command with no arguments will now display
4993all
4994resources within the current namespace.
4995
4996AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4997via the -e option.
4998
4999----------------------------------------
500017 January 2013. Summary of changes for version 20130117:
5001
50021) ACPICA Kernel-resident Subsystem:
5003
5004Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5005return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5006objects to return a package containing one integer, most BIOS code
5007returns
5008two integers and the previous code reflects that. However, we also need
5009to
5010support BIOS code that actually implements to the ACPI spec, and this
5011change reflects this.
5012
5013Fixed two issues with the ACPI_DEBUG_PRINT macros:
50141) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5015C compilers that require this support.
50162) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5017ACPI_DEBUG is already used by many of the various hosts.
5018
5019Updated all ACPICA copyrights and signons to 2013. Added the 2013
5020copyright to all module headers and signons, including the standard Linux
5021header. This affects virtually every file in the ACPICA core subsystem,
5022iASL compiler, all ACPICA utilities, and the test suites.
5023
5024Example Code and Data Size: These are the sizes for the OS-independent
5025acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5026debug version of the code includes the debug output trace mechanism and
5027has a much larger code and data size.
5028
5029  Previous Release:
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
5032  Current Release:
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
5035
5036
50372) iASL Compiler/Disassembler and Tools:
5038
5039Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5040prevent a possible fault on some hosts. Some C libraries modify the arg
5041pointer parameter to vfprintf making it difficult to call it twice in the
5042AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5043does not affect the Windows OSL since the Win C library does not modify
5044the arg pointer. Chao Guan, Bob Moore.
5045
5046iASL: Fixed a possible infinite loop when the maximum error count is
5047reached. If an output file other than the .AML file is specified (such as
5048a listing file), and the maximum number of errors is reached, do not
5049attempt to flush data to the output file(s) as the compiler is aborting.
5050This can cause an infinite loop as the max error count code essentially
5051keeps calling itself.
5052
5053iASL/Disassembler: Added an option (-in) to ignore NOOP
5054opcodes/operators.
5055Implemented for both the compiler and the disassembler. Often, the NOOP
5056opcode is used as padding for packages that are changed dynamically by
5057the
5058BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5059errors. This option causes the disassembler to ignore all NOOP opcodes
5060(0xA3), and it also causes the compiler to ignore all ASL source code
5061NOOP
5062statements as well.
5063
5064Debugger: Enhanced the Sleep command to execute all sleep states. This
5065change allows Sleep to be invoked with no arguments and causes the
5066debugger to execute all of the sleep states, 0-5, automatically.
5067
5068----------------------------------------
506920 December 2012. Summary of changes for version 20121220:
5070
50711) ACPICA Kernel-resident Subsystem:
5072
5073Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5074alternate entry point for AcpiWalkResources and improves the usability of
5075the resource manager by accepting as input a buffer containing the output
5076of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5077input buffer is not deleted by this interface so that it can be used by
5078the host later. See the ACPICA reference for details.
5079
5080Interpreter: 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
5082reflects that behavior.
5083
5084Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5085ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5086both get and set the new wake bit in these descriptors, separately from
5087the existing share bit. Reported by Aaron Lu.
5088
5089Interpreter: Fix Store() when an implicit conversion is not possible. For
5090example, in the cases such as a store of a string to an existing package
5091object, implement the store as a CopyObject(). This is a small departure
5092from the ACPI specification which states that the control method should
5093be
5094aborted in this case. However, the ASLTS suite depends on this behavior.
5095
5096Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5097macros: check if debug output is currently enabled as soon as possible to
5098minimize performance impact if debug is in fact not enabled.
5099
5100Source code restructuring: Cleanup to improve modularity. The following
5101new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5102psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5103Associated makefiles and project files have been updated.
5104
5105Changed an exception code for LoadTable operator. For the case where one
5106of the input strings is too long, change the returned exception code from
5107AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5108
5109Fixed a possible memory leak in dispatcher error path. On error, delete
5110the mutex object created during method mutex creation. Reported by
5111tim.gardner@canonical.com.
5112
5113Example Code and Data Size: These are the sizes for the OS-independent
5114acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5115debug version of the code includes the debug output trace mechanism and
5116has a much larger code and data size.
5117
5118  Previous Release:
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
5121  Current Release:
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
5124
5125
51262) iASL Compiler/Disassembler and Tools:
5127
5128iASL: Disallow a method call as argument to the ObjectType ASL operator.
5129This change tracks an errata to the ACPI 5.0 document. The AML grammar
5130will not allow the interpreter to differentiate between a method and a
5131method invocation when these are used as an argument to the ObjectType
5132operator. The ACPI specification change is to disallow a method
5133invocation
5134(UserTerm) for the ObjectType operator.
5135
5136Finish support for the TPM2 and CSRT tables in the headers, table
5137compiler, and disassembler.
5138
5139Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5140always expires immediately if the semaphore is not available. The
5141original
5142code was using a relative-time timeout, but sem_timedwait requires the
5143use
5144of an absolute time.
5145
5146iASL: Added a remark if the Timer() operator is used within a 32-bit
5147table. This operator returns a 64-bit time value that will be truncated
5148within a 32-bit table.
5149
5150iASL Source code restructuring: Cleanup to improve modularity. The
5151following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5152aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5153been updated.
5154
5155
5156----------------------------------------
515714 November 2012. Summary of changes for version 20121114:
5158
51591) ACPICA Kernel-resident Subsystem:
5160
5161Implemented a performance enhancement for ACPI/AML Package objects. This
5162change greatly increases the performance of Package objects within the
5163interpreter. It changes the processing of reference counts for packages
5164by
5165optimizing for the most common case where the package sub-objects are
5166either Integers, Strings, or Buffers. Increases the overall performance
5167of
5168the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
51692X.)
5170Chao Guan. ACPICA BZ 943.
5171
5172Implemented and deployed common macros to extract flag bits from resource
5173descriptors. Improves readability and maintainability of the code. Fixes
5174a
5175problem with the UART serial bus descriptor for the number of data bits
5176flags (was incorrectly 2 bits, should be 3).
5177
5178Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5179of the macros and changed the SETx macros to the style of (destination,
5180source). Also added ACPI_CASTx companion macros. Lv Zheng.
5181
5182Example Code and Data Size: These are the sizes for the OS-independent
5183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5184debug version of the code includes the debug output trace mechanism and
5185has a much larger code and data size.
5186
5187  Previous Release:
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
5190  Current Release:
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
5193
5194
51952) iASL Compiler/Disassembler and Tools:
5196
5197Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5198adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5199Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5200
5201Disassembler: Fixed a problem with external declaration generation. Fixes
5202a problem where an incorrect pathname could be generated for an external
5203declaration if the original reference to the object includes leading
5204carats (^). ACPICA BZ 984.
5205
5206Debugger: Completed a major update for the Disassemble<method> command.
5207This command was out-of-date and did not properly disassemble control
5208methods that had any reasonable complexity. This fix brings the command
5209up
5210to the same level as the rest of the disassembler. Adds one new file,
5211dmdeferred.c, which is existing code that is now common with the main
5212disassembler and the debugger disassemble command. ACPICA MZ 978.
5213
5214iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5215Newer versions of Bison emit this prototype, so moved the prototype out
5216of
5217the iASL header to where it is actually used in order to avoid a
5218duplicate
5219declaration.
5220
5221iASL/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
5226Improves reliability and maintainability of the code. Bob Moore, Lv
5227Zheng.
5228ACPICA BZ 981.
5229
5230Disassembler: Prevent duplicate External() statements. During generation
5231of external statements, detect similar pathnames that are actually
5232duplicates such as these:
5233  External (\ABCD)
5234  External (ABCD)
5235Remove all leading '\' characters from pathnames during the external
5236statement generation so that duplicates will be detected and tossed.
5237ACPICA BZ 985.
5238
5239Tools: Replace low-level I/O with stream I/O functions. Replace
5240open/read/write/close with the stream I/O equivalents
5241fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5242Moore.
5243
5244AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5245name header so that AcpiXtract recognizes the output file/table.
5246
5247iASL: Remove obsolete -2 option flag. Originally intended to force the
5248compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5249and the entire concept is now obsolete.
5250
5251----------------------------------------
525218 October 2012. Summary of changes for version 20121018:
5253
5254
52551) ACPICA Kernel-resident Subsystem:
5256
5257Updated support for the ACPI 5.0 MPST table. Fixes some problems
5258introduced by late changes to the table as it was added to the ACPI 5.0
5259specification. Includes header, disassembler, and data table compiler
5260support as well as a new version of the MPST template.
5261
5262AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
52635.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5264methods: _HID, _CID, and _UID.
5265
5266Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5267ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5268name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5269names for their various drivers. Affects the AcpiGetObjectInfo external
5270interface, and other internal interfaces as well.
5271
5272Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5273This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5274on machines that support non-aligned transfers. Optimizes for this case
5275rather than using a strncpy. With assistance from Zheng Lv.
5276
5277Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5278error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5279
5280Added a new debug print message for AML mutex objects that are force-
5281released. At control method termination, any currently acquired mutex
5282objects are force-released. Adds a new debug-only message for each one
5283that is released.
5284
5285Audited/updated all ACPICA return macros and the function debug depth
5286counter: 1) Ensure that all functions that use the various TRACE macros
5287also use the appropriate ACPICA return macros. 2) Ensure that all normal
5288return statements surround the return expression (value) with parens to
5289ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5290Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5291
5292Global source code changes/maintenance: All extra lines at the start and
5293end of each source file have been removed for consistency. Also, within
5294comments, all new sentences start with a single space instead of a double
5295space, again for consistency across the code base.
5296
5297Example Code and Data Size: These are the sizes for the OS-independent
5298acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5299debug version of the code includes the debug output trace mechanism and
5300has a much larger code and data size.
5301
5302  Previous Release:
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
5305  Current Release:
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
5308
5309
53102) iASL Compiler/Disassembler and Tools:
5311
5312AcpiExec: Improved the algorithm used for memory leak/corruption
5313detection. Added some intelligence to the code that maintains the global
5314list of allocated memory. The list is now ordered by allocated memory
5315address, significantly improving performance. When running AcpiExec on
5316the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5317on the platform and/or the environment. Note, this performance
5318enhancement affects the AcpiExec utility only, not the kernel-resident
5319ACPICA code.
5320
5321Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5322the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5323incorrect table offset reported for invalid opcodes. Report the original
532432-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5325
5326Disassembler: Enhanced the -vt option to emit the binary table data in
5327hex format to assist with debugging.
5328
5329Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5330size of file structure. Colin Ian King.
5331
5332----------------------------------------
533313 September 2012. Summary of changes for version 20120913:
5334
5335
53361) ACPICA Kernel-resident Subsystem:
5337
5338ACPI 5.0: Added two new notify types for the Hardware Error Notification
5339Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5340and
5341MCE(6).
5342
5343Table Manager: Merged/removed duplicate code in the root table resize
5344functions. One function is external, the other is internal. Lv Zheng,
5345ACPICA
5346BZ 846.
5347
5348Makefiles: Completely removed the obsolete "Linux" makefiles under
5349acpica/generate/linux. These makefiles are obsolete and have been
5350replaced
5351by
5352the generic unix makefiles under acpica/generate/unix.
5353
5354Makefiles: Ensure that binary files always copied properly. Minor rule
5355change
5356to ensure that the final binary output files are always copied up to the
5357appropriate binary directory (bin32 or bin64.)
5358
5359Example Code and Data Size: These are the sizes for the OS-independent
5360acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5361debug
5362version of the code includes the debug output trace mechanism and has a
5363much
5364larger code and data size.
5365
5366  Previous Release:
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
5369  Current Release:
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
5372
5373
53742) iASL Compiler/Disassembler and Tools:
5375
5376Disassembler: Fixed a possible fault during the disassembly of resource
5377descriptors when a second parse is required because of the invocation of
5378external control methods within the table. With assistance from
5379adq@lidskialf.net. ACPICA BZ 976.
5380
5381iASL: Fixed a namepath optimization problem. An error can occur if the
5382parse
5383node that contains the namepath to be optimized does not have a parent
5384node
5385that is a named object. This change fixes the problem.
5386
5387iASL: Fixed a regression where the AML file is not deleted on errors. The
5388AML
5389output file should be deleted if there are any errors during the
5390compiler.
5391The
5392only exception is if the -f (force output) option is used. ACPICA BZ 974.
5393
5394iASL: Added a feature to automatically increase internal line buffer
5395sizes.
5396Via realloc(), automatically increase the internal line buffer sizes as
5397necessary to support very long source code lines. The current version of
5398the
5399preprocessor requires a buffer long enough to contain full source code
5400lines.
5401This change increases the line buffer(s) if the input lines go beyond the
5402current buffer size. This eliminates errors that occurred when a source
5403code
5404line was longer than the buffer.
5405
5406iASL: Fixed a problem with constant folding in method declarations. The
5407SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5408if a
5409Type3 opcode was used.
5410
5411Debugger: Improved command help support. For incorrect argument count,
5412display
5413full help for the command. For help command itself, allow an argument to
5414specify a command.
5415
5416Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5417errors during execution of the suite. Guan Chao.
5418
5419----------------------------------------
542016 August 2012. Summary of changes for version 20120816:
5421
5422
54231) ACPICA Kernel-resident Subsystem:
5424
5425Removed all use of the deprecated _GTS and _BFS predefined methods. The
5426_GTS
5427(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5428deprecated and will probably be removed from the ACPI specification.
5429Windows
5430does not invoke them, and reportedly never will. The final nail in the
5431coffin
5432is that the ACPI specification states that these methods must be run with
5433interrupts off, which is not going to happen in a kernel interpreter.
5434Note:
5435Linux has removed all use of the methods also. It was discovered that
5436invoking these functions caused failures on some machines, probably
5437because
5438they were never tested since Windows does not call them. Affects two
5439external
5440interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5441ACPICA BZ 969.
5442
5443Implemented support for complex bit-packed buffers returned from the _PLD
5444(Physical Location of Device) predefined method. Adds a new external
5445interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5446C
5447structure. Note: C Bitfields cannot be used for this type of predefined
5448structure since the memory layout of individual bitfields is not defined
5449by
5450the C language. In addition, there are endian concerns where a compiler
5451will
5452change the bitfield ordering based on the machine type. The new ACPICA
5453interface eliminates these issues, and should be called after _PLD is
5454executed. ACPICA BZ 954.
5455
5456Implemented a change to allow a scope change to root (via "Scope (\)")
5457during
5458execution of module-level ASL code (code that is executed at table load
5459time.) Lin Ming.
5460
5461Added the Windows8/Server2012 string for the _OSI method. This change
5462adds
5463a
5464new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
54652012.
5466
5467Added header support for the new ACPI tables DBG2 (Debug Port Table Type
54682)
5469and CSRT (Core System Resource Table).
5470
5471Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5472names. This simplifies access to the buffers returned by these predefined
5473names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5474
5475GPE support: Removed an extraneous parameter from the various low-level
5476internal GPE functions. Tang Feng.
5477
5478Removed the linux makefiles from the unix packages. The generate/linux
5479makefiles are obsolete and have been removed from the unix tarball
5480release
5481packages. The replacement makefiles are under generate/unix, and there is
5482a
5483top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5484
5485Updates for Unix makefiles:
54861) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
54872) Update linker flags (move to end of command line) for AcpiExec
5488utility.
5489Guan Chao.
5490
5491Split ACPICA initialization functions to new file, utxfinit.c. Split from
5492utxface.c to improve modularity and reduce file size.
5493
5494Example Code and Data Size: These are the sizes for the OS-independent
5495acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5496debug version of the code includes the debug output trace mechanism and
5497has a
5498much larger code and data size.
5499
5500  Previous Release:
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
5503  Current Release:
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
5506
5507
55082) iASL Compiler/Disassembler and Tools:
5509
5510iASL: Fixed a problem with constant folding for fixed-length constant
5511expressions. The constant-folding code was not being invoked for constant
5512expressions that allow the use of type 3/4/5 opcodes to generate
5513constants
5514for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5515result
5516in the generation of invalid AML bytecode. ACPICA BZ 970.
5517
5518iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5519apparently automatically emit some of the necessary externals. This
5520change
5521handles these versions in order to eliminate generation warnings.
5522
5523Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5524
5525Disassembler: Add support to decode _PLD buffers. The decoded buffer
5526appears
5527within comments in the output file.
5528
5529Debugger: Fixed a regression with the "Threads" command where
5530AE_BAD_PARAMETER was always returned.
5531
5532----------------------------------------
553311 July 2012. Summary of changes for version 20120711:
5534
55351) ACPICA Kernel-resident Subsystem:
5536
5537Fixed a possible fault in the return package object repair code. Fixes a
5538problem that can occur when a lone package object is wrapped with an
5539outer
5540package object in order to force conformance to the ACPI specification.
5541Can
5542affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5543_DLM,
5544_CSD, _PSD, _TSD.
5545
5546Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5547PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5548ARB_DIS bit must be implemented in the host-dependent C3 processor power
5549state
5550support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5551both
5552Intel and other vendors. (for Intel: ICH4-M and earlier)
5553
5554This change removes the code to disable/enable bus master arbitration
5555during
5556suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5557causes
5558resume problems on some machines. The change has been in use for over
5559seven
5560years within Linux.
5561
5562Implemented two new external interfaces to support host-directed dynamic
5563ACPI
5564table load and unload. They are intended to simplify the host
5565implementation
5566of 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
5569table.
5570See the ACPICA reference for additional details. Adds one new file,
5571components/tables/tbxfload.c
5572
5573Implemented and deployed two new interfaces for errors and warnings that
5574are
5575known to be caused by BIOS/firmware issues:
5576  AcpiBiosError: Prints "ACPI Firmware Error" message.
5577  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5578Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5579table
5580and FADT errors. Additional deployment to be completed as appropriate in
5581the
5582future. The associated conditional macros are ACPI_BIOS_ERROR and
5583ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5584ACPICA
5585BZ
5586843.
5587
5588Implicit notify support: ensure that no memory allocation occurs within a
5589critical region. This fix moves a memory allocation outside of the time
5590that a
5591spinlock is held. Fixes issues on systems that do not allow this
5592behavior.
5593Jung-uk Kim.
5594
5595Split exception code utilities and tables into a new file,
5596utilities/utexcep.c
5597
5598Example Code and Data Size: These are the sizes for the OS-independent
5599acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5600debug
5601version of the code includes the debug output trace mechanism and has a
5602much
5603larger code and data size.
5604
5605  Previous Release:
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
5608  Current Release:
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
5611
5612
56132) iASL Compiler/Disassembler and Tools:
5614
5615iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5616of
56170. Jung-uk Kim.
5618
5619Debugger: Enhanced the "tables" command to emit additional information
5620about
5621the current set of ACPI tables, including the owner ID and flags decode.
5622
5623Debugger: Reimplemented the "unload" command to use the new
5624AcpiUnloadParentTable external interface. This command was disable
5625previously
5626due to need for an unload interface.
5627
5628AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5629option
5630will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5631
5632----------------------------------------
563320 June 2012. Summary of changes for version 20120620:
5634
5635
56361) ACPICA Kernel-resident Subsystem:
5637
5638Implemented support to expand the "implicit notify" feature to allow
5639multiple
5640devices to be notified by a single GPE. This feature automatically
5641generates a
5642runtime device notification in the absence of a BIOS-provided GPE control
5643method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5644notify is
5645provided by ACPICA for Windows compatibility, and is a workaround for
5646BIOS
5647AML
5648code errors. See the description of the AcpiSetupGpeForWake interface in
5649the
5650APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5651
5652Changed some comments and internal function names to simplify and ensure
5653correctness of the Linux code translation. No functional changes.
5654
5655Example Code and Data Size: These are the sizes for the OS-independent
5656acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5657debug
5658version of the code includes the debug output trace mechanism and has a
5659much
5660larger code and data size.
5661
5662  Previous Release:
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
5665  Current Release:
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
5668
5669
56702) iASL Compiler/Disassembler and Tools:
5671
5672Disassembler: Added support to emit short, commented descriptions for the
5673ACPI
5674predefined names in order to improve the readability of the disassembled
5675output. ACPICA BZ 959. Changes include:
5676  1) Emit descriptions for all standard predefined names (_INI, _STA,
5677_PRW,
5678etc.)
5679  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5680  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5681etc.)
5682
5683AcpiSrc: Fixed several long-standing Linux code translation issues.
5684Argument
5685descriptions in function headers are now translated properly to lower
5686case
5687and
5688underscores. ACPICA BZ 961. Also fixes translation problems such as
5689these:
5690(old -> new)
5691  i_aSL -> iASL
5692  00-7_f -> 00-7F
5693  16_k -> 16K
5694  local_fADT -> local_FADT
5695  execute_oSI -> execute_OSI
5696
5697iASL: Fixed a problem where null bytes were inadvertently emitted into
5698some
5699listing files.
5700
5701iASL: Added the existing debug options to the standard help screen. There
5702are
5703no longer two different help screens. ACPICA BZ 957.
5704
5705AcpiHelp: Fixed some typos in the various predefined name descriptions.
5706Also
5707expand some of the descriptions where appropriate.
5708
5709iASL: Fixed the -ot option (display compile times/statistics). Was not
5710working
5711properly for standard output; only worked for the debug file case.
5712
5713----------------------------------------
571418 May 2012. Summary of changes for version 20120518:
5715
5716
57171) ACPICA Core Subsystem:
5718
5719Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5720defined
5721to block until asynchronous events such as notifies and GPEs have
5722completed.
5723Within ACPICA, it is only called before a notify or GPE handler is
5724removed/uninstalled. It also may be useful for the host OS within related
5725drivers such as the Embedded Controller driver. See the ACPICA reference
5726for
5727additional information. ACPICA BZ 868.
5728
5729ACPI Tables: Added a new error message for a possible overflow failure
5730during
5731the conversion of FADT 32-bit legacy register addresses to internal
5732common
573364-
5734bit GAS structure representation. The GAS has a one-byte "bit length"
5735field,
5736thus limiting the register length to 255 bits. ACPICA BZ 953.
5737
5738Example Code and Data Size: These are the sizes for the OS-independent
5739acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5740debug
5741version of the code includes the debug output trace mechanism and has a
5742much
5743larger code and data size.
5744
5745  Previous Release:
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
5748  Current Release:
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
5751
5752
57532) iASL Compiler/Disassembler and Tools:
5754
5755iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
5756macro.
5757This keyword was added late in the ACPI 5.0 release cycle and was not
5758implemented until now.
5759
5760Disassembler: Added support for Operation Region externals. Adds missing
5761support for operation regions that are defined in another table, and
5762referenced locally via a Field or BankField ASL operator. Now generates
5763the
5764correct External statement.
5765
5766Disassembler: Several additional fixes for the External() statement
5767generation
5768related to some ASL operators. Also, order the External() statements
5769alphabetically in the disassembler output. Fixes the External()
5770generation
5771for
5772the Create* field, Alias, and Scope operators:
5773 1) Create* buffer field operators - fix type mismatch warning on
5774disassembly
5775 2) Alias - implement missing External support
5776 3) Scope - fix to make sure all necessary externals are emitted.
5777
5778iASL: Improved pathname support. For include files, merge the prefix
5779pathname
5780with the file pathname and eliminate unnecessary components. Convert
5781backslashes in all pathnames to forward slashes, for readability. Include
5782file
5783pathname changes affect both #include and Include() type operators.
5784
5785iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
5786end
5787of a valid line by inserting a newline and then returning the EOF during
5788the
5789next call to GetNextLine. Prevents the line from being ignored due to EOF
5790condition.
5791
5792iASL: Implemented some changes to enhance the IDE support (-vi option.)
5793Error
5794and Warning messages are now correctly recognized for both the source
5795code
5796browser and the global error and warning counts.
5797
5798----------------------------------------
579920 April 2012. Summary of changes for version 20120420:
5800
5801
58021) ACPICA Core Subsystem:
5803
5804Implemented support for multiple notify handlers. This change adds
5805support
5806to
5807allow multiple system and device notify handlers on Device, Thermal Zone,
5808and
5809Processor objects. This can simplify the host OS notification
5810implementation.
5811Also re-worked and restructured the entire notify support code to
5812simplify
5813handler installation, handler removal, notify event queuing, and notify
5814dispatch to handler(s). Note: there can still only be two global notify
5815handlers - one for system notifies and one for device notifies. There are
5816no
5817changes to the existing handler install/remove interfaces. Lin Ming, Bob
5818Moore, Rafael Wysocki.
5819
5820Fixed a regression in the package repair code where the object reference
5821count was calculated incorrectly. Regression was introduced in the commit
5822"Support to add Package wrappers".
5823
5824Fixed a couple possible memory leaks in the AML parser, in the error
5825recovery
5826path. Jesper Juhl, Lin Ming.
5827
5828Example Code and Data Size: These are the sizes for the OS-independent
5829acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5830debug version of the code includes the debug output trace mechanism and
5831has a
5832much larger code and data size.
5833
5834  Previous Release:
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
5837  Current Release:
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
5840
5841
58422) iASL Compiler/Disassembler and Tools:
5843
5844iASL: Fixed a problem with the resource descriptor support where the
5845length
5846of the StartDependentFn and StartDependentFnNoPrio descriptors were not
5847included in cumulative descriptor offset, resulting in incorrect values
5848for
5849resource tags within resource descriptors appearing after a
5850StartDependent*
5851descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5852
5853iASL and Preprocessor: Implemented full support for the #line directive
5854to
5855correctly track original source file line numbers through the .i
5856preprocessor
5857output file - for error and warning messages.
5858
5859iASL: Expand the allowable byte constants for address space IDs.
5860Previously,
5861the allowable range was 0x80-0xFF (user-defined spaces), now the range is
58620x0A-0xFF to allow for custom and new IDs without changing the compiler.
5863
5864iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5865
5866iASL: Add option to completely disable the preprocessor (-Pn).
5867
5868iASL: Now emit all error/warning messages to standard error (stderr) by
5869default (instead of the previous stdout).
5870
5871ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
5872Update
5873for resource descriptor offset fix above. Update/cleanup error output
5874routines. Enable and send iASL errors/warnings to an error logfile
5875(error.txt). Send all other iASL output to a logfile (compiler.txt).
5876Fixed
5877several extraneous "unrecognized operator" messages.
5878
5879----------------------------------------
588020 March 2012. Summary of changes for version 20120320:
5881
5882
58831) ACPICA Core Subsystem:
5884
5885Enhanced the sleep/wake interfaces to optionally execute the _GTS method
5886(Going To Sleep) and the _BFS method (Back From Sleep). Windows
5887apparently
5888does not execute these methods, and therefore these methods are often
5889untested. It has been seen on some systems where the execution of these
5890methods causes errors and also prevents the machine from entering S5. It
5891is
5892therefore suggested that host operating systems do not execute these
5893methods
5894by default. In the future, perhaps these methods can be optionally
5895executed
5896based on the age of the system and/or what is the newest version of
5897Windows
5898that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
5899and
5900AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
5901Ming.
5902
5903Fixed a problem where the length of the local/common FADT was set too
5904early.
5905The local FADT table length cannot be set to the common length until the
5906original length has been examined. There is code that checks the table
5907length
5908and sets various fields appropriately. This can affect older machines
5909with
5910early FADT versions. For example, this can cause inadvertent writes to
5911the
5912CST_CNT register. Julian Anastasov.
5913
5914Fixed a mapping issue related to a physical table override. Use the
5915deferred
5916mapping mechanism for tables loaded via the physical override OSL
5917interface.
5918This allows for early mapping before the virtual memory manager is
5919available.
5920Thomas Renninger, Bob Moore.
5921
5922Enhanced the automatic return-object repair code: Repair a common problem
5923with
5924predefined methods that are defined to return a variable-length Package
5925of
5926sub-objects. If there is only one sub-object, some BIOS ASL code
5927mistakenly
5928simply returns the single object instead of a Package with one sub-
5929object.
5930This new support will repair this error by wrapping a Package object
5931around
5932the original object, creating the correct and expected Package with one
5933sub-
5934object. Names that can be repaired in this manner include: _ALR, _CSD,
5935_HPX,
5936_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
5937939.
5938
5939Changed the exception code returned for invalid ACPI paths passed as
5940parameters to external interfaces such as AcpiEvaluateObject. Was
5941AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
5942
5943Example Code and Data Size: These are the sizes for the OS-independent
5944acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5945debug
5946version of the code includes the debug output trace mechanism and has a
5947much
5948larger code and data size.
5949
5950  Previous Release:
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
5953  Current Release:
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
5956
5957
59582) iASL Compiler/Disassembler and Tools:
5959
5960iASL: Added the infrastructure and initial implementation of a integrated
5961C-
5962like preprocessor. This will simplify BIOS development process by
5963eliminating
5964the need for a separate preprocessing step during builds. On Windows, it
5965also
5966eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
5967features including full #define() macro support are still under
5968development.
5969These preprocessor directives are supported:
5970    #define
5971    #elif
5972    #else
5973    #endif
5974    #error
5975    #if
5976    #ifdef
5977    #ifndef
5978    #include
5979    #pragma message
5980    #undef
5981    #warning
5982In 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)
5986
5987Table Compiler: Fixed a problem where the equals operator within an
5988expression
5989did not work properly.
5990
5991Updated iASL to use the current versions of Bison/Flex. Updated the
5992Windows
5993project file to invoke these tools from the standard location. ACPICA BZ
5994904.
5995Versions supported:
5996    Flex for Windows:  V2.5.4
5997    Bison for Windows: V2.4.1
5998
5999----------------------------------------
600015 February 2012. Summary of changes for version 20120215:
6001
6002
60031) ACPICA Core Subsystem:
6004
6005There have been some major changes to the sleep/wake support code, as
6006described below (a - e).
6007
6008a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6009AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6010AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6011the
6012time the _BFS method is called and the _WAK method is called. NOTE: all
6013hosts
6014must update their wake/resume code or else sleep/wake will not work
6015properly.
6016Rafael Wysocki.
6017
6018b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6019_WAK
6020method. Some machines require that the GPEs are enabled before the _WAK
6021method
6022is executed. Thomas Renninger.
6023
6024c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6025bit.
6026Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6027to
6028determine whether the system is rebooting or resuming. Matthew Garrett.
6029
6030d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6031Sleep) to
6032match the ACPI specification requirement. Rafael Wysocki.
6033
6034e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6035registers within the V5 FADT. This support adds two new files:
6036hardware/hwesleep.c implements the support for the new registers. Moved
6037all
6038sleep/wake external interfaces to hardware/hwxfsleep.c.
6039
6040
6041Added a new OSL interface for ACPI table overrides,
6042AcpiOsPhysicalTableOverride. This interface allows the host to override a
6043table via a physical address, instead of the logical address required by
6044AcpiOsTableOverride. This simplifies the host implementation. Initial
6045implementation by Thomas Renninger. The ACPICA implementation creates a
6046single
6047shared function for table overrides that attempts both a logical and a
6048physical override.
6049
6050Expanded the OSL memory read/write interfaces to 64-bit data
6051(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6052transfer support for GAS register structures passed to AcpiRead and
6053AcpiWrite.
6054
6055Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6056custom
6057build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6058model.
6059See the ACPICA reference for details. ACPICA BZ 942. This option removes
6060about
606110% of the code and 5% of the static data, and the following hardware
6062ACPI
6063features become unavailable:
6064    PM Event and Control registers
6065    SCI interrupt (and handler)
6066    Fixed Events
6067    General Purpose Events (GPEs)
6068    Global Lock
6069    ACPI PM timer
6070    FACS table (Waking vectors and Global Lock)
6071
6072Updated the unix tarball directory structure to match the ACPICA git
6073source
6074tree. This ensures that the generic unix makefiles work properly (in
6075generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6076867.
6077
6078Updated the return value of the _REV predefined method to integer value 5
6079to
6080reflect ACPI 5.0 support.
6081
6082Moved the external ACPI PM timer interface prototypes to the public
6083acpixf.h
6084file where they belong.
6085
6086Example Code and Data Size: These are the sizes for the OS-independent
6087acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6088debug
6089version of the code includes the debug output trace mechanism and has a
6090much
6091larger code and data size.
6092
6093  Previous Release:
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
6096  Current Release:
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
6099
6100
61012) iASL Compiler/Disassembler and Tools:
6102
6103Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6104descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6105incorrectly displayed.
6106
6107AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6108specification.
6109
6110----------------------------------------
611111 January 2012. Summary of changes for version 20120111:
6112
6113
61141) ACPICA Core Subsystem:
6115
6116Implemented a new mechanism to allow host device drivers to check for
6117address
6118range conflicts with ACPI Operation Regions. Both SystemMemory and
6119SystemIO
6120address spaces are supported. A new external interface,
6121AcpiCheckAddressRange,
6122allows drivers to check an address range against the ACPI namespace. See
6123the
6124ACPICA reference for additional details. Adds one new file,
6125utilities/utaddress.c. Lin Ming, Bob Moore.
6126
6127Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6128Control
6129and
6130Status registers, update the ACPI 5.0 flags, and update internal data
6131structures to handle an FADT larger than 256 bytes. The size of the ACPI
61325.0
6133FADT is 268 bytes.
6134
6135Updated all ACPICA copyrights and signons to 2012. Added the 2012
6136copyright to
6137all module headers and signons, including the standard Linux header. This
6138affects virtually every file in the ACPICA core subsystem, iASL compiler,
6139and
6140all ACPICA utilities.
6141
6142Example Code and Data Size: These are the sizes for the OS-independent
6143acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6144debug
6145version of the code includes the debug output trace mechanism and has a
6146much
6147larger code and data size.
6148
6149  Previous Release:
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
6152  Current Release:
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
6155
6156
61572) iASL Compiler/Disassembler and Tools:
6158
6159Disassembler: fixed a problem with the automatic resource tag generation
6160support. Fixes a problem where the resource tags are inadvertently not
6161constructed if the table being disassembled contains external references
6162to
6163control methods. Moved the actual construction of the tags to after the
6164final
6165namespace is constructed (after 2nd parse is invoked due to external
6166control
6167method references.) ACPICA BZ 941.
6168
6169Table Compiler: Make all "generic" operators caseless. These are the
6170operators
6171like UINT8, String, etc. Making these caseless improves ease-of-use.
6172ACPICA BZ
6173934.
6174
6175----------------------------------------
617623 November 2011. Summary of changes for version 20111123:
6177
61780) ACPI 5.0 Support:
6179
6180This release contains full support for the ACPI 5.0 specification, as
6181summarized below.
6182
6183Reduced Hardware Support:
6184-------------------------
6185
6186This support allows for ACPI systems without the usual ACPI hardware.
6187This
6188support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6189will
6190not attempt to initialize or use any of the usual ACPI hardware. Note,
6191when
6192this flag is set, all of the following ACPI hardware is assumed to be not
6193present and is not initialized or accessed:
6194
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
6199    Global Lock
6200    System Control Interrupt (SCI)
6201    The FACS is assumed to be non-existent
6202
6203ACPI Tables:
6204------------
6205
6206All new tables and updates to existing tables are fully supported in the
6207ACPICA headers (for use by device drivers), the disassembler, and the
6208iASL
6209Data Table Compiler. ACPI 5.0 defines these new tables:
6210
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 */
6219
6220Operation Regions/SpaceIDs:
6221---------------------------
6222
6223All new operation regions are fully supported by the iASL compiler, the
6224disassembler, and the ACPICA runtime code (for dispatch to region
6225handlers.)
6226The new operation region Space IDs are:
6227
6228    GeneralPurposeIo
6229    GenericSerialBus
6230
6231Resource Descriptors:
6232---------------------
6233
6234All new ASL resource descriptors are fully supported by the iASL
6235compiler,
6236the
6237ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6238(including
6239all new predefined resource tags). New descriptors are:
6240
6241    FixedDma
6242    GpioIo
6243    GpioInt
6244    I2cSerialBus
6245    SpiSerialBus
6246    UartSerialBus
6247
6248ASL/AML Operators, New and Modified:
6249------------------------------------
6250
6251One new operator is added, the Connection operator, which is used to
6252associate
6253a GeneralPurposeIo or GenericSerialBus resource descriptor with
6254individual
6255field objects within an operation region. Several new protocols are
6256associated
6257with the AccessAs operator. All are fully supported by the iASL compiler,
6258disassembler, and runtime ACPICA AML interpreter:
6259
6260    Connection                      // Declare Field Connection
6261attributes
6262    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6263    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6264Protocol
6265    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6266    RawDataBuffer                       // Data type for Vendor Data
6267fields
6268
6269Predefined ASL/AML Objects:
6270---------------------------
6271
6272All new predefined objects/control-methods are supported by the iASL
6273compiler
6274and the ACPICA runtime validation/repair (arguments and return values.)
6275New
6276predefined names include the following:
6277
6278Standard Predefined Names (Objects or Control Methods):
6279    _AEI, _CLS, _CPC, _CWS, _DEP,
6280    _DLM, _EVT, _GCP, _CRT, _GWS,
6281    _HRV, _PRE, _PSE, _SRT, _SUB.
6282
6283Resource Tags (Names used to access individual fields within resource
6284descriptors):
6285    _DBT, _DPL, _DRS, _END, _FLC,
6286    _IOR, _LIN, _MOD, _PAR, _PHA,
6287    _PIN, _PPI, _POL, _RXL, _SLV,
6288    _SPE, _STB, _TXL, _VEN.
6289
6290ACPICA External Interfaces:
6291---------------------------
6292
6293Several new interfaces have been defined for use by ACPI-related device
6294drivers and other host OS services:
6295
6296AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6297to
6298acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6299provided by the BIOS. They are intended to be used in conjunction with
6300the
6301ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6302mutual exclusion with the AML code/interpreter.
6303
6304AcpiGetEventResources: Returns the (formatted) resource descriptors as
6305defined
6306by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6307provides
6308resource descriptors associated with hardware-reduced platform events,
6309similar
6310to the AcpiGetCurrentResources interface.
6311
6312Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6313operation regions, information about the Connection() object and any
6314optional
6315length information is passed to the region handler within the Context
6316parameter.
6317
6318AcpiBufferToResource: This interface converts a raw AML buffer containing
6319a
6320resource template or resource descriptor to the ACPI_RESOURCE internal
6321format
6322suitable for use by device drivers. Can be used by an operation region
6323handler
6324to convert the Connection() buffer object into a ACPI_RESOURCE.
6325
6326Miscellaneous/Tools/TestSuites:
6327-------------------------------
6328
6329Support for extended _HID names (Four alpha characters instead of three).
6330Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6331Support for ACPI 5.0 features in the ASLTS test suite.
6332Fully updated documentation (ACPICA and iASL reference documents.)
6333
6334ACPI Table Definition Language:
6335-------------------------------
6336
6337Support for this language was implemented and released as a subsystem of
6338the
6339iASL compiler in 2010. (See the iASL compiler User Guide.)
6340
6341
6342Non-ACPI 5.0 changes for this release:
6343--------------------------------------
6344
63451) ACPICA Core Subsystem:
6346
6347Fix a problem with operation region declarations where a failure can
6348occur
6349if
6350the region name and an argument that evaluates to an object (such as the
6351region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6352937.
6353
6354Do not abort an ACPI table load if an invalid space ID is found within.
6355This
6356will be caught later if the offending method is executed. ACPICA BZ 925.
6357
6358Fixed an issue with the FFixedHW space ID where the ID was not always
6359recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6360
6361Fixed a problem with the 32-bit generation of the unix-specific OSL
6362(osunixxf.c). Lin Ming, ACPICA BZ 936.
6363
6364Several changes made to enable generation with the GCC 4.6 compiler.
6365ACPICA BZ
6366935.
6367
6368New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6369Index/Bank
6370field registers out-of-range.
6371
63722) iASL Compiler/Disassembler and Tools:
6373
6374iASL: Implemented the __PATH__ operator, which returns the full pathname
6375of
6376the current source file.
6377
6378AcpiHelp: Automatically display expanded keyword information for all ASL
6379operators.
6380
6381Debugger: Add "Template" command to disassemble/dump resource template
6382buffers.
6383
6384Added a new master script to generate and execute the ASLTS test suite.
6385Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6386
6387iASL: Fix problem with listing generation during processing of the
6388Switch()
6389operator where AML listing was disabled until the entire Switch block was
6390completed.
6391
6392iASL: Improve support for semicolon statement terminators. Fix "invalid
6393character" message for some cases when the semicolon is used. Semicolons
6394are
6395now allowed after every <Term> grammar element. ACPICA BZ 927.
6396
6397iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6398923.
6399
6400Disassembler: Fix problem with disassembly of the DataTableRegion
6401operator
6402where an inadvertent "Unhandled deferred opcode" message could be
6403generated.
6404
64053) Example Code and Data Size
6406
6407These are the sizes for the OS-independent acpica.lib produced by the
6408Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6409includes the debug output trace mechanism and has a much larger code and
6410data
6411size.
6412
6413  Previous Release:
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
6416  Current Release:
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
6419
6420----------------------------------------
642122 September 2011. Summary of changes for version 20110922:
6422
64230) ACPI 5.0 News:
6424
6425Support for ACPI 5.0 in ACPICA has been underway for several months and
6426will
6427be released at the same time that ACPI 5.0 is officially released.
6428
6429The ACPI 5.0 specification is on track for release in the next few
6430months.
6431
64321) ACPICA Core Subsystem:
6433
6434Fixed a problem where the maximum sleep time for the Sleep() operator was
6435intended to be limited to two seconds, but was inadvertently limited to
643620
6437seconds instead.
6438
6439Linux and Unix makefiles: Added header file dependencies to ensure
6440correct
6441generation of ACPICA core code and utilities. Also simplified the
6442makefiles
6443considerably through the use of the vpath variable to specify search
6444paths.
6445ACPICA BZ 924.
6446
64472) iASL Compiler/Disassembler and Tools:
6448
6449iASL: Implemented support to check the access length for all fields
6450created to
6451access named Resource Descriptor fields. For example, if a resource field
6452is
6453defined to be two bits, a warning is issued if a CreateXxxxField() is
6454used
6455with an incorrect bit length. This is implemented for all current
6456resource
6457descriptor names. ACPICA BZ 930.
6458
6459Disassembler: Fixed a byte ordering problem with the output of 24-bit and
646056-
6461bit integers.
6462
6463iASL: Fixed a couple of issues associated with variable-length package
6464objects. 1) properly handle constants like One, Ones, Zero -- do not make
6465a
6466VAR_PACKAGE when these are used as a package length. 2) Allow the
6467VAR_PACKAGE
6468opcode (in addition to PACKAGE) when validating object types for
6469predefined
6470names.
6471
6472iASL: Emit statistics for all output files (instead of just the ASL input
6473and
6474AML output). Includes listings, hex files, etc.
6475
6476iASL: Added -G option to the table compiler to allow the compilation of
6477custom
6478ACPI tables. The only part of a table that is required is the standard
647936-
6480byte
6481ACPI header.
6482
6483AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6484headers),
6485which also adds correct 64-bit support. Also, now all output filenames
6486are
6487completely lower case.
6488
6489AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6490loading table files. A warning is issued for any such tables. The only
6491exception is an FADT. This also fixes a possible fault when attempting to
6492load
6493non-AML tables. ACPICA BZ 932.
6494
6495AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6496a
6497missing table terminator could cause a fault when using the -p option.
6498
6499AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6500statistics.
6501
65023) Example Code and Data Size
6503
6504These are the sizes for the OS-independent acpica.lib produced by the
6505Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6506includes the debug output trace mechanism and has a much larger code and
6507data
6508size.
6509
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
6516
6517
6518----------------------------------------
651923 June 2011. Summary of changes for version 20110623:
6520
65211) ACPI CA Core Subsystem:
6522
6523Updated the predefined name repair mechanism to not attempt repair of a
6524_TSS
6525return object if a _PSS object is present. We can only sort the _TSS
6526return
6527package if there is no _PSS within the same scope. This is because if
6528_PSS
6529is
6530present, the ACPI specification dictates that the _TSS Power Dissipation
6531field
6532is to be ignored, and therefore some BIOSs leave garbage values in the
6533_TSS
6534Power field(s). In this case, it is best to just return the _TSS package
6535as-
6536is. Reported by, and fixed with assistance from Fenghua Yu.
6537
6538Added an option to globally disable the control method return value
6539validation
6540and repair. This runtime option can be used to disable return value
6541repair
6542if
6543this is causing a problem on a particular machine. Also added an option
6544to
6545AcpiExec (-dr) to set this disable flag.
6546
6547All makefiles and project files: Major changes to improve generation of
6548ACPICA
6549tools. 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
6555
6556Linux-specific header: update handling of THREAD_ID and pthread. For the
655732-
6558bit case, improve casting to eliminate possible warnings, especially with
6559the
6560acpica tools.
6561
6562Example Code and Data Size: These are the sizes for the OS-independent
6563acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6564debug
6565version of the code includes the debug output trace mechanism and has a
6566much
6567larger code and data size.
6568
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
6575
65762) iASL Compiler/Disassembler and Tools:
6577
6578With this release, a new utility named "acpihelp" has been added to the
6579ACPICA
6580package. This utility summarizes the ACPI specification chapters for the
6581ASL
6582and AML languages. It generates under Linux/Unix as well as Windows, and
6583provides 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
6589grammar.
6590    Decode/display AML opcode -- with opcode name, arguments, and
6591grammar.
6592
6593Service Layers: Make multi-thread support configurable. Conditionally
6594compile
6595the multi-thread support so that threading libraries will not be linked
6596if
6597not
6598necessary. The only tool that requires multi-thread support is AcpiExec.
6599
6600iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6601of
6602Bison appear to want the interface to yyerror to be a const char * (or at
6603least this is a problem when generating iASL on some systems.) ACPICA BZ
6604923
6605Pierre Lejeune.
6606
6607Tools: Fix for systems where O_BINARY is not defined. Only used for
6608Windows
6609versions of the tools.
6610
6611----------------------------------------
661227 May 2011. Summary of changes for version 20110527:
6613
66141) ACPI CA Core Subsystem:
6615
6616ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6617table
6618signature. 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).
6628
6629Added the missing _TDL predefined name to the global name list in order
6630to
6631enable validation. Affects both the core ACPICA code and the iASL
6632compiler.
6633
6634Example Code and Data Size: These are the sizes for the OS-independent
6635acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6636debug
6637version of the code includes the debug output trace mechanism and has a
6638much
6639larger code and data size.
6640
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
6647
66482) iASL Compiler/Disassembler and Tools:
6649
6650Debugger/AcpiExec: Implemented support for "complex" method arguments on
6651the
6652debugger command line. This adds support beyond simple integers --
6653including
6654Strings, Buffers, and Packages. Includes support for nested packages.
6655Increased the default command line buffer size to accommodate these
6656arguments.
6657See the ACPICA reference for details and syntax. ACPICA BZ 917.
6658
6659Debugger/AcpiExec: Implemented support for "default" method arguments for
6660the
6661Execute/Debug command. Now, the debugger will always invoke a control
6662method
6663with the required number of arguments -- even if the command line
6664specifies
6665none or insufficient arguments. It uses default integer values for any
6666missing
6667arguments. Also fixes a bug where only six method arguments maximum were
6668supported instead of the required seven.
6669
6670Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6671and
6672also return status in order to prevent buffer overruns. See the ACPICA
6673reference for details and syntax. ACPICA BZ 921
6674
6675iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6676makefiles to simplify support for the two different but similar parser
6677generators, bison and yacc.
6678
6679Updated the generic unix makefile for gcc 4. The default gcc version is
6680now
6681expected to be 4 or greater, since options specific to gcc 4 are used.
6682
6683----------------------------------------
668413 April 2011. Summary of changes for version 20110413:
6685
66861) ACPI CA Core Subsystem:
6687
6688Implemented support to execute a so-called "orphan" _REG method under the
6689EC
6690device. This change will force the execution of a _REG method underneath
6691the
6692EC
6693device even if there is no corresponding operation region of type
6694EmbeddedControl. Fixes a problem seen on some machines and apparently is
6695compatible with Windows behavior. ACPICA BZ 875.
6696
6697Added more predefined methods that are eligible for automatic NULL
6698package
6699element removal. This change adds another group of predefined names to
6700the
6701list
6702of names that can be repaired by having NULL package elements dynamically
6703removed. This group are those methods that return a single variable-
6704length
6705package containing simple data types such as integers, buffers, strings.
6706This
6707includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6708_PSL,
6709_Sx,
6710and _TZD. ACPICA BZ 914.
6711
6712Split and segregated all internal global lock functions to a new file,
6713evglock.c.
6714
6715Updated internal address SpaceID for DataTable regions. Moved this
6716internal
6717space
6718id in preparation for ACPI 5.0 changes that will include some new space
6719IDs.
6720This
6721change should not affect user/host code.
6722
6723Example Code and Data Size: These are the sizes for the OS-independent
6724acpica.lib
6725produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6726version of
6727the code includes the debug output trace mechanism and has a much larger
6728code
6729and
6730data size.
6731
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
6738
67392) iASL Compiler/Disassembler and Tools:
6740
6741iASL/DTC: Major update for new grammar features. Allow generic data types
6742in
6743custom ACPI tables. Field names are now optional. Any line can be split
6744to
6745multiple lines using the continuation char (\). Large buffers now use
6746line-
6747continuation character(s) and no colon on the continuation lines. See the
6748grammar
6749update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
6750Moore.
6751
6752iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
6753statements.
6754Since the parser stuffs a "zero" as the return value for these statements
6755(due
6756to
6757the underlying AML grammar), they were seen as "return with value" by the
6758iASL
6759semantic checking. They are now seen correctly as "null" return
6760statements.
6761
6762iASL: Check if a_REG declaration has a corresponding Operation Region.
6763Adds a
6764check for each _REG to ensure that there is in fact a corresponding
6765operation
6766region declaration in the same scope. If not, the _REG method is not very
6767useful
6768since it probably won't be executed. ACPICA BZ 915.
6769
6770iASL/DTC: Finish support for expression evaluation. Added a new
6771expression
6772parser
6773that implements c-style operator precedence and parenthesization. ACPICA
6774bugzilla
6775908.
6776
6777Disassembler/DTC: Remove support for () and <> style comments in data
6778tables.
6779Now
6780that DTC has full expression support, we don't want to have comment
6781strings
6782that
6783start with a parentheses or a less-than symbol. Now, only the standard /*
6784and
6785//
6786comments are supported, as well as the bracket [] comments.
6787
6788AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
6789"unusual"
6790headers in the acpidump file. Update the header validation to support
6791these
6792tables. Problem introduced in previous AcpiXtract version in the change
6793to
6794support "wrong checksum" error messages emitted by acpidump utility.
6795
6796iASL: Add a * option to generate all template files (as a synonym for
6797ALL)
6798as
6799in
6800"iasl -T *" or "iasl -T ALL".
6801
6802iASL/DTC: Do not abort compiler on fatal errors. We do not want to
6803completely
6804abort the compiler on "fatal" errors, simply should abort the current
6805compile.
6806This allows multiple compiles with a single (possibly wildcard) compiler
6807invocation.
6808
6809----------------------------------------
681016 March 2011. Summary of changes for version 20110316:
6811
68121) ACPI CA Core Subsystem:
6813
6814Fixed a problem caused by a _PRW method appearing at the namespace root
6815scope
6816during the setup of wake GPEs. A fault could occur if a _PRW directly
6817under
6818the
6819root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
6820
6821Implemented support for "spurious" Global Lock interrupts. On some
6822systems, a
6823global lock interrupt can occur without the pending flag being set. Upon
6824a
6825GL
6826interrupt, we now ensure that a thread is actually waiting for the lock
6827before
6828signaling GL availability. Rafael Wysocki, Bob Moore.
6829
6830Example Code and Data Size: These are the sizes for the OS-independent
6831acpica.lib
6832produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6833version of
6834the code includes the debug output trace mechanism and has a much larger
6835code
6836and
6837data size.
6838
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
6845
68462) iASL Compiler/Disassembler and Tools:
6847
6848Implemented full support for the "SLIC" ACPI table. Includes support in
6849the
6850header files, disassembler, table compiler, and template generator. Bob
6851Moore,
6852Lin Ming.
6853
6854AcpiXtract: Correctly handle embedded comments and messages from
6855AcpiDump.
6856Apparently some or all versions of acpidump will occasionally emit a
6857comment
6858like
6859"Wrong checksum", etc., into the dump file. This was causing problems for
6860AcpiXtract. ACPICA BZ 905.
6861
6862iASL: Fix the Linux makefile by removing an inadvertent double file
6863inclusion.
6864ACPICA BZ 913.
6865
6866AcpiExec: Update installation of operation region handlers. Install one
6867handler
6868for a user-defined address space. This is used by the ASL test suite
6869(ASLTS).
6870
6871----------------------------------------
687211 February 2011. Summary of changes for version 20110211:
6873
68741) ACPI CA Core Subsystem:
6875
6876Added a mechanism to defer _REG methods for some early-installed
6877handlers.
6878Most user handlers should be installed before call to
6879AcpiEnableSubsystem.
6880However, Event handlers and region handlers should be installed after
6881AcpiInitializeObjects. Override handlers for the "default" regions should
6882be
6883installed early, however. This change executes all _REG methods for the
6884default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
6885chicken/egg issues between them. ACPICA BZ 848.
6886
6887Implemented an optimization for GPE detection. This optimization will
6888simply
6889ignore GPE registers that contain no enabled GPEs -- there is no need to
6890read the register since this information is available internally. This
6891becomes more important on machines with a large GPE space. ACPICA
6892bugzilla
6893884. Lin Ming. Suggestion from Joe Liu.
6894
6895Removed all use of the highly unreliable FADT revision field. The
6896revision
6897number in the FADT has been found to be completely unreliable and cannot
6898be
6899trusted. Only the actual table length can be used to infer the version.
6900This
6901change updates the ACPICA core and the disassembler so that both no
6902longer
6903even look at the FADT version and instead depend solely upon the FADT
6904length.
6905
6906Fix an unresolved name issue for the no-debug and no-error-message source
6907generation cases. The _AcpiModuleName was left undefined in these cases,
6908but
6909it is actually needed as a parameter to some interfaces. Define
6910_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
6911
6912Split 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
6918
6919Example Code and Data Size: These are the sizes for the OS-independent
6920acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6921debug version of the code includes the debug output trace mechanism and
6922has
6923a much larger code and data size.
6924
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
6931
69322) iASL Compiler/Disassembler and Tools:
6933
6934iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
6935These are useful C-style macros with the standard definitions. ACPICA
6936bugzilla 898.
6937
6938iASL/DTC: Added support for integer expressions and labels. Support for
6939full
6940expressions for all integer fields in all ACPI tables. Support for labels
6941in
6942"generic" portions of tables such as UEFI. See the iASL reference manual.
6943
6944Debugger: Added a command to display the status of global handlers. The
6945"handlers" command will display op region, fixed event, and miscellaneous
6946global handlers. installation status -- and for op regions, whether
6947default
6948or user-installed handler will be used.
6949
6950iASL: Warn if reserved method incorrectly returns a value. Many
6951predefined
6952names are defined such that they do not return a value. If implemented as
6953a
6954method, issue a warning if such a name explicitly returns a value. ACPICA
6955Bugzilla 855.
6956
6957iASL: Added detection of GPE method name conflicts. Detects a conflict
6958where
6959there are two GPE methods of the form _Lxy and _Exy in the same scope.
6960(For
6961example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6962
6963iASL/DTC: Fixed a couple input scanner issues with comments and line
6964numbers. Comment remover could get confused and miss a comment ending.
6965Fixed
6966a problem with line counter maintenance.
6967
6968iASL/DTC: Reduced the severity of some errors from fatal to error. There
6969is
6970no need to abort on simple errors within a field definition.
6971
6972Debugger: Simplified the output of the help command. All help output now
6973in
6974a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6975
6976----------------------------------------
697712 January 2011. Summary of changes for version 20110112:
6978
69791) ACPI CA Core Subsystem:
6980
6981Fixed a race condition between method execution and namespace walks that
6982can
6983possibly cause a fault. The problem was apparently introduced in version
698420100528 as a result of a performance optimization that reduces the
6985number
6986of
6987namespace walks upon method exit by using the delete_namespace_subtree
6988function instead of the delete_namespace_by_owner function used
6989previously.
6990Bug is a missing namespace lock in the delete_namespace_subtree function.
6991dana.myers@oracle.com
6992
6993Fixed several issues and a possible fault with the automatic "serialized"
6994method support. History: This support changes a method to "serialized" on
6995the
6996fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6997possibility that it cannot handle reentrancy. This fix repairs a couple
6998of
6999issues seen in the field, especially on machines with many cores:
7000
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
7006       attempt to exit.
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.
7009
7010    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7011
7012Debugger: Now lock the namespace for duration of a namespace dump.
7013Prevents
7014issues if the namespace is changing dynamically underneath the debugger.
7015Especially affects temporary namespace nodes, since the debugger displays
7016these also.
7017
7018Updated the ordering of include files. The ACPICA headers should appear
7019before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7020set
7021any necessary compiler-specific defines, etc. Affects the ACPI-related
7022tools
7023and utilities.
7024
7025Updated all ACPICA copyrights and signons to 2011. Added the 2011
7026copyright
7027to all module headers and signons, including the Linux header. This
7028affects
7029virtually every file in the ACPICA core subsystem, iASL compiler, and all
7030utilities.
7031
7032Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7033project files for VC++ 6.0 are now obsolete. New project files can be
7034found
7035under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7036details.
7037
7038Example Code and Data Size: These are the sizes for the OS-independent
7039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7040debug version of the code includes the debug output trace mechanism and
7041has a
7042much larger code and data size.
7043
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
7050
70512) iASL Compiler/Disassembler and Tools:
7052
7053iASL: Added generic data types to the Data Table compiler. Add "generic"
7054data
7055types such as UINT32, String, Unicode, etc., to simplify the generation
7056of
7057platform-defined tables such as UEFI. Lin Ming.
7058
7059iASL: Added listing support for the Data Table Compiler. Adds listing
7060support
7061(-l) to display actual binary output for each line of input code.
7062
7063----------------------------------------
706409 December 2010. Summary of changes for version 20101209:
7065
70661) ACPI CA Core Subsystem:
7067
7068Completed the major overhaul of the GPE support code that was begun in
7069July
70702010. Major features include: removal of _PRW execution in ACPICA (host
7071executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7072changes to existing interfaces, simplification of GPE handler operation,
7073and
7074a handful of new interfaces:
7075
7076    AcpiUpdateAllGpes
7077    AcpiFinishGpe
7078    AcpiSetupGpeForWake
7079    AcpiSetGpeWakeMask
7080    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7081
7082See the ACPICA Programmer Reference for full details and programming
7083information. See the new section 4.4 "General Purpose Event (GPE)
7084Support"
7085for a full overview, and section 8.7 "ACPI General Purpose Event
7086Management"
7087for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7088Ming,
7089Bob Moore, Rafael Wysocki.
7090
7091Implemented a new GPE feature for Windows compatibility, the "Implicit
7092Wake
7093GPE Notify". This feature will automatically issue a Notify(2) on a
7094device
7095when a Wake GPE is received if there is no corresponding GPE method or
7096handler. ACPICA BZ 870.
7097
7098Fixed a problem with the Scope() operator during table parse and load
7099phase.
7100During load phase (table load or method execution), the scope operator
7101should
7102not enter the target into the namespace. Instead, it should open a new
7103scope
7104at the target location. Linux BZ 19462, ACPICA BZ 882.
7105
7106Example Code and Data Size: These are the sizes for the OS-independent
7107acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7108debug version of the code includes the debug output trace mechanism and
7109has a
7110much larger code and data size.
7111
7112  Previous Release:
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
7115  Current Release:
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
7118
71192) iASL Compiler/Disassembler and Tools:
7120
7121iASL: Relax the alphanumeric restriction on _CID strings. These strings
7122are
7123"bus-specific" per the ACPI specification, and therefore any characters
7124are
7125acceptable. The only checks that can be performed are for a null string
7126and
7127perhaps for a leading asterisk. ACPICA BZ 886.
7128
7129iASL: Fixed a problem where a syntax error that caused a premature EOF
7130condition on the source file emitted a very confusing error message. The
7131premature EOF is now detected correctly. ACPICA BZ 891.
7132
7133Disassembler: Decode the AccessSize within a Generic Address Structure
7134(byte
7135access, word access, etc.) Note, this field does not allow arbitrary bit
7136access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7137
7138New: AcpiNames utility - Example namespace dump utility. Shows an example
7139of
7140ACPICA configuration for a minimal namespace dump utility. Uses table and
7141namespace managers, but no AML interpreter. Does not add any
7142functionality
7143over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7144partition and configure ACPICA. ACPICA BZ 883.
7145
7146AML Debugger: Increased the debugger buffer size for method return
7147objects.
7148Was 4K, increased to 16K. Also enhanced error messages for debugger
7149method
7150execution, including the buffer overflow case.
7151
7152----------------------------------------
715313 October 2010. Summary of changes for version 20101013:
7154
71551) ACPI CA Core Subsystem:
7156
7157Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7158now
7159clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7160HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7161
7162Changed the type of the predefined namespace object _TZ from ThermalZone
7163to
7164Device. This was found to be confusing to the host software that
7165processes
7166the various thermal zones, since _TZ is not really a ThermalZone.
7167However,
7168a
7169Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7170Zhang.
7171
7172Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7173string is "Windows 2006 SP2".
7174
7175Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7176nsrepair
7177code automatically repairs _HID-related strings, this type of code is no
7178longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7179878.
7180
7181Example Code and Data Size: These are the sizes for the OS-independent
7182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7183debug version of the code includes the debug output trace mechanism and
7184has a
7185much larger code and data size.
7186
7187  Previous Release:
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
7190  Current Release:
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
7193
71942) iASL Compiler/Disassembler and Tools:
7195
7196iASL: Implemented additional compile-time validation for _HID strings.
7197The
7198non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7199length
7200of
7201the string must be exactly seven or eight characters. For both _HID and
7202_CID
7203strings, all characters must be alphanumeric. ACPICA BZ 874.
7204
7205iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7206descriptors that are mostly or all zeros, with the expectation that they
7207will
7208be filled in at runtime. iASL now allows this as long as there is a
7209"resource
7210tag" (name) associated with the descriptor, which gives the ASL a handle
7211needed to modify the descriptor. ACPICA BZ 873.
7212
7213Added single-thread support to the generic Unix application OSL.
7214Primarily
7215for iASL support, this change removes the use of semaphores in the
7216single-
7217threaded ACPICA tools/applications - increasing performance. The
7218_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7219option. ACPICA BZ 879.
7220
7221AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7222support
7223for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7224
7225iASL: Moved all compiler messages to a new file, aslmessages.h.
7226
7227----------------------------------------
722815 September 2010. Summary of changes for version 20100915:
7229
72301) ACPI CA Core Subsystem:
7231
7232Removed the AcpiOsDerivePciId OSL interface. The various host
7233implementations
7234of this function were not OS-dependent and are now obsolete and can be
7235removed from all host OSLs. This function has been replaced by
7236AcpiHwDerivePciId, which is now part of the ACPICA core code.
7237AcpiHwDerivePciId has been implemented without recursion. Adds one new
7238module, hwpci.c. ACPICA BZ 857.
7239
7240Implemented a dynamic repair for _HID and _CID strings. The following
7241problems are now repaired at runtime: 1) Remove a leading asterisk in the
7242string, and 2) the entire string is uppercased. Both repairs are in
7243accordance with the ACPI specification and will simplify host driver
7244code.
7245ACPICA BZ 871.
7246
7247The ACPI_THREAD_ID type is no longer configurable, internally it is now
7248always UINT64. This simplifies the ACPICA code, especially any printf
7249output.
7250UINT64 is the only common data type for all thread_id types across all
7251operating systems. It is now up to the host OSL to cast the native
7252thread_id
7253type to UINT64 before returning the value to ACPICA (via
7254AcpiOsGetThreadId).
7255Lin Ming, Bob Moore.
7256
7257Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7258"inline"
7259keyword is not standard across compilers, and this type allows inline to
7260be
7261configured on a per-compiler basis. Lin Ming.
7262
7263Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7264available.
7265Added an extern for this boolean in acpixf.h. Some hosts utilize this
7266value
7267during suspend/restore operations. ACPICA BZ 869.
7268
7269All code that implements error/warning messages with the "ACPI:" prefix
7270has
7271been moved to a new module, utxferror.c.
7272
7273The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7274it
7275is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7276
7277Example Code and Data Size: These are the sizes for the OS-independent
7278acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7279debug version of the code includes the debug output trace mechanism and
7280has a
7281much larger code and data size.
7282
7283  Previous Release:
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
7286  Current Release:
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
7289
72902) iASL Compiler/Disassembler and Tools:
7291
7292iASL/Disassembler: Write ACPI errors to stderr instead of the output
7293file.
7294This keeps the output files free of random error messages that may
7295originate
7296from within the namespace/interpreter code. Used this opportunity to
7297merge
7298all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7299866. Lin Ming, Bob Moore.
7300
7301Tools: update some printfs for ansi warnings on size_t. Handle width
7302change
7303of size_t on 32-bit versus 64-bit generations. Lin Ming.
7304
7305----------------------------------------
730606 August 2010. Summary of changes for version 20100806:
7307
73081) ACPI CA Core Subsystem:
7309
7310Designed and implemented a new host interface to the _OSI support code.
7311This
7312will allow the host to dynamically add or remove multiple _OSI strings,
7313as
7314well as install an optional handler that is called for each _OSI
7315invocation.
7316Also added a new AML debugger command, 'osi' to display and modify the
7317global
7318_OSI string table, and test support in the AcpiExec utility. See the
7319ACPICA
7320reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7321New Functions:
7322    AcpiInstallInterface - Add an _OSI string.
7323    AcpiRemoveInterface - Delete an _OSI string.
7324    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7325Obsolete Functions:
7326    AcpiOsValidateInterface - no longer used.
7327New Files:
7328    source/components/utilities/utosi.c
7329
7330Re-introduced the support to enable multi-byte transfers for Embedded
7331Controller (EC) operation regions. A reported problem was found to be a
7332bug
7333in the host OS, not in the multi-byte support. Previously, the maximum
7334data
7335size passed to the EC operation region handler was a single byte. There
7336are
7337often EC Fields larger than one byte that need to be transferred, and it
7338is
7339useful for the EC driver to lock these as a single transaction. This
7340change
7341enables single transfers larger than 8 bits. This effectively changes the
7342access to the EC space from ByteAcc to AnyAcc, and will probably require
7343changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7344bit
7345transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7346
7347Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7348prototype in acpiosxf.h had the output value pointer as a (void *).
7349It should be a (UINT64 *). This may affect some host OSL code.
7350
7351Fixed a couple problems with the recently modified Linux makefiles for
7352iASL
7353and AcpiExec. These new makefiles place the generated object files in the
7354local directory so that there can be no collisions between the files that
7355are
7356shared between them that are compiled with different options.
7357
7358Example Code and Data Size: These are the sizes for the OS-independent
7359acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7360debug version of the code includes the debug output trace mechanism and
7361has a
7362much larger code and data size.
7363
7364  Previous Release:
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
7367  Current Release:
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
7370
73712) iASL Compiler/Disassembler and Tools:
7372
7373iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7374the
7375namespace from and disassemble an entire group of AML files. Useful for
7376loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7377and
7378disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7379
7380iASL: Allow multiple invocations of -e option. This change allows
7381multiple
7382uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7383834.
7384Lin Ming.
7385
7386----------------------------------------
738702 July 2010. Summary of changes for version 20100702:
7388
73891) ACPI CA Core Subsystem:
7390
7391Implemented several updates to the recently added GPE reference count
7392support. The model for "wake" GPEs is changing to give the host OS
7393complete
7394control of these GPEs. Eventually, the ACPICA core will not execute any
7395_PRW
7396methods, since the host already must execute them. Also, additional
7397changes
7398were made to help ensure that the reference counts are kept in proper
7399synchronization with reality. Rafael J. Wysocki.
7400
74011) Ensure that GPEs are not enabled twice during initialization.
74022) Ensure that GPE enable masks stay in sync with the reference count.
74033) Do not inadvertently enable GPEs when writing GPE registers.
74044) Remove the internal wake reference counter and add new AcpiGpeWakeup
7405interface. This interface will set or clear individual GPEs for wakeup.
74065) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7407interfaces
7408are now used for "runtime" GPEs only.
7409
7410Changed the behavior of the GPE install/remove handler interfaces. The
7411GPE
7412is
7413no longer disabled during this process, as it was found to cause problems
7414on
7415some machines. Rafael J. Wysocki.
7416
7417Reverted a change introduced in version 20100528 to enable Embedded
7418Controller multi-byte transfers. This change was found to cause problems
7419with
7420Index Fields and possibly Bank Fields. It will be reintroduced when these
7421problems have been resolved.
7422
7423Fixed a problem with references to Alias objects within Package Objects.
7424A
7425reference to an Alias within the definition of a Package was not always
7426resolved properly. Aliases to objects like Processors, Thermal zones,
7427etc.
7428were resolved to the actual object instead of a reference to the object
7429as
7430it
7431should be. Package objects are only allowed to contain integer, string,
7432buffer, package, and reference objects. Redhat bugzilla 608648.
7433
7434Example Code and Data Size: These are the sizes for the OS-independent
7435acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7436debug version of the code includes the debug output trace mechanism and
7437has a
7438much larger code and data size.
7439
7440  Previous Release:
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
7443  Current Release:
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
7446
74472) iASL Compiler/Disassembler and Tools:
7448
7449iASL: Implemented a new compiler subsystem to allow definition and
7450compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7451These
7452are called "ACPI Data Tables", and the new compiler is the "Data Table
7453Compiler". This compiler is intended to simplify the existing error-prone
7454process of creating these tables for the BIOS, as well as allowing the
7455disassembly, modification, recompilation, and override of existing ACPI
7456data
7457tables. See the iASL User Guide for detailed information.
7458
7459iASL: Implemented a new Template Generator option in support of the new
7460Data
7461Table Compiler. This option will create examples of all known ACPI tables
7462that can be used as the basis for table development. See the iASL
7463documentation and the -T option.
7464
7465Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7466Descriptor Table).
7467
7468Updated the Linux makefiles for iASL and AcpiExec to place the generated
7469object files in the local directory so that there can be no collisions
7470between the shared files between them that are generated with different
7471options.
7472
7473Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7474Use
7475the #define __APPLE__ to enable this support.
7476
7477----------------------------------------
747828 May 2010. Summary of changes for version 20100528:
7479
7480Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7481available at www.acpi.info. This is primarily an errata release.
7482
74831) ACPI CA Core Subsystem:
7484
7485Undefined ACPI tables: We are looking for the definitions for the
7486following
7487ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7488
7489Implemented support to enable multi-byte transfers for Embedded
7490Controller
7491(EC) operation regions. Previously, the maximum data size passed to the
7492EC
7493operation region handler was a single byte. There are often EC Fields
7494larger
7495than one byte that need to be transferred, and it is useful for the EC
7496driver
7497to lock these as a single transaction. This change enables single
7498transfers
7499larger than 8 bits. This effectively changes the access to the EC space
7500from
7501ByteAcc to AnyAcc, and will probably require changes to the host OS
7502Embedded
7503Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7504bit
7505transfers. Alexey Starikovskiy, Lin Ming
7506
7507Implemented a performance enhancement for namespace search and access.
7508This
7509change enhances the performance of namespace searches and walks by adding
7510a
7511backpointer to the parent in each namespace node. On large namespaces,
7512this
7513change can improve overall ACPI performance by up to 9X. Adding a pointer
7514to
7515each namespace node increases the overall size of the internal namespace
7516by
7517about 5%, since each namespace entry usually consists of both a namespace
7518node and an ACPI operand object. However, this is the first growth of the
7519namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7520
7521Implemented a performance optimization that reduces the number of
7522namespace
7523walks. On control method exit, only walk the namespace if the method is
7524known
7525to have created namespace objects outside of its local scope. Previously,
7526the
7527entire namespace was traversed on each control method exit. This change
7528can
7529improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7530Moore.
7531
7532Added support to truncate I/O addresses to 16 bits for Windows
7533compatibility.
7534Some ASL code has been seen in the field that inadvertently has bits set
7535above bit 15. This feature is optional and is enabled if the BIOS
7536requests
7537any Windows OSI strings. It can also be enabled by the host OS. Matthew
7538Garrett, Bob Moore.
7539
7540Added support to limit the maximum time for the ASL Sleep() operator. To
7541prevent accidental deep sleeps, limit the maximum time that Sleep() will
7542actually sleep. Configurable, the default maximum is two seconds. ACPICA
7543bugzilla 854.
7544
7545Added run-time validation support for the _WDG and_WED Microsoft
7546predefined
7547methods. These objects are defined by "Windows Instrumentation", and are
7548not
7549part of the ACPI spec. ACPICA BZ 860.
7550
7551Expanded all statistic counters used during namespace and device
7552initialization from 16 to 32 bits in order to support very large
7553namespaces.
7554
7555Replaced all instances of %d in printf format specifiers with %u since
7556nearly
7557all integers in ACPICA are unsigned.
7558
7559Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7560returned
7561as AE_NO_HANDLER.
7562
7563Example Code and Data Size: These are the sizes for the OS-independent
7564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7565debug version of the code includes the debug output trace mechanism and
7566has a
7567much larger code and data size.
7568
7569  Previous Release:
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
7572  Current Release:
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
7575
75762) iASL Compiler/Disassembler and Tools:
7577
7578iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7579methods. These objects are defined by "Windows Instrumentation", and are
7580not
7581part of the ACPI spec. ACPICA BZ 860.
7582
7583AcpiExec: added option to disable the memory tracking mechanism. The -dt
7584option will disable the tracking mechanism, which improves performance
7585considerably.
7586
7587AcpiExec: Restructured the command line options into -d (disable) and -e
7588(enable) options.
7589
7590----------------------------------------
759128 April 2010. Summary of changes for version 20100428:
7592
75931) ACPI CA Core Subsystem:
7594
7595Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7596including FADT-based and GPE Block Devices, execute any _PRW methods in
7597the
7598new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7599runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7600immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7601Devices. Provides compatibility with other ACPI implementations. Two new
7602files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7603Moore.
7604
7605Fixed a regression introduced in version 20100331 within the table
7606manager
7607where initial table loading could fail. This was introduced in the fix
7608for
7609AcpiReallocateRootTable. Also, renamed some of fields in the table
7610manager
7611data structures to clarify their meaning and use.
7612
7613Fixed a possible allocation overrun during internal object copy in
7614AcpiUtCopySimpleObject. The original code did not correctly handle the
7615case
7616where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7617847.
7618
7619Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7620possible access beyond end-of-allocation. Also, now fully validate
7621descriptor
7622(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7623
7624Example Code and Data Size: These are the sizes for the OS-independent
7625acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7626debug version of the code includes the debug output trace mechanism and
7627has a
7628much larger code and data size.
7629
7630  Previous Release:
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
7633  Current Release:
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
7636
76372) iASL Compiler/Disassembler and Tools:
7638
7639iASL: Implemented Min/Max/Len/Gran validation for address resource
7640descriptors. This change implements validation for the address fields
7641that
7642are common to all address-type resource descriptors. These checks are
7643implemented: Checks for valid Min/Max, length within the Min/Max window,
7644valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7645per
7646table 6-40 in the ACPI 4.0a specification. Also split the large
7647aslrestype1.c
7648and aslrestype2.c files into five new files. ACPICA BZ 840.
7649
7650iASL: Added support for the _Wxx predefined names. This support was
7651missing
7652and these names were not recognized by the compiler as valid predefined
7653names. ACPICA BZ 851.
7654
7655iASL: Added an error for all predefined names that are defined to return
7656no
7657value and thus must be implemented as Control Methods. These include all
7658of
7659the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7660names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7661
7662iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7663an
7664ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7665be
7666dynamically loaded via the Load() operator. Also cleaned up output for
7667the
7668-
7669ta and -tc options. ACPICA BZ 853.
7670
7671Tests: Added a new file with examples of extended iASL error checking.
7672Demonstrates the advanced error checking ability of the iASL compiler.
7673Available at tests/misc/badcode.asl.
7674
7675----------------------------------------
767631 March 2010. Summary of changes for version 20100331:
7677
76781) ACPI CA Core Subsystem:
7679
7680Completed a major update for the GPE support in order to improve support
7681for
7682shared GPEs and to simplify both host OS and ACPICA code. Added a
7683reference
7684count mechanism to support shared GPEs that require multiple device
7685drivers.
7686Several external interfaces have changed. One external interface has been
7687removed. One new external interface was added. Most of the GPE external
7688interfaces now use the GPE spinlock instead of the events mutex (and the
7689Flags parameter for many GPE interfaces has been removed.) See the
7690updated
7691ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7692Rafael
7693Wysocki. ACPICA BZ 831.
7694
7695Changed:
7696    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7697Removed:
7698    AcpiSetGpeType
7699New:
7700    AcpiSetGpe
7701
7702Implemented write support for DataTable operation regions. These regions
7703are
7704defined via the DataTableRegion() operator. Previously, only read support
7705was
7706implemented. The ACPI specification allows DataTableRegions to be
7707read/write,
7708however.
7709
7710Implemented a new subsystem option to force a copy of the DSDT to local
7711memory. Optionally copy the entire DSDT to local memory (instead of
7712simply
7713mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7714replace
7715the original DSDT, creating the need for this option. Default is FALSE,
7716do
7717not copy the DSDT.
7718
7719Implemented detection of a corrupted or replaced DSDT. This change adds
7720support to detect a DSDT that has been corrupted and/or replaced from
7721outside
7722the OS (by firmware). This is typically catastrophic for the system, but
7723has
7724been seen on some machines. Once this problem has been detected, the DSDT
7725copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7726
7727Fixed two problems with AcpiReallocateRootTable during the root table
7728copy.
7729When copying the root table to the new allocation, the length used was
7730incorrect. The new size was used instead of the current table size,
7731meaning
7732too much data was copied. Also, the count of available slots for ACPI
7733tables
7734was not set correctly. Alexey Starikovskiy, Bob Moore.
7735
7736Example Code and Data Size: These are the sizes for the OS-independent
7737acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7738debug version of the code includes the debug output trace mechanism and
7739has a
7740much larger code and data size.
7741
7742  Previous Release:
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
7745  Current Release:
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
7748
77492) iASL Compiler/Disassembler and Tools:
7750
7751iASL: Implement limited typechecking for values returned from predefined
7752control methods. The type of any returned static (unnamed) object is now
7753validated. For example, Return(1). ACPICA BZ 786.
7754
7755iASL: Fixed a predefined name object verification regression. Fixes a
7756problem
7757introduced in version 20100304. An error is incorrectly generated if a
7758predefined name is declared as a static named object with a value defined
7759using the keywords "Zero", "One", or "Ones". Lin Ming.
7760
7761iASL: Added Windows 7 support for the -g option (get local ACPI tables)
7762by
7763reducing the requested registry access rights. ACPICA BZ 842.
7764
7765Disassembler: fixed a possible fault when generating External()
7766statements.
7767Introduced in commit ae7d6fd: Properly handle externals with parent-
7768prefix
7769(carat). Fixes a string length allocation calculation. Lin Ming.
7770
7771----------------------------------------
777204 March 2010. Summary of changes for version 20100304:
7773
77741) ACPI CA Core Subsystem:
7775
7776Fixed a possible problem with the AML Mutex handling function
7777AcpiExReleaseMutex where the function could fault under the very rare
7778condition when the interpreter has blocked, the interpreter lock is
7779released,
7780the interpreter is then reentered via the same thread, and attempts to
7781acquire an AML mutex that was previously acquired. FreeBSD report 140979.
7782Lin
7783Ming.
7784
7785Implemented additional configuration support for the AML "Debug Object".
7786Output from the debug object can now be enabled via a global variable,
7787AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
7788debugging.
7789This debug output is now available in the release version of ACPICA
7790instead
7791of just the debug version. Also, the entire debug output module can now
7792be
7793configured out of the ACPICA build if desired. One new file added,
7794executer/exdebug.c. Lin Ming, Bob Moore.
7795
7796Added header support for the ACPI MCHI table (Management Controller Host
7797Interface Table). This table was added in ACPI 4.0, but the defining
7798document
7799has only recently become available.
7800
7801Standardized output of integer values for ACPICA warnings/errors. Always
7802use
78030x prefix for hex output, always use %u for unsigned integer decimal
7804output.
7805Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
7806400
7807invocations.) These invocations were converted from the original
7808ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
7809
7810Example Code and Data Size: These are the sizes for the OS-independent
7811acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7812debug version of the code includes the debug output trace mechanism and
7813has a
7814much larger code and data size.
7815
7816  Previous Release:
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
7819  Current Release:
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
7822
78232) iASL Compiler/Disassembler and Tools:
7824
7825iASL: Implemented typechecking support for static (non-control method)
7826predefined named objects that are declared with the Name() operator. For
7827example, the type of this object is now validated to be of type Integer:
7828Name(_BBN, 1). This change migrates the compiler to using the core
7829predefined
7830name table instead of maintaining a local version. Added a new file,
7831aslpredef.c. ACPICA BZ 832.
7832
7833Disassembler: Added support for the ACPI 4.0 MCHI table.
7834
7835----------------------------------------
783621 January 2010. Summary of changes for version 20100121:
7837
78381) ACPI CA Core Subsystem:
7839
7840Added the 2010 copyright to all module headers and signons. This affects
7841virtually every file in the ACPICA core subsystem, the iASL compiler, the
7842tools/utilities, and the test suites.
7843
7844Implemented a change to the AcpiGetDevices interface to eliminate
7845unnecessary
7846invocations of the _STA method. In the case where a specific _HID is
7847requested, do not run _STA until a _HID match is found. This eliminates
7848potentially dozens of _STA calls during a search for a particular
7849device/HID,
7850which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7851
7852Implemented an additional repair for predefined method return values.
7853Attempt
7854to repair unexpected NULL elements within returned Package objects.
7855Create
7856an
7857Integer of value zero, a NULL String, or a zero-length Buffer as
7858appropriate.
7859ACPICA BZ 818. Lin Ming, Bob Moore.
7860
7861Removed the obsolete ACPI_INTEGER data type. This type was introduced as
7862the
7863code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
7864(with
786564-bit AML integers). It is now obsolete and this change removes it from
7866the
7867ACPICA code base, replaced by UINT64. The original typedef has been
7868retained
7869for now for compatibility with existing device driver code. ACPICA BZ
7870824.
7871
7872Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
7873in
7874the parse tree object.
7875
7876Added additional warning options for the gcc-4 generation. Updated the
7877source
7878accordingly. This includes some code restructuring to eliminate
7879unreachable
7880code, elimination of some gotos, elimination of unused return values,
7881some
7882additional casting, and removal of redundant declarations.
7883
7884Example Code and Data Size: These are the sizes for the OS-independent
7885acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7886debug version of the code includes the debug output trace mechanism and
7887has a
7888much larger code and data size.
7889
7890  Previous Release:
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
7893  Current Release:
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
7896
78972) iASL Compiler/Disassembler and Tools:
7898
7899No functional changes for this release.
7900
7901----------------------------------------
790214 December 2009. Summary of changes for version 20091214:
7903
79041) ACPI CA Core Subsystem:
7905
7906Enhanced automatic data type conversions for predefined name repairs.
7907This
7908change expands the automatic repairs/conversions for predefined name
7909return
7910values to make Integers, Strings, and Buffers fully interchangeable.
7911Also,
7912a
7913Buffer can be converted to a Package of Integers if necessary. The
7914nsrepair.c
7915module was completely restructured. Lin Ming, Bob Moore.
7916
7917Implemented automatic removal of null package elements during predefined
7918name
7919repairs. This change will automatically remove embedded and trailing NULL
7920package elements from returned package objects that are defined to
7921contain
7922a
7923variable number of sub-packages. The driver is then presented with a
7924package
7925with no null elements to deal with. ACPICA BZ 819.
7926
7927Implemented a repair for the predefined _FDE and _GTM names. The expected
7928return value for both names is a Buffer of 5 DWORDs. This repair fixes
7929two
7930possible problems (both seen in the field), where a package of integers
7931is
7932returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
7933Kim.
7934
7935Implemented additional module-level code support. This change will
7936properly
7937execute module-level code that is not at the root of the namespace (under
7938a
7939Device object, etc.). Now executes the code within the current scope
7940instead
7941of the root. ACPICA BZ 762. Lin Ming.
7942
7943Fixed possible mutex acquisition errors when running _REG methods. Fixes
7944a
7945problem where mutex errors can occur when running a _REG method that is
7946in
7947the same scope as a method-defined operation region or an operation
7948region
7949under a module-level IF block. This type of code is rare, so the problem
7950has
7951not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7952
7953Fixed a possible memory leak during module-level code execution. An
7954object
7955could be leaked for each block of executed module-level code if the
7956interpreter slack mode is enabled This change deletes any implicitly
7957returned
7958object from the module-level code block. Lin Ming.
7959
7960Removed messages for successful predefined repair(s). The repair
7961mechanism
7962was considered too wordy. Now, messages are only unconditionally emitted
7963if
7964the return object cannot be repaired. Existing messages for successful
7965repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
7966827.
7967
7968Example Code and Data Size: These are the sizes for the OS-independent
7969acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7970debug version of the code includes the debug output trace mechanism and
7971has a
7972much larger code and data size.
7973
7974  Previous Release:
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
7977  Current Release:
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
7980
79812) iASL Compiler/Disassembler and Tools:
7982
7983iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
7984files
7985were no longer automatically removed at the termination of the compile.
7986
7987acpiexec: Implemented the -f option to specify default region fill value.
7988This option specifies the value used to initialize buffers that simulate
7989operation regions. Default value is zero. Useful for debugging problems
7990that
7991depend on a specific initial value for a region or field.
7992
7993----------------------------------------
799412 November 2009. Summary of changes for version 20091112:
7995
79961) ACPI CA Core Subsystem:
7997
7998Implemented a post-order callback to AcpiWalkNamespace. The existing
7999interface only has a pre-order callback. This change adds an additional
8000parameter for a post-order callback which will be more useful for bus
8001scans.
8002ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8003
8004Modified the behavior of the operation region memory mapping cache for
8005SystemMemory. Ensure that the memory mappings created for operation
8006regions
8007do not cross 4K page boundaries. Crossing a page boundary while mapping
8008regions can cause kernel warnings on some hosts if the pages have
8009different
8010attributes. Such regions are probably BIOS bugs, and this is the
8011workaround.
8012Linux BZ 14445. Lin Ming.
8013
8014Implemented an automatic repair for predefined methods that must return
8015sorted lists. This change will repair (by sorting) packages returned by
8016_ALR,
8017_PSS, and _TSS. Drivers can now assume that the packages are correctly
8018sorted
8019and do not contain NULL package elements. Adds one new file,
8020namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8021
8022Fixed a possible fault during predefined name validation if a return
8023Package
8024object contains NULL elements. Also adds a warning if a NULL element is
8025followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8026may
8027include repair or removal of all such NULL elements where possible.
8028
8029Implemented additional module-level executable AML code support. This
8030change
8031will 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
8033AML
8034code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8035
8036Implemented a new internal function to create Integer objects. This
8037function
8038simplifies miscellaneous object creation code. ACPICA BZ 823.
8039
8040Reduced the severity of predefined repair messages, Warning to Info.
8041Since
8042the object was successfully repaired, a warning is too severe. Reduced to
8043an
8044info message for now. These messages may eventually be changed to debug-
8045only.
8046ACPICA BZ 812.
8047
8048Example Code and Data Size: These are the sizes for the OS-independent
8049acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8050debug version of the code includes the debug output trace mechanism and
8051has a
8052much larger code and data size.
8053
8054  Previous Release:
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
8057  Current Release:
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
8060
80612) iASL Compiler/Disassembler and Tools:
8062
8063iASL: Implemented Switch() with While(1) so that Break works correctly.
8064This
8065change correctly implements the Switch operator with a surrounding
8066While(1)
8067so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8068
8069iASL: Added a message if a package initializer list is shorter than
8070package
8071length. Adds a new remark for a Package() declaration if an initializer
8072list
8073exists, but is shorter than the declared length of the package. Although
8074technically legal, this is probably a coding error and it is seen in the
8075field. ACPICA BZ 815. Lin Ming, Bob Moore.
8076
8077iASL: Fixed a problem where the compiler could fault after the maximum
8078number
8079of errors was reached (200).
8080
8081acpixtract: Fixed a possible warning for pointer cast if the compiler
8082warning
8083level set very high.
8084
8085----------------------------------------
808613 October 2009. Summary of changes for version 20091013:
8087
80881) ACPI CA Core Subsystem:
8089
8090Fixed a problem where an Operation Region _REG method could be executed
8091more
8092than once. If a custom address space handler is installed by the host
8093before
8094the "initialize operation regions" phase of the ACPICA initialization,
8095any
8096_REG methods for that address space could be executed twice. This change
8097fixes the problem. ACPICA BZ 427. Lin Ming.
8098
8099Fixed a possible memory leak for the Scope() ASL operator. When the exact
8100invocation of "Scope(\)" is executed (change scope to root), one internal
8101operand object was leaked. Lin Ming.
8102
8103Implemented a run-time repair for the _MAT predefined method. If the _MAT
8104return value is defined as a Field object in the AML, and the field
8105size is less than or equal to the default width of an integer (32 or
810664),_MAT
8107can incorrectly return an Integer instead of a Buffer. ACPICA now
8108automatically repairs this problem. ACPICA BZ 810.
8109
8110Implemented a run-time repair for the _BIF and _BIX predefined methods.
8111The
8112"OEM Information" field is often incorrectly returned as an Integer with
8113value zero if the field is not supported by the platform. This is due to
8114an
8115ambiguity in the ACPI specification. The field should always be a string.
8116ACPICA now automatically repairs this problem by returning a NULL string
8117within the returned Package. ACPICA BZ 807.
8118
8119Example Code and Data Size: These are the sizes for the OS-independent
8120acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8121debug version of the code includes the debug output trace mechanism and
8122has a
8123much larger code and data size.
8124
8125  Previous Release:
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
8128  Current Release:
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
8131
81322) iASL Compiler/Disassembler and Tools:
8133
8134Disassembler: Fixed a problem where references to external symbols that
8135contained one or more parent-prefixes (carats) were not handled
8136correctly,
8137possibly causing a fault. ACPICA BZ 806. Lin Ming.
8138
8139Disassembler: Restructured the code so that all functions that handle
8140external symbols are in a single module. One new file is added,
8141common/dmextern.c.
8142
8143AML Debugger: Added a max count argument for the Batch command (which
8144executes multiple predefined methods within the namespace.)
8145
8146iASL: Updated the compiler documentation (User Reference.) Available at
8147http://www.acpica.org/documentation/. ACPICA BZ 750.
8148
8149AcpiXtract: Updated for Lint and other formatting changes. Close all open
8150files.
8151
8152----------------------------------------
815303 September 2009. Summary of changes for version 20090903:
8154
81551) ACPI CA Core Subsystem:
8156
8157For Windows Vista compatibility, added the automatic execution of an _INI
8158method located at the namespace root (\_INI). This method is executed at
8159table load time. This support is in addition to the automatic execution
8160of
8161\_SB._INI. Lin Ming.
8162
8163Fixed a possible memory leak in the interpreter for AML package objects
8164if
8165the package initializer list is longer than the defined size of the
8166package.
8167This apparently can only happen if the BIOS changes the package size on
8168the
8169fly (seen in a _PSS object), as ASL compilers do not allow this. The
8170interpreter will truncate the package to the defined size (and issue an
8171error
8172message), but previously could leave the extra objects undeleted if they
8173were
8174pre-created during the argument processing (such is the case if the
8175package
8176consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8177
8178Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8179This has been reported in the field. Previously, ACPICA would zero out
8180the
8181buffer/string. Now, the operation is treated as a noop. Provides Windows
8182compatibility. ACPICA BZ 803. Lin Ming.
8183
8184Removed an extraneous error message for ASL constructs of the form
8185Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8186statements
8187are seen in many BIOSs and are once again treated as NOOPs and no error
8188is
8189emitted when they are encountered. ACPICA BZ 785.
8190
8191Fixed an extraneous warning message if a _DSM reserved method returns a
8192Package object. _DSM can return any type of object, so validation on the
8193return type cannot be performed. ACPICA BZ 802.
8194
8195Example Code and Data Size: These are the sizes for the OS-independent
8196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8197debug version of the code includes the debug output trace mechanism and
8198has a
8199much larger code and data size.
8200
8201  Previous Release:
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
8204  Current Release:
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
8207
82082) iASL Compiler/Disassembler and Tools:
8209
8210iASL: Fixed a problem with the use of the Alias operator and Resource
8211Templates. The correct alias is now constructed and no error is emitted.
8212ACPICA BZ 738.
8213
8214iASL: Implemented the -I option to specify additional search directories
8215for
8216include files. Allows multiple additional search paths for include files.
8217Directories are searched in the order specified on the command line
8218(after
8219the local directory is searched.) ACPICA BZ 800.
8220
8221iASL: Fixed a problem where the full pathname for include files was not
8222emitted for warnings/errors. This caused the IDE support to not work
8223properly. ACPICA BZ 765.
8224
8225iASL: Implemented the -@ option to specify a Windows-style response file
8226containing additional command line options. ACPICA BZ 801.
8227
8228AcpiExec: Added support to load multiple AML files simultaneously (such
8229as
8230a
8231DSDT and multiple SSDTs). Also added support for wildcards within the AML
8232pathname. These features allow all machine tables to be easily loaded and
8233debugged together. ACPICA BZ 804.
8234
8235Disassembler: Added missing support for disassembly of HEST table Error
8236Bank
8237subtables.
8238
8239----------------------------------------
824030 July 2009. Summary of changes for version 20090730:
8241
8242The ACPI 4.0 implementation for ACPICA is complete with this release.
8243
82441) ACPI CA Core Subsystem:
8245
8246ACPI 4.0: Added header file support for all new and changed ACPI tables.
8247Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8248new
8249for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8250BERT,
8251EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8252There
8253have been some ACPI 4.0 changes to other existing tables. Split the large
8254actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8255
8256ACPI 4.0: Implemented predefined name validation for all new names. There
8257are
825831 new names in ACPI 4.0. The predefined validation module was split into
8259two
8260files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8261
8262Implemented support for so-called "module-level executable code". This is
8263executable AML code that exists outside of any control method and is
8264intended
8265to be executed at table load time. Although illegal since ACPI 2.0, this
8266type
8267of code still exists and is apparently still being created. Blocks of
8268this
8269code are now detected and executed as intended. Currently, the code
8270blocks
8271must exist under either an If, Else, or While construct; these are the
8272typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8273
8274Implemented an automatic dynamic repair for predefined names that return
8275nested Package objects. This applies to predefined names that are defined
8276to
8277return a variable-length Package of sub-packages. If the number of sub-
8278packages is one, BIOS code is occasionally seen that creates a simple
8279single
8280package with no sub-packages. This code attempts to fix the problem by
8281wrapping a new package object around the existing package. These methods
8282can
8283be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8284BZ
8285790.
8286
8287Fixed a regression introduced in 20090625 for the AcpiGetDevices
8288interface.
8289The _HID/_CID matching was broken and no longer matched IDs correctly.
8290ACPICA
8291BZ 793.
8292
8293Fixed a problem with AcpiReset where the reset would silently fail if the
8294register was one of the protected I/O ports. AcpiReset now bypasses the
8295port
8296validation mechanism. This may eventually be driven into the
8297AcpiRead/Write
8298interfaces.
8299
8300Fixed a regression related to the recent update of the AcpiRead/Write
8301interfaces. A sleep/suspend could fail if the optional PM2 Control
8302register
8303does 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
8305the
8306code may in fact be obsolete at this date.) ACPICA BZ 799.
8307
8308Fixed a problem where AcpiTerminate could fault if inadvertently called
8309twice
8310in succession. ACPICA BZ 795.
8311
8312Example Code and Data Size: These are the sizes for the OS-independent
8313acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8314debug version of the code includes the debug output trace mechanism and
8315has a
8316much larger code and data size.
8317
8318  Previous Release:
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
8321  Current Release:
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
8324
83252) iASL Compiler/Disassembler and Tools:
8326
8327ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8328changes to existing tables. ACPICA BZ 775.
8329
8330----------------------------------------
833125 June 2009. Summary of changes for version 20090625:
8332
8333The ACPI 4.0 Specification was released on June 16 and is available at
8334www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8335continue for the next few releases.
8336
83371) ACPI CA Core Subsystem:
8338
8339ACPI 4.0: Implemented interpreter support for the IPMI operation region
8340address space. Includes support for bi-directional data buffers and an
8341IPMI
8342address space handler (to be installed by an IPMI device driver.) ACPICA
8343BZ
8344773. Lin Ming.
8345
8346ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8347Includes
8348support in both the header files and the disassembler.
8349
8350Completed a major update for the AcpiGetObjectInfo external interface.
8351Changes include:
8352 - Support for variable, unlimited length HID, UID, and CID strings.
8353 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8354etc.)
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.
8358These changes will require an update to all callers of this interface.
8359See
8360the updated ACPICA Programmer Reference for details. One new source file
8361has
8362been added - utilities/utids.c. ACPICA BZ 368, 780.
8363
8364Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8365transfers. The Value parameter has been extended from 32 bits to 64 bits
8366in
8367order to support new ACPI 4.0 tables. These changes will require an
8368update
8369to
8370all callers of these interfaces. See the ACPICA Programmer Reference for
8371details. ACPICA BZ 768.
8372
8373Fixed several problems with AcpiAttachData. The handler was not invoked
8374when
8375the host node was deleted. The data sub-object was not automatically
8376deleted
8377when the host node was deleted. The interface to the handler had an
8378unused
8379parameter, this was removed. ACPICA BZ 778.
8380
8381Enhanced the function that dumps ACPI table headers. All non-printable
8382characters in the string fields are now replaced with '?' (Signature,
8383OemId,
8384OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8385these fields are occasionally seen in the field. ACPICA BZ 788.
8386
8387Fixed a problem with predefined method repair code where the code that
8388attempts to repair/convert an object of incorrect type is only executed
8389on
8390the first time the predefined method is called. The mechanism that
8391disables
8392warnings on subsequent calls was interfering with the repair mechanism.
8393ACPICA BZ 781.
8394
8395Fixed a possible memory leak in the predefined validation/repair code
8396when
8397a
8398buffer is automatically converted to an expected string object.
8399
8400Removed obsolete 16-bit files from the distribution and from the current
8401git
8402tree head. ACPICA BZ 776.
8403
8404Example Code and Data Size: These are the sizes for the OS-independent
8405acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8406debug version of the code includes the debug output trace mechanism and
8407has a
8408much larger code and data size.
8409
8410  Previous Release:
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
8413  Current Release:
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
8416
84172) iASL Compiler/Disassembler and Tools:
8418
8419ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8420operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8421
8422ACPI 4.0: iASL - implemented compile-time validation support for all new
8423predefined names and control methods (31 total). ACPICA BZ 769.
8424
8425----------------------------------------
842621 May 2009. Summary of changes for version 20090521:
8427
84281) ACPI CA Core Subsystem:
8429
8430Disabled the preservation of the SCI enable bit in the PM1 control
8431register.
8432The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8433to
8434be
8435a "preserved" bit - "OSPM always preserves this bit position", section
84364.7.3.2.1. However, some machines fail if this bit is in fact preserved
8437because the bit needs to be explicitly set by the OS as a workaround. No
8438machines fail if the bit is not preserved. Therefore, ACPICA no longer
8439attempts to preserve this bit.
8440
8441Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8442incorrectly formed _PRT package could cause a fault. Added validation to
8443ensure that each package element is actually a sub-package.
8444
8445Implemented a new interface to install or override a single control
8446method,
8447AcpiInstallMethod. This interface is useful when debugging in order to
8448repair
8449an existing method or to install a missing method without having to
8450override
8451the entire ACPI table. See the ACPICA Programmer Reference for use and
8452examples. Lin Ming, Bob Moore.
8453
8454Fixed several reference count issues with the DdbHandle object that is
8455created from a Load or LoadTable operator. Prevent premature deletion of
8456the
8457object. Also, mark the object as invalid once the table has been
8458unloaded.
8459This is needed because the handle itself may not be deleted after the
8460table
8461unload, depending on whether it has been stored in a named object by the
8462caller. Lin Ming.
8463
8464Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8465mutexes of the same sync level are acquired but then not released in
8466strict
8467opposite order, the internally maintained Current Sync Level becomes
8468confused
8469and can cause subsequent execution errors. ACPICA BZ 471.
8470
8471Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8472specification has been changed to make the SyncLevel for mutex objects
8473more
8474useful. When releasing a mutex, the SyncLevel of the mutex must now be
8475the
8476same as the current sync level. This makes more sense than the previous
8477rule
8478(SyncLevel less than or equal). This change updates the code to match the
8479specification.
8480
8481Fixed a problem with the local version of the AcpiOsPurgeCache function.
8482The
8483(local) cache must be locked during all cache object deletions. Andrew
8484Baumann.
8485
8486Updated the Load operator to use operation region interfaces. This
8487replaces
8488direct memory mapping with region access calls. Now, all region accesses
8489go
8490through the installed region handler as they should.
8491
8492Simplified and optimized the NsGetNextNode function. Reduced parameter
8493count
8494and reduced code for this frequently used function.
8495
8496Example Code and Data Size: These are the sizes for the OS-independent
8497acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8498debug version of the code includes the debug output trace mechanism and
8499has a
8500much larger code and data size.
8501
8502  Previous Release:
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
8505  Current Release:
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
8508
85092) iASL Compiler/Disassembler and Tools:
8510
8511Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8512problems
8513with sub-table disassembly and handling invalid sub-tables. Attempt
8514recovery
8515after an invalid sub-table ID.
8516
8517----------------------------------------
851822 April 2009. Summary of changes for version 20090422:
8519
85201) ACPI CA Core Subsystem:
8521
8522Fixed a compatibility issue with the recently released I/O port
8523protection
8524mechanism. For windows compatibility, 1) On a port protection violation,
8525simply ignore the request and do not return an exception (allow the
8526control
8527method to continue execution.) 2) If only part of the request overlaps a
8528protected port, read/write the individual ports that are not protected.
8529Linux
8530BZ 13036. Lin Ming
8531
8532Enhanced the execution of the ASL/AML BreakPoint operator so that it
8533actually
8534breaks into the AML debugger if the debugger is present. This matches the
8535ACPI-defined behavior.
8536
8537Fixed several possible warnings related to the use of the configurable
8538ACPI_THREAD_ID. This type can now be configured as either an integer or a
8539pointer with no warnings. Also fixes several warnings in printf-like
8540statements for the 64-bit build when the type is configured as a pointer.
8541ACPICA BZ 766, 767.
8542
8543Fixed a number of possible warnings when compiling with gcc 4+ (depending
8544on
8545warning options.) Examples include printf formats, aliasing, unused
8546globals,
8547missing prototypes, missing switch default statements, use of non-ANSI
8548library functions, use of non-ANSI constructs. See generate/unix/Makefile
8549for
8550a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8551
8552Example Code and Data Size: These are the sizes for the OS-independent
8553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8554debug version of the code includes the debug output trace mechanism and
8555has a
8556much larger code and data size.
8557
8558  Previous Release:
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
8561  Current Release:
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
8564
85652) iASL Compiler/Disassembler and Tools:
8566
8567iASL: Fixed a generation warning from Bison 2.3 and fixed several
8568warnings
8569on
8570the 64-bit build.
8571
8572iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8573not
8574correctly digest Windows/DOS formatted files (with CR/LF).
8575
8576iASL: Added a new option for "quiet mode" (-va) that produces only the
8577compilation summary, not individual errors and warnings. Useful for large
8578batch compilations.
8579
8580AcpiExec: Implemented a new option (-z) to enable a forced
8581semaphore/mutex
8582timeout that can be used to detect hang conditions during execution of
8583AML
8584code (includes both internal semaphores and AML-defined mutexes and
8585events.)
8586
8587Added new makefiles for the generation of acpica in a generic unix-like
8588environment. These makefiles are intended to generate the acpica tools
8589and
8590utilities from the original acpica git source tree structure.
8591
8592Test Suites: Updated and cleaned up the documentation files. Updated the
8593copyrights to 2009, affecting all source files. Use the new version of
8594iASL
8595with quiet mode. Increased the number of available semaphores in the
8596Windows
8597OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8598added
8599an alternate implementation of the semaphore timeout to allow aslts to
8600execute fully on Cygwin.
8601
8602----------------------------------------
860320 March 2009. Summary of changes for version 20090320:
8604
86051) ACPI CA Core Subsystem:
8606
8607Fixed a possible race condition between AcpiWalkNamespace and dynamic
8608table
8609unloads. Added a reader/writer locking mechanism to allow multiple
8610concurrent
8611namespace walks (readers), but block a dynamic table unload until it can
8612gain
8613exclusive write access to the namespace. This fixes a problem where a
8614table
8615unload could (possibly catastrophically) delete the portion of the
8616namespace
8617that is currently being examined by a walk. Adds a new file, utlock.c,
8618that
8619implements the reader/writer lock mechanism. ACPICA BZ 749.
8620
8621Fixed a regression introduced in version 20090220 where a change to the
8622FADT
8623handling could cause the ACPICA subsystem to access non-existent I/O
8624ports.
8625
8626Modified the handling of FADT register and table (FACS/DSDT) addresses.
8627The
8628FADT can contain both 32-bit and 64-bit versions of these addresses.
8629Previously, the 64-bit versions were favored, meaning that if both 32 and
863064
8631versions were valid, but not equal, the 64-bit version was used. This was
8632found to cause some machines to fail. Now, in this case, the 32-bit
8633version
8634is used instead. This now matches the Windows behavior.
8635
8636Implemented a new mechanism to protect certain I/O ports. Provides
8637Microsoft
8638compatibility and protects the standard PC I/O ports from access via AML
8639code. Adds a new file, hwvalid.c
8640
8641Fixed a possible extraneous warning message from the FADT support. The
8642message warns of a 32/64 length mismatch between the legacy and GAS
8643definitions for a register.
8644
8645Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8646is
8647made obsolete by the port protection mechanism above. It was previously
8648used
8649to validate the entire address range of an operation region, which could
8650be
8651incorrect if the range included illegal ports, but fields within the
8652operation region did not actually access those ports. Validation is now
8653performed on a per-field basis instead of the entire region.
8654
8655Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8656Ignored bits must be "preserved" according to the ACPI spec. Usually,
8657this
8658means a read/modify/write when writing to the register. However, for
8659status
8660registers, writing a one means clear the event. Writing a zero means
8661preserve
8662the event (do not clear.) This behavior is clarified in the ACPI 4.0
8663spec,
8664and the ACPICA code now simply always writes a zero to the ignored bit.
8665
8666Modified the handling of ignored bits for the PM1 A/B Control Registers.
8667As
8668per the ACPI specification, for the control registers, preserve
8669(read/modify/write) all bits that are defined as either reserved or
8670ignored.
8671
8672Updated the handling of write-only bits in the PM1 A/B Control Registers.
8673When reading the register, zero the write-only bits as per the ACPI spec.
8674ACPICA BZ 443. Lin Ming.
8675
8676Removed "Linux" from the list of supported _OSI strings. Linux no longer
8677wants to reply true to this request. The Windows strings are the only
8678paths
8679through the AML that are tested and known to work properly.
8680
8681  Previous Release:
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
8684  Current Release:
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
8687
86882) iASL Compiler/Disassembler and Tools:
8689
8690Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8691and
8692aetables.c
8693
8694----------------------------------------
869520 February 2009. Summary of changes for version 20090220:
8696
86971) ACPI CA Core Subsystem:
8698
8699Optimized the ACPI register locking. Removed locking for reads from the
8700ACPI
8701bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8702is
8703not required when reading the single-bit registers. The
8704AcpiGetRegisterUnlocked function is no longer needed and has been
8705removed.
8706This will improve performance for reads on these registers. ACPICA BZ
8707760.
8708
8709Fixed the parameter validation for AcpiRead/Write. Now return
8710AE_BAD_PARAMETER if the input register pointer is null, and
8711AE_BAD_ADDRESS
8712if
8713the register has an address of zero. Previously, these cases simply
8714returned
8715AE_OK. For optional registers such as PM1B status/enable/control, the
8716caller
8717should check for a valid register address before calling. ACPICA BZ 748.
8718
8719Renamed the external ACPI bit register access functions. Renamed
8720AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8721functions. The new names are AcpiReadBitRegister and
8722AcpiWriteBitRegister.
8723Also, restructured the code for these functions by simplifying the code
8724path
8725and condensing duplicate code to reduce code size.
8726
8727Added new functions to transparently handle the possibly split PM1 A/B
8728registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8729functions
8730now handle the split registers for PM1 Status, Enable, and Control.
8731ACPICA
8732BZ
8733746.
8734
8735Added a function to handle the PM1 control registers,
8736AcpiHwWritePm1Control.
8737This function writes both of the PM1 control registers (A/B). These
8738registers
8739are different than the PM1 A/B status and enable registers in that
8740different
8741values can be written to the A/B registers. Most notably, the SLP_TYP
8742bits
8743can be different, as per the values returned from the _Sx predefined
8744methods.
8745
8746Removed an extra register write within AcpiHwClearAcpiStatus. This
8747function
8748was writing an optional PM1B status register twice. The existing call to
8749the
8750low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
8751A/B
8752register. ACPICA BZ 751.
8753
8754Split out the PM1 Status registers from the FADT. Added new globals for
8755these
8756registers (A/B), similar to the way the PM1 Enable registers are handled.
8757Instead of overloading the FADT Event Register blocks. This makes the
8758code
8759clearer and less prone to error.
8760
8761Fixed the warning message for when the platform contains too many ACPI
8762tables
8763for the default size of the global root table data structure. The
8764calculation
8765for the truncation value was incorrect.
8766
8767Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
8768obsolete macro, since it is now a simple reference to ->common.type.
8769There
8770were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8771
8772Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
8773TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
8774simply SLEEP_TYPE. ACPICA BZ 754.
8775
8776Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
8777function is only needed on 64-bit host operating systems and is thus not
8778included for 32-bit hosts.
8779
8780Debug output: print the input and result for invocations of the _OSI
8781reserved
8782control method via the ACPI_LV_INFO debug level. Also, reduced some of
8783the
8784verbosity of this debug level. Len Brown.
8785
8786Example Code and Data Size: These are the sizes for the OS-independent
8787acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8788debug version of the code includes the debug output trace mechanism and
8789has a
8790much larger code and data size.
8791
8792  Previous Release:
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
8795  Current Release:
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
8798
87992) iASL Compiler/Disassembler and Tools:
8800
8801Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
8802various legal performance profiles.
8803
8804----------------------------------------
880523 January 2009. Summary of changes for version 20090123:
8806
88071) ACPI CA Core Subsystem:
8808
8809Added the 2009 copyright to all module headers and signons. This affects
8810virtually every file in the ACPICA core subsystem, the iASL compiler, and
8811the tools/utilities.
8812
8813Implemented a change to allow the host to override any ACPI table,
8814including
8815dynamically loaded tables. Previously, only the DSDT could be replaced by
8816the
8817host. With this change, the AcpiOsTableOverride interface is called for
8818each
8819table found in the RSDT/XSDT during ACPICA initialization, and also
8820whenever
8821a table is dynamically loaded via the AML Load operator.
8822
8823Updated FADT flag definitions, especially the Boot Architecture flags.
8824
8825Debugger: For the Find command, automatically pad the input ACPI name
8826with
8827underscores if the name is shorter than 4 characters. This enables a
8828match
8829with the actual namespace entry which is itself padded with underscores.
8830
8831Example Code and Data Size: These are the sizes for the OS-independent
8832acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8833debug version of the code includes the debug output trace mechanism and
8834has a
8835much larger code and data size.
8836
8837  Previous Release:
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
8840  Current Release:
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
8843
88442) iASL Compiler/Disassembler and Tools:
8845
8846Fix build error under Bison-2.4.
8847
8848Dissasembler: Enhanced FADT support. Added decoding of the Boot
8849Architecture
8850flags. Now decode all flags, regardless of the FADT version. Flag output
8851includes the FADT version which first defined each flag.
8852
8853The iASL -g option now dumps the RSDT to a file (in addition to the FADT
8854and
8855DSDT). Windows only.
8856
8857----------------------------------------
885804 December 2008. Summary of changes for version 20081204:
8859
88601) ACPI CA Core Subsystem:
8861
8862The ACPICA Programmer Reference has been completely updated and revamped
8863for
8864this release. This includes updates to the external interfaces, OSL
8865interfaces, the overview sections, and the debugger reference.
8866
8867Several new ACPICA interfaces have been implemented and documented in the
8868programmer reference:
8869AcpiReset - Writes the reset value to the FADT-defined reset register.
8870AcpiDisableAllGpes - Disable all available GPEs.
8871AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8872AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8873AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8874AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8875AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8876
8877Most of the public ACPI hardware-related interfaces have been moved to a
8878new
8879file, components/hardware/hwxface.c
8880
8881Enhanced the FADT parsing and low-level ACPI register access: The ACPI
8882register lengths within the FADT are now used, and the low level ACPI
8883register access no longer hardcodes the ACPI register lengths. Given that
8884there may be some risk in actually trusting the FADT register lengths, a
8885run-
8886time option was added to fall back to the default hardcoded lengths if
8887the
8888FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
8889option is set to true for now, and a warning is issued if a suspicious
8890FADT
8891register length is overridden with the default value.
8892
8893Fixed a reference count issue in NsRepairObject. This problem was
8894introduced
8895in version 20081031 as part of a fix to repair Buffer objects within
8896Packages. Lin Ming.
8897
8898Added semaphore support to the Linux/Unix application OS-services layer
8899(OSL). ACPICA BZ 448. Lin Ming.
8900
8901Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
8902will
8903be implemented in the OSL, or will binary semaphores be used instead.
8904
8905Example Code and Data Size: These are the sizes for the OS-independent
8906acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8907debug version of the code includes the debug output trace mechanism and
8908has a
8909much larger code and data size.
8910
8911  Previous Release:
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
8914  Current Release:
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
8917
89182) iASL Compiler/Disassembler and Tools:
8919
8920iASL: Completed the '-e' option to include additional ACPI tables in
8921order
8922to
8923aid with disassembly and External statement generation. ACPICA BZ 742.
8924Lin
8925Ming.
8926
8927iASL: Removed the "named object in while loop" error. The compiler cannot
8928determine how many times a loop will execute. ACPICA BZ 730.
8929
8930Disassembler: Implemented support for FADT revision 2 (MS extension).
8931ACPICA
8932BZ 743.
8933
8934Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
8935MCFG).
8936
8937----------------------------------------
893831 October 2008. Summary of changes for version 20081031:
8939
89401) ACPI CA Core Subsystem:
8941
8942Restructured the ACPICA header files into public/private. acpi.h now
8943includes
8944only the "public" acpica headers. All other acpica headers are "private"
8945and
8946should not be included by acpica users. One new file, accommon.h is used
8947to
8948include the commonly used private headers for acpica code generation.
8949Future
8950plans include moving all private headers to a new subdirectory.
8951
8952Implemented an automatic Buffer->String return value conversion for
8953predefined ACPI methods. For these methods (such as _BIF), added
8954automatic
8955conversion for return objects that are required to be a String, but a
8956Buffer
8957was found instead. This can happen when reading string battery data from
8958an
8959operation region, because it used to be difficult to convert the data
8960from
8961buffer to string from within the ASL. Ensures that the host OS is
8962provided
8963with a valid null-terminated string. Linux BZ 11822.
8964
8965Updated the FACS waking vector interfaces. Split
8966AcpiSetFirmwareWakingVector
8967into two: one for the 32-bit vector, another for the 64-bit vector. This
8968is
8969required because the host OS must setup the wake much differently for
8970each
8971vector (real vs. protected mode, etc.) and the interface itself should
8972not
8973be
8974deciding which vector to use. Also, eliminated the
8975GetFirmwareWakingVector
8976interface, as it served no purpose (only the firmware reads the vector,
8977OS
8978only writes the vector.) ACPICA BZ 731.
8979
8980Implemented a mechanism to escape infinite AML While() loops. Added a
8981loop
8982counter to force exit from AML While loops if the count becomes too
8983large.
8984This can occur in poorly written AML when the hardware does not respond
8985within a while loop and the loop does not implement a timeout. The
8986maximum
8987loop count is configurable. A new exception code is returned when a loop
8988is
8989broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8990
8991Optimized the execution of AML While loops. Previously, a control state
8992object was allocated and freed for each execution of the loop. The
8993optimization is to simply reuse the control state for each iteration.
8994This
8995speeds up the raw loop execution time by about 5%.
8996
8997Enhanced the implicit return mechanism. For Windows compatibility, return
8998an
8999implicit integer of value zero for methods that contain no executable
9000code.
9001Such methods are seen in the field as stubs (presumably), and can cause
9002drivers to fail if they expect a return value. Lin Ming.
9003
9004Allow multiple backslashes as root prefixes in namepaths. In a fully
9005qualified namepath, allow multiple backslash prefixes. This can happen
9006(and
9007is 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
9009739
9010Lin Ming.
9011
9012Emit a warning if two different FACS or DSDT tables are discovered in the
9013FADT. Checks if there are two valid but different addresses for the FACS
9014and
9015DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9016
9017Consolidated the method argument count validation code. Merged the code
9018that
9019validates control method argument counts into the predefined validation
9020module. Eliminates possible multiple warnings for incorrect argument
9021counts.
9022
9023Implemented ACPICA example code. Includes code for ACPICA initialization,
9024handler installation, and calling a control method. Available at
9025source/tools/examples.
9026
9027Added a global pointer for FACS table to simplify internal FACS access.
9028Use
9029the global pointer instead of using AcpiGetTableByIndex for each FACS
9030access.
9031This simplifies the code for the Global Lock and the Firmware Waking
9032Vector(s).
9033
9034Example Code and Data Size: These are the sizes for the OS-independent
9035acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9036debug version of the code includes the debug output trace mechanism and
9037has a
9038much larger code and data size.
9039
9040  Previous Release:
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
9043  Current Release:
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
9046
90472) iASL Compiler/Disassembler and Tools:
9048
9049iASL: Improved disassembly of external method calls. Added the -e option
9050to
9051allow the inclusion of additional ACPI tables to help with the
9052disassembly
9053of
9054method invocations and the generation of external declarations during the
9055disassembly. Certain external method invocations cannot be disassembled
9056properly without the actual declaration of the method. Use the -e option
9057to
9058include the table where the external method(s) are actually declared.
9059Most
9060useful for disassembling SSDTs that make method calls back to the master
9061DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9062-d
9063-e dsdt.aml ssdt1.aml
9064
9065iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9066problem where the use of an alias within a namepath would result in a not
9067found error or cause the compiler to fault. Also now allows forward
9068references from the Alias operator itself. ACPICA BZ 738.
9069
9070----------------------------------------
907126 September 2008. Summary of changes for version 20080926:
9072
90731) ACPI CA Core Subsystem:
9074
9075Designed and implemented a mechanism to validate predefined ACPI methods
9076and
9077objects. This code validates the predefined ACPI objects (objects whose
9078names
9079start with underscore) that appear in the namespace, at the time they are
9080evaluated. The argument count and the type of the returned object are
9081validated against the ACPI specification. The purpose of this validation
9082is
9083to detect problems with the BIOS-implemented predefined ACPI objects
9084before
9085the results are returned to the ACPI-related drivers. Future enhancements
9086may
9087include actual repair of incorrect return objects where possible. Two new
9088files are nspredef.c and acpredef.h.
9089
9090Fixed a fault in the AML parser if a memory allocation fails during the
9091Op
9092completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9093
9094Fixed an issue with implicit return compatibility. This change improves
9095the
9096implicit return mechanism to be more compatible with the MS interpreter.
9097Lin
9098Ming, ACPICA BZ 349.
9099
9100Implemented support for zero-length buffer-to-string conversions. Allow
9101zero
9102length strings during interpreter buffer-to-string conversions. For
9103example,
9104during the ToDecimalString and ToHexString operators, as well as implicit
9105conversions. Fiodor Suietov, ACPICA BZ 585.
9106
9107Fixed two possible memory leaks in the error exit paths of
9108AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9109are
9110similar in that they use a stack of state objects in order to eliminate
9111recursion. The stack must be fully unwound and deallocated if an error
9112occurs. Lin Ming. ACPICA BZ 383.
9113
9114Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9115global
9116ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9117Moore ACPICA BZ 442.
9118
9119Removed the obsolete version number in module headers. Removed the
9120"$Revision" number that appeared in each module header. This version
9121number
9122was useful under SourceSafe and CVS, but has no meaning under git. It is
9123not
9124only incorrect, it could also be misleading.
9125
9126Example Code and Data Size: These are the sizes for the OS-independent
9127acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9128debug version of the code includes the debug output trace mechanism and
9129has a
9130much larger code and data size.
9131
9132  Previous Release:
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
9135  Current Release:
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
9138
9139----------------------------------------
914029 August 2008. Summary of changes for version 20080829:
9141
91421) ACPI CA Core Subsystem:
9143
9144Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9145Reference. Changes include the elimination of cheating on the Object
9146field
9147for the DdbHandle subtype, addition of a reference class field to
9148differentiate the various reference types (instead of an AML opcode), and
9149the
9150cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9151
9152Reduce an error to a warning for an incorrect method argument count.
9153Previously aborted with an error if too few arguments were passed to a
9154control method via the external ACPICA interface. Now issue a warning
9155instead
9156and continue. Handles the case where the method inadvertently declares
9157too
9158many arguments, but does not actually use the extra ones. Applies mainly
9159to
9160the predefined methods. Lin Ming. Linux BZ 11032.
9161
9162Disallow the evaluation of named object types with no intrinsic value.
9163Return
9164AE_TYPE for objects that have no value and therefore evaluation is
9165undefined:
9166Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9167of
9168these types were allowed, but an exception would be generated at some
9169point
9170during the evaluation. Now, the error is generated up front.
9171
9172Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9173(nsnames.c). Fixes a leak in the error exit path.
9174
9175Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9176debug
9177levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9178ACPI_EXCEPTION
9179interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9180ACPI_LV_EVENTS.
9181
9182Removed obsolete and/or unused exception codes from the acexcep.h header.
9183There is the possibility that certain device drivers may be affected if
9184they
9185use any of these exceptions.
9186
9187The ACPICA documentation has been added to the public git source tree,
9188under
9189acpica/documents. Included are the ACPICA programmer reference, the iASL
9190compiler reference, and the changes.txt release logfile.
9191
9192Example Code and Data Size: These are the sizes for the OS-independent
9193acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9194debug version of the code includes the debug output trace mechanism and
9195has a
9196much larger code and data size.
9197
9198  Previous Release:
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
9201  Current Release:
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
9204
92052) iASL Compiler/Disassembler and Tools:
9206
9207Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9208defines _SCP with 3 arguments. Previous versions defined it with only 1
9209argument. iASL now allows both definitions.
9210
9211iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9212zero-
9213length subtables when disassembling ACPI tables. Also fixed a couple of
9214errors where a full 16-bit table type field was not extracted from the
9215input
9216properly.
9217
9218acpisrc: Improve comment counting mechanism for generating source code
9219statistics. Count first and last lines of multi-line comments as
9220whitespace,
9221not comment lines. Handle Linux legal header in addition to standard
9222acpica
9223header.
9224
9225----------------------------------------
9226
922729 July 2008. Summary of changes for version 20080729:
9228
92291) ACPI CA Core Subsystem:
9230
9231Fix a possible deadlock in the GPE dispatch. Remove call to
9232AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9233attempt
9234to acquire the GPE lock but can deadlock since the GPE lock is already
9235held
9236at dispatch time. This code was introduced in version 20060831 as a
9237response
9238to Linux BZ 6881 and has since been removed from Linux.
9239
9240Add a function to dereference returned reference objects. Examines the
9241return
9242object from a call to AcpiEvaluateObject. Any Index or RefOf references
9243are
9244automatically dereferenced in an attempt to return something useful
9245(these
9246reference types cannot be converted into an external ACPI_OBJECT.)
9247Provides
9248MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9249
9250x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9251subtables for the MADT and one new subtable for the SRAT. Includes
9252disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9253x2APIC
9254Specification, June 2008.
9255
9256Additional error checking for pathname utilities. Add error check after
9257all
9258calls to AcpiNsGetPathnameLength. Add status return from
9259AcpiNsBuildExternalPath and check after all calls. Add parameter
9260validation
9261to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9262
9263Return status from the global init function AcpiUtGlobalInitialize. This
9264is
9265used by both the kernel subsystem and the utilities such as iASL
9266compiler.
9267The function could possibly fail when the caches are initialized. Yang
9268Yi.
9269
9270Add a function to decode reference object types to strings. Created for
9271improved error messages.
9272
9273Improve object conversion error messages. Better error messages during
9274object
9275conversion from internal to the external ACPI_OBJECT. Used for external
9276calls
9277to AcpiEvaluateObject.
9278
9279Example Code and Data Size: These are the sizes for the OS-independent
9280acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9281debug version of the code includes the debug output trace mechanism and
9282has a
9283much larger code and data size.
9284
9285  Previous Release:
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
9288  Current Release:
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
9291
92922) iASL Compiler/Disassembler and Tools:
9293
9294Debugger: fix a possible hang when evaluating non-methods. Fixes a
9295problem
9296introduced in version 20080701. If the object being evaluated (via
9297execute
9298command) is not a method, the debugger can hang while trying to obtain
9299non-
9300existent parameters.
9301
9302iASL: relax error for using reserved "_T_x" identifiers. These names can
9303appear in a disassembled ASL file if they were emitted by the original
9304compiler. Instead of issuing an error or warning and forcing the user to
9305manually change these names, issue a remark instead.
9306
9307iASL: error if named object created in while loop. Emit an error if any
9308named
9309object is created within a While loop. If allowed, this code will
9310generate
9311a
9312run-time error on the second iteration of the loop when an attempt is
9313made
9314to
9315create the same named object twice. ACPICA bugzilla 730.
9316
9317iASL: Support absolute pathnames for include files. Add support for
9318absolute
9319pathnames within the Include operator. previously, only relative
9320pathnames
9321were supported.
9322
9323iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9324Descriptor.
9325The ACPI spec requires one interrupt minimum. BZ 423
9326
9327iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9328Handles the case for the Interrupt Resource Descriptor where
9329the ResourceSource argument is omitted but ResourceSourceIndex
9330is present. Now leave room for the Index. BZ 426
9331
9332iASL: Prevent error message if CondRefOf target does not exist. Fixes
9333cases
9334where an error message is emitted if the target does not exist. BZ 516
9335
9336iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9337(get ACPI tables on Windows). This was apparently broken in version
933820070919.
9339
9340AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9341where
9342the EOF happens immediately after the last table in the input file. Print
9343completion message. Previously, no message was displayed in this case.
9344
9345----------------------------------------
934601 July 2008. Summary of changes for version 20080701:
9347
93480) Git source tree / acpica.org
9349
9350Fixed a problem where a git-clone from http would not transfer the entire
9351source tree.
9352
93531) ACPI CA Core Subsystem:
9354
9355Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9356enable bit. Now performs a read-change-write of the enable register
9357instead
9358of simply writing out the cached enable mask. This will prevent
9359inadvertent
9360enabling of GPEs if a rogue GPE is received during initialization (before
9361GPE
9362handlers are installed.)
9363
9364Implemented a copy for dynamically loaded tables. Previously, dynamically
9365loaded tables were simply mapped - but on some machines this memory is
9366corrupted after suspend. Now copy the table to a local buffer. For the
9367OpRegion case, added checksum verify. Use the table length from the table
9368header, not the region length. For the Buffer case, use the table length
9369also. Dennis Noordsij, Bob Moore. BZ 10734
9370
9371Fixed a problem where the same ACPI table could not be dynamically loaded
9372and
9373unloaded more than once. Without this change, a table cannot be loaded
9374again
9375once it has been loaded/unloaded one time. The current mechanism does not
9376unregister a table upon an unload. During a load, if the same table is
9377found,
9378this no longer returns an exception. BZ 722
9379
9380Fixed a problem where the wrong descriptor length was calculated for the
9381EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9382EndTag
9383are calculated as 12 bytes long, but the actual length in the internal
9384descriptor is 16 because of the round-up to 8 on the 64-bit build.
9385Reported
9386by Linn Crosetto. BZ 728
9387
9388Fixed a possible memory leak in the Unload operator. The DdbHandle
9389returned
9390by Load() did not have its reference count decremented during unload,
9391leading
9392to a memory leak. Lin Ming. BZ 727
9393
9394Fixed a possible memory leak when deleting thermal/processor objects. Any
9395associated notify handlers (and objects) were not being deleted. Fiodor
9396Suietov. BZ 506
9397
9398Fixed the ordering of the ASCII names in the global mutex table to match
9399the
9400actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9401only.
9402Vegard Nossum. BZ 726
9403
9404Enhanced the AcpiGetObjectInfo interface to return the number of required
9405arguments if the object is a control method. Added this call to the
9406debugger
9407so the proper number of default arguments are passed to a method. This
9408prevents a warning when executing methods from AcpiExec.
9409
9410Added a check for an invalid handle in AcpiGetObjectInfo. Return
9411AE_BAD_PARAMETER if input handle is invalid. BZ 474
9412
9413Fixed an extraneous warning from exconfig.c on the 64-bit build.
9414
9415Example Code and Data Size: These are the sizes for the OS-independent
9416acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9417debug version of the code includes the debug output trace mechanism and
9418has a
9419much larger code and data size.
9420
9421  Previous Release:
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
9424  Current Release:
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
9427
94282) iASL Compiler/Disassembler and Tools:
9429
9430iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9431resource descriptor names.
9432
9433iASL: Detect invalid ASCII characters in input (windows version). Removed
9434the
9435"-CF" flag from the flex compile, enables correct detection of non-ASCII
9436characters in the input. BZ 441
9437
9438iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9439the
9440"result of operation not used" warning when the DDB handle returned from
9441LoadTable is not used. The warning is not needed. BZ 590
9442
9443AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9444method
9445to
9446pass address of table to the AML. Added option to disable OpRegion
9447simulation
9448to allow creation of an OpRegion with a real address that was passed to
9449_CFG.
9450All of this allows testing of the Load and Unload operators from
9451AcpiExec.
9452
9453Debugger: update tables command for unloaded tables. Handle unloaded
9454tables
9455and use the standard table header output routine.
9456
9457----------------------------------------
945809 June 2008. Summary of changes for version 20080609:
9459
94601) ACPI CA Core Subsystem:
9461
9462Implemented a workaround for reversed _PRT entries. A significant number
9463of
9464BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9465change dynamically detects and repairs this problem. Provides
9466compatibility
9467with MS ACPI. BZ 6859
9468
9469Simplified the internal ACPI hardware interfaces to eliminate the locking
9470flag parameter from Register Read/Write. Added a new external interface,
9471AcpiGetRegisterUnlocked.
9472
9473Fixed a problem where the invocation of a GPE control method could hang.
9474This
9475was a regression introduced in 20080514. The new method argument count
9476validation mechanism can enter an infinite loop when a GPE method is
9477dispatched. Problem fixed by removing the obsolete code that passed GPE
9478block
9479information to the notify handler via the control method parameter
9480pointer.
9481
9482Fixed a problem where the _SST execution status was incorrectly returned
9483to
9484the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9485in
948620080514. _SST is optional and a NOT_FOUND exception should never be
9487returned. BZ 716
9488
9489Fixed a problem where a deleted object could be accessed from within the
9490AML
9491parser. This was a regression introduced in version 20080123 as a fix for
9492the
9493Unload operator. Lin Ming. BZ 10669
9494
9495Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9496operands
9497and eliminated the use of a negative index in a loop. Operands are now
9498displayed in the correct order, not backwards. This also fixes a
9499regression
9500introduced in 20080514 on 64-bit systems where the elimination of
9501ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9502715
9503
9504Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9505exit
9506path did not delete a locally allocated structure.
9507
9508Updated definitions for the DMAR and SRAT tables to synchronize with the
9509current specifications. Includes disassembler support.
9510
9511Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9512loop termination value was used. Loop terminated on iteration early,
9513missing
9514one mutex. Linn Crosetto
9515
9516Example Code and Data Size: These are the sizes for the OS-independent
9517acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9518debug version of the code includes the debug output trace mechanism and
9519has a
9520much larger code and data size.
9521
9522  Previous Release:
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
9525  Current Release:
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
9528
95292) iASL Compiler/Disassembler and Tools:
9530
9531Disassembler: Implemented support for EisaId() within _CID objects. Now
9532disassemble integer _CID objects back to EisaId invocations, including
9533multiple integers within _CID packages. Includes single-step support for
9534debugger also.
9535
9536Disassembler: Added support for DMAR and SRAT table definition changes.
9537
9538----------------------------------------
953914 May 2008. Summary of changes for version 20080514:
9540
95411) ACPI CA Core Subsystem:
9542
9543Fixed a problem where GPEs were enabled too early during the ACPICA
9544initialization. This could lead to "handler not installed" errors on some
9545machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9546This
9547ensures that all operation regions and devices throughout the namespace
9548have
9549been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9550
9551Implemented a change to the enter sleep code. Moved execution of the _GTS
9552method to just before setting sleep enable bit. The execution was moved
9553from
9554AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9555immediately before the SLP_EN bit is set, as per the ACPI specification.
9556Luming Yu, BZ 1653.
9557
9558Implemented a fix to disable unknown GPEs (2nd version). Now always
9559disable
9560the GPE, even if ACPICA thinks that that it is already disabled. It is
9561possible that the AML or some other code has enabled the GPE unbeknownst
9562to
9563the ACPICA code.
9564
9565Fixed a problem with the Field operator where zero-length fields would
9566return
9567an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9568ASL
9569field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9570
9571Implemented a fix for the Load operator, now load the table at the
9572namespace
9573root. This reverts a change introduced in version 20071019. The table is
9574now
9575loaded at the namespace root even though this goes against the ACPI
9576specification. This provides compatibility with other ACPI
9577implementations.
9578The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9579Ming.
9580
9581Fixed a problem where ACPICA would not Load() tables with unusual
9582signatures.
9583Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9584acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9585Therefore, signature validation is worthless. Apparently MS ACPI accepts
9586such
9587signatures, ACPICA must be compatible. BZ 10454.
9588
9589Fixed a possible negative array index in AcpiUtValidateException. Added
9590NULL
9591fields to the exception string arrays to eliminate a -1 subtraction on
9592the
9593SubStatus field.
9594
9595Updated the debug tracking macros to reduce overall code and data size.
9596Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9597instead of pointers to static strings. Jan Beulich and Bob Moore.
9598
9599Implemented argument count checking in control method invocation via
9600AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9601too
9602many. This applies only to extern programmatic control method execution,
9603not
9604method-to-method calls within the AML. Lin Ming.
9605
9606Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9607no
9608longer needed, especially with the removal of 16-bit support. It was
9609replaced
9610mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9611bit
9612on
961332/64-bit platforms is required.
9614
9615Added the C const qualifier for appropriate string constants -- mostly
9616MODULE_NAME and printf format strings. Jan Beulich.
9617
9618Example Code and Data Size: These are the sizes for the OS-independent
9619acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9620debug version of the code includes the debug output trace mechanism and
9621has a
9622much larger code and data size.
9623
9624  Previous Release:
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
9627  Current Release:
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
9630
96312) iASL Compiler/Disassembler and Tools:
9632
9633Implemented ACPI table revision ID validation in the disassembler. Zero
9634is
9635always invalid. For DSDTs, the ID controls the interpreter integer width.
96361
9637means 32-bit and this is unusual. 2 or greater is 64-bit.
9638
9639----------------------------------------
964021 March 2008. Summary of changes for version 20080321:
9641
96421) ACPI CA Core Subsystem:
9643
9644Implemented an additional change to the GPE support in order to suppress
9645spurious or stray GPEs. The AcpiEvDisableGpe function will now
9646permanently
9647disable incoming GPEs that are neither enabled nor disabled -- meaning
9648that
9649the GPE is unknown to the system. This should prevent future interrupt
9650floods
9651from that GPE. BZ 6217 (Zhang Rui)
9652
9653Fixed a problem where NULL package elements were not returned to the
9654AcpiEvaluateObject interface correctly. The element was simply ignored
9655instead of returning a NULL ACPI_OBJECT package element, potentially
9656causing
9657a buffer overflow and/or confusing the caller who expected a fixed number
9658of
9659elements. BZ 10132 (Lin Ming, Bob Moore)
9660
9661Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9662Dword,
9663Qword), Field, BankField, and IndexField operators when invoked from
9664inside
9665an executing control method. In this case, these operators created
9666namespace
9667nodes that were incorrectly left marked as permanent nodes instead of
9668temporary nodes. This could cause a problem if there is race condition
9669between an exiting control method and a running namespace walk. (Reported
9670by
9671Linn Crosetto)
9672
9673Fixed a problem where the CreateField and CreateXXXField operators would
9674incorrectly allow duplicate names (the name of the field) with no
9675exception
9676generated.
9677
9678Implemented several changes for Notify handling. Added support for new
9679Notify
9680values (ACPI 2.0+) and improved the Notify debug output. Notify on
9681PowerResource objects is no longer allowed, as per the ACPI
9682specification.
9683(Bob Moore, Zhang Rui)
9684
9685All Reference Objects returned via the AcpiEvaluateObject interface are
9686now
9687marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9688for
9689NULL objects - either NULL package elements or unresolved named
9690references.
9691
9692Fixed a problem where an extraneous debug message was produced for
9693package
9694objects (when debugging enabled). The message "Package List length larger
9695than NumElements count" is now produced in the correct case, and is now
9696an
9697error message rather than a debug message. Added a debug message for the
9698opposite case, where NumElements is larger than the Package List (the
9699package
9700will be padded out with NULL elements as per the ACPI spec.)
9701
9702Implemented several improvements for the output of the ASL "Debug" object
9703to
9704clarify and keep all data for a given object on one output line.
9705
9706Fixed two size calculation issues with the variable-length Start
9707Dependent
9708resource descriptor.
9709
9710Example Code and Data Size: These are the sizes for the OS-independent
9711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9712debug version of the code includes the debug output trace mechanism and
9713has
9714a much larger code and data size.
9715
9716  Previous Release:
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
9719  Current Release:
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
9722
97232) iASL Compiler/Disassembler and Tools:
9724
9725Fixed a problem with the use of the Switch operator where execution of
9726the
9727containing method by multiple concurrent threads could cause an
9728AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9729actual Switch opcode, it must be simulated with local named temporary
9730variables and if/else pairs. The solution chosen was to mark any method
9731that
9732uses Switch as Serialized, thus preventing multiple thread entries. BZ
9733469.
9734
9735----------------------------------------
973613 February 2008. Summary of changes for version 20080213:
9737
97381) ACPI CA Core Subsystem:
9739
9740Implemented another MS compatibility design change for GPE/Notify
9741handling.
9742GPEs are now cleared/enabled asynchronously to allow all pending notifies
9743to
9744complete first. It is expected that the OSL will queue the enable request
9745behind all pending notify requests (may require changes to the local host
9746OSL
9747in AcpiOsExecute). Alexey Starikovskiy.
9748
9749Fixed a problem where buffer and package objects passed as arguments to a
9750control method via the external AcpiEvaluateObject interface could cause
9751an
9752AE_AML_INTERNAL exception depending on the order and type of operators
9753executed by the target control method.
9754
9755Fixed a problem where resource descriptor size optimization could cause a
9756problem when a _CRS resource template is passed to a _SRS method. The
9757_SRS
9758resource template must use the same descriptors (with the same size) as
9759returned from _CRS. This change affects the following resource
9760descriptors:
9761IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
97629487)
9763
9764Fixed a problem where a CopyObject to RegionField, BankField, and
9765IndexField
9766objects did not perform an implicit conversion as it should. These types
9767must
9768retain their initial type permanently as per the ACPI specification.
9769However,
9770a CopyObject to all other object types should not perform an implicit
9771conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9772
9773Fixed a problem with the AcpiGetDevices interface where the mechanism to
9774match device CIDs did not examine the entire list of available CIDs, but
9775instead aborted on the first non-matching CID. Andrew Patterson.
9776
9777Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
9778was
9779inadvertently changed to return a 16-bit value instead of a 32-bit value,
9780truncating the upper dword of a 64-bit value. This macro is only used to
9781display debug output, so no incorrect calculations were made. Also,
9782reimplemented the macro so that a 64-bit shift is not performed by
9783inefficient compilers.
9784
9785Added missing va_end statements that should correspond with each va_start
9786statement.
9787
9788Example Code and Data Size: These are the sizes for the OS-independent
9789acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9790debug version of the code includes the debug output trace mechanism and
9791has
9792a much larger code and data size.
9793
9794  Previous Release:
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
9797  Current Release:
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
9800
98012) iASL Compiler/Disassembler and Tools:
9802
9803Implemented full disassembler support for the following new ACPI tables:
9804BERT, EINJ, and ERST. Implemented partial disassembler support for the
9805complicated HEST table. These tables support the Windows Hardware Error
9806Architecture (WHEA).
9807
9808----------------------------------------
980923 January 2008. Summary of changes for version 20080123:
9810
98111) ACPI CA Core Subsystem:
9812
9813Added the 2008 copyright to all module headers and signons. This affects
9814virtually every file in the ACPICA core subsystem, the iASL compiler, and
9815the tools/utilities.
9816
9817Fixed a problem with the SizeOf operator when used with Package and
9818Buffer
9819objects. These objects have deferred execution for some arguments, and
9820the
9821execution is now completed before the SizeOf is executed. This problem
9822caused
9823unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
9824BZ
98259558
9826
9827Implemented an enhancement to the interpreter "slack mode". In the
9828absence
9829of
9830an explicit return or an implicitly returned object from the last
9831executed
9832opcode, a control method will now implicitly return an integer of value 0
9833for
9834Microsoft compatibility. (Lin Ming) BZ 392
9835
9836Fixed a problem with the Load operator where an exception was not
9837returned
9838in
9839the case where the table is already loaded. (Lin Ming) BZ 463
9840
9841Implemented support for the use of DDBHandles as an Indexed Reference, as
9842per
9843the ACPI spec. (Lin Ming) BZ 486
9844
9845Implemented support for UserTerm (Method invocation) for the Unload
9846operator
9847as per the ACPI spec. (Lin Ming) BZ 580
9848
9849Fixed a problem with the LoadTable operator where the OemId and
9850OemTableId
9851input strings could cause unexpected failures if they were shorter than
9852the
9853maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9854
9855Implemented support for UserTerm (Method invocation) for the Unload
9856operator
9857as per the ACPI spec. (Lin Ming) BZ 580
9858
9859Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
9860HEST,
9861IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9862
9863Example Code and Data Size: These are the sizes for the OS-independent
9864acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9865debug version of the code includes the debug output trace mechanism and
9866has
9867a much larger code and data size.
9868
9869  Previous Release:
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
9872  Current Release:
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
9875
98762) iASL Compiler/Disassembler and Tools:
9877
9878Implemented support in the disassembler for checksum validation on
9879incoming
9880binary DSDTs and SSDTs. If incorrect, a message is displayed within the
9881table
9882header dump at the start of the disassembly.
9883
9884Implemented additional debugging information in the namespace listing
9885file
9886created during compilation. In addition to the namespace hierarchy, the
9887full
9888pathname to each namespace object is displayed.
9889
9890Fixed a problem with the disassembler where invalid ACPI tables could
9891cause
9892faults or infinite loops.
9893
9894Fixed an unexpected parse error when using the optional "parameter types"
9895list in a control method declaration. (Lin Ming) BZ 397
9896
9897Fixed a problem where two External declarations with the same name did
9898not
9899cause an error (Lin Ming) BZ 509
9900
9901Implemented support for full TermArgs (adding Argx, Localx and method
9902invocation) for the ParameterData parameter to the LoadTable operator.
9903(Lin
9904Ming) BZ 583,587
9905
9906----------------------------------------
990719 December 2007. Summary of changes for version 20071219:
9908
99091) ACPI CA Core Subsystem:
9910
9911Implemented full support for deferred execution for the TermArg string
9912arguments for DataTableRegion. This enables forward references and full
9913operand resolution for the three string arguments. Similar to
9914OperationRegion
9915deferred argument execution.) Lin Ming. BZ 430
9916
9917Implemented full argument resolution support for the BankValue argument
9918to
9919BankField. Previously, only constants were supported, now any TermArg may
9920be
9921used. Lin Ming BZ 387, 393
9922
9923Fixed a problem with AcpiGetDevices where the search of a branch of the
9924device tree could be terminated prematurely. In accordance with the ACPI
9925specification, the search down the current branch is terminated if a
9926device
9927is both not present and not functional (instead of just not present.)
9928Yakui
9929Zhao.
9930
9931Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
9932if
9933the underlying AML code changed the GPE enable registers. Now, any
9934unknown
9935incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
9936disabled
9937instead of simply ignored. Rui Zhang.
9938
9939Fixed a problem with Index Fields where the Index register was
9940incorrectly
9941limited to a maximum of 32 bits. Now any size may be used.
9942
9943Fixed a couple memory leaks associated with "implicit return" objects
9944when
9945the AML Interpreter slack mode is enabled. Lin Ming BZ 349
9946
9947Example Code and Data Size: These are the sizes for the OS-independent
9948acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9949debug version of the code includes the debug output trace mechanism and
9950has
9951a much larger code and data size.
9952
9953  Previous Release:
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
9956  Current Release:
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
9959
9960----------------------------------------
996114 November 2007. Summary of changes for version 20071114:
9962
99631) ACPI CA Core Subsystem:
9964
9965Implemented event counters for each of the Fixed Events, the ACPI SCI
9966(interrupt) itself, and control methods executed. Named
9967AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
9968These
9969should be useful for debugging and statistics.
9970
9971Implemented a new external interface, AcpiGetStatistics, to retrieve the
9972contents of the various event counters. Returns the current values for
9973AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
9974AcpiMethodCount. The interface can be expanded in the future if new
9975counters
9976are added. Device drivers should use this interface rather than access
9977the
9978counters directly.
9979
9980Fixed a problem with the FromBCD and ToBCD operators. With some
9981compilers,
9982the ShortDivide function worked incorrectly, causing problems with the
9983BCD
9984functions with large input values. A truncation from 64-bit to 32-bit
9985inadvertently occurred. Internal BZ 435. Lin Ming
9986
9987Fixed a problem with Index references passed as method arguments.
9988References
9989passed as arguments to control methods were dereferenced immediately
9990(before
9991control was passed to the called method). The references are now
9992correctly
9993passed directly to the called method. BZ 5389. Lin Ming
9994
9995Fixed a problem with CopyObject used in conjunction with the Index
9996operator.
9997The reference was incorrectly dereferenced before the copy. The reference
9998is
9999now correctly copied. BZ 5391. Lin Ming
10000
10001Fixed a problem with Control Method references within Package objects.
10002These
10003references are now correctly generated. This completes the package
10004construction overhaul that began in version 20071019.
10005
10006Example Code and Data Size: These are the sizes for the OS-independent
10007acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10008debug version of the code includes the debug output trace mechanism and
10009has
10010a much larger code and data size.
10011
10012  Previous Release:
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
10015  Current Release:
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
10018
10019
100202) iASL Compiler/Disassembler and Tools:
10021
10022The AcpiExec utility now installs handlers for all of the predefined
10023Operation Region types. New types supported are: PCI_Config, CMOS, and
10024PCIBARTarget.
10025
10026Fixed a problem with the 64-bit version of AcpiExec where the extended
10027(64-
10028bit) address fields for the DSDT and FACS within the FADT were not being
10029used, causing truncation of the upper 32-bits of these addresses. Lin
10030Ming
10031and Bob Moore
10032
10033----------------------------------------
1003419 October 2007. Summary of changes for version 20071019:
10035
100361) ACPI CA Core Subsystem:
10037
10038Fixed a problem with the Alias operator when the target of the alias is a
10039named ASL operator that opens a new scope -- Scope, Device,
10040PowerResource,
10041Processor, and ThermalZone. In these cases, any children of the original
10042operator could not be accessed via the alias, potentially causing
10043unexpected
10044AE_NOT_FOUND exceptions. (BZ 9067)
10045
10046Fixed a problem with the Package operator where all named references were
10047created as object references and left otherwise unresolved. According to
10048the
10049ACPI specification, a Package can only contain Data Objects or references
10050to
10051control methods. The implication is that named references to Data Objects
10052(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10053immediately upon package creation. This is the approach taken with this
10054change. References to all other named objects (Methods, Devices, Scopes,
10055etc.) are all now properly created as reference objects. (BZ 5328)
10056
10057Reverted a change to Notify handling that was introduced in version
1005820070508. This version changed the Notify handling from asynchronous to
10059fully synchronous (Device driver Notify handling with respect to the
10060Notify
10061ASL operator). It was found that this change caused more problems than it
10062solved and was removed by most users.
10063
10064Fixed a problem with the Increment and Decrement operators where the type
10065of
10066the target object could be unexpectedly and incorrectly changed. (BZ 353)
10067Lin Ming.
10068
10069Fixed a problem with the Load and LoadTable operators where the table
10070location within the namespace was ignored. Instead, the table was always
10071loaded into the root or current scope. Lin Ming.
10072
10073Fixed a problem with the Load operator when loading a table from a buffer
10074object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10075
10076Fixed a problem with the Debug object where a store of a DdbHandle
10077reference
10078object to the Debug object could cause a fault.
10079
10080Added a table checksum verification for the Load operator, in the case
10081where
10082the load is from a buffer. (BZ 578).
10083
10084Implemented additional parameter validation for the LoadTable operator.
10085The
10086length of the input strings SignatureString, OemIdString, and OemTableId
10087are
10088now checked for maximum lengths. (BZ 582) Lin Ming.
10089
10090Example Code and Data Size: These are the sizes for the OS-independent
10091acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10092debug version of the code includes the debug output trace mechanism and
10093has
10094a much larger code and data size.
10095
10096  Previous Release:
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
10099  Current Release:
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
10102
10103
101042) iASL Compiler/Disassembler:
10105
10106Fixed a problem where if a single file was specified and the file did not
10107exist, no error message was emitted. (Introduced with wildcard support in
10108version 20070917.)
10109
10110----------------------------------------
1011119 September 2007. Summary of changes for version 20070919:
10112
101131) ACPI CA Core Subsystem:
10114
10115Designed and implemented new external interfaces to install and remove
10116handlers for ACPI table-related events. Current events that are defined
10117are
10118LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10119they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10120AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10121
10122Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10123(acpi_serialized option on Linux) could cause some systems to hang during
10124initialization. (Bob Moore) BZ 8171
10125
10126Fixed a problem where objects of certain types (Device, ThermalZone,
10127Processor, PowerResource) can be not found if they are declared and
10128referenced from within the same control method (Lin Ming) BZ 341
10129
10130Example Code and Data Size: These are the sizes for the OS-independent
10131acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10132debug version of the code includes the debug output trace mechanism and
10133has
10134a much larger code and data size.
10135
10136  Previous Release:
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
10139  Current Release:
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
10142
10143
101442) iASL Compiler/Disassembler:
10145
10146Implemented support to allow multiple files to be compiled/disassembled
10147in
10148a
10149single invocation. This includes command line wildcard support for both
10150the
10151Windows and Unix versions of the compiler. This feature simplifies the
10152disassembly and compilation of multiple ACPI tables in a single
10153directory.
10154
10155----------------------------------------
1015608 May 2007. Summary of changes for version 20070508:
10157
101581) ACPI CA Core Subsystem:
10159
10160Implemented a Microsoft compatibility design change for the handling of
10161the
10162Notify AML operator. Previously, notify handlers were dispatched and
10163executed completely asynchronously in a deferred thread. The new design
10164still executes the notify handlers in a different thread, but the
10165original
10166thread that executed the Notify() now waits at a synchronization point
10167for
10168the notify handler to complete. Some machines depend on a synchronous
10169Notify
10170operator in order to operate correctly.
10171
10172Implemented support to allow Package objects to be passed as method
10173arguments to the external AcpiEvaluateObject interface. Previously, this
10174would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10175implemented since there were no reserved control methods that required it
10176until recently.
10177
10178Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10179that
10180contained invalid non-zero values in reserved fields could cause later
10181failures because these fields have meaning in later revisions of the
10182FADT.
10183For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10184fields
10185are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10186
10187Fixed a problem where the Global Lock handle was not properly updated if
10188a
10189thread that acquired the Global Lock via executing AML code then
10190attempted
10191to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10192Joe
10193Liu.
10194
10195Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10196could be corrupted if the interrupt being removed was at the head of the
10197list. Reported by Linn Crosetto.
10198
10199Example Code and Data Size: These are the sizes for the OS-independent
10200acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10201debug version of the code includes the debug output trace mechanism and
10202has
10203a much larger code and data size.
10204
10205  Previous Release:
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
10208  Current Release:
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
10211
10212----------------------------------------
1021320 March 2007. Summary of changes for version 20070320:
10214
102151) ACPI CA Core Subsystem:
10216
10217Implemented a change to the order of interpretation and evaluation of AML
10218operand objects within the AML interpreter. The interpreter now evaluates
10219operands in the order that they appear in the AML stream (and the
10220corresponding ASL code), instead of in the reverse order (after the
10221entire
10222operand list has been parsed). The previous behavior caused several
10223subtle
10224incompatibilities with the Microsoft AML interpreter as well as being
10225somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10226
10227Implemented a change to the ACPI Global Lock support. All interfaces to
10228the
10229global lock now allow the same thread to acquire the lock multiple times.
10230This affects the AcpiAcquireGlobalLock external interface to the global
10231lock
10232as well as the internal use of the global lock to support AML fields -- a
10233control method that is holding the global lock can now simultaneously
10234access
10235AML fields that require global lock protection. Previously, in both
10236cases,
10237this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10238to
10239AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10240Controller. There is no change to the behavior of the AML Acquire
10241operator,
10242as this can already be used to acquire a mutex multiple times by the same
10243thread. BZ 8066. With assistance from Alexey Starikovskiy.
10244
10245Fixed a problem where invalid objects could be referenced in the AML
10246Interpreter after error conditions. During operand evaluation, ensure
10247that
10248the internal "Return Object" field is cleared on error and only valid
10249pointers are stored there. Caused occasional access to deleted objects
10250that
10251resulted in "large reference count" warning messages. Valery Podrezov.
10252
10253Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10254on
10255deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10256Podrezov.
10257
10258Fixed an internal problem with the handling of result objects on the
10259interpreter result stack. BZ 7872. Valery Podrezov.
10260
10261Removed obsolete code that handled the case where AML_NAME_OP is the
10262target
10263of a reference (Reference.Opcode). This code was no longer necessary. BZ
102647874. Valery Podrezov.
10265
10266Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10267was
10268a
10269remnant from the previously discontinued 16-bit support.
10270
10271Example Code and Data Size: These are the sizes for the OS-independent
10272acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10273debug version of the code includes the debug output trace mechanism and
10274has
10275a much larger code and data size.
10276
10277  Previous Release:
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
10280  Current Release:
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
10283
10284----------------------------------------
1028526 January 2007. Summary of changes for version 20070126:
10286
102871) ACPI CA Core Subsystem:
10288
10289Added the 2007 copyright to all module headers and signons. This affects
10290virtually every file in the ACPICA core subsystem, the iASL compiler, and
10291the utilities.
10292
10293Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10294during a table load. A bad pointer was passed in the case where the DSDT
10295is
10296overridden, causing a fault in this case.
10297
10298Example Code and Data Size: These are the sizes for the OS-independent
10299acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10300debug version of the code includes the debug output trace mechanism and
10301has
10302a much larger code and data size.
10303
10304  Previous Release:
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
10307  Current Release:
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
10310
10311----------------------------------------
1031215 December 2006. Summary of changes for version 20061215:
10313
103141) ACPI CA Core Subsystem:
10315
10316Support for 16-bit ACPICA has been completely removed since it is no
10317longer
10318necessary and it clutters the code. All 16-bit macros, types, and
10319conditional compiles have been removed, cleaning up and simplifying the
10320code
10321across the entire subsystem. DOS support is no longer needed since the
10322bootable Linux firmware kit is now available.
10323
10324The handler for the Global Lock is now removed during AcpiTerminate to
10325enable a clean subsystem restart, via the implementation of the
10326AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10327HP)
10328
10329Implemented enhancements to the multithreading support within the
10330debugger
10331to enable improved multithreading debugging and evaluation of the
10332subsystem.
10333(Valery Podrezov)
10334
10335Debugger: Enhanced the Statistics/Memory command to emit the total
10336(maximum)
10337memory used during the execution, as well as the maximum memory consumed
10338by
10339each of the various object types. (Valery Podrezov)
10340
10341Example Code and Data Size: These are the sizes for the OS-independent
10342acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10343debug version of the code includes the debug output trace mechanism and
10344has
10345a much larger code and data size.
10346
10347  Previous Release:
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
10350  Current Release:
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
10353
10354
103552) iASL Compiler/Disassembler and Tools:
10356
10357AcpiExec: Implemented a new option (-m) to display full memory use
10358statistics upon subsystem/program termination. (Valery Podrezov)
10359
10360----------------------------------------
1036109 November 2006. Summary of changes for version 20061109:
10362
103631) ACPI CA Core Subsystem:
10364
10365Optimized the Load ASL operator in the case where the source operand is
10366an
10367operation region. Simply map the operation region memory, instead of
10368performing a bytewise read. (Region must be of type SystemMemory, see
10369below.)
10370
10371Fixed the Load ASL operator for the case where the source operand is a
10372region field. A buffer object is also allowed as the source operand. BZ
10373480
10374
10375Fixed a problem where the Load ASL operator allowed the source operand to
10376be
10377an operation region of any type. It is now restricted to regions of type
10378SystemMemory, as per the ACPI specification. BZ 481
10379
10380Additional cleanup and optimizations for the new Table Manager code.
10381
10382AcpiEnable will now fail if all of the required ACPI tables are not
10383loaded
10384(FADT, FACS, DSDT). BZ 477
10385
10386Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10387this
10388header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10389manually optimized to be aligned and will not work if it is byte-packed.
10390
10391Example Code and Data Size: These are the sizes for the OS-independent
10392acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10393debug version of the code includes the debug output trace mechanism and
10394has
10395a much larger code and data size.
10396
10397  Previous Release:
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
10400  Current Release:
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
10403
10404
104052) iASL Compiler/Disassembler and Tools:
10406
10407Fixed a problem where the presence of the _OSI predefined control method
10408within complex expressions could cause an internal compiler error.
10409
10410AcpiExec: Implemented full region support for multiple address spaces.
10411SpaceId is now part of the REGION object. BZ 429
10412
10413----------------------------------------
1041411 October 2006. Summary of changes for version 20061011:
10415
104161) ACPI CA Core Subsystem:
10417
10418Completed an AML interpreter performance enhancement for control method
10419execution. Previously a 2-pass parse/execution, control methods are now
10420completely parsed and executed in a single pass. This improves overall
10421interpreter performance by ~25%, reduces code size, and reduces CPU stack
10422use. (Valery Podrezov + interpreter changes in version 20051202 that
10423eliminated namespace loading during the pass one parse.)
10424
10425Implemented _CID support for PCI Root Bridge detection. If the _HID does
10426not
10427match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10428now
10429obtained and also checked for an ID match.
10430
10431Implemented additional support for the PCI _ADR execution: upsearch until
10432a
10433device scope is found before executing _ADR. This allows PCI_Config
10434operation regions to be declared locally within control methods
10435underneath
10436PCI device objects.
10437
10438Fixed a problem with a possible race condition between threads executing
10439AcpiWalkNamespace and the AML interpreter. This condition was removed by
10440modifying AcpiWalkNamespace to (by default) ignore all temporary
10441namespace
10442entries created during any concurrent control method execution. An
10443additional namespace race condition is known to exist between
10444AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10445investigation.
10446
10447Restructured the AML ParseLoop function, breaking it into several
10448subfunctions in order to reduce CPU stack use and improve
10449maintainability.
10450(Mikhail Kouzmich)
10451
10452AcpiGetHandle: Fix for parameter validation to detect invalid
10453combinations
10454of prefix handle and pathname. BZ 478
10455
10456Example Code and Data Size: These are the sizes for the OS-independent
10457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10458debug version of the code includes the debug output trace mechanism and
10459has
10460a much larger code and data size.
10461
10462  Previous Release:
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
10465  Current Release:
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
10468
104692) iASL Compiler/Disassembler and Tools:
10470
10471Ported the -g option (get local ACPI tables) to the new ACPICA Table
10472Manager
10473to restore original behavior.
10474
10475----------------------------------------
1047627 September 2006. Summary of changes for version 20060927:
10477
104781) ACPI CA Core Subsystem:
10479
10480Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10481These functions now use a spinlock for mutual exclusion and the interrupt
10482level indication flag is not needed.
10483
10484Fixed a problem with the Global Lock where the lock could appear to be
10485obtained before it is actually obtained. The global lock semaphore was
10486inadvertently created with one unit instead of zero units. (BZ 464)
10487Fiodor
10488Suietov.
10489
10490Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10491during
10492a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10493
10494Example Code and Data Size: These are the sizes for the OS-independent
10495acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10496debug version of the code includes the debug output trace mechanism and
10497has
10498a much larger code and data size.
10499
10500  Previous Release:
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
10503  Current Release:
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
10506
10507
105082) iASL Compiler/Disassembler and Tools:
10509
10510Fixed a compilation problem with the pre-defined Resource Descriptor
10511field
10512names where an "object does not exist" error could be incorrectly
10513generated
10514if the parent ResourceTemplate pathname places the template within a
10515different namespace scope than the current scope. (BZ 7212)
10516
10517Fixed a problem where the compiler could hang after syntax errors
10518detected
10519in an ElseIf construct. (BZ 453)
10520
10521Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10522operator. An incorrect output filename was produced when this parameter
10523was
10524a null string (""). Now, the original input filename is used as the AML
10525output filename, with an ".aml" extension.
10526
10527Implemented a generic batch command mode for the AcpiExec utility
10528(execute
10529any AML debugger command) (Valery Podrezov).
10530
10531----------------------------------------
1053212 September 2006. Summary of changes for version 20060912:
10533
105341) ACPI CA Core Subsystem:
10535
10536Enhanced the implementation of the "serialized mode" of the interpreter
10537(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10538specified, instead of creating a serialization semaphore per control
10539method,
10540the interpreter lock is simply no longer released before a blocking
10541operation during control method execution. This effectively makes the AML
10542Interpreter single-threaded. The overhead of a semaphore per-method is
10543eliminated.
10544
10545Fixed a regression where an error was no longer emitted if a control
10546method
10547attempts to create 2 objects of the same name. This once again returns
10548AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10549that
10550will dynamically serialize the control method to possible prevent future
10551errors. (BZ 440)
10552
10553Integrated a fix for a problem with PCI Express HID detection in the PCI
10554Config Space setup procedure. (BZ 7145)
10555
10556Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10557AcpiHwInitialize function - the FADT registers are now validated when the
10558table is loaded.
10559
10560Added two new warnings during FADT verification - 1) if the FADT is
10561larger
10562than the largest known FADT version, and 2) if there is a mismatch
10563between
10564a
1056532-bit block address and the 64-bit X counterpart (when both are non-
10566zero.)
10567
10568Example Code and Data Size: These are the sizes for the OS-independent
10569acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10570debug version of the code includes the debug output trace mechanism and
10571has
10572a much larger code and data size.
10573
10574  Previous Release:
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
10577  Current Release:
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
10580
10581
105822) iASL Compiler/Disassembler and Tools:
10583
10584Fixed a problem with the implementation of the Switch() operator where
10585the
10586temporary variable was declared too close to the actual Switch, instead
10587of
10588at method level. This could cause a problem if the Switch() operator is
10589within a while loop, causing an error on the second iteration. (BZ 460)
10590
10591Disassembler - fix for error emitted for unknown type for target of scope
10592operator. Now, ignore it and continue.
10593
10594Disassembly of an FADT now verifies the input FADT and reports any errors
10595found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10596
10597Disassembly of raw data buffers with byte initialization data now
10598prefixes
10599each output line with the current buffer offset.
10600
10601Disassembly of ASF! table now includes all variable-length data fields at
10602the end of some of the subtables.
10603
10604The disassembler now emits a comment if a buffer appears to be a
10605ResourceTemplate, but cannot be disassembled as such because the EndTag
10606does
10607not appear at the very end of the buffer.
10608
10609AcpiExec - Added the "-t" command line option to enable the serialized
10610mode
10611of the AML interpreter.
10612
10613----------------------------------------
1061431 August 2006. Summary of changes for version 20060831:
10615
106161) ACPI CA Core Subsystem:
10617
10618Miscellaneous 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,
10624AcpiGetTableByIndex
10625
10626Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10627now
10628immediately disabled to prevent the waking GPE from firing again and to
10629prevent other wake GPEs from interrupting the wake process.
10630
10631Added the AcpiGpeCount global that tracks the number of processed GPEs,
10632to
10633be used for debugging systems with a large number of ACPI interrupts.
10634
10635Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10636both the ACPICA headers and the disassembler.
10637
10638Example Code and Data Size: These are the sizes for the OS-independent
10639acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10640debug version of the code includes the debug output trace mechanism and
10641has
10642a much larger code and data size.
10643
10644  Previous Release:
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
10647  Current Release:
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
10650
10651
106522) iASL Compiler/Disassembler and Tools:
10653
10654Disassembler support for the DMAR ACPI table.
10655
10656----------------------------------------
1065723 August 2006. Summary of changes for version 20060823:
10658
106591) ACPI CA Core Subsystem:
10660
10661The Table Manager component has been completely redesigned and
10662reimplemented. The new design is much simpler, and reduces the overall
10663code
10664and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10665is
10666now possible to obtain the ACPI tables very early during kernel
10667initialization, even before dynamic memory management is initialized.
10668(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10669
10670Obsolete ACPICA interfaces:
10671
10672- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10673init
10674time).
10675- AcpiLoadTable: Not needed.
10676- AcpiUnloadTable: Not needed.
10677
10678New ACPICA interfaces:
10679
10680- AcpiInitializeTables: Must be called before the table manager can be
10681used.
10682- AcpiReallocateRootTable: Used to transfer the root table to dynamically
10683allocated memory after it becomes available.
10684- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10685tables
10686in the RSDT/XSDT.
10687
10688Other ACPICA changes:
10689
10690- AcpiGetTableHeader returns the actual mapped table header, not a copy.
10691Use
10692AcpiOsUnmapMemory to free this mapping.
10693- AcpiGetTable returns the actual mapped table. The mapping is managed
10694internally and must not be deleted by the caller. Use of this interface
10695causes no additional dynamic memory allocation.
10696- AcpiFindRootPointer: Support for physical addressing has been
10697eliminated,
10698it appeared to be unused.
10699- The interface to AcpiOsMapMemory has changed to be consistent with the
10700other allocation interfaces.
10701- The interface to AcpiOsGetRootPointer has changed to eliminate
10702unnecessary
10703parameters.
10704- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1070564-
10706bit platforms. Was previously 64 bits on all platforms.
10707- The interface to the ACPI Global Lock acquire/release macros have
10708changed
10709slightly since ACPICA no longer keeps a local copy of the FACS with a
10710constructed pointer to the actual global lock.
10711
10712Porting to the new table manager:
10713
10714- AcpiInitializeTables: Must be called once, and can be called anytime
10715during the OS initialization process. It allows the host to specify an
10716area
10717of memory to be used to store the internal version of the RSDT/XSDT (root
10718table). This allows the host to access ACPI tables before memory
10719management
10720is initialized and running.
10721- AcpiReallocateRootTable: Can be called after memory management is
10722running
10723to copy the root table to a dynamically allocated array, freeing up the
10724scratch memory specified in the call to AcpiInitializeTables.
10725- AcpiSubsystemInitialize: This existing interface is independent of the
10726Table Manager, and does not have to be called before the Table Manager
10727can
10728be 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
10730the
10731actbl.h and actbl1.h header files and may require changes to existing
10732code.
10733For example, bitfields have been completely removed because of their lack
10734of
10735portability across C compilers.
10736- Update interfaces to the Global Lock acquire/release macros if local
10737versions are used. (see acwin.h)
10738
10739Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10740
10741New files: tbfind.c
10742
10743Example Code and Data Size: These are the sizes for the OS-independent
10744acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10745debug version of the code includes the debug output trace mechanism and
10746has
10747a much larger code and data size.
10748
10749  Previous Release:
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
10752  Current Release:
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
10755
10756
107572) iASL Compiler/Disassembler and Tools:
10758
10759No changes for this release.
10760
10761----------------------------------------
1076221 July 2006. Summary of changes for version 20060721:
10763
107641) ACPI CA Core Subsystem:
10765
10766The full source code for the ASL test suite used to validate the iASL
10767compiler and the ACPICA core subsystem is being released with the ACPICA
10768source for the first time. The source is contained in a separate package
10769and
10770consists of over 1100 files that exercise all ASL/AML operators. The
10771package
10772should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
10773Fiodor
10774Suietov)
10775
10776Completed a new design and implementation for support of the ACPI Global
10777Lock. On the OS side, the global lock is now treated as a standard AML
10778mutex. Previously, multiple OS threads could "acquire" the global lock
10779simultaneously. However, this could cause the BIOS to be starved out of
10780the
10781lock - especially in cases such as the Embedded Controller driver where
10782there is a tight coupling between the OS and the BIOS.
10783
10784Implemented an optimization for the ACPI Global Lock interrupt mechanism.
10785The Global Lock interrupt handler no longer queues the execution of a
10786separate thread to signal the global lock semaphore. Instead, the
10787semaphore
10788is signaled directly from the interrupt handler.
10789
10790Implemented support within the AML interpreter for package objects that
10791contain a larger AML length (package list length) than the package
10792element
10793count. In this case, the length of the package is truncated to match the
10794package element count. Some BIOS code apparently modifies the package
10795length
10796on the fly, and this change supports this behavior. Provides
10797compatibility
10798with the MS AML interpreter. (With assistance from Fiodor Suietov)
10799
10800Implemented a temporary fix for the BankValue parameter of a Bank Field
10801to
10802support all constant values, now including the Zero and One opcodes.
10803Evaluation of this parameter must eventually be converted to a full
10804TermArg
10805evaluation. A not-implemented error is now returned (temporarily) for
10806non-
10807constant values for this parameter.
10808
10809Fixed problem reports (Fiodor Suietov) integrated:
10810- Fix for premature object deletion after CopyObject on Operation Region
10811(BZ
10812350)
10813
10814Example Code and Data Size: These are the sizes for the OS-independent
10815acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10816debug version of the code includes the debug output trace mechanism and
10817has
10818a much larger code and data size.
10819
10820  Previous Release:
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
10823  Current Release:
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
10826
10827
108282) iASL Compiler/Disassembler and Tools:
10829
10830No changes for this release.
10831
10832----------------------------------------
1083307 July 2006. Summary of changes for version 20060707:
10834
108351) ACPI CA Core Subsystem:
10836
10837Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
10838that do not allow the initialization of address pointers within packed
10839structures - even though the hardware itself may support misaligned
10840transfers. Some of the debug data structures are packed by default to
10841minimize size.
10842
10843Added an error message for the case where AcpiOsGetThreadId() returns
10844zero.
10845A non-zero value is required by the core ACPICA code to ensure the proper
10846operation of AML mutexes and recursive control methods.
10847
10848The DSDT is now the only ACPI table that determines whether the AML
10849interpreter is in 32-bit or 64-bit mode. Not really a functional change,
10850but
10851the hooks for per-table 32/64 switching have been removed from the code.
10852A
10853clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10854
10855Fixed a possible leak of an OwnerID in the error path of
10856AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
10857deletion to a single place in AcpiTbUninstallTable to correct possible
10858leaks
10859when using the AcpiTbDeleteTablesByType interface (with assistance from
10860Lance Ortiz.)
10861
10862Fixed a problem with Serialized control methods where the semaphore
10863associated with the method could be over-signaled after multiple method
10864invocations.
10865
10866Fixed two issues with the locking of the internal namespace data
10867structure.
10868Both the Unload() operator and AcpiUnloadTable interface now lock the
10869namespace during the namespace deletion associated with the table unload
10870(with assistance from Linn Crosetto.)
10871
10872Fixed problem reports (Valery Podrezov) integrated:
10873- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10874
10875Fixed 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
10879375)
10880- Possible memory leak, Notify sub-objects of Processor, Power,
10881ThermalZone
10882(BZ 376)
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
10886Handler (BZ (380)
10887- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
10888loaded
10889(BZ 381)
10890
10891Example Code and Data Size: These are the sizes for the OS-independent
10892acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10893debug version of the code includes the debug output trace mechanism and
10894has
10895a much larger code and data size.
10896
10897  Previous Release:
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
10900  Current Release:
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
10903
10904
109052) iASL Compiler/Disassembler and Tools:
10906
10907Fixed problem reports:
10908Compiler segfault when ASL contains a long (>1024) String declaration (BZ
10909436)
10910
10911----------------------------------------
1091223 June 2006. Summary of changes for version 20060623:
10913
109141) ACPI CA Core Subsystem:
10915
10916Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
10917allows the type to be customized to the host OS for improved efficiency
10918(since a spinlock is usually a very small object.)
10919
10920Implemented support for "ignored" bits in the ACPI registers. According
10921to
10922the ACPI specification, these bits should be preserved when writing the
10923registers via a read/modify/write cycle. There are 3 bits preserved in
10924this
10925manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
10926
10927Implemented the initial deployment of new OSL mutex interfaces. Since
10928some
10929host operating systems have separate mutex and semaphore objects, this
10930feature was requested. The base code now uses mutexes (and the new mutex
10931interfaces) wherever a binary semaphore was used previously. However, for
10932the current release, the mutex interfaces are defined as macros to map
10933them
10934to the existing semaphore interfaces. Therefore, no OSL changes are
10935required
10936at this time. (See acpiosxf.h)
10937
10938Fixed several problems with the support for the control method SyncLevel
10939parameter. The SyncLevel now works according to the ACPI specification
10940and
10941in concert with the Mutex SyncLevel parameter, since the current
10942SyncLevel
10943is a property of the executing thread. Mutual exclusion for control
10944methods
10945is now implemented with a mutex instead of a semaphore.
10946
10947Fixed three instances of the use of the C shift operator in the bitfield
10948support code (exfldio.c) to avoid the use of a shift value larger than
10949the
10950target data width. The behavior of C compilers is undefined in this case
10951and
10952can cause unpredictable results, and therefore the case must be detected
10953and
10954avoided. (Fiodor Suietov)
10955
10956Added an info message whenever an SSDT or OEM table is loaded dynamically
10957via the Load() or LoadTable() ASL operators. This should improve
10958debugging
10959capability since it will show exactly what tables have been loaded
10960(beyond
10961the tables present in the RSDT/XSDT.)
10962
10963Example Code and Data Size: These are the sizes for the OS-independent
10964acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10965debug version of the code includes the debug output trace mechanism and
10966has
10967a much larger code and data size.
10968
10969  Previous Release:
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
10972  Current Release:
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
10975
10976
109772) iASL Compiler/Disassembler and Tools:
10978
10979No changes for this release.
10980
10981----------------------------------------
1098208 June 2006. Summary of changes for version 20060608:
10983
109841) ACPI CA Core Subsystem:
10985
10986Converted the locking mutex used for the ACPI hardware to a spinlock.
10987This
10988change should eliminate all problems caused by attempting to acquire a
10989semaphore at interrupt level, and it means that all ACPICA external
10990interfaces that directly access the ACPI hardware can be safely called
10991from
10992interrupt level. OSL code that implements the semaphore interfaces should
10993be
10994able to eliminate any workarounds for being called at interrupt level.
10995
10996Fixed a regression introduced in 20060526 where the ACPI device
10997initialization could be prematurely aborted with an AE_NOT_FOUND if a
10998device
10999did not have an optional _INI method.
11000
11001Fixed an IndexField issue where a write to the Data Register should be
11002limited in size to the AccessSize (width) of the IndexField itself. (BZ
11003433,
11004Fiodor Suietov)
11005
11006Fixed problem reports (Valery Podrezov) integrated:
11007- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11008
11009Fixed problem reports (Fiodor Suietov) integrated:
11010- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11011
11012Removed four global mutexes that were obsolete and were no longer being
11013used.
11014
11015Example Code and Data Size: These are the sizes for the OS-independent
11016acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11017debug version of the code includes the debug output trace mechanism and
11018has
11019a much larger code and data size.
11020
11021  Previous Release:
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
11024  Current Release:
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
11027
11028
110292) iASL Compiler/Disassembler and Tools:
11030
11031Fixed a fault when using -g option (get tables from registry) on Windows
11032machines.
11033
11034Fixed 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
11037Suietov)
11038- Global table revision override (-r) is ignored (BZ 413)
11039
11040----------------------------------------
1104126 May 2006. Summary of changes for version 20060526:
11042
110431) ACPI CA Core Subsystem:
11044
11045Restructured, flattened, and simplified the internal interfaces for
11046namespace object evaluation - resulting in smaller code, less CPU stack
11047use,
11048and fewer interfaces. (With assistance from Mikhail Kouzmich)
11049
11050Fixed a problem with the CopyObject operator where the first parameter
11051was
11052not typed correctly for the parser, interpreter, compiler, and
11053disassembler.
11054Caused various errors and unexpected behavior.
11055
11056Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11057produced incorrect results with some C compilers. Since the behavior of C
11058compilers when the shift value is larger than the datatype width is
11059apparently not well defined, the interpreter now detects this condition
11060and
11061simply returns zero as expected in all such cases. (BZ 395)
11062
11063Fixed 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)
11066
11067Fixed problem reports (Fiodor Suietov) integrated:
11068- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11069355)
11070- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11071356)
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
11079365)
11080- Status of the Global Initialization Handler call not used (BZ 366)
11081- Incorrect object parameter to Global Initialization Handler (BZ 367)
11082
11083Example Code and Data Size: These are the sizes for the OS-independent
11084acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11085debug version of the code includes the debug output trace mechanism and
11086has
11087a much larger code and data size.
11088
11089  Previous Release:
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
11092  Current Release:
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
11095
11096
110972) iASL Compiler/Disassembler and Tools:
11098
11099Modified the parser to allow the names IO, DMA, and IRQ to be used as
11100namespace identifiers with no collision with existing resource descriptor
11101macro names. This provides compatibility with other ASL compilers and is
11102most useful for disassembly/recompilation of existing tables without
11103parse
11104errors. (With assistance from Thomas Renninger)
11105
11106Disassembler: fixed an incorrect disassembly problem with the
11107DataTableRegion and CopyObject operators. Fixed a possible fault during
11108disassembly of some Alias operators.
11109
11110----------------------------------------
1111112 May 2006. Summary of changes for version 20060512:
11112
111131) ACPI CA Core Subsystem:
11114
11115Replaced the AcpiOsQueueForExecution interface with a new interface named
11116AcpiOsExecute. The major difference is that the new interface does not
11117have
11118a Priority parameter, this appeared to be useless and has been replaced
11119by
11120a
11121Type parameter. The Type tells the host what type of execution is being
11122requested, such as global lock handler, notify handler, GPE handler, etc.
11123This allows the host to queue and execute the request as appropriate for
11124the
11125request type, possibly using different work queues and different
11126priorities
11127for the various request types. This enables fixes for multithreading
11128deadlock problems such as BZ #5534, and will require changes to all
11129existing
11130OS interface layers. (Alexey Starikovskiy and Bob Moore)
11131
11132Fixed a possible memory leak associated with the support for the so-
11133called
11134"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11135Suietov)
11136
11137Fixed a problem with the Load() operator where a table load from an
11138operation region could overwrite an internal table buffer by up to 7
11139bytes
11140and cause alignment faults on IPF systems. (With assistance from Luming
11141Yu)
11142
11143Example Code and Data Size: These are the sizes for the OS-independent
11144acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11145debug version of the code includes the debug output trace mechanism and
11146has
11147a much larger code and data size.
11148
11149  Previous Release:
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
11152  Current Release:
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
11155
11156
11157
111582) iASL Compiler/Disassembler and Tools:
11159
11160Disassembler: Implemented support to cross reference the internal
11161namespace
11162and automatically generate ASL External() statements for symbols not
11163defined
11164within the current table being disassembled. This will simplify the
11165disassembly and recompilation of interdependent tables such as SSDTs
11166since
11167these statements will no longer have to be added manually.
11168
11169Disassembler: Implemented experimental support to automatically detect
11170invocations of external control methods and generate appropriate
11171External()
11172statements. This is problematic because the AML cannot be correctly
11173parsed
11174until the number of arguments for each control method is known.
11175Currently,
11176standalone method invocations and invocations as the source operand of a
11177Store() statement are supported.
11178
11179Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11180LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11181LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11182more readable and likely closer to the original ASL source.
11183
11184----------------------------------------
1118521 April 2006. Summary of changes for version 20060421:
11186
111871) ACPI CA Core Subsystem:
11188
11189Removed a device initialization optimization introduced in 20051216 where
11190the _STA method was not run unless an _INI was also present for the same
11191device. This optimization could cause problems because it could allow
11192_INI
11193methods to be run within a not-present device subtree. (If a not-present
11194device had no _INI, _STA would not be run, the not-present status would
11195not
11196be discovered, and the children of the device would be incorrectly
11197traversed.)
11198
11199Implemented a new _STA optimization where namespace subtrees that do not
11200contain _INI are identified and ignored during device initialization.
11201Selectively running _STA can significantly improve boot time on large
11202machines (with assistance from Len Brown.)
11203
11204Implemented support for the device initialization case where the returned
11205_STA flags indicate a device not-present but functioning. In this case,
11206_INI
11207is not run, but the device children are examined for presence, as per the
11208ACPI specification.
11209
11210Implemented an additional change to the IndexField support in order to
11211conform to MS behavior. The value written to the Index Register is not
11212simply a byte offset, it is a byte offset in units of the access width of
11213the parent Index Field. (Fiodor Suietov)
11214
11215Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11216interface is called during the creation of all AML operation regions, and
11217allows the host OS to exert control over what addresses it will allow the
11218AML code to access. Operation Regions whose addresses are disallowed will
11219cause a runtime exception when they are actually accessed (will not
11220affect
11221or abort table loading.) See oswinxf or osunixxf for an example
11222implementation.
11223
11224Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11225interface allows the host OS to match the various "optional"
11226interface/behavior strings for the _OSI predefined control method as
11227appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11228for an example implementation.
11229
11230Restructured and corrected various problems in the exception handling
11231code
11232paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11233(with assistance from Takayoshi Kochi.)
11234
11235Modified the Linux source converter to ignore quoted string literals
11236while
11237converting identifiers from mixed to lower case. This will correct
11238problems
11239with the disassembler and other areas where such strings must not be
11240modified.
11241
11242The ACPI_FUNCTION_* macros no longer require quotes around the function
11243name. This allows the Linux source converter to convert the names, now
11244that
11245the converter ignores quoted strings.
11246
11247Example Code and Data Size: These are the sizes for the OS-independent
11248acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11249debug version of the code includes the debug output trace mechanism and
11250has
11251a much larger code and data size.
11252
11253  Previous Release:
11254
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
11257  Current Release:
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
11260
11261
112622) iASL Compiler/Disassembler and Tools:
11263
11264Implemented 3 new warnings for iASL, and implemented multiple warning
11265levels
11266(w2 flag).
11267
112681) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11269not
11270WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11271check for the possible timeout, a warning is issued.
11272
112732) Useless operators: If an ASL operator does not specify an optional
11274target
11275operand and it also does not use the function return value from the
11276operator, a warning is issued since the operator effectively does
11277nothing.
11278
112793) Unreferenced objects: If a namespace object is created, but never
11280referenced, a warning is issued. This is a warning level 2 since there
11281are
11282cases where this is ok, such as when a secondary table is loaded that
11283uses
11284the unreferenced objects. Even so, care is taken to only flag objects
11285that
11286don'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
11288expected that the OS will invoke them.
11289
11290----------------------------------------
1129131 March 2006. Summary of changes for version 20060331:
11292
112931) ACPI CA Core Subsystem:
11294
11295Implemented header file support for the following additional ACPI tables:
11296ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11297support,
11298all current and known ACPI tables are now defined in the ACPICA headers
11299and
11300are available for use by device drivers and other software.
11301
11302Implemented support to allow tables that contain ACPI names with invalid
11303characters to be loaded. Previously, this would cause the table load to
11304fail, but since there are several known cases of such tables on existing
11305machines, this change was made to enable ACPI support for them. Also,
11306this
11307matches the behavior of the Microsoft ACPI implementation.
11308
11309Fixed a couple regressions introduced during the memory optimization in
11310the
1131120060317 release. The namespace node definition required additional
11312reorganization and an internal datatype that had been changed to 8-bit
11313was
11314restored to 32-bit. (Valery Podrezov)
11315
11316Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11317could be passed through to AcpiOsReleaseObject which is unexpected. Such
11318null pointers are now trapped and ignored, matching the behavior of the
11319previous implementation before the deployment of AcpiOsReleaseObject.
11320(Valery Podrezov, Fiodor Suietov)
11321
11322Fixed a memory mapping leak during the deletion of a SystemMemory
11323operation
11324region where a cached memory mapping was not deleted. This became a
11325noticeable problem for operation regions that are defined within
11326frequently
11327used control methods. (Dana Meyers)
11328
11329Reorganized the ACPI table header files into two main files: one for the
11330ACPI tables consumed by the ACPICA core, and another for the
11331miscellaneous
11332ACPI tables that are consumed by the drivers and other software. The
11333various
11334FADT definitions were merged into one common section and three different
11335tables (ACPI 1.0, 1.0+, and 2.0)
11336
11337Example Code and Data Size: These are the sizes for the OS-independent
11338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11339debug version of the code includes the debug output trace mechanism and
11340has
11341a much larger code and data size.
11342
11343  Previous Release:
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
11346  Current Release:
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
11349
11350
113512) iASL Compiler/Disassembler and Tools:
11352
11353Disassembler: Implemented support to decode and format all non-AML ACPI
11354tables (tables other than DSDTs and SSDTs.) This includes the new tables
11355added to the ACPICA headers, therefore all current and known ACPI tables
11356are
11357supported.
11358
11359Disassembler: The change to allow ACPI names with invalid characters also
11360enables the disassembly of such tables. Invalid characters within names
11361are
11362changed to '*' to make the name printable; the iASL compiler will still
11363generate an error for such names, however, since this is an invalid ACPI
11364character.
11365
11366Implemented an option for AcpiXtract (-a) to extract all tables found in
11367the
11368input file. The default invocation extracts only the DSDTs and SSDTs.
11369
11370Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11371makefile for the AcpiXtract utility.
11372
11373----------------------------------------
1137417 March 2006. Summary of changes for version 20060317:
11375
113761) ACPI CA Core Subsystem:
11377
11378Implemented the use of a cache object for all internal namespace nodes.
11379Since there are about 1000 static nodes in a typical system, this will
11380decrease memory use for cache implementations that minimize per-
11381allocation
11382overhead (such as a slab allocator.)
11383
11384Removed the reference count mechanism for internal namespace nodes, since
11385it
11386was deemed unnecessary. This reduces the size of each namespace node by
11387about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11388case,
11389and 32 bytes for the 64-bit case.
11390
11391Optimized several internal data structures to reduce object size on 64-
11392bit
11393platforms by packing data within the 64-bit alignment. This includes the
11394frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11395instances corresponding to the namespace objects.
11396
11397Added two new strings for the predefined _OSI method: "Windows 2001.1
11398SP1"
11399and "Windows 2006".
11400
11401Split the allocation tracking mechanism out to a separate file, from
11402utalloc.c to uttrack.c. This mechanism appears to be only useful for
11403application-level code. Kernels may wish to not include uttrack.c in
11404distributions.
11405
11406Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11407associated
11408code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11409macros.)
11410
11411Code and Data Size: These are the sizes for the acpica.lib produced by
11412the
11413Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11414ACPI
11415driver or OSPM code. The debug version of the code includes the debug
11416output
11417trace mechanism and has a much larger code and data size. Note that these
11418values will vary depending on the efficiency of the compiler and the
11419compiler options used during generation.
11420
11421  Previous Release:
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
11424  Current Release:
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
11427
11428
114292) iASL Compiler/Disassembler and Tools:
11430
11431Implemented an ANSI C version of the acpixtract utility. This version
11432will
11433automatically extract the DSDT and all SSDTs from the input acpidump text
11434file and dump the binary output to separate files. It can also display a
11435summary of the input file including the headers for each table found and
11436will extract any single ACPI table, with any signature. (See
11437source/tools/acpixtract)
11438
11439----------------------------------------
1144010 March 2006. Summary of changes for version 20060310:
11441
114421) ACPI CA Core Subsystem:
11443
11444Tagged all external interfaces to the subsystem with the new
11445ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11446assist
11447kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11448macro. The default definition is NULL.
11449
11450Added the ACPI_THREAD_ID type for the return value from
11451AcpiOsGetThreadId.
11452This allows the host to define this as necessary to simplify kernel
11453integration. The default definition is ACPI_NATIVE_UINT.
11454
11455Fixed two interpreter problems related to error processing, the deletion
11456of
11457objects, and placing invalid pointers onto the internal operator result
11458stack. BZ 6028, 6151 (Valery Podrezov)
11459
11460Increased the reference count threshold where a warning is emitted for
11461large
11462reference counts in order to eliminate unnecessary warnings on systems
11463with
11464large namespaces (especially 64-bit.) Increased the value from 0x400 to
114650x800.
11466
11467Due to universal disagreement as to the meaning of the 'c' in the
11468calloc()
11469function, the ACPI_MEM_CALLOCATE macro has been renamed to
11470ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11471ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11472ACPI_FREE.
11473
11474Code and Data Size: These are the sizes for the acpica.lib produced by
11475the
11476Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11477ACPI
11478driver or OSPM code. The debug version of the code includes the debug
11479output
11480trace mechanism and has a much larger code and data size. Note that these
11481values will vary depending on the efficiency of the compiler and the
11482compiler options used during generation.
11483
11484  Previous Release:
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
11487  Current Release:
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
11490
11491
114922) iASL Compiler/Disassembler:
11493
11494Disassembler: implemented support for symbolic resource descriptor
11495references. If a CreateXxxxField operator references a fixed offset
11496within
11497a
11498resource descriptor, a name is assigned to the descriptor and the offset
11499is
11500translated to the appropriate resource tag and pathname. The addition of
11501this support brings the disassembled code very close to the original ASL
11502source code and helps eliminate run-time errors when the disassembled
11503code
11504is modified (and recompiled) in such a way as to invalidate the original
11505fixed offsets.
11506
11507Implemented support for a Descriptor Name as the last parameter to the
11508ASL
11509Register() macro. This parameter was inadvertently left out of the ACPI
11510specification, and will be added for ACPI 3.0b.
11511
11512Fixed 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")
11514
11515Fixed a problem with the error message that occurs when an invalid string
11516is
11517used for a _HID object (such as one with an embedded asterisk:
11518"*PNP010A".)
11519The correct message is now displayed.
11520
11521----------------------------------------
1152217 February 2006. Summary of changes for version 20060217:
11523
115241) ACPI CA Core Subsystem:
11525
11526Implemented a change to the IndexField support to match the behavior of
11527the
11528Microsoft AML interpreter. The value written to the Index register is now
11529a
11530byte offset, no longer an index based upon the width of the Data
11531register.
11532This should fix IndexField problems seen on some machines where the Data
11533register is not exactly one byte wide. The ACPI specification will be
11534clarified on this point.
11535
11536Fixed a problem where several resource descriptor types could overrun the
11537internal descriptor buffer due to size miscalculation: VendorShort,
11538VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11539affect all platforms.
11540
11541Fixed a problem where individual resource descriptors were misaligned
11542within
11543the internal buffer, causing alignment faults on IA64 platforms.
11544
11545Code and Data Size: These are the sizes for the acpica.lib produced by
11546the
11547Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11548ACPI
11549driver or OSPM code. The debug version of the code includes the debug
11550output
11551trace mechanism and has a much larger code and data size. Note that these
11552values will vary depending on the efficiency of the compiler and the
11553compiler options used during generation.
11554
11555  Previous Release:
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
11558  Current Release:
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
11561
11562
115632) iASL Compiler/Disassembler:
11564
11565Implemented support for new reserved names: _WDG and _WED are Microsoft
11566extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11567defined method (Throttling Depth Limit.)
11568
11569Fixed a problem where a zero-length VendorShort or VendorLong resource
11570descriptor was incorrectly emitted as a descriptor of length one.
11571
11572----------------------------------------
1157310 February 2006. Summary of changes for version 20060210:
11574
115751) ACPI CA Core Subsystem:
11576
11577Removed a couple of extraneous ACPI_ERROR messages that appeared during
11578normal execution. These became apparent after the conversion from
11579ACPI_DEBUG_PRINT.
11580
11581Fixed a problem where the CreateField operator could hang if the BitIndex
11582or
11583NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11584
11585Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11586failed with an exception. This also fixes a couple of related RefOf and
11587DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11588
11589Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11590of
11591AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11592BZ
115935480)
11594
11595Implemented a memory cleanup at the end of the execution of each
11596iteration
11597of an AML While() loop, preventing the accumulation of outstanding
11598objects.
11599(Valery Podrezov, BZ 5427)
11600
11601Eliminated a chunk of duplicate code in the object resolution code.
11602(Valery
11603Podrezov, BZ 5336)
11604
11605Fixed several warnings during the 64-bit code generation.
11606
11607The AcpiSrc source code conversion tool now inserts one line of
11608whitespace
11609after an if() statement that is followed immediately by a comment,
11610improving
11611readability of the Linux code.
11612
11613Code and Data Size: The current and previous library sizes for the core
11614subsystem are shown below. These are the code and data sizes for the
11615acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11616These
11617values do not include any ACPI driver or OSPM code. The debug version of
11618the
11619code includes the debug output trace mechanism and has a much larger code
11620and data size. Note that these values will vary depending on the
11621efficiency
11622of the compiler and the compiler options used during generation.
11623
11624  Previous Release:
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
11627  Current Release:
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
11630
11631
116322) iASL Compiler/Disassembler:
11633
11634Fixed a problem with the disassembly of a BankField operator with a
11635complex
11636expression for the BankValue parameter.
11637
11638----------------------------------------
1163927 January 2006. Summary of changes for version 20060127:
11640
116411) ACPI CA Core Subsystem:
11642
11643Implemented support in the Resource Manager to allow unresolved
11644namestring
11645references within resource package objects for the _PRT method. This
11646support
11647is in addition to the previously implemented unresolved reference support
11648within the AML parser. If the interpreter slack mode is enabled, these
11649unresolved references will be passed through to the caller as a NULL
11650package
11651entry.
11652
11653Implemented and deployed new macros and functions for error and warning
11654messages across the subsystem. These macros are simpler and generate less
11655code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11656ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11657macros remain defined to allow ACPI drivers time to migrate to the new
11658macros.
11659
11660Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11661the
11662Acquire/Release Lock OSL interfaces.
11663
11664Fixed a problem where Alias ASL operators are sometimes not correctly
11665resolved, in both the interpreter and the iASL compiler.
11666
11667Fixed several problems with the implementation of the
11668ConcatenateResTemplate
11669ASL operator. As per the ACPI specification, zero length buffers are now
11670treated as a single EndTag. One-length buffers always cause a fatal
11671exception. Non-zero length buffers that do not end with a full 2-byte
11672EndTag
11673cause a fatal exception.
11674
11675Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11676interface. (With assistance from Thomas Renninger)
11677
11678Code and Data Size: The current and previous library sizes for the core
11679subsystem are shown below. These are the code and data sizes for the
11680acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11681These
11682values do not include any ACPI driver or OSPM code. The debug version of
11683the
11684code includes the debug output trace mechanism and has a much larger code
11685and data size. Note that these values will vary depending on the
11686efficiency
11687of the compiler and the compiler options used during generation.
11688
11689  Previous Release:
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
11692  Current Release:
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
11695
11696
116972) iASL Compiler/Disassembler:
11698
11699Fixed an internal error that was generated for any forward references to
11700ASL
11701Alias objects.
11702
11703----------------------------------------
1170413 January 2006. Summary of changes for version 20060113:
11705
117061) ACPI CA Core Subsystem:
11707
11708Added 2006 copyright to all module headers and signons. This affects
11709virtually every file in the ACPICA core subsystem, iASL compiler, and the
11710utilities.
11711
11712Enhanced the ACPICA error reporting in order to simplify user migration
11713to
11714the non-debug version of ACPICA. Replaced all instances of the
11715ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11716debug
11717levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11718respectively. This preserves all error and warning messages in the non-
11719debug
11720version of the ACPICA code (this has been referred to as the "debug lite"
11721option.) Over 200 cases were converted to create a total of over 380
11722error/warning messages across the ACPICA code. This increases the code
11723and
11724data size of the default non-debug version of the code somewhat (about
1172513K),
11726but all error/warning reporting may be disabled if desired (and code
11727eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11728configuration option. The size of the debug version of ACPICA remains
11729about
11730the same.
11731
11732Fixed a memory leak within the AML Debugger "Set" command. One object was
11733not properly deleted for every successful invocation of the command.
11734
11735Code and Data Size: The current and previous library sizes for the core
11736subsystem are shown below. These are the code and data sizes for the
11737acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11738These
11739values do not include any ACPI driver or OSPM code. The debug version of
11740the
11741code includes the debug output trace mechanism and has a much larger code
11742and data size. Note that these values will vary depending on the
11743efficiency
11744of the compiler and the compiler options used during generation.
11745
11746  Previous Release:
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
11749  Current Release:
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
11752
11753
117542) iASL Compiler/Disassembler:
11755
11756The compiler now officially supports the ACPI 3.0a specification that was
11757released on December 30, 2005. (Specification is available at
11758www.acpi.info)
11759
11760----------------------------------------
1176116 December 2005. Summary of changes for version 20051216:
11762
117631) ACPI CA Core Subsystem:
11764
11765Implemented optional support to allow unresolved names within ASL Package
11766objects. A null object is inserted in the package when a named reference
11767cannot be located in the current namespace. Enabled via the interpreter
11768slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
11769machines
11770that contain such code.
11771
11772Implemented an optimization to the initialization sequence that can
11773improve
11774boot time. During ACPI device initialization, the _STA method is now run
11775if
11776and only if the _INI method exists. The _STA method is used to determine
11777if
11778the device is present; An _INI can only be run if _STA returns present,
11779but
11780it is a waste of time to run the _STA method if the _INI does not exist.
11781(Prototype and assistance from Dong Wei)
11782
11783Implemented use of the C99 uintptr_t for the pointer casting macros if it
11784is
11785available in the current compiler. Otherwise, the default (void *) cast
11786is
11787used as before.
11788
11789Fixed some possible memory leaks found within the execution path of the
11790Break, Continue, If, and CreateField operators. (Valery Podrezov)
11791
11792Fixed a problem introduced in the 20051202 release where an exception is
11793generated during method execution if a control method attempts to declare
11794another method.
11795
11796Moved resource descriptor string constants that are used by both the AML
11797disassembler and AML debugger to the common utilities directory so that
11798these components are independent.
11799
11800Implemented support in the AcpiExec utility (-e switch) to globally
11801ignore
11802exceptions during control method execution (method is not aborted.)
11803
11804Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
11805generation.
11806
11807Code and Data Size: The current and previous library sizes for the core
11808subsystem are shown below. These are the code and data sizes for the
11809acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11810These
11811values do not include any ACPI driver or OSPM code. The debug version of
11812the
11813code includes the debug output trace mechanism and has a much larger code
11814and data size. Note that these values will vary depending on the
11815efficiency
11816of the compiler and the compiler options used during generation.
11817
11818  Previous Release:
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
11821  Current Release:
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
11824
11825
118262) iASL Compiler/Disassembler:
11827
11828Fixed a problem where a CPU stack overflow fault could occur if a
11829recursive
11830method call was made from within a Return statement.
11831
11832----------------------------------------
1183302 December 2005. Summary of changes for version 20051202:
11834
118351) ACPI CA Core Subsystem:
11836
11837Modified the parsing of control methods to no longer create namespace
11838objects during the first pass of the parse. Objects are now created only
11839during the execute phase, at the moment the namespace creation operator
11840is
11841encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
11842This
11843should eliminate ALREADY_EXISTS exceptions seen on some machines where
11844reentrant control methods are protected by an AML mutex. The mutex will
11845now
11846correctly block multiple threads from attempting to create the same
11847object
11848more than once.
11849
11850Increased the number of available Owner Ids for namespace object tracking
11851from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
11852on
11853some machines with a large number of ACPI tables (either static or
11854dynamic).
11855
11856Fixed a problem with the AcpiExec utility where a fault could occur when
11857the
11858-b switch (batch mode) is used.
11859
11860Enhanced the namespace dump routine to output the owner ID for each
11861namespace object.
11862
11863Code and Data Size: The current and previous library sizes for the core
11864subsystem are shown below. These are the code and data sizes for the
11865acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11866These
11867values do not include any ACPI driver or OSPM code. The debug version of
11868the
11869code includes the debug output trace mechanism and has a much larger code
11870and data size. Note that these values will vary depending on the
11871efficiency
11872of the compiler and the compiler options used during generation.
11873
11874  Previous Release:
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
11877  Current Release:
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
11880
11881
118822) iASL Compiler/Disassembler:
11883
11884Fixed a parse error during compilation of certain Switch/Case constructs.
11885To
11886simplify the parse, the grammar now allows for multiple Default
11887statements
11888and this error is now detected and flagged during the analysis phase.
11889
11890Disassembler: The disassembly now includes the contents of the original
11891table header within a comment at the start of the file. This includes the
11892name and version of the original ASL compiler.
11893
11894----------------------------------------
1189517 November 2005. Summary of changes for version 20051117:
11896
118971) ACPI CA Core Subsystem:
11898
11899Fixed a problem in the AML parser where the method thread count could be
11900decremented below zero if any errors occurred during the method parse
11901phase.
11902This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
11903machines.
11904This also fixed a related regression with the mechanism that detects and
11905corrects methods that cannot properly handle reentrancy (related to the
11906deployment of the new OwnerId mechanism.)
11907
11908Eliminated the pre-parsing of control methods (to detect errors) during
11909table load. Related to the problem above, this was causing unwind issues
11910if
11911any errors occurred during the parse, and it seemed to be overkill. A
11912table
11913load should not be aborted if there are problems with any single control
11914method, thus rendering this feature rather pointless.
11915
11916Fixed a problem with the new table-driven resource manager where an
11917internal
11918buffer overflow could occur for small resource templates.
11919
11920Implemented a new external interface, AcpiGetVendorResource. This
11921interface
11922will find and return a vendor-defined resource descriptor within a _CRS
11923or
11924_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
11925Helgaas.
11926
11927Removed the length limit (200) on string objects as per the upcoming ACPI
119283.0A specification. This affects the following areas of the interpreter:
119291)
11930any implicit conversion of a Buffer to a String, 2) a String object
11931result
11932of the ASL Concatenate operator, 3) the String object result of the ASL
11933ToString operator.
11934
11935Fixed a problem in the Windows OS interface layer (OSL) where a
11936WAIT_FOREVER
11937on a semaphore object would incorrectly timeout. This allows the
11938multithreading features of the AcpiExec utility to work properly under
11939Windows.
11940
11941Updated the Linux makefiles for the iASL compiler and AcpiExec to include
11942the recently added file named "utresrc.c".
11943
11944Code and Data Size: The current and previous library sizes for the core
11945subsystem are shown below. These are the code and data sizes for the
11946acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11947These
11948values do not include any ACPI driver or OSPM code. The debug version of
11949the
11950code includes the debug output trace mechanism and has a much larger code
11951and data size. Note that these values will vary depending on the
11952efficiency
11953of the compiler and the compiler options used during generation.
11954
11955  Previous Release:
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
11958  Current Release:
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
11961
11962
119632) iASL Compiler/Disassembler:
11964
11965Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
11966specification. For the iASL compiler, this means that string literals
11967within
11968the source ASL can be of any length.
11969
11970Enhanced the listing output to dump the AML code for resource descriptors
11971immediately after the ASL code for each descriptor, instead of in a block
11972at
11973the end of the entire resource template.
11974
11975Enhanced the compiler debug output to dump the entire original parse tree
11976constructed during the parse phase, before any transforms are applied to
11977the
11978tree. The transformed tree is dumped also.
11979
11980----------------------------------------
1198102 November 2005. Summary of changes for version 20051102:
11982
119831) ACPI CA Core Subsystem:
11984
11985Modified the subsystem initialization sequence to improve GPE support.
11986The
11987GPE initialization has been split into two parts in order to defer
11988execution
11989of the _PRW methods (Power Resources for Wake) until after the hardware
11990is
11991fully initialized and the SCI handler is installed. This allows the _PRW
11992methods to access fields protected by the Global Lock. This will fix
11993systems
11994where a NO_GLOBAL_LOCK exception has been seen during initialization.
11995
11996Converted the ACPI internal object disassemble and display code within
11997the
11998AML debugger to fully table-driven operation, reducing code size and
11999increasing maintainability.
12000
12001Fixed a regression with the ConcatenateResTemplate() ASL operator
12002introduced
12003in the 20051021 release.
12004
12005Implemented support for "local" internal ACPI object types within the
12006debugger "Object" command and the AcpiWalkNamespace external interfaces.
12007These local types include RegionFields, BankFields, IndexFields, Alias,
12008and
12009reference objects.
12010
12011Moved common AML resource handling code into a new file, "utresrc.c".
12012This
12013code is shared by both the Resource Manager and the AML Debugger.
12014
12015Code and Data Size: The current and previous library sizes for the core
12016subsystem are shown below. These are the code and data sizes for the
12017acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12018These
12019values do not include any ACPI driver or OSPM code. The debug version of
12020the
12021code includes the debug output trace mechanism and has a much larger code
12022and data size. Note that these values will vary depending on the
12023efficiency
12024of the compiler and the compiler options used during generation.
12025
12026  Previous Release:
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
12029  Current Release:
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
12032
12033
120342) iASL Compiler/Disassembler:
12035
12036Fixed a problem with very large initializer lists (more than 4000
12037elements)
12038for both Buffer and Package objects where the parse stack could overflow.
12039
12040Enhanced the pre-compile source code scan for non-ASCII characters to
12041ignore
12042characters within comment fields. The scan is now always performed and is
12043no
12044longer optional, detecting invalid characters within a source file
12045immediately rather than during the parse phase or later.
12046
12047Enhanced the ASL grammar definition to force early reductions on all
12048list-
12049style grammar elements so that the overall parse stack usage is greatly
12050reduced. This should improve performance and reduce the possibility of
12051parse
12052stack overflow.
12053
12054Eliminated all reduce/reduce conflicts in the iASL parser generation.
12055Also,
12056with the addition of a %expected statement, the compiler generates from
12057source with no warnings.
12058
12059Fixed a possible segment fault in the disassembler if the input filename
12060does not contain a "dot" extension (Thomas Renninger).
12061
12062----------------------------------------
1206321 October 2005. Summary of changes for version 20051021:
12064
120651) ACPI CA Core Subsystem:
12066
12067Implemented support for the EM64T and other x86-64 processors. This
12068essentially entails recognizing that these processors support non-aligned
12069memory transfers. Previously, all 64-bit processors were assumed to lack
12070hardware support for non-aligned transfers.
12071
12072Completed conversion of the Resource Manager to nearly full table-driven
12073operation. Specifically, the resource conversion code (convert AML to
12074internal format and the reverse) and the debug code to dump internal
12075resource descriptors are fully table-driven, reducing code and data size
12076and
12077improving maintainability.
12078
12079The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12080word
12081on 64-bit processors instead of a fixed 32-bit word. (With assistance
12082from
12083Alexey Starikovskiy)
12084
12085Implemented support within the resource conversion code for the Type-
12086Specific byte within the various ACPI 3.0 *WordSpace macros.
12087
12088Fixed some issues within the resource conversion code for the type-
12089specific
12090flags for both Memory and I/O address resource descriptors. For Memory,
12091implemented support for the MTP and TTP flags. For I/O, split the TRS and
12092TTP flags into two separate fields.
12093
12094Code and Data Size: The current and previous library sizes for the core
12095subsystem are shown below. These are the code and data sizes for the
12096acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12097These
12098values do not include any ACPI driver or OSPM code. The debug version of
12099the
12100code includes the debug output trace mechanism and has a much larger code
12101and data size. Note that these values will vary depending on the
12102efficiency
12103of the compiler and the compiler options used during generation.
12104
12105  Previous Release:
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
12108  Current Release:
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
12111
12112
12113
121142) iASL Compiler/Disassembler:
12115
12116Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12117the
12118corresponding ResourceSource string was not also present in a resource
12119descriptor declaration. This restriction caused problems with existing
12120AML/ASL code that includes the Index byte without the string. When such
12121AML
12122was disassembled, it could not be compiled without modification. Further,
12123the modified code created a resource template with a different size than
12124the
12125original, breaking code that used fixed offsets into the resource
12126template
12127buffer.
12128
12129Removed a recent feature of the disassembler to ignore a lone
12130ResourceIndex
12131byte. This byte is now emitted if present so that the exact AML can be
12132reproduced when the disassembled code is recompiled.
12133
12134Improved comments and text alignment for the resource descriptor code
12135emitted by the disassembler.
12136
12137Implemented disassembler support for the ACPI 3.0 AccessSize field within
12138a
12139Register() resource descriptor.
12140
12141----------------------------------------
1214230 September 2005. Summary of changes for version 20050930:
12143
121441) ACPI CA Core Subsystem:
12145
12146Completed a major overhaul of the Resource Manager code - specifically,
12147optimizations in the area of the AML/internal resource conversion code.
12148The
12149code has been optimized to simplify and eliminate duplicated code, CPU
12150stack
12151use has been decreased by optimizing function parameters and local
12152variables, and naming conventions across the manager have been
12153standardized
12154for clarity and ease of maintenance (this includes function, parameter,
12155variable, and struct/typedef names.) The update may force changes in some
12156driver code, depending on how resources are handled by the host OS.
12157
12158All Resource Manager dispatch and information tables have been moved to a
12159single location for clarity and ease of maintenance. One new file was
12160created, named "rsinfo.c".
12161
12162The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12163guarantee that the argument is not evaluated twice, making them less
12164prone
12165to macro side-effects. However, since there exists the possibility of
12166additional stack use if a particular compiler cannot optimize them (such
12167as
12168in the debug generation case), the original macros are optionally
12169available.
12170Note that some invocations of the return_VALUE macro may now cause size
12171mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12172to
12173eliminate these. (From Randy Dunlap)
12174
12175Implemented a new mechanism to enable debug tracing for individual
12176control
12177methods. A new external interface, AcpiDebugTrace, is provided to enable
12178this mechanism. The intent is to allow the host OS to easily enable and
12179disable tracing for problematic control methods. This interface can be
12180easily exposed to a user or debugger interface if desired. See the file
12181psxface.c for details.
12182
12183AcpiUtCallocate will now return a valid pointer if a length of zero is
12184specified - a length of one is used and a warning is issued. This matches
12185the behavior of AcpiUtAllocate.
12186
12187Code and Data Size: The current and previous library sizes for the core
12188subsystem are shown below. These are the code and data sizes for the
12189acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12190These
12191values do not include any ACPI driver or OSPM code. The debug version of
12192the
12193code includes the debug output trace mechanism and has a much larger code
12194and data size. Note that these values will vary depending on the
12195efficiency
12196of the compiler and the compiler options used during generation.
12197
12198  Previous Release:
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
12201  Current Release:
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
12204
12205
122062) iASL Compiler/Disassembler:
12207
12208A remark is issued if the effective compile-time length of a package or
12209buffer is zero. Previously, this was a warning.
12210
12211----------------------------------------
1221216 September 2005. Summary of changes for version 20050916:
12213
122141) ACPI CA Core Subsystem:
12215
12216Fixed a problem within the Resource Manager where support for the Generic
12217Register descriptor was not fully implemented. This descriptor is now
12218fully
12219recognized, parsed, disassembled, and displayed.
12220
12221Completely restructured the Resource Manager code to utilize table-driven
12222dispatch and lookup, eliminating many of the large switch() statements.
12223This
12224reduces overall subsystem code size and code complexity. Affects the
12225resource parsing and construction, disassembly, and debug dump output.
12226
12227Cleaned up and restructured the debug dump output for all resource
12228descriptors. Improved readability of the output and reduced code size.
12229
12230Fixed a problem where changes to internal data structures caused the
12231optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12232
12233Code and Data Size: The current and previous library sizes for the core
12234subsystem are shown below. These are the code and data sizes for the
12235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12236These
12237values do not include any ACPI driver or OSPM code. The debug version of
12238the
12239code includes the debug output trace mechanism and has a much larger code
12240and data size. Note that these values will vary depending on the
12241efficiency
12242of the compiler and the compiler options used during generation.
12243
12244  Previous Release:
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
12247  Current Release:
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
12250
12251
122522) iASL Compiler/Disassembler:
12253
12254Updated the disassembler to automatically insert an EndDependentFn()
12255macro
12256into the ASL stream if this macro is missing in the original AML code,
12257simplifying compilation of the resulting ASL module.
12258
12259Fixed a problem in the disassembler where a disassembled ResourceSource
12260string (within a large resource descriptor) was not surrounded by quotes
12261and
12262not followed by a comma, causing errors when the resulting ASL module was
12263compiled. Also, escape sequences within a ResourceSource string are now
12264handled correctly (especially "\\")
12265
12266----------------------------------------
1226702 September 2005. Summary of changes for version 20050902:
12268
122691) ACPI CA Core Subsystem:
12270
12271Fixed a problem with the internal Owner ID allocation and deallocation
12272mechanisms for control method execution and recursive method invocation.
12273This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12274messages seen on some systems. Recursive method invocation depth is
12275currently limited to 255. (Alexey Starikovskiy)
12276
12277Completely eliminated all vestiges of support for the "module-level
12278executable code" until this support is fully implemented and debugged.
12279This
12280should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12281some systems that invoke this support.
12282
12283Fixed a problem within the resource manager code where the transaction
12284flags
12285for a 64-bit address descriptor were handled incorrectly in the type-
12286specific flag byte.
12287
12288Consolidated duplicate code within the address descriptor resource
12289manager
12290code, reducing overall subsystem code size.
12291
12292Fixed a fault when using the AML debugger "disassemble" command to
12293disassemble individual control methods.
12294
12295Removed references to the "release_current" directory within the Unix
12296release package.
12297
12298Code and Data Size: The current and previous core subsystem library sizes
12299are shown below. These are the code and data sizes for the acpica.lib
12300produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12301include any ACPI driver or OSPM code. The debug version of the code
12302includes
12303the debug output trace mechanism and has a much larger code and data
12304size.
12305Note that these values will vary depending on the efficiency of the
12306compiler
12307and the compiler options used during generation.
12308
12309  Previous Release:
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
12312  Current Release:
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
12315
12316
123172) iASL Compiler/Disassembler:
12318
12319Implemented an error check for illegal duplicate values in the interrupt
12320and
12321dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12322Interrupt().
12323
12324Implemented error checking for the Irq() and IrqNoFlags() macros to
12325detect
12326too many values in the interrupt list (16 max) and invalid values in the
12327list (range 0 - 15)
12328
12329The maximum length string literal within an ASL file is now restricted to
12330200 characters as per the ACPI specification.
12331
12332Fixed a fault when using the -ln option (generate namespace listing).
12333
12334Implemented an error check to determine if a DescriptorName within a
12335resource descriptor has already been used within the current scope.
12336
12337----------------------------------------
1233815 August 2005.  Summary of changes for version 20050815:
12339
123401) ACPI CA Core Subsystem:
12341
12342Implemented a full bytewise compare to determine if a table load request
12343is
12344attempting to load a duplicate table. The compare is performed if the
12345table
12346signatures and table lengths match. This will allow different tables with
12347the same OEM Table ID and revision to be loaded - probably against the
12348ACPI
12349specification, but discovered in the field nonetheless.
12350
12351Added the changes.txt logfile to each of the zipped release packages.
12352
12353Code and Data Size: Current and previous core subsystem library sizes are
12354shown below. These are the code and data sizes for the acpica.lib
12355produced
12356by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12357any ACPI driver or OSPM code. The debug version of the code includes the
12358debug output trace mechanism and has a much larger code and data size.
12359Note
12360that these values will vary depending on the efficiency of the compiler
12361and
12362the compiler options used during generation.
12363
12364  Previous Release:
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
12367  Current Release:
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
12370
12371
123722) iASL Compiler/Disassembler:
12373
12374Fixed a problem where incorrect AML code could be generated for Package
12375objects if optimization is disabled (via the -oa switch).
12376
12377Fixed a problem with where incorrect AML code is generated for variable-
12378length packages when the package length is not specified and the number
12379of
12380initializer values is greater than 255.
12381
12382
12383----------------------------------------
1238429 July 2005.  Summary of changes for version 20050729:
12385
123861) ACPI CA Core Subsystem:
12387
12388Implemented support to ignore an attempt to install/load a particular
12389ACPI
12390table more than once. Apparently there exists BIOS code that repeatedly
12391attempts to load the same SSDT upon certain events. With assistance from
12392Venkatesh Pallipadi.
12393
12394Restructured the main interface to the AML parser in order to correctly
12395handle all exceptional conditions. This will prevent leakage of the
12396OwnerId
12397resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12398some
12399machines. With assistance from Alexey Starikovskiy.
12400
12401Support for "module level code" has been disabled in this version due to
12402a
12403number of issues that have appeared on various machines. The support can
12404be
12405enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12406compilation. When the issues are fully resolved, the code will be enabled
12407by
12408default again.
12409
12410Modified the internal functions for debug print support to define the
12411FunctionName parameter as a (const char *) for compatibility with
12412compiler
12413built-in macros such as __FUNCTION__, etc.
12414
12415Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12416
12417Implemented support to display an object count summary for the AML
12418Debugger
12419commands Object and Methods.
12420
12421Code and Data Size: Current and previous core subsystem library sizes are
12422shown below. These are the code and data sizes for the acpica.lib
12423produced
12424by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12425any ACPI driver or OSPM code. The debug version of the code includes the
12426debug output trace mechanism and has a much larger code and data size.
12427Note
12428that these values will vary depending on the efficiency of the compiler
12429and
12430the compiler options used during generation.
12431
12432  Previous Release:
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
12435  Current Release:
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
12438
12439
124402) iASL Compiler/Disassembler:
12441
12442Fixed a regression that appeared in the 20050708 version of the compiler
12443where an error message was inadvertently emitted for invocations of the
12444_OSI
12445reserved control method.
12446
12447----------------------------------------
1244808 July 2005.  Summary of changes for version 20050708:
12449
124501) ACPI CA Core Subsystem:
12451
12452The use of the CPU stack in the debug version of the subsystem has been
12453considerably reduced. Previously, a debug structure was declared in every
12454function that used the debug macros. This structure has been removed in
12455favor of declaring the individual elements as parameters to the debug
12456functions. This reduces the cumulative stack use during nested execution
12457of
12458ACPI function calls at the cost of a small increase in the code size of
12459the
12460debug version of the subsystem. With assistance from Alexey Starikovskiy
12461and
12462Len Brown.
12463
12464Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12465headers to define a macro that will return the current function name at
12466runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12467by
12468the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12469compiler-dependent header, the function name is saved on the CPU stack
12470(one
12471pointer per function.) This mechanism is used because apparently there
12472exists no standard ANSI-C defined macro that that returns the function
12473name.
12474
12475Redesigned and reimplemented the "Owner ID" mechanism used to track
12476namespace objects created/deleted by ACPI tables and control method
12477execution. A bitmap is now used to allocate and free the IDs, thus
12478solving
12479the wraparound problem present in the previous implementation. The size
12480of
12481the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12482Starikovskiy).
12483
12484Removed the UINT32_BIT and UINT16_BIT types that were used for the
12485bitfield
12486flag definitions within the headers for the predefined ACPI tables. These
12487have been replaced by UINT8_BIT in order to increase the code portability
12488of
12489the subsystem. If the use of UINT8 remains a problem, we may be forced to
12490eliminate bitfields entirely because of a lack of portability.
12491
12492Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12493This
12494is a frequently used function and this improvement increases the
12495performance
12496of the entire subsystem (Alexey Starikovskiy).
12497
12498Fixed several possible memory leaks and the inverse - premature object
12499deletion (Alexey Starikovskiy).
12500
12501Code and Data Size: Current and previous core subsystem library sizes are
12502shown below. These are the code and data sizes for the acpica.lib
12503produced
12504by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12505any ACPI driver or OSPM code. The debug version of the code includes the
12506debug output trace mechanism and has a much larger code and data size.
12507Note
12508that these values will vary depending on the efficiency of the compiler
12509and
12510the compiler options used during generation.
12511
12512  Previous Release:
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
12515  Current Release:
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
12518
12519----------------------------------------
1252024 June 2005.  Summary of changes for version 20050624:
12521
125221) ACPI CA Core Subsystem:
12523
12524Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12525the host-defined cache object. This allows the OSL implementation to
12526define
12527and type this object in any manner desired, simplifying the OSL
12528implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12529Linux, and should be defined in the OS-specific header file for other
12530operating systems as required.
12531
12532Changed the interface to AcpiOsAcquireObject to directly return the
12533requested object as the function return (instead of ACPI_STATUS.) This
12534change was made for performance reasons, since this is the purpose of the
12535interface in the first place. AcpiOsAcquireObject is now similar to the
12536AcpiOsAllocate interface.
12537
12538Implemented a new AML debugger command named Businfo. This command
12539displays
12540information about all devices that have an associate _PRT object. The
12541_ADR,
12542_HID, _UID, and _CID are displayed for these devices.
12543
12544Modified the initialization sequence in AcpiInitializeSubsystem to call
12545the
12546OSL interface AcpiOslInitialize first, before any local initialization.
12547This
12548change was required because the global initialization now calls OSL
12549interfaces.
12550
12551Enhanced the Dump command to display the entire contents of Package
12552objects
12553(including all sub-objects and their values.)
12554
12555Restructured the code base to split some files because of size and/or
12556because the code logically belonged in a separate file. New files are
12557listed
12558below. All makefiles and project files included in the ACPI CA release
12559have
12560been updated.
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 */
12565
12566Code and Data Size: Current and previous core subsystem library sizes are
12567shown below. These are the code and data sizes for the acpica.lib
12568produced
12569by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12570any ACPI driver or OSPM code. The debug version of the code includes the
12571debug output trace mechanism and has a much larger code and data size.
12572Note
12573that these values will vary depending on the efficiency of the compiler
12574and
12575the compiler options used during generation.
12576
12577  Previous Release:
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
12580  Current Release:
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
12583
12584
125852) iASL Compiler/Disassembler:
12586
12587Fixed a regression introduced in version 20050513 where the use of a
12588Package
12589object within a Case() statement caused a compile time exception. The
12590original behavior has been restored (a Match() operator is emitted.)
12591
12592----------------------------------------
1259317 June 2005.  Summary of changes for version 20050617:
12594
125951) ACPI CA Core Subsystem:
12596
12597Moved the object cache operations into the OS interface layer (OSL) to
12598allow
12599the host OS to handle these operations if desired (for example, the Linux
12600OSL will invoke the slab allocator). This support is optional; the
12601compile
12602time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12603cache
12604code in the ACPI CA core. The new OSL interfaces are shown below. See
12605utalloc.c for an example implementation, and acpiosxf.h for the exact
12606interface definitions. With assistance from Alexey Starikovskiy.
12607    AcpiOsCreateCache
12608    AcpiOsDeleteCache
12609    AcpiOsPurgeCache
12610    AcpiOsAcquireObject
12611    AcpiOsReleaseObject
12612
12613Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12614return
12615and restore a flags parameter. This fits better with many OS lock models.
12616Note: the current execution state (interrupt handler or not) is no longer
12617passed to these interfaces. If necessary, the OSL must determine this
12618state
12619by itself, a simple and fast operation. With assistance from Alexey
12620Starikovskiy.
12621
12622Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12623present if the revision of the RSDP was 2 or greater. According to the
12624ACPI
12625specification, the XSDT is optional in all cases, and the table manager
12626therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12627Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12628contain
12629only the RSDT.
12630
12631Fixed an interpreter problem with the Mid() operator in the case of an
12632input
12633string where the resulting output string is of zero length. It now
12634correctly
12635returns a valid, null terminated string object instead of a string object
12636with a null pointer.
12637
12638Fixed a problem with the control method argument handling to allow a
12639store
12640to an Arg object that already contains an object of type Device. The
12641Device
12642object is now correctly overwritten. Previously, an error was returned.
12643
12644
12645Enhanced the debugger Find command to emit object values in addition to
12646the
12647found object pathnames. The output format is the same as the dump
12648namespace
12649command.
12650
12651Enhanced the debugger Set command. It now has the ability to set the
12652value
12653of any Named integer object in the namespace (Previously, only method
12654locals
12655and args could be set.)
12656
12657Code and Data Size: Current and previous core subsystem library sizes are
12658shown below. These are the code and data sizes for the acpica.lib
12659produced
12660by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12661any ACPI driver or OSPM code. The debug version of the code includes the
12662debug output trace mechanism and has a much larger code and data size.
12663Note
12664that these values will vary depending on the efficiency of the compiler
12665and
12666the compiler options used during generation.
12667
12668  Previous Release:
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
12671  Current Release:
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
12674
12675
126762) iASL Compiler/Disassembler:
12677
12678Fixed a regression in the disassembler where if/else/while constructs
12679were
12680output incorrectly. This problem was introduced in the previous release
12681(20050526). This problem also affected the single-step disassembly in the
12682debugger.
12683
12684Fixed a problem where compiling the reserved _OSI method would randomly
12685(but
12686rarely) produce compile errors.
12687
12688Enhanced the disassembler to emit compilable code in the face of
12689incorrect
12690AML resource descriptors. If the optional ResourceSourceIndex is present,
12691but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12692disassembly. Otherwise, the resulting code cannot be compiled without
12693errors.
12694
12695----------------------------------------
1269626 May 2005.  Summary of changes for version 20050526:
12697
126981) ACPI CA Core Subsystem:
12699
12700Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12701the module level (not within a control method.) These opcodes are
12702executed
12703exactly once at the time the table is loaded. This type of code was legal
12704up
12705until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12706in
12707order to provide backwards compatibility with earlier BIOS
12708implementations.
12709This eliminates the "Encountered executable code at module level" warning
12710that was previously generated upon detection of such code.
12711
12712Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12713inadvertently be generated during the lookup of namespace objects in the
12714second pass parse of ACPI tables and control methods. It appears that
12715this
12716problem could occur during the resolution of forward references to
12717namespace
12718objects.
12719
12720Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12721corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12722allows the deadlock detection debug code to be compiled out in the normal
12723case, improving mutex performance (and overall subsystem performance)
12724considerably.
12725
12726Implemented a handful of miscellaneous fixes for possible memory leaks on
12727error conditions and error handling control paths. These fixes were
12728suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12729
12730Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12731(tbxfroot.c)
12732to prevent a fault in this error case.
12733
12734Code and Data Size: Current and previous core subsystem library sizes are
12735shown below. These are the code and data sizes for the acpica.lib
12736produced
12737by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12738any ACPI driver or OSPM code. The debug version of the code includes the
12739debug output trace mechanism and has a much larger code and data size.
12740Note
12741that these values will vary depending on the efficiency of the compiler
12742and
12743the compiler options used during generation.
12744
12745  Previous Release:
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
12748  Current Release:
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
12751
12752
127532) iASL Compiler/Disassembler:
12754
12755Implemented support to allow Type 1 and Type 2 ASL operators to appear at
12756the module level (not within a control method.) These operators will be
12757executed once at the time the table is loaded. This type of code was
12758legal
12759up until the release of ACPI 2.0B (2002) and is now supported by the iASL
12760compiler in order to provide backwards compatibility with earlier BIOS
12761ASL
12762code.
12763
12764The ACPI integer width (specified via the table revision ID or the -r
12765override, 32 or 64 bits) is now used internally during compile-time
12766constant
12767folding to ensure that constants are truncated to 32 bits if necessary.
12768Previously, the revision ID value was only emitted in the AML table
12769header.
12770
12771An error message is now generated for the Mutex and Method operators if
12772the
12773SyncLevel parameter is outside the legal range of 0 through 15.
12774
12775Fixed a problem with the Method operator ParameterTypes list handling
12776(ACPI
127773.0). Previously, more than 2 types or 2 arguments generated a syntax
12778error.
12779The actual underlying implementation of method argument typechecking is
12780still under development, however.
12781
12782----------------------------------------
1278313 May 2005.  Summary of changes for version 20050513:
12784
127851) ACPI CA Core Subsystem:
12786
12787Implemented support for PCI Express root bridges -- added support for
12788device
12789PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12790
12791The interpreter now automatically truncates incoming 64-bit constants to
1279232
12793bits if currently executing out of a 32-bit ACPI table (Revision < 2).
12794This
12795also affects the iASL compiler constant folding. (Note: as per below, the
12796iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12797
12798Fixed a problem where string and buffer objects with "static" pointers
12799(pointers to initialization data within an ACPI table) were not handled
12800consistently. The internal object copy operation now always copies the
12801data
12802to a newly allocated buffer, regardless of whether the source object is
12803static or not.
12804
12805Fixed a problem with the FromBCD operator where an implicit result
12806conversion was improperly performed while storing the result to the
12807target
12808operand. Since this is an "explicit conversion" operator, the implicit
12809conversion should never be performed on the output.
12810
12811Fixed a problem with the CopyObject operator where a copy to an existing
12812named object did not always completely overwrite the existing object
12813stored
12814at name. Specifically, a buffer-to-buffer copy did not delete the
12815existing
12816buffer.
12817
12818Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
12819and
12820structs for consistency.
12821
12822Code and Data Size: Current and previous core subsystem library sizes are
12823shown below. These are the code and data sizes for the acpica.lib
12824produced
12825by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12826any ACPI driver or OSPM code. The debug version of the code includes the
12827debug output trace mechanism and has a much larger code and data size.
12828Note
12829that these values will vary depending on the efficiency of the compiler
12830and
12831the compiler options used during generation.
12832
12833  Previous Release:
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
12839
12840
128412) iASL Compiler/Disassembler:
12842
12843The compiler now emits a warning if an attempt is made to generate a 64-
12844bit
12845integer constant from within a 32-bit ACPI table (Revision < 2). The
12846integer
12847is truncated to 32 bits.
12848
12849Fixed a problem with large package objects: if the static length of the
12850package is greater than 255, the "variable length package" opcode is
12851emitted. Previously, this caused an error. This requires an update to the
12852ACPI spec, since it currently (incorrectly) states that packages larger
12853than
12854255 elements are not allowed.
12855
12856The disassembler now correctly handles variable length packages and
12857packages
12858larger than 255 elements.
12859
12860----------------------------------------
1286108 April 2005.  Summary of changes for version 20050408:
12862
128631) ACPI CA Core Subsystem:
12864
12865Fixed three cases in the interpreter where an "index" argument to an ASL
12866function was still (internally) 32 bits instead of the required 64 bits.
12867This was the Index argument to the Index, Mid, and Match operators.
12868
12869The "strupr" function is now permanently local (AcpiUtStrupr), since this
12870is
12871not a POSIX-defined function and not present in most kernel-level C
12872libraries. All references to the C library strupr function have been
12873removed
12874from the headers.
12875
12876Completed the deployment of static functions/prototypes. All prototypes
12877with
12878the static attribute have been moved from the headers to the owning C
12879file.
12880
12881Implemented an extract option (-e) for the AcpiBin utility (AML binary
12882utility). This option allows the utility to extract individual ACPI
12883tables
12884from the output of AcpiDmp. It provides the same functionality of the
12885acpixtract.pl perl script without the worry of setting the correct perl
12886options. AcpiBin runs on Windows and has not yet been generated/validated
12887in
12888the Linux/Unix environment (but should be soon).
12889
12890Updated and fixed the table dump option for AcpiBin (-d). This option
12891converts a single ACPI table to a hex/ascii file, similar to the output
12892of
12893AcpiDmp.
12894
12895Code and Data Size: Current and previous core subsystem library sizes are
12896shown below. These are the code and data sizes for the acpica.lib
12897produced
12898by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12899any ACPI driver or OSPM code. The debug version of the code includes the
12900debug output trace mechanism and has a much larger code and data size.
12901Note
12902that these values will vary depending on the efficiency of the compiler
12903and
12904the compiler options used during generation.
12905
12906  Previous Release:
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
12909  Current Release:
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
12912
12913
129142) iASL Compiler/Disassembler:
12915
12916Disassembler fix: Added a check to ensure that the table length found in
12917the
12918ACPI table header within the input file is not longer than the actual
12919input
12920file size. This indicates some kind of file or table corruption.
12921
12922----------------------------------------
1292329 March 2005.  Summary of changes for version 20050329:
12924
129251) ACPI CA Core Subsystem:
12926
12927An error is now generated if an attempt is made to create a Buffer Field
12928of
12929length zero (A CreateField with a length operand of zero.)
12930
12931The interpreter now issues a warning whenever executable code at the
12932module
12933level is detected during ACPI table load. This will give some idea of the
12934prevalence of this type of code.
12935
12936Implemented support for references to named objects (other than control
12937methods) within package objects.
12938
12939Enhanced package object output for the debug object. Package objects are
12940now
12941completely dumped, showing all elements.
12942
12943Enhanced miscellaneous object output for the debug object. Any object can
12944now be written to the debug object (for example, a device object can be
12945written, and the type of the object will be displayed.)
12946
12947The "static" qualifier has been added to all local functions across both
12948the
12949core subsystem and the iASL compiler.
12950
12951The number of "long" lines (> 80 chars) within the source has been
12952significantly reduced, by about 1/3.
12953
12954Cleaned up all header files to ensure that all CA/iASL functions are
12955prototyped (even static functions) and the formatting is consistent.
12956
12957Two new header files have been added, acopcode.h and acnames.h.
12958
12959Removed several obsolete functions that were no longer used.
12960
12961Code and Data Size: Current and previous core subsystem library sizes are
12962shown below. These are the code and data sizes for the acpica.lib
12963produced
12964by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12965any ACPI driver or OSPM code. The debug version of the code includes the
12966debug output trace mechanism and has a much larger code and data size.
12967Note
12968that these values will vary depending on the efficiency of the compiler
12969and
12970the compiler options used during generation.
12971
12972  Previous Release:
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
12975  Current Release:
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
12978
12979
12980
129812) iASL Compiler/Disassembler:
12982
12983Fixed a problem with the resource descriptor generation/support. For the
12984ResourceSourceIndex and the ResourceSource fields, both must be present,
12985or
12986both must be not present - can't have one without the other.
12987
12988The compiler now returns non-zero from the main procedure if any errors
12989have
12990occurred during the compilation.
12991
12992
12993----------------------------------------
1299409 March 2005.  Summary of changes for version 20050309:
12995
129961) ACPI CA Core Subsystem:
12997
12998The string-to-buffer implicit conversion code has been modified again
12999after
13000a change to the ACPI specification.  In order to match the behavior of
13001the
13002other major ACPI implementation, the target buffer is no longer truncated
13003if
13004the source string is smaller than an existing target buffer. This change
13005requires an update to the ACPI spec, and should eliminate the recent
13006AE_AML_BUFFER_LIMIT issues.
13007
13008The "implicit return" support was rewritten to a new algorithm that
13009solves
13010the general case. Rather than attempt to determine when a method is about
13011to
13012exit, the result of every ASL operator is saved momentarily until the
13013very
13014next ASL operator is executed. Therefore, no matter how the method exits,
13015there will always be a saved implicit return value. This feature is only
13016enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13017eliminate
13018AE_AML_NO_RETURN_VALUE errors when enabled.
13019
13020Implemented implicit conversion support for the predicate (operand) of
13021the
13022If, Else, and While operators. String and Buffer arguments are
13023automatically
13024converted to Integers.
13025
13026Changed the string-to-integer conversion behavior to match the new ACPI
13027errata: "If no integer object exists, a new integer is created. The ASCII
13028string is interpreted as a hexadecimal constant. Each string character is
13029interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13030with the first character as the most significant digit, and ending with
13031the
13032first non-hexadecimal character or end-of-string." This means that the
13033first
13034non-hex character terminates the conversion and this is the code that was
13035changed.
13036
13037Fixed a problem where the ObjectType operator would fail (fault) when
13038used
13039on an Index of a Package which pointed to a null package element. The
13040operator now properly returns zero (Uninitialized) in this case.
13041
13042Fixed a problem where the While operator used excessive memory by not
13043properly popping the result stack during execution. There was no memory
13044leak
13045after execution, however. (Code provided by Valery Podrezov.)
13046
13047Fixed a problem where references to control methods within Package
13048objects
13049caused the method to be invoked, instead of producing a reference object
13050pointing to the method.
13051
13052Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13053to
13054improve performance and reduce code size. (Code provided by Alexey
13055Starikovskiy.)
13056
13057Code and Data Size: Current and previous core subsystem library sizes are
13058shown below. These are the code and data sizes for the acpica.lib
13059produced
13060by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13061any ACPI driver or OSPM code. The debug version of the code includes the
13062debug output trace mechanism and has a much larger code and data size.
13063Note
13064that these values will vary depending on the efficiency of the compiler
13065and
13066the compiler options used during generation.
13067
13068  Previous Release:
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
13071  Current Release:
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
13074
13075
130762) iASL Compiler/Disassembler:
13077
13078Fixed a problem with the Return operator with no arguments. Since the AML
13079grammar for the byte encoding requires an operand for the Return opcode,
13080the
13081compiler now emits a Return(Zero) for this case.  An ACPI specification
13082update has been written for this case.
13083
13084For tables other than the DSDT, namepath optimization is automatically
13085disabled. This is because SSDTs can be loaded anywhere in the namespace,
13086the
13087compiler has no knowledge of where, and thus cannot optimize namepaths.
13088
13089Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13090inadvertently omitted from the ACPI specification, and will require an
13091update to the spec.
13092
13093The source file scan for ASCII characters is now optional (-a). This
13094change
13095was made because some vendors place non-ascii characters within comments.
13096However, the scan is simply a brute-force byte compare to ensure all
13097characters in the file are in the range 0x00 to 0x7F.
13098
13099Fixed a problem with the CondRefOf operator where the compiler was
13100inappropriately checking for the existence of the target. Since the point
13101of
13102the operator is to check for the existence of the target at run-time, the
13103compiler no longer checks for the target existence.
13104
13105Fixed a problem where errors generated from the internal AML interpreter
13106during constant folding were not handled properly, causing a fault.
13107
13108Fixed a problem with overly aggressive range checking for the Stall
13109operator. The valid range (max 255) is now only checked if the operand is
13110of
13111type Integer. All other operand types cannot be statically checked.
13112
13113Fixed a problem where control method references within the RefOf,
13114DeRefOf,
13115and ObjectType operators were not treated properly. They are now treated
13116as
13117actual references, not method invocations.
13118
13119Fixed and enhanced the "list namespace" option (-ln). This option was
13120broken
13121a number of releases ago.
13122
13123Improved error handling for the Field, IndexField, and BankField
13124operators.
13125The compiler now cleanly reports and recovers from errors in the field
13126component (FieldUnit) list.
13127
13128Fixed a disassembler problem where the optional ResourceDescriptor fields
13129TRS and TTP were not always handled correctly.
13130
13131Disassembler - Comments in output now use "//" instead of "/*"
13132
13133----------------------------------------
1313428 February 2005.  Summary of changes for version 20050228:
13135
131361) ACPI CA Core Subsystem:
13137
13138Fixed a problem where the result of an Index() operator (an object
13139reference) must increment the reference count on the target object for
13140the
13141life of the object reference.
13142
13143Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13144Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13145WordSpace
13146resource descriptors.
13147
13148Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13149Space Descriptor" string, indicating interpreter support for the
13150descriptors
13151above.
13152
13153Implemented header support for the new ACPI 3.0 FADT flag bits.
13154
13155Implemented header support for the new ACPI 3.0 PCI Express bits for the
13156PM1
13157status/enable registers.
13158
13159Updated header support for the MADT processor local Apic struct and MADT
13160platform interrupt source struct for new ACPI 3.0 fields.
13161
13162Implemented header support for the SRAT and SLIT ACPI tables.
13163
13164Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13165flag
13166at runtime.
13167
13168Code and Data Size: Current and previous core subsystem library sizes are
13169shown below. These are the code and data sizes for the acpica.lib
13170produced
13171by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13172any ACPI driver or OSPM code. The debug version of the code includes the
13173debug output trace mechanism and has a much larger code and data size.
13174Note
13175that these values will vary depending on the efficiency of the compiler
13176and
13177the compiler options used during generation.
13178
13179  Previous Release:
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
13182  Current Release:
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
13185
13186
131872) iASL Compiler/Disassembler:
13188
13189Fixed a problem with the internal 64-bit String-to-integer conversion
13190with
13191strings less than two characters long.
13192
13193Fixed a problem with constant folding where the result of the Index()
13194operator can not be considered a constant. This means that Index() cannot
13195be
13196a type3 opcode and this will require an update to the ACPI specification.
13197
13198Disassembler: Implemented support for the TTP, MTP, and TRS resource
13199descriptor fields. These fields were inadvertently ignored and not output
13200in
13201the disassembly of the resource descriptor.
13202
13203
13204 ----------------------------------------
1320511 February 2005.  Summary of changes for version 20050211:
13206
132071) ACPI CA Core Subsystem:
13208
13209Implemented ACPI 3.0 support for implicit conversion within the Match()
13210operator. MatchObjects can now be of type integer, buffer, or string
13211instead
13212of just type integer.  Package elements are implicitly converted to the
13213type
13214of the MatchObject. This change aligns the behavior of Match() with the
13215behavior of the other logical operators (LLess(), etc.) It also requires
13216an
13217errata change to the ACPI specification as this support was intended for
13218ACPI 3.0, but was inadvertently omitted.
13219
13220Fixed a problem with the internal implicit "to buffer" conversion.
13221Strings
13222that are converted to buffers will cause buffer truncation if the string
13223is
13224smaller than the target buffer. Integers that are converted to buffers
13225will
13226not cause buffer truncation, only zero extension (both as per the ACPI
13227spec.) The problem was introduced when code was added to truncate the
13228buffer, but this should not be performed in all cases, only the string
13229case.
13230
13231Fixed a problem with the Buffer and Package operators where the
13232interpreter
13233would get confused if two such operators were used as operands to an ASL
13234operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13235stack was not being popped after the execution of these operators,
13236resulting
13237in an AE_NO_RETURN_VALUE exception.
13238
13239Fixed a problem with constructs of the form Store(Index(...),...). The
13240reference object returned from Index was inadvertently resolved to an
13241actual
13242value. This problem was introduced in version 20050114 when the behavior
13243of
13244Store() was modified to restrict the object types that can be used as the
13245source operand (to match the ACPI specification.)
13246
13247Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13248
13249Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13250
13251Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13252
13253Code and Data Size: Current and previous core subsystem library sizes are
13254shown below. These are the code and data sizes for the acpica.lib
13255produced
13256by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13257any ACPI driver or OSPM code. The debug version of the code includes the
13258debug output trace mechanism and has a much larger code and data size.
13259Note
13260that these values will vary depending on the efficiency of the compiler
13261and
13262the compiler options used during generation.
13263
13264  Previous Release:
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
13267  Current Release:
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
13270
13271
132722) iASL Compiler/Disassembler:
13273
13274Fixed a code generation problem in the constant folding optimization code
13275where incorrect code was generated if a constant was reduced to a buffer
13276object (i.e., a reduced type 5 opcode.)
13277
13278Fixed a typechecking problem for the ToBuffer operator. Caused by an
13279incorrect return type in the internal opcode information table.
13280
13281----------------------------------------
1328225 January 2005.  Summary of changes for version 20050125:
13283
132841) ACPI CA Core Subsystem:
13285
13286Fixed a recently introduced problem with the Global Lock where the
13287underlying semaphore was not created.  This problem was introduced in
13288version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13289Acquire() operation on _GL.
13290
13291The local object cache is now optional, and is disabled by default. Both
13292AcpiExec and the iASL compiler enable the cache because they run in user
13293mode and this enhances their performance. #define
13294ACPI_ENABLE_OBJECT_CACHE
13295to enable the local cache.
13296
13297Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13298the
13299optional "implicit return" support where an error was returned if no
13300return
13301object was expected, but one was implicitly returned. AE_OK is now
13302returned
13303in this case and the implicitly returned object is deleted.
13304AcpiUtEvaluateObject is only occasionally used, and only to execute
13305reserved
13306methods such as _STA and _INI where the return type is known up front.
13307
13308Fixed a few issues with the internal convert-to-integer code. It now
13309returns
13310an error if an attempt is made to convert a null string, a string of only
13311blanks/tabs, or a zero-length buffer. This affects both implicit
13312conversion
13313and explicit conversion via the ToInteger() operator.
13314
13315The internal debug code in AcpiUtAcquireMutex has been commented out. It
13316is
13317not needed for normal operation and should increase the performance of
13318the
13319entire subsystem. The code remains in case it is needed for debug
13320purposes
13321again.
13322
13323The AcpiExec source and makefile are included in the Unix/Linux package
13324for
13325the first time.
13326
13327Code and Data Size: Current and previous core subsystem library sizes are
13328shown below. These are the code and data sizes for the acpica.lib
13329produced
13330by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13331any ACPI driver or OSPM code. The debug version of the code includes the
13332debug output trace mechanism and has a much larger code and data size.
13333Note
13334that these values will vary depending on the efficiency of the compiler
13335and
13336the compiler options used during generation.
13337
13338  Previous Release:
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
13341  Current Release:
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
13344
133452) iASL Compiler/Disassembler:
13346
13347Switch/Case support: A warning is now issued if the type of the Switch
13348value
13349cannot be determined at compile time. For example, Switch(Arg0) will
13350generate the warning, and the type is assumed to be an integer. As per
13351the
13352ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13353the
13354warning.
13355
13356Switch/Case support: Implemented support for buffer and string objects as
13357the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13358buffers and strings.
13359
13360Switch/Case support: The emitted code for the LEqual() comparisons now
13361uses
13362the switch value as the first operand, not the second. The case value is
13363now
13364the second operand, and this allows the case value to be implicitly
13365converted to the type of the switch value, not the other way around.
13366
13367Switch/Case support: Temporary variables are now emitted immediately
13368within
13369the control method, not at the global level. This means that there are
13370now
1337136 temps available per-method, not 36 temps per-module as was the case
13372with
13373the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13374
13375----------------------------------------
1337614 January 2005.  Summary of changes for version 20050114:
13377
13378Added 2005 copyright to all module headers.  This affects every module in
13379the core subsystem, iASL compiler, and the utilities.
13380
133811) ACPI CA Core Subsystem:
13382
13383Fixed an issue with the String-to-Buffer conversion code where the string
13384null terminator was not included in the buffer after conversion, but
13385there
13386is existing ASL that assumes the string null terminator is included. This
13387is
13388the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13389introduced in the previous version when the code was updated to correctly
13390set the converted buffer size as per the ACPI specification. The ACPI
13391spec
13392is ambiguous and will be updated to specify that the null terminator must
13393be
13394included in the converted buffer. This also affects the ToBuffer() ASL
13395operator.
13396
13397Fixed a problem with the Mid() ASL/AML operator where it did not work
13398correctly on Buffer objects. Newly created sub-buffers were not being
13399marked
13400as initialized.
13401
13402
13403Fixed a problem in AcpiTbFindTable where incorrect string compares were
13404performed on the OemId and OemTableId table header fields.  These fields
13405are
13406not null terminated, so strncmp is now used instead of strcmp.
13407
13408Implemented a restriction on the Store() ASL/AML operator to align the
13409behavior with the ACPI specification.  Previously, any object could be
13410used
13411as the source operand.  Now, the only objects that may be used are
13412Integers,
13413Buffers, Strings, Packages, Object References, and DDB Handles.  If
13414necessary, the original behavior can be restored by enabling the
13415EnableInterpreterSlack flag.
13416
13417Enhanced the optional "implicit return" support to allow an implicit
13418return
13419value from methods that are invoked externally via the AcpiEvaluateObject
13420interface.  This enables implicit returns from the _STA and _INI methods,
13421for example.
13422
13423Changed the Revision() ASL/AML operator to return the current version of
13424the
13425AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13426returned
13427the supported ACPI version (This is the function of the _REV method).
13428
13429Updated the _REV predefined method to return the currently supported
13430version
13431of ACPI, now 3.
13432
13433Implemented batch mode option for the AcpiExec utility (-b).
13434
13435Code and Data Size: Current and previous core subsystem library sizes are
13436shown below. These are the code and data sizes for the acpica.lib
13437produced
13438by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13439any ACPI driver or OSPM code. The debug version of the code includes the
13440debug output trace mechanism and has a much larger code and data size.
13441Note
13442that these values will vary depending on the efficiency of the compiler
13443and
13444the compiler options used during generation.
13445
13446  Previous Release:
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
13449  Current Release:
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
13452
13453----------------------------------------
1345410 December 2004.  Summary of changes for version 20041210:
13455
13456ACPI 3.0 support is nearing completion in both the iASL compiler and the
13457ACPI CA core subsystem.
13458
134591) ACPI CA Core Subsystem:
13460
13461Fixed a problem in the ToDecimalString operator where the resulting
13462string
13463length was incorrectly calculated. The length is now calculated exactly,
13464eliminating incorrect AE_STRING_LIMIT exceptions.
13465
13466Fixed a problem in the ToHexString operator to allow a maximum 200
13467character
13468string to be produced.
13469
13470Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13471copy
13472routine where the length of the resulting buffer was not truncated to the
13473new size (if the target buffer already existed).
13474
13475Code and Data Size: Current and previous core subsystem library sizes are
13476shown below. These are the code and data sizes for the acpica.lib
13477produced
13478by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13479any ACPI driver or OSPM code. The debug version of the code includes the
13480debug output trace mechanism and has a much larger code and data size.
13481Note
13482that these values will vary depending on the efficiency of the compiler
13483and
13484the compiler options used during generation.
13485
13486  Previous Release:
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
13489  Current Release:
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
13492
13493
134942) iASL Compiler/Disassembler:
13495
13496Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13497ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13498Includes support in the disassembler.
13499
13500Implemented support for the new (ACPI 3.0) parameter to the Register
13501macro,
13502AccessSize.
13503
13504Fixed a problem where the _HE resource name for the Interrupt macro was
13505referencing bit 0 instead of bit 1.
13506
13507Implemented check for maximum 255 interrupts in the Interrupt macro.
13508
13509Fixed a problem with the predefined resource descriptor names where
13510incorrect AML code was generated if the offset within the resource buffer
13511was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
13512but did not update the surrounding package lengths.
13513
13514Changes to the Dma macro:  All channels within the channel list must be
13515in
13516the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
13517optional (default is BusMaster).
13518
13519Implemented check for maximum 7 data bytes for the VendorShort macro.
13520
13521The ReadWrite parameter is now optional for the Memory32 and similar
13522macros.
13523
13524----------------------------------------
1352503 December 2004.  Summary of changes for version 20041203:
13526
135271) ACPI CA Core Subsystem:
13528
13529The low-level field insertion/extraction code (exfldio) has been
13530completely
13531rewritten to eliminate unnecessary complexity, bugs, and boundary
13532conditions.
13533
13534Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13535ToDecimalString
13536operators where the input operand could be inadvertently deleted if no
13537conversion was necessary (e.g., if the input to ToInteger was an Integer
13538object.)
13539
13540Fixed a problem with the ToDecimalString and ToHexString where an
13541incorrect
13542exception code was returned if the resulting string would be > 200 chars.
13543AE_STRING_LIMIT is now returned.
13544
13545Fixed a problem with the Concatenate operator where AE_OK was always
13546returned, even if the operation failed.
13547
13548Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13549semaphores to be allocated.
13550
13551Code and Data Size: Current and previous core subsystem library sizes are
13552shown below. These are the code and data sizes for the acpica.lib
13553produced
13554by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13555any ACPI driver or OSPM code. The debug version of the code includes the
13556debug output trace mechanism and has a much larger code and data size.
13557Note
13558that these values will vary depending on the efficiency of the compiler
13559and
13560the compiler options used during generation.
13561
13562  Previous Release:
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
13565  Current Release:
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
13568
13569
135702) iASL Compiler/Disassembler:
13571
13572Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
13573recently introduced in 20041119.
13574
13575Fixed a problem with the ToUUID macro where the upper nybble of each
13576buffer
13577byte was inadvertently set to zero.
13578
13579----------------------------------------
1358019 November 2004.  Summary of changes for version 20041119:
13581
135821) ACPI CA Core Subsystem:
13583
13584Fixed a problem in the internal ConvertToInteger routine where new
13585integers
13586were not truncated to 32 bits for 32-bit ACPI tables. This routine
13587converts
13588buffers and strings to integers.
13589
13590Implemented support to store a value to an Index() on a String object.
13591This
13592is an ACPI 2.0 feature that had not yet been implemented.
13593
13594Implemented new behavior for storing objects to individual package
13595elements
13596(via the Index() operator). The previous behavior was to invoke the
13597implicit
13598conversion rules if an object was already present at the index.  The new
13599behavior is to simply delete any existing object and directly store the
13600new
13601object. Although the ACPI specification seems unclear on this subject,
13602other
13603ACPI implementations behave in this manner.  (This is the root of the
13604AE_BAD_HEX_CONSTANT issue.)
13605
13606Modified the RSDP memory scan mechanism to support the extended checksum
13607for
13608ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13609RSDP signature is found with a valid checksum.
13610
13611Code and Data Size: Current and previous core subsystem library sizes are
13612shown below. These are the code and data sizes for the acpica.lib
13613produced
13614by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13615any ACPI driver or OSPM code. The debug version of the code includes the
13616debug output trace mechanism and has a much larger code and data size.
13617Note
13618that these values will vary depending on the efficiency of the compiler
13619and
13620the compiler options used during generation.
13621
13622  Previous Release:
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
13625  Current Release:
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
13628
13629
136302) iASL Compiler/Disassembler:
13631
13632Fixed a missing semicolon in the aslcompiler.y file.
13633
13634----------------------------------------
1363505 November 2004.  Summary of changes for version 20041105:
13636
136371) ACPI CA Core Subsystem:
13638
13639Implemented support for FADT revision 2.  This was an interim table
13640(between
13641ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13642
13643Implemented optional support to allow uninitialized LocalX and ArgX
13644variables in a control method.  The variables are initialized to an
13645Integer
13646object with a value of zero.  This support is enabled by setting the
13647AcpiGbl_EnableInterpreterSlack flag to TRUE.
13648
13649Implemented support for Integer objects for the SizeOf operator.  Either
136504
13651or 8 is returned, depending on the current integer size (32-bit or 64-
13652bit,
13653depending on the parent table revision).
13654
13655Fixed a problem in the implementation of the SizeOf and ObjectType
13656operators
13657where the operand was resolved to a value too early, causing incorrect
13658return values for some objects.
13659
13660Fixed some possible memory leaks during exceptional conditions.
13661
13662Code and Data Size: Current and previous core subsystem library sizes are
13663shown below. These are the code and data sizes for the acpica.lib
13664produced
13665by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13666any ACPI driver or OSPM code. The debug version of the code includes the
13667debug output trace mechanism and has a much larger code and data size.
13668Note
13669that these values will vary depending on the efficiency of the compiler
13670and
13671the compiler options used during generation.
13672
13673  Previous Release:
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
13676  Current Release:
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
13679
13680
136812) iASL Compiler/Disassembler:
13682
13683Implemented support for all ACPI 3.0 reserved names and methods.
13684
13685Implemented all ACPI 3.0 grammar elements in the front-end, including
13686support for semicolons.
13687
13688Implemented the ACPI 3.0 Function() and ToUUID() macros
13689
13690Fixed a problem in the disassembler where a Scope() operator would not be
13691emitted properly if the target of the scope was in another table.
13692
13693----------------------------------------
1369415 October 2004.  Summary of changes for version 20041015:
13695
13696Note:  ACPI CA is currently undergoing an in-depth and complete formal
13697evaluation to test/verify the following areas. Other suggestions are
13698welcome. This will result in an increase in the frequency of releases and
13699the 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
13708
13709
137101) ACPI CA Core Subsystem:
13711
13712Fixed two alignment issues on 64-bit platforms - within debug statements
13713in
13714AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13715Address
13716field within the non-aligned ACPI generic address structure.
13717
13718Fixed a problem in the Increment and Decrement operators where incorrect
13719operand resolution could result in the inadvertent modification of the
13720original integer when the integer is passed into another method as an
13721argument and the arg is then incremented/decremented.
13722
13723Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13724bit
13725BCD number were truncated during conversion.
13726
13727Fixed a problem in the ToDecimal operator where the length of the
13728resulting
13729string could be set incorrectly too long if the input operand was a
13730Buffer
13731object.
13732
13733Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13734(0)
13735within a buffer would prematurely terminate a compare between buffer
13736objects.
13737
13738Added a check for string overflow (>200 characters as per the ACPI
13739specification) during the Concatenate operator with two string operands.
13740
13741Code and Data Size: Current and previous core subsystem library sizes are
13742shown below. These are the code and data sizes for the acpica.lib
13743produced
13744by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13745any ACPI driver or OSPM code. The debug version of the code includes the
13746debug output trace mechanism and has a much larger code and data size.
13747Note
13748that these values will vary depending on the efficiency of the compiler
13749and
13750the compiler options used during generation.
13751
13752  Previous Release:
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
13755  Current Release:
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
13758
13759
13760
137612) iASL Compiler/Disassembler:
13762
13763Allow the use of the ObjectType operator on uninitialized Locals and Args
13764(returns 0 as per the ACPI specification).
13765
13766Fixed a problem where the compiler would fault if there was a syntax
13767error
13768in the FieldName of all of the various CreateXXXField operators.
13769
13770Disallow the use of lower case letters within the EISAID macro, as per
13771the
13772ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
13773Where
13774U is an uppercase letter and N is a hex digit.
13775
13776
13777----------------------------------------
1377806 October 2004.  Summary of changes for version 20041006:
13779
137801) ACPI CA Core Subsystem:
13781
13782Implemented support for the ACPI 3.0 Timer operator. This ASL function
13783implements a 64-bit timer with 100 nanosecond granularity.
13784
13785Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
13786implement the ACPI 3.0 Timer operator.  This allows the host OS to
13787implement
13788the timer with the best clock available. Also, it keeps the core
13789subsystem
13790out of the clock handling business, since the host OS (usually) performs
13791this function.
13792
13793Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
13794functions use a 64-bit address which is part of the packed ACPI Generic
13795Address Structure. Since the structure is non-aligned, the alignment
13796macros
13797are now used to extract the address to a local variable before use.
13798
13799Fixed a problem where the ToInteger operator assumed all input strings
13800were
13801hexadecimal. The operator now handles both decimal strings and hex
13802strings
13803(prefixed with "0x").
13804
13805Fixed a problem where the string length in the string object created as a
13806result of the internal ConvertToString procedure could be incorrect. This
13807potentially affected all implicit conversions and also the
13808ToDecimalString
13809and ToHexString operators.
13810
13811Fixed two problems in the ToString operator. If the length parameter was
13812zero, an incorrect string object was created and the value of the input
13813length parameter was inadvertently changed from zero to Ones.
13814
13815Fixed a problem where the optional ResourceSource string in the
13816ExtendedIRQ
13817resource macro was ignored.
13818
13819Simplified the interfaces to the internal division functions, reducing
13820code
13821size and complexity.
13822
13823Code and Data Size: Current and previous core subsystem library sizes are
13824shown below. These are the code and data sizes for the acpica.lib
13825produced
13826by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13827any ACPI driver or OSPM code. The debug version of the code includes the
13828debug output trace mechanism and has a much larger code and data size.
13829Note
13830that these values will vary depending on the efficiency of the compiler
13831and
13832the compiler options used during generation.
13833
13834  Previous Release:
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
13837  Current Release:
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
13840
13841
138422) iASL Compiler/Disassembler:
13843
13844Implemented support for the ACPI 3.0 Timer operator.
13845
13846Fixed a problem where the Default() operator was inadvertently ignored in
13847a
13848Switch/Case block.  This was a problem in the translation of the Switch
13849statement to If...Else pairs.
13850
13851Added support to allow a standalone Return operator, with no parentheses
13852(or
13853operands).
13854
13855Fixed a problem with code generation for the ElseIf operator where the
13856translated Else...If parse tree was improperly constructed leading to the
13857loss of some code.
13858
13859----------------------------------------
1386022 September 2004.  Summary of changes for version 20040922:
13861
138621) ACPI CA Core Subsystem:
13863
13864Fixed a problem with the implementation of the LNot() operator where
13865"Ones"
13866was not returned for the TRUE case. Changed the code to return Ones
13867instead
13868of (!Arg) which was usually 1. This change affects iASL constant folding
13869for
13870this operator also.
13871
13872Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
13873not
13874initialized properly -- Now zero the entire buffer in this case where the
13875buffer already exists.
13876
13877Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
13878Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
13879related code considerably. This will require changes/updates to all OS
13880interface layers (OSLs.)
13881
13882Implemented a new external interface, AcpiInstallExceptionHandler, to
13883allow
13884a system exception handler to be installed. This handler is invoked upon
13885any
13886run-time exception that occurs during control method execution.
13887
13888Added support for the DSDT in AcpiTbFindTable. This allows the
13889DataTableRegion() operator to access the local copy of the DSDT.
13890
13891Code and Data Size: Current and previous core subsystem library sizes are
13892shown below. These are the code and data sizes for the acpica.lib
13893produced
13894by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13895any ACPI driver or OSPM code. The debug version of the code includes the
13896debug output trace mechanism and has a much larger code and data size.
13897Note
13898that these values will vary depending on the efficiency of the compiler
13899and
13900the compiler options used during generation.
13901
13902  Previous Release:
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
13905  Current Release:
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
13908
13909
139102) iASL Compiler/Disassembler:
13911
13912Fixed a problem with constant folding and the LNot operator. LNot was
13913returning 1 in the TRUE case, not Ones as per the ACPI specification.
13914This
13915could result in the generation of an incorrect folded/reduced constant.
13916
13917End-Of-File is now allowed within a "//"-style comment.  A parse error no
13918longer occurs if such a comment is at the very end of the input ASL
13919source
13920file.
13921
13922Implemented the "-r" option to override the Revision in the table header.
13923The initial use of this option will be to simplify the evaluation of the
13924AML
13925interpreter by allowing a single ASL source module to be compiled for
13926either
1392732-bit or 64-bit integers.
13928
13929
13930----------------------------------------
1393127 August 2004.  Summary of changes for version 20040827:
13932
139331) ACPI CA Core Subsystem:
13934
13935- Implemented support for implicit object conversion in the non-numeric
13936logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
13937and
13938LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
13939the second operand is implicitly converted on the fly to match the type
13940of
13941the first operand.  For example:
13942
13943    LEqual (Source1, Source2)
13944
13945Source1 and Source2 must each evaluate to an integer, a string, or a
13946buffer.
13947The data type of Source1 dictates the required type of Source2. Source2
13948is
13949implicitly converted if necessary to match the type of Source1.
13950
13951- Updated and corrected the behavior of the string conversion support.
13952The
13953rules concerning conversion of buffers to strings (according to the ACPI
13954specification) are as follows:
13955
13956ToDecimalString - explicit byte-wise conversion of buffer to string of
13957decimal values (0-255) separated by commas. ToHexString - explicit byte-
13958wise
13959conversion of buffer to string of hex values (0-FF) separated by commas.
13960ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
13961byte
13962copy with no transform except NULL terminated. Any other implicit buffer-
13963to-
13964string conversion - byte-wise conversion of buffer to string of hex
13965values
13966(0-FF) separated by spaces.
13967
13968- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13969
13970- Fixed a problem in AcpiNsGetPathnameLength where the returned length
13971was
13972one byte too short in the case of a node in the root scope.  This could
13973cause a fault during debug output.
13974
13975- Code and Data Size: Current and previous core subsystem library sizes
13976are
13977shown below.  These are the code and data sizes for the acpica.lib
13978produced
13979by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13980any ACPI driver or OSPM code.  The debug version of the code includes the
13981debug output trace mechanism and has a much larger code and data size.
13982Note
13983that these values will vary depending on the efficiency of the compiler
13984and
13985the compiler options used during generation.
13986
13987  Previous Release:
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
13990  Current Release:
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
13993
13994
139952) iASL Compiler/Disassembler:
13996
13997- Fixed a Linux generation error.
13998
13999
14000----------------------------------------
1400116 August 2004.  Summary of changes for version 20040816:
14002
140031) ACPI CA Core Subsystem:
14004
14005Designed and implemented support within the AML interpreter for the so-
14006called "implicit return".  This support returns the result of the last
14007ASL
14008operation within a control method, in the absence of an explicit Return()
14009operator.  A few machines depend on this behavior, even though it is not
14010explicitly supported by the ASL language.  It is optional support that
14011can
14012be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14013
14014Removed support for the PCI_Config address space from the internal low
14015level
14016hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14017support was not used internally, and would not work correctly anyway
14018because
14019the PCI bus number and segment number were not supported.  There are
14020separate interfaces for PCI configuration space access because of the
14021unique
14022interface.
14023
14024Code and Data Size: Current and previous core subsystem library sizes are
14025shown below.  These are the code and data sizes for the acpica.lib
14026produced
14027by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14028any ACPI driver or OSPM code.  The debug version of the code includes the
14029debug output trace mechanism and has a much larger code and data size.
14030Note
14031that these values will vary depending on the efficiency of the compiler
14032and
14033the compiler options used during generation.
14034
14035  Previous Release:
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
14038  Current Release:
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
14041
14042
140432) iASL Compiler/Disassembler:
14044
14045Fixed a problem where constants in ASL expressions at the root level (not
14046within a control method) could be inadvertently truncated during code
14047generation.  This problem was introduced in the 20040715 release.
14048
14049
14050----------------------------------------
1405115 July 2004.  Summary of changes for version 20040715:
14052
140531) ACPI CA Core Subsystem:
14054
14055Restructured the internal HW GPE interfaces to pass/track the current
14056state
14057of interrupts (enabled/disabled) in order to avoid possible deadlock and
14058increase flexibility of the interfaces.
14059
14060Implemented a "lexicographical compare" for String and Buffer objects
14061within
14062the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14063-
14064as per further clarification to the ACPI specification.  Behavior is
14065similar
14066to C library "strcmp".
14067
14068Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14069external function.  In the 32-bit non-debug case, the stack use has been
14070reduced from 168 bytes to 32 bytes.
14071
14072Deployed a new run-time configuration flag,
14073AcpiGbl_EnableInterpreterSlack,
14074whose purpose is to allow the AML interpreter to forgive certain bad AML
14075constructs.  Default setting is FALSE.
14076
14077Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14078IO
14079support code.  If enabled, it allows field access to go beyond the end of
14080a
14081region definition if the field is within the region length rounded up to
14082the
14083next access width boundary (a common coding error.)
14084
14085Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14086ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14087these
14088symbols are lowercase by the latest version of the AcpiSrc tool.
14089
14090The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14091rename "Register" to simply "Reg" to prevent certain compilers from
14092complaining.
14093
14094Code and Data Size: Current and previous core subsystem library sizes are
14095shown below.  These are the code and data sizes for the acpica.lib
14096produced
14097by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14098any ACPI driver or OSPM code.  The debug version of the code includes the
14099debug output trace mechanism and has a much larger code and data size.
14100Note
14101that these values will vary depending on the efficiency of the compiler
14102and
14103the compiler options used during generation.
14104
14105  Previous Release:
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
14108  Current Release:
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
14111
14112
141132) iASL Compiler/Disassembler:
14114
14115Implemented full support for Package objects within the Case() operator.
14116Note: The Break() operator is currently not supported within Case blocks
14117(TermLists) as there is some question about backward compatibility with
14118ACPI
141191.0 interpreters.
14120
14121
14122Fixed a problem where complex terms were not supported properly within
14123the
14124Switch() operator.
14125
14126Eliminated extraneous warning for compiler-emitted reserved names of the
14127form "_T_x".  (Used in Switch/Case operators.)
14128
14129Eliminated optimization messages for "_T_x" objects and small constants
14130within the DefinitionBlock operator.
14131
14132
14133----------------------------------------
1413415 June 2004.  Summary of changes for version 20040615:
14135
141361) ACPI CA Core Subsystem:
14137
14138Implemented support for Buffer and String objects (as per ACPI 2.0) for
14139the
14140following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14141LLessEqual.
14142
14143All directory names in the entire source package are lower case, as they
14144were in earlier releases.
14145
14146Implemented "Disassemble" command in the AML debugger that will
14147disassemble
14148a single control method.
14149
14150Code and Data Size: Current and previous core subsystem library sizes are
14151shown below.  These are the code and data sizes for the acpica.lib
14152produced
14153by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14154any ACPI driver or OSPM code.  The debug version of the code includes the
14155debug output trace mechanism and has a much larger code and data size.
14156Note
14157that these values will vary depending on the efficiency of the compiler
14158and
14159the compiler options used during generation.
14160
14161  Previous Release:
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
14164
14165  Current Release:
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
14168
14169
141702) iASL Compiler/Disassembler:
14171
14172Implemented support for Buffer and String objects (as per ACPI 2.0) for
14173the
14174following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14175LLessEqual.
14176
14177All directory names in the entire source package are lower case, as they
14178were in earlier releases.
14179
14180Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14181not found.
14182
14183Fixed an issue with the Windows version of the compiler where later
14184versions
14185of 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 -
14187d<nofilename> options.  The compiler now looks for both strings as
14188necessary.
14189
14190Fixed a problem with compiler namepath optimization where a namepath
14191within
14192the Scope() operator could not be optimized if the namepath was a subpath
14193of
14194the current scope path.
14195
14196----------------------------------------
1419727 May 2004.  Summary of changes for version 20040527:
14198
141991) ACPI CA Core Subsystem:
14200
14201Completed a new design and implementation for EBDA (Extended BIOS Data
14202Area)
14203support in the RSDP scan code.  The original code improperly scanned for
14204the
14205EBDA by simply scanning from memory location 0 to 0x400.  The correct
14206method
14207is to first obtain the EBDA pointer from within the BIOS data area, then
14208scan 1K of memory starting at the EBDA pointer.  There appear to be few
14209if
14210any machines that place the RSDP in the EBDA, however.
14211
14212Integrated a fix for a possible fault during evaluation of BufferField
14213arguments.  Obsolete code that was causing the problem was removed.
14214
14215Found and fixed a problem in the Field Support Code where data could be
14216corrupted on a bit field read that starts on an aligned boundary but does
14217not end on an aligned boundary.  Merged the read/write "datum length"
14218calculation code into a common procedure.
14219
14220Rolled in a couple of changes to the FreeBSD-specific header.
14221
14222
14223Code and Data Size: Current and previous core subsystem library sizes are
14224shown below.  These are the code and data sizes for the acpica.lib
14225produced
14226by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14227any ACPI driver or OSPM code.  The debug version of the code includes the
14228debug output trace mechanism and has a much larger code and data size.
14229Note
14230that these values will vary depending on the efficiency of the compiler
14231and
14232the compiler options used during generation.
14233
14234  Previous Release:
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
14237  Current Release:
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
14240
14241
142422) iASL Compiler/Disassembler:
14243
14244Fixed a generation warning produced by some overly-verbose compilers for
14245a
1424664-bit constant.
14247
14248----------------------------------------
1424914 May 2004.  Summary of changes for version 20040514:
14250
142511) ACPI CA Core Subsystem:
14252
14253Fixed a problem where hardware GPE enable bits sometimes not set properly
14254during and after GPE method execution.  Result of 04/27 changes.
14255
14256Removed extra "clear all GPEs" when sleeping/waking.
14257
14258Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14259AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14260to
14261the new AcpiEv* calls as appropriate.
14262
14263ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14264is
14265now "Microsoft Windows NT" for maximum compatibility.  However this can
14266be
14267changed by modifying the acconfig.h file.
14268
14269Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14270traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14271
14272Run _INI methods on ThermalZone objects.  This is against the ACPI
14273specification, but there is apparently ASL code in the field that has
14274these
14275_INI methods, and apparently "other" AML interpreters execute them.
14276
14277Performed a full 16/32/64 bit lint that resulted in some small changes.
14278
14279Added a sleep simulation command to the AML debugger to test sleep code.
14280
14281Code and Data Size: Current and previous core subsystem library sizes are
14282shown below.  These are the code and data sizes for the acpica.lib
14283produced
14284by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14285any ACPI driver or OSPM code.  The debug version of the code includes the
14286debug output trace mechanism and has a much larger code and data size.
14287Note
14288that these values will vary depending on the efficiency of the compiler
14289and
14290the compiler options used during generation.
14291
14292  Previous Release:
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
14295  Current Release:
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
14298
14299----------------------------------------
1430027 April 2004.  Summary of changes for version 20040427:
14301
143021) ACPI CA Core Subsystem:
14303
14304Completed a major overhaul of the GPE handling within ACPI CA.  There are
14305now three types of GPEs:  wake-only, runtime-only, and combination
14306wake/run.
14307The only GPEs allowed to be combination wake/run are for button-style
14308devices such as a control-method power button, control-method sleep
14309button,
14310or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14311not
14312referenced by any _PRW methods are marked for "runtime" and hardware
14313enabled.  Any GPE that is referenced by a _PRW method is marked for
14314"wake"
14315(and disabled at runtime).  However, at sleep time, only those GPEs that
14316have been specifically enabled for wake via the AcpiEnableGpe interface
14317will
14318actually be hardware enabled.
14319
14320A new external interface has been added, AcpiSetGpeType(), that is meant
14321to
14322be used by device drivers to force a GPE to a particular type.  It will
14323be
14324especially useful for the drivers for the button devices mentioned above.
14325
14326Completed restructuring of the ACPI CA initialization sequence so that
14327default operation region handlers are installed before GPEs are
14328initialized
14329and the _PRW methods are executed.  This will prevent errors when the
14330_PRW
14331methods attempt to access system memory or I/O space.
14332
14333GPE enable/disable no longer reads the GPE enable register.  We now keep
14334the
14335enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14336thus no longer depend on the hardware to maintain these bits.
14337
14338Always clear the wake status and fixed/GPE status bits before sleep, even
14339for state S5.
14340
14341Improved the AML debugger output for displaying the GPE blocks and their
14342current status.
14343
14344Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14345where
14346x = 0,1,2,3,4.
14347
14348Fixed a problem where the physical address was incorrectly calculated
14349when
14350the Load() operator was used to directly load from an Operation Region
14351(vs.
14352loading from a Field object.)  Also added check for minimum table length
14353for
14354this case.
14355
14356Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14357mutex release.
14358
14359Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14360consistency with the other fields returned.
14361
14362Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14363structure for each GPE in the system, so the size of this structure is
14364important.
14365
14366CPU stack requirement reduction:  Cleaned up the method execution and
14367object
14368evaluation paths so that now a parameter structure is passed, instead of
14369copying the various method parameters over and over again.
14370
14371In evregion.c:  Correctly exit and reenter the interpreter region if and
14372only if dispatching an operation region request to a user-installed
14373handler.
14374Do not exit/reenter when dispatching to a default handler (e.g., default
14375system memory or I/O handlers)
14376
14377
14378Notes for updating drivers for the new GPE support.  The following
14379changes
14380must be made to ACPI-related device drivers that are attached to one or
14381more
14382GPEs: (This information will be added to the ACPI CA Programmer
14383Reference.)
14384
143851) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14386must
14387explicitly call AcpiEnableGpe.
143882) There is a new interface called AcpiSetGpeType. This should be called
14389before enabling the GPE.  Also, this interface will automatically disable
14390the GPE if it is currently enabled.
143913) AcpiEnableGpe no longer supports a GPE type flag.
14392
14393Specific drivers that must be changed:
143941) EC driver:
14395    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14396AeGpeHandler, NULL);
14397    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14398    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14399
144002) Button Drivers (Power, Lid, Sleep):
14401Run _PRW method under parent device
14402If _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);
14406
14407For all other devices that have _PRWs, we automatically set the GPE type
14408to
14409ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14410This
14411must be done on a selective basis, usually requiring some kind of user
14412app
14413to allow the user to pick the wake devices.
14414
14415
14416Code and Data Size: Current and previous core subsystem library sizes are
14417shown below.  These are the code and data sizes for the acpica.lib
14418produced
14419by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14420any ACPI driver or OSPM code.  The debug version of the code includes the
14421debug output trace mechanism and has a much larger code and data size.
14422Note
14423that these values will vary depending on the efficiency of the compiler
14424and
14425the compiler options used during generation.
14426
14427  Previous Release:
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
14430  Current Release:
14431
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
14434
14435
14436
14437----------------------------------------
1443802 April 2004.  Summary of changes for version 20040402:
14439
144401) ACPI CA Core Subsystem:
14441
14442Fixed an interpreter problem where an indirect store through an ArgX
14443parameter was incorrectly applying the "implicit conversion rules" during
14444the store.  From the ACPI specification: "If the target is a method local
14445or
14446argument (LocalX or ArgX), no conversion is performed and the result is
14447stored directly to the target".  The new behavior is to disable implicit
14448conversion during ALL stores to an ArgX.
14449
14450Changed the behavior of the _PRW method scan to ignore any and all errors
14451returned by a given _PRW.  This prevents the scan from aborting from the
14452failure of any single _PRW.
14453
14454Moved the runtime configuration parameters from the global init procedure
14455to
14456static variables in acglobal.h.  This will allow the host to override the
14457default values easily.
14458
14459Code and Data Size: Current and previous core subsystem library sizes are
14460shown below.  These are the code and data sizes for the acpica.lib
14461produced
14462by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14463any ACPI driver or OSPM code.  The debug version of the code includes the
14464debug output trace mechanism and has a much larger code and data size.
14465Note
14466that these values will vary depending on the efficiency of the compiler
14467and
14468the compiler options used during generation.
14469
14470  Previous Release:
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
14473  Current Release:
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
14476
14477
144782) iASL Compiler/Disassembler:
14479
14480iASL now fully disassembles SSDTs.  However, External() statements are
14481not
14482generated automatically for unresolved symbols at this time.  This is a
14483planned feature for future implementation.
14484
14485Fixed a scoping problem in the disassembler that occurs when the type of
14486the
14487target of a Scope() operator is overridden.  This problem caused an
14488incorrectly nested internal namespace to be constructed.
14489
14490Any warnings or errors that are emitted during disassembly are now
14491commented
14492out automatically so that the resulting file can be recompiled without
14493any
14494hand editing.
14495
14496----------------------------------------
1449726 March 2004.  Summary of changes for version 20040326:
14498
144991) ACPI CA Core Subsystem:
14500
14501Implemented 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
14503identified as a WAKE GPE and by default will no longer be enabled at
14504runtime.  Previously, we were blindly enabling all GPEs with a
14505corresponding
14506_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14507We
14508believe this has been the cause of thousands of "spurious" GPEs on some
14509systems.
14510
14511This new GPE behavior is can be reverted to the original behavior (enable
14512ALL GPEs at runtime) via a runtime flag.
14513
14514Fixed a problem where aliased control methods could not access objects
14515properly.  The proper scope within the namespace was not initialized
14516(transferred to the target of the aliased method) before executing the
14517target method.
14518
14519Fixed a potential race condition on internal object deletion on the
14520return
14521object in AcpiEvaluateObject.
14522
14523Integrated a fix for resource descriptors where both _MEM and _MTP were
14524being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
14525wide, 0x0F instead of 0x03.)
14526
14527Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14528preventing
14529a
14530fault in some cases.
14531
14532Updated Notify() values for debug statements in evmisc.c
14533
14534Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14535
14536Code and Data Size: Current and previous core subsystem library sizes are
14537shown below.  These are the code and data sizes for the acpica.lib
14538produced
14539by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14540any ACPI driver or OSPM code.  The debug version of the code includes the
14541debug output trace mechanism and has a much larger code and data size.
14542Note
14543that these values will vary depending on the efficiency of the compiler
14544and
14545the compiler options used during generation.
14546
14547  Previous Release:
14548
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
14551  Current Release:
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
14554
14555----------------------------------------
1455611 March 2004.  Summary of changes for version 20040311:
14557
145581) ACPI CA Core Subsystem:
14559
14560Fixed a problem where errors occurring during the parse phase of control
14561method execution did not abort cleanly.  For example, objects created and
14562installed in the namespace were not deleted.  This caused all subsequent
14563invocations of the method to return the AE_ALREADY_EXISTS exception.
14564
14565Implemented a mechanism to force a control method to "Serialized"
14566execution
14567if the method attempts to create namespace objects. (The root of the
14568AE_ALREADY_EXISTS problem.)
14569
14570Implemented support for the predefined _OSI "internal" control method.
14571Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14572and
14573"Windows 2001.1", and can be easily upgraded for new strings as
14574necessary.
14575This feature will allow "other" operating systems to execute the fully
14576tested, "Windows" code path through the ASL code
14577
14578Global Lock Support:  Now allows multiple acquires and releases with any
14579internal thread.  Removed concept of "owning thread" for this special
14580mutex.
14581
14582Fixed two functions that were inappropriately declaring large objects on
14583the
14584CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
14585during
14586method execution considerably.
14587
14588Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14589S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14590
14591Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14592defined on the machine.
14593
14594Implemented two runtime options:  One to force all control method
14595execution
14596to "Serialized" to mimic Windows behavior, another to disable _OSI
14597support
14598if it causes problems on a given machine.
14599
14600Code and Data Size: Current and previous core subsystem library sizes are
14601shown below.  These are the code and data sizes for the acpica.lib
14602produced
14603by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14604any ACPI driver or OSPM code.  The debug version of the code includes the
14605debug output trace mechanism and has a much larger code and data size.
14606Note
14607that these values will vary depending on the efficiency of the compiler
14608and
14609the compiler options used during generation.
14610
14611  Previous Release:
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
14614  Current Release:
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
14617
146182) iASL Compiler/Disassembler:
14619
14620Fixed an array size problem for FreeBSD that would cause the compiler to
14621fault.
14622
14623----------------------------------------
1462420 February 2004.  Summary of changes for version 20040220:
14625
14626
146271) ACPI CA Core Subsystem:
14628
14629Implemented execution of _SxD methods for Device objects in the
14630GetObjectInfo interface.
14631
14632Fixed calls to _SST method to pass the correct arguments.
14633
14634Added a call to _SST on wake to restore to "working" state.
14635
14636Check for End-Of-Buffer failure case in the WalkResources interface.
14637
14638Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14639structures to the beginning of the file.
14640
14641After wake, clear GPE status register(s) before enabling GPEs.
14642
14643After wake, clear/enable power button.  (Perhaps we should clear/enable
14644all
14645fixed events upon wake.)
14646
14647Fixed a couple of possible memory leaks in the Namespace manager.
14648
14649Integrated latest acnetbsd.h file.
14650
14651----------------------------------------
1465211 February 2004.  Summary of changes for version 20040211:
14653
14654
146551) ACPI CA Core Subsystem:
14656
14657Completed investigation and implementation of the call-by-reference
14658mechanism for control method arguments.
14659
14660Fixed a problem where a store of an object into an indexed package could
14661fail if the store occurs within a different method than the method that
14662created the package.
14663
14664Fixed a problem where the ToDecimal operator could return incorrect
14665results.
14666
14667Fixed a problem where the CopyObject operator could fail on some of the
14668more
14669obscure objects (e.g., Reference objects.)
14670
14671Improved the output of the Debug object to display buffer, package, and
14672index objects.
14673
14674Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14675return
14676the expected result.
14677
14678Added permanent ACPI_REPORT_ERROR macros for all instances of the
14679ACPI_AML_INTERNAL exception.
14680
14681Integrated latest version of acfreebsd.h
14682
14683----------------------------------------
1468416 January 2004.  Summary of changes for version 20040116:
14685
14686The purpose of this release is primarily to update the copyright years in
14687each module, thus causing a huge number of diffs.  There are a few small
14688functional changes, however.
14689
146901) ACPI CA Core Subsystem:
14691
14692Improved error messages when there is a problem finding one or more of
14693the
14694required base ACPI tables
14695
14696Reintroduced the definition of APIC_HEADER in actbl.h
14697
14698Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14699
14700Removed extraneous reference to NewObj in dsmthdat.c
14701
147022) iASL compiler
14703
14704Fixed a problem introduced in December that disabled the correct
14705disassembly
14706of Resource Templates
14707
14708
14709----------------------------------------
1471003 December 2003.  Summary of changes for version 20031203:
14711
147121) ACPI CA Core Subsystem:
14713
14714Changed the initialization of Operation Regions during subsystem
14715init to perform two entire walks of the ACPI namespace; The first
14716to initialize the regions themselves, the second to execute the
14717_REG methods.  This fixed some interdependencies across _REG
14718methods found on some machines.
14719
14720Fixed a problem where a Store(Local0, Local1) could simply update
14721the object reference count, and not create a new copy of the
14722object if the Local1 is uninitialized.
14723
14724Implemented support for the _SST reserved method during sleep
14725transitions.
14726
14727Implemented support to clear the SLP_TYP and SLP_EN bits when
14728waking up, this is apparently required by some machines.
14729
14730When sleeping, clear the wake status only if SleepState is not S5.
14731
14732Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14733pointer arithmetic advanced a string pointer too far.
14734
14735Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14736could be returned if the requested table has not been loaded.
14737
14738Within the support for IRQ resources, restructured the handling of
14739the active and edge/level bits.
14740
14741Fixed a few problems in AcpiPsxExecute() where memory could be
14742leaked under certain error conditions.
14743
14744Improved error messages for the cases where the ACPI mode could
14745not be entered.
14746
14747Code and Data Size: Current and previous core subsystem library
14748sizes are shown below.  These are the code and data sizes for the
14749acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14750these values do not include any ACPI driver or OSPM code.  The
14751debug version of the code includes the debug output trace
14752mechanism and has a much larger code and data size.  Note that
14753these values will vary depending on the efficiency of the compiler
14754and the compiler options used during generation.
14755
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
14759  Current Release:
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
14762
147632) iASL Compiler/Disassembler:
14764
14765Implemented a fix for the iASL disassembler where a bad index was
14766generated.  This was most noticeable on 64-bit platforms
14767
14768
14769----------------------------------------
1477029 October 2003.  Summary of changes for version 20031029:
14771
147721) ACPI CA Core Subsystem:
14773
14774
14775Fixed a problem where a level-triggered GPE with an associated
14776_Lxx control method was incorrectly cleared twice.
14777
14778Fixed a problem with the Field support code where an access can
14779occur beyond the end-of-region if the field is non-aligned but
14780extends to the very end of the parent region (resulted in an
14781AE_AML_REGION_LIMIT exception.)
14782
14783Fixed a problem with ACPI Fixed Events where an RT Clock handler
14784would not get invoked on an RTC event.  The RTC event bitmasks for
14785the PM1 registers were not being initialized properly.
14786
14787Implemented support for executing _STA and _INI methods for
14788Processor objects.  Although this is currently not part of the
14789ACPI specification, there is existing ASL code that depends on the
14790init-time execution of these methods.
14791
14792Implemented and deployed a GetDescriptorName function to decode
14793the various types of internal descriptors.  Guards against null
14794descriptors during debug output also.
14795
14796Implemented and deployed a GetNodeName function to extract the 4-
14797character namespace node name.  This function simplifies the debug
14798and error output, as well as guarding against null pointers during
14799output.
14800
14801Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14802simplify the debug and error output of 64-bit integers.  This
14803macro replaces the HIDWORD and LODWORD macros for dumping these
14804integers.
14805
14806Updated the implementation of the Stall() operator to only call
14807AcpiOsStall(), and also return an error if the operand is larger
14808than 255.  This preserves the required behavior of not
14809relinquishing the processor, as would happen if AcpiOsSleep() was
14810called for "long stalls".
14811
14812Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
14813initialized are now treated as NOOPs.
14814
14815Cleaned up a handful of warnings during 64-bit generation.
14816
14817Fixed a reported error where and incorrect GPE number was passed
14818to the GPE dispatch handler.  This value is only used for error
14819output, however.  Used this opportunity to clean up and streamline
14820the GPE dispatch code.
14821
14822Code and Data Size: Current and previous core subsystem library
14823sizes are shown below.  These are the code and data sizes for the
14824acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14825these values do not include any ACPI driver or OSPM code.  The
14826
14827debug version of the code includes the debug output trace
14828mechanism and has a much larger code and data size.  Note that
14829these values will vary depending on the efficiency of the compiler
14830and the compiler options used during generation.
14831
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
14835  Current Release:
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
14838
14839
148402) iASL Compiler/Disassembler:
14841
14842Updated the iASL compiler to return an error if the operand to the
14843Stall() operator is larger than 255.
14844
14845
14846----------------------------------------
1484702 October 2003.  Summary of changes for version 20031002:
14848
14849
148501) ACPI CA Core Subsystem:
14851
14852Fixed a problem with Index Fields where the index was not
14853incremented for fields that require multiple writes to the
14854index/data registers (Fields that are wider than the data
14855register.)
14856
14857Fixed a problem with all Field objects where a write could go
14858beyond the end-of-field if the field was larger than the access
14859granularity and therefore required multiple writes to complete the
14860request.  An extra write beyond the end of the field could happen
14861inadvertently.
14862
14863Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14864would incorrectly be returned if the width of the Data Register
14865was larger than the specified field access width.
14866
14867Completed fixes for LoadTable() and Unload() and verified their
14868operation.  Implemented full support for the "DdbHandle" object
14869throughout the ACPI CA subsystem.
14870
14871Implemented full support for the MADT and ECDT tables in the ACPI
14872CA header files.  Even though these tables are not directly
14873consumed by ACPI CA, the header definitions are useful for ACPI
14874device drivers.
14875
14876Integrated resource descriptor fixes posted to the Linux ACPI
14877list.  This included checks for minimum descriptor length, and
14878support for trailing NULL strings within descriptors that have
14879optional string elements.
14880
14881Code and Data Size: Current and previous core subsystem library
14882sizes are shown below.  These are the code and data sizes for the
14883acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14884these values do not include any ACPI driver or OSPM code.  The
14885debug version of the code includes the debug output trace
14886mechanism and has a much larger code and data size.  Note that
14887these values will vary depending on the efficiency of the compiler
14888and the compiler options used during generation.
14889
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
14893  Current Release:
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
14896
14897
148982) iASL Compiler:
14899
14900Implemented detection of non-ASCII characters within the input
14901source ASL file.  This catches attempts to compile binary (AML)
14902files early in the compile, with an informative error message.
14903
14904Fixed a problem where the disassembler would fault if the output
14905filename could not be generated or if the output file could not be
14906opened.
14907
14908----------------------------------------
1490918 September 2003.  Summary of changes for version 20030918:
14910
14911
149121) ACPI CA Core Subsystem:
14913
14914Found and fixed a longstanding problem with the late execution of
14915the various deferred AML opcodes (such as Operation Regions,
14916Buffer Fields, Buffers, and Packages).  If the name string
14917specified for the name of the new object placed the object in a
14918scope other than the current scope, the initialization/execution
14919of the opcode failed.  The solution to this problem was to
14920implement a mechanism where the late execution of such opcodes
14921does not attempt to lookup/create the name a second time in an
14922incorrect scope.  This fixes the "region size computed
14923incorrectly" problem.
14924
14925Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
14926Global Lock AE_BAD_PARAMETER error.
14927
14928Fixed several 64-bit issues with prototypes, casting and data
14929types.
14930
14931Removed duplicate prototype from acdisasm.h
14932
14933Fixed an issue involving EC Operation Region Detach (Shaohua Li)
14934
14935Code and Data Size: Current and previous core subsystem library
14936sizes are shown below.  These are the code and data sizes for the
14937acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14938these values do not include any ACPI driver or OSPM code.  The
14939debug version of the code includes the debug output trace
14940mechanism and has a much larger code and data size.  Note that
14941these values will vary depending on the efficiency of the compiler
14942and the compiler options used during generation.
14943
14944  Previous Release:
14945
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
14948  Current Release:
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
14951
14952
149532) Linux:
14954
14955Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14956correct sleep time in seconds.
14957
14958----------------------------------------
1495914 July 2003.  Summary of changes for version 20030619:
14960
149611) ACPI CA Core Subsystem:
14962
14963Parse SSDTs in order discovered, as opposed to reverse order
14964(Hrvoje Habjanic)
14965
14966Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14967Klausner,
14968   Nate Lawson)
14969
14970
149712) Linux:
14972
14973Dynamically allocate SDT list (suggested by Andi Kleen)
14974
14975proc function return value cleanups (Andi Kleen)
14976
14977Correctly handle NMI watchdog during long stalls (Andrew Morton)
14978
14979Make it so acpismp=force works (reported by Andrew Morton)
14980
14981
14982----------------------------------------
1498319 June 2003.  Summary of changes for version 20030619:
14984
149851) ACPI CA Core Subsystem:
14986
14987Fix To/FromBCD, eliminating the need for an arch-specific #define.
14988
14989Do not acquire a semaphore in the S5 shutdown path.
14990
14991Fix ex_digits_needed for 0. (Takayoshi Kochi)
14992
14993Fix sleep/stall code reversal. (Andi Kleen)
14994
14995Revert a change having to do with control method calling
14996semantics.
14997
149982) Linux:
14999
15000acpiphp update (Takayoshi Kochi)
15001
15002Export acpi_disabled for sonypi (Stelian Pop)
15003
15004Mention acpismp=force in config help
15005
15006Re-add acpitable.c and acpismp=force. This improves backwards
15007
15008compatibility and also cleans up the code to a significant degree.
15009
15010Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15011
15012----------------------------------------
1501322 May 2003.  Summary of changes for version 20030522:
15014
150151) ACPI CA Core Subsystem:
15016
15017Found and fixed a reported problem where an AE_NOT_FOUND error
15018occurred occasionally during _BST evaluation.  This turned out to
15019be an Owner ID allocation issue where a called method did not get
15020a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15021ID UINT16 would wraparound so that the ID would be the same as the
15022caller's and the called method would delete the caller's
15023namespace.
15024
15025Implemented extended error reporting for control methods that are
15026aborted due to a run-time exception.  Output includes the exact
15027AML instruction that caused the method abort, a dump of the method
15028locals and arguments at the time of the abort, and a trace of all
15029nested control method calls.
15030
15031Modified the interpreter to allow the creation of buffers of zero
15032length from the AML code. Implemented new code to ensure that no
15033attempt is made to actually allocate a memory buffer (of length
15034zero) - instead, a simple buffer object with a NULL buffer pointer
15035and length zero is created.  A warning is no longer issued when
15036the AML attempts to create a zero-length buffer.
15037
15038Implemented a workaround for the "leading asterisk issue" in
15039_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15040asterisk is automatically removed if present in any HID, UID, or
15041CID strings.  The iASL compiler will still flag this asterisk as
15042an error, however.
15043
15044Implemented full support for _CID methods that return a package of
15045multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15046now additionally returns a device _CID list if present.  This
15047required a change to the external interface in order to pass an
15048ACPI_BUFFER object as a parameter since the _CID list is of
15049variable length.
15050
15051Fixed a problem with the new AE_SAME_HANDLER exception where
15052handler initialization code did not know about this exception.
15053
15054Code and Data Size: Current and previous core subsystem library
15055sizes are shown below.  These are the code and data sizes for the
15056acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15057these values do not include any ACPI driver or OSPM code.  The
15058debug version of the code includes the debug output trace
15059mechanism and has a much larger code and data size.  Note that
15060these values will vary depending on the efficiency of the compiler
15061and the compiler options used during generation.
15062
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
15066  Current Release:
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
15069
15070
150712) Linux:
15072
15073Fixed a bug in which we would reinitialize the ACPI interrupt
15074after it was already working, thus disabling all ACPI and the IRQs
15075for any other device sharing the interrupt. (Thanks to Stian
15076Jordet)
15077
15078Toshiba driver update (John Belmonte)
15079
15080Return only 0 or 1 for our interrupt handler status (Andrew
15081Morton)
15082
15083
150843) iASL Compiler:
15085
15086Fixed a reported problem where multiple (nested) ElseIf()
15087statements were not handled correctly by the compiler, resulting
15088in incorrect warnings and incorrect AML code.  This was a problem
15089in both the ASL parser and the code generator.
15090
15091
150924) Documentation:
15093
15094Added changes to existing interfaces, new exception codes, and new
15095text concerning reference count object management versus garbage
15096collection.
15097
15098----------------------------------------
1509909 May 2003.  Summary of changes for version 20030509.
15100
15101
151021) ACPI CA Core Subsystem:
15103
15104Changed the subsystem initialization sequence to hold off
15105installation of address space handlers until the hardware has been
15106initialized and the system has entered ACPI mode.  This is because
15107the installation of space handlers can cause _REG methods to be
15108run.  Previously, the _REG methods could potentially be run before
15109ACPI mode was enabled.
15110
15111Fixed some memory leak issues related to address space handler and
15112notify handler installation.  There were some problems with the
15113reference count mechanism caused by the fact that the handler
15114objects are shared across several namespace objects.
15115
15116Fixed a reported problem where reference counts within the
15117namespace were not properly updated when named objects created by
15118method execution were deleted.
15119
15120Fixed a reported problem where multiple SSDTs caused a deletion
15121issue during subsystem termination.  Restructured the table data
15122structures to simplify the linked lists and the related code.
15123
15124Fixed a problem where the table ID associated with secondary
15125tables (SSDTs) was not being propagated into the namespace objects
15126created by those tables.  This would only present a problem for
15127tables that are unloaded at run-time, however.
15128
15129Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15130type as the length parameter (instead of UINT32).
15131
15132Solved a long-standing problem where an ALREADY_EXISTS error
15133appears on various systems.  This problem could happen when there
15134are multiple PCI_Config operation regions under a single PCI root
15135bus.  This doesn't happen very frequently, but there are some
15136systems that do this in the ASL.
15137
15138Fixed a reported problem where the internal DeleteNode function
15139was incorrectly handling the case where a namespace node was the
15140first in the parent's child list, and had additional peers (not
15141the only child, but first in the list of children.)
15142
15143Code and Data Size: Current core subsystem library sizes are shown
15144below.  These are the code and data sizes for the acpica.lib
15145produced by the Microsoft Visual C++ 6.0 compiler, and these
15146values do not include any ACPI driver or OSPM code.  The debug
15147version of the code includes the debug output trace mechanism and
15148has a much larger code and data size.  Note that these values will
15149vary depending on the efficiency of the compiler and the compiler
15150options used during generation.
15151
15152  Previous Release
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
15155  Current Release:
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
15158
15159
151602) Linux:
15161
15162Allow ":" in OS override string (Ducrot Bruno)
15163
15164Kobject fix (Greg KH)
15165
15166
151673 iASL Compiler/Disassembler:
15168
15169Fixed a problem in the generation of the C source code files (AML
15170is emitted in C source statements for BIOS inclusion) where the
15171Ascii dump that appears within a C comment at the end of each line
15172could cause a compile time error if the AML sequence happens to
15173have an open comment or close comment sequence embedded.
15174
15175
15176----------------------------------------
1517724 April 2003.  Summary of changes for version 20030424.
15178
15179
151801) ACPI CA Core Subsystem:
15181
15182Support for big-endian systems has been implemented.  Most of the
15183support has been invisibly added behind big-endian versions of the
15184ACPI_MOVE_* macros.
15185
15186Fixed a problem in AcpiHwDisableGpeBlock() and
15187AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15188low level hardware write routine.  The offset parameter was
15189actually eliminated from the low level read/write routines because
15190they had become obsolete.
15191
15192Fixed a problem where a handler object was deleted twice during
15193the removal of a fixed event handler.
15194
15195
151962) Linux:
15197
15198A fix for SMP systems with link devices was contributed by
15199
15200Compaq's Dan Zink.
15201
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
15204return value from the ACPI CA core back to the OS.)
15205
15206
15207
152083) Documentation:
15209
15210The ACPI CA Programmer Reference has been updated to reflect new
15211interfaces and changes to existing interfaces.
15212
15213----------------------------------------
1521428 March 2003.  Summary of changes for version 20030328.
15215
152161) ACPI CA Core Subsystem:
15217
15218The GPE Block Device support has been completed.  New interfaces
15219are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15220interfaces (enable, disable, clear, getstatus) have been split
15221into separate interfaces for Fixed Events and General Purpose
15222Events (GPEs) in order to support GPE Block Devices properly.
15223
15224Fixed a problem where the error message "Failed to acquire
15225semaphore" would appear during operations on the embedded
15226controller (EC).
15227
15228Code and Data Size: Current core subsystem library sizes are shown
15229below.  These are the code and data sizes for the acpica.lib
15230produced by the Microsoft Visual C++ 6.0 compiler, and these
15231values do not include any ACPI driver or OSPM code.  The debug
15232version of the code includes the debug output trace mechanism and
15233has a much larger code and data size.  Note that these values will
15234vary depending on the efficiency of the compiler and the compiler
15235options used during generation.
15236
15237  Previous Release
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
15240  Current Release:
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
15243
15244
15245----------------------------------------
1524628 February 2003.  Summary of changes for version 20030228.
15247
15248
152491) ACPI CA Core Subsystem:
15250
15251The GPE handling and dispatch code has been completely overhauled
15252in preparation for support of GPE Block Devices (ID ACPI0006).
15253This affects internal data structures and code only; there should
15254be no differences visible externally.  One new file has been
15255added, evgpeblk.c
15256
15257The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15258fields that are used to determine the GPE block lengths.  The
15259REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15260structures are ignored.  This is per the ACPI specification but it
15261isn'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).
15263
15264In the SCI interrupt handler, removed the read of the PM1_CONTROL
15265register to look at the SCI_EN bit.  On some machines, this read
15266causes an SMI event and greatly slows down SCI events.  (This may
15267in fact be the cause of slow battery status response on some
15268systems.)
15269
15270Fixed a problem where a store of a NULL string to a package object
15271could cause the premature deletion of the object.  This was seen
15272during execution of the battery _BIF method on some systems,
15273resulting in no battery data being returned.
15274
15275Added AcpiWalkResources interface to simplify parsing of resource
15276lists.
15277
15278Code and Data Size: Current core subsystem library sizes are shown
15279below.  These are the code and data sizes for the acpica.lib
15280produced by the Microsoft Visual C++ 6.0 compiler, and these
15281values do not include any ACPI driver or OSPM code.  The debug
15282version of the code includes the debug output trace mechanism and
15283has a much larger code and data size.  Note that these values will
15284vary depending on the efficiency of the compiler and the compiler
15285options used during generation.
15286
15287  Previous Release
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
15290  Current Release:
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
15293
15294
152952) Linux
15296
15297S3 fixes (Ole Rohne)
15298
15299Update ACPI PHP driver with to use new acpi_walk_resource API
15300(Bjorn Helgaas)
15301
15302Add S4BIOS support (Pavel Machek)
15303
15304Map in entire table before performing checksum (John Stultz)
15305
15306Expand the mem= cmdline to allow the specification of reserved and
15307ACPI DATA blocks (Pavel Machek)
15308
15309Never use ACPI on VISWS
15310
15311Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15312
15313Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15314causing us to think that some systems support C2 when they really
15315don't.
15316
15317Do not count processor objects for non-present CPUs (Thanks to
15318Dominik Brodowski)
15319
15320
153213) iASL Compiler:
15322
15323Fixed a problem where ASL include files could not be found and
15324opened.
15325
15326Added support for the _PDC reserved name.
15327
15328
15329----------------------------------------
1533022 January 2003.  Summary of changes for version 20030122.
15331
15332
153331) ACPI CA Core Subsystem:
15334
15335Added a check for constructs of the form:  Store (Local0, Local0)
15336where Local0 is not initialized.  Apparently, some BIOS
15337programmers believe that this is a NOOP.  Since this store doesn't
15338do anything anyway, the new prototype behavior will ignore this
15339error.  This is a case where we can relax the strict checking in
15340the interpreter in the name of compatibility.
15341
15342
153432) Linux
15344
15345The AcpiSrc Source Conversion Utility has been released with the
15346Linux package for the first time.  This is the utility that is
15347used to convert the ACPI CA base source code to the Linux version.
15348
15349(Both) Handle P_BLK lengths shorter than 6 more gracefully
15350
15351(Both) Move more headers to include/acpi, and delete an unused
15352header.
15353
15354(Both) Move drivers/acpi/include directory to include/acpi
15355
15356(Both) Boot functions don't use cmdline, so don't pass it around
15357
15358(Both) Remove include of unused header (Adrian Bunk)
15359
15360(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15361the
15362former now also includes the latter, acpiphp.h only needs the one,
15363now.
15364
15365(2.5) Make it possible to select method of bios restoring after S3
15366resume. [=> no more ugly ifdefs] (Pavel Machek)
15367
15368(2.5) Make proc write interfaces work (Pavel Machek)
15369
15370(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15371
15372(2.5) Break out ACPI Perf code into its own module, under cpufreq
15373(Dominik Brodowski)
15374
15375(2.4) S4BIOS support (Ducrot Bruno)
15376
15377(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15378Visinoni)
15379
15380
153813) iASL Compiler:
15382
15383Added support to disassemble SSDT and PSDTs.
15384
15385Implemented support to obtain SSDTs from the Windows registry if
15386available.
15387
15388
15389----------------------------------------
1539009 January 2003.  Summary of changes for version 20030109.
15391
153921) ACPI CA Core Subsystem:
15393
15394Changed the behavior of the internal Buffer-to-String conversion
15395function.  The current ACPI specification states that the contents
15396of the buffer are "converted to a string of two-character
15397hexadecimal numbers, each separated by a space".  Unfortunately,
15398this definition is not backwards compatible with existing ACPI 1.0
15399implementations (although the behavior was not defined in the ACPI
154001.0 specification).  The new behavior simply copies data from the
15401buffer to the string until a null character is found or the end of
15402the buffer is reached.  The new String object is always null
15403terminated.  This problem was seen during the generation of _BIF
15404battery data where incorrect strings were returned for battery
15405type, etc.  This will also require an errata to the ACPI
15406specification.
15407
15408Renamed all instances of NATIVE_UINT and NATIVE_INT to
15409ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15410
15411Copyright in all module headers (both Linux and non-Linux) has be
15412updated to 2003.
15413
15414Code and Data Size: Current core subsystem library sizes are shown
15415below.  These are the code and data sizes for the acpica.lib
15416produced by the Microsoft Visual C++ 6.0 compiler, and these
15417values do not include any ACPI driver or OSPM code.  The debug
15418version of the code includes the debug output trace mechanism and
15419has a much larger code and data size.  Note that these values will
15420vary depending on the efficiency of the compiler and the compiler
15421options used during generation.
15422
15423  Previous Release
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
15426  Current Release:
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
15429
15430
154312) Linux
15432
15433Fixed an oops on module insertion/removal (Matthew Tippett)
15434
15435(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15436
15437(2.5) Replace pr_debug (Randy Dunlap)
15438
15439(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15440
15441(Both) Eliminate spawning of thread from timer callback, in favor
15442of schedule_work()
15443
15444(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15445
15446(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15447
15448(Both) Add missing statics to button.c (Pavel Machek)
15449
15450Several changes have been made to the source code translation
15451utility that generates the Linux Code in order to make the code
15452more "Linux-like":
15453
15454All typedefs on structs and unions have been removed in keeping
15455with the Linux coding style.
15456
15457Removed the non-Linux SourceSafe module revision number from each
15458module header.
15459
15460Completed major overhaul of symbols to be lowercase for linux.
15461Doubled the number of symbols that are lowercase.
15462
15463Fixed a problem where identifiers within procedure headers and
15464within quotes were not fully lower cased (they were left with a
15465starting capital.)
15466
15467Some C macros whose only purpose is to allow the generation of 16-
15468bit code are now completely removed in the Linux code, increasing
15469readability and maintainability.
15470
15471----------------------------------------
15472
1547312 December 2002.  Summary of changes for version 20021212.
15474
15475
154761) ACPI CA Core Subsystem:
15477
15478Fixed a problem where the creation of a zero-length AML Buffer
15479would cause a fault.
15480
15481Fixed a problem where a Buffer object that pointed to a static AML
15482buffer (in an ACPI table) could inadvertently be deleted, causing
15483memory corruption.
15484
15485Fixed a problem where a user buffer (passed in to the external
15486ACPI CA interfaces) could be overwritten if the buffer was too
15487small to complete the operation, causing memory corruption.
15488
15489Fixed a problem in the Buffer-to-String conversion code where a
15490string of length one was always returned, regardless of the size
15491of the input Buffer object.
15492
15493Removed the NATIVE_CHAR data type across the entire source due to
15494lack of need and lack of consistent use.
15495
15496Code and Data Size: Current core subsystem library sizes are shown
15497below.  These are the code and data sizes for the acpica.lib
15498produced by the Microsoft Visual C++ 6.0 compiler, and these
15499values do not include any ACPI driver or OSPM code.  The debug
15500version of the code includes the debug output trace mechanism and
15501has a much larger code and data size.  Note that these values will
15502vary depending on the efficiency of the compiler and the compiler
15503options used during generation.
15504
15505  Previous Release
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
15508  Current Release:
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
15511
15512
15513----------------------------------------
1551405 December 2002.  Summary of changes for version 20021205.
15515
155161) ACPI CA Core Subsystem:
15517
15518Fixed a problem where a store to a String or Buffer object could
15519cause corruption of the DSDT if the object type being stored was
15520the same as the target object type and the length of the object
15521being stored was equal to or smaller than the original (existing)
15522target object.  This was seen to cause corruption of battery _BIF
15523buffers if the _BIF method modified the buffer on the fly.
15524
15525Fixed a problem where an internal error was generated if a control
15526method invocation was used in an OperationRegion, Buffer, or
15527Package declaration.  This was caused by the deferred parsing of
15528the control method and thus the deferred creation of the internal
15529method object.  The solution to this problem was to create the
15530internal method object at the moment the method is encountered in
15531the first pass - so that subsequent references to the method will
15532able to obtain the required parameter count and thus properly
15533parse the method invocation.  This problem presented itself as an
15534AE_AML_INTERNAL during the pass 1 parse phase during table load.
15535
15536Fixed a problem where the internal String object copy routine did
15537not always allocate sufficient memory for the target String object
15538and caused memory corruption.  This problem was seen to cause
15539"Allocation already present in list!" errors as memory allocation
15540became corrupted.
15541
15542Implemented a new function for the evaluation of namespace objects
15543that allows the specification of the allowable return object
15544types.  This simplifies a lot of code that checks for a return
15545object of one or more specific objects returned from the
15546evaluation (such as _STA, etc.)  This may become and external
15547function if it would be useful to ACPI-related drivers.
15548
15549Completed another round of prefixing #defines with "ACPI_" for
15550clarity.
15551
15552Completed additional code restructuring to allow more modular
15553linking for iASL compiler and AcpiExec.  Several files were split
15554creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15555
15556Implemented an abort mechanism to terminate an executing control
15557method via the AML debugger.  This feature is useful for debugging
15558control methods that depend (wait) for specific hardware
15559responses.
15560
15561Code and Data Size: Current core subsystem library sizes are shown
15562below.  These are the code and data sizes for the acpica.lib
15563produced by the Microsoft Visual C++ 6.0 compiler, and these
15564values do not include any ACPI driver or OSPM code.  The debug
15565version of the code includes the debug output trace mechanism and
15566has a much larger code and data size.  Note that these values will
15567vary depending on the efficiency of the compiler and the compiler
15568options used during generation.
15569
15570  Previous Release
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
15573  Current Release:
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
15576
15577
155782) iASL Compiler/Disassembler
15579
15580Fixed a compiler code generation problem for "Interrupt" Resource
15581Descriptors.  If specified in the ASL, the optional "Resource
15582Source Index" and "Resource Source" fields were not inserted into
15583the correct location within the AML resource descriptor, creating
15584an invalid descriptor.
15585
15586Fixed a disassembler problem for "Interrupt" resource descriptors.
15587The optional "Resource Source Index" and "Resource Source" fields
15588were ignored.
15589
15590
15591----------------------------------------
1559222 November 2002.  Summary of changes for version 20021122.
15593
15594
155951) ACPI CA Core Subsystem:
15596
15597Fixed a reported problem where an object stored to a Method Local
15598or Arg was not copied to a new object during the store - the
15599object pointer was simply copied to the Local/Arg.  This caused
15600all subsequent operations on the Local/Arg to also affect the
15601original source of the store operation.
15602
15603Fixed a problem where a store operation to a Method Local or Arg
15604was not completed properly if the Local/Arg contained a reference
15605(from RefOf) to a named field.  The general-purpose store-to-
15606namespace-node code is now used so that this case is handled
15607automatically.
15608
15609Fixed a problem where the internal object copy routine would cause
15610a protection fault if the object being copied was a Package and
15611contained either 1) a NULL package element or 2) a nested sub-
15612package.
15613
15614Fixed a problem with the GPE initialization that resulted from an
15615ambiguity in the ACPI specification.  One section of the
15616specification states that both the address and length of the GPE
15617block must be zero if the block is not supported.  Another section
15618implies that only the address need be zero if the block is not
15619supported.  The code has been changed so that both the address and
15620the length must be non-zero to indicate a valid GPE block (i.e.,
15621if either the address or the length is zero, the GPE block is
15622invalid.)
15623
15624Code and Data Size: Current core subsystem library sizes are shown
15625below.  These are the code and data sizes for the acpica.lib
15626produced by the Microsoft Visual C++ 6.0 compiler, and these
15627values do not include any ACPI driver or OSPM code.  The debug
15628version of the code includes the debug output trace mechanism and
15629has a much larger code and data size.  Note that these values will
15630vary depending on the efficiency of the compiler and the compiler
15631options used during generation.
15632
15633  Previous Release
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
15636  Current Release:
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
15639
15640
156412) Linux
15642
15643Cleaned up EC driver. Exported an external EC read/write
15644interface. By going through this, other drivers (most notably
15645sonypi) will be able to serialize access to the EC.
15646
15647
156483) iASL Compiler/Disassembler
15649
15650Implemented support to optionally generate include files for both
15651ASM and C (the -i switch).  This simplifies BIOS development by
15652automatically creating include files that contain external
15653declarations for the symbols that are created within the
15654
15655(optionally generated) ASM and C AML source files.
15656
15657
15658----------------------------------------
1565915 November 2002.  Summary of changes for version 20021115.
15660
156611) ACPI CA Core Subsystem:
15662
15663Fixed a memory leak problem where an error during resolution of
15664
15665method arguments during a method invocation from another method
15666failed to cleanup properly by deleting all successfully resolved
15667argument objects.
15668
15669Fixed a problem where the target of the Index() operator was not
15670correctly constructed if the source object was a package.  This
15671problem has not been detected because the use of a target operand
15672with Index() is very rare.
15673
15674Fixed a problem with the Index() operator where an attempt was
15675made to delete the operand objects twice.
15676
15677Fixed a problem where an attempt was made to delete an operand
15678twice during execution of the CondRefOf() operator if the target
15679did not exist.
15680
15681Implemented the first of perhaps several internal create object
15682functions that create and initialize a specific object type.  This
15683consolidates duplicated code wherever the object is created, thus
15684shrinking the size of the subsystem.
15685
15686Implemented improved debug/error messages for errors that occur
15687during nested method invocations.  All executing method pathnames
15688are displayed (with the error) as the call stack is unwound - thus
15689simplifying debug.
15690
15691Fixed a problem introduced in the 10/02 release that caused
15692premature deletion of a buffer object if a buffer was used as an
15693ASL operand where an integer operand is required (Thus causing an
15694implicit object conversion from Buffer to Integer.)  The change in
15695the 10/02 release was attempting to fix a memory leak (albeit
15696incorrectly.)
15697
15698Code and Data Size: Current core subsystem library sizes are shown
15699below.  These are the code and data sizes for the acpica.lib
15700produced by the Microsoft Visual C++ 6.0 compiler, and these
15701values do not include any ACPI driver or OSPM code.  The debug
15702version of the code includes the debug output trace mechanism and
15703has a much larger code and data size.  Note that these values will
15704vary depending on the efficiency of the compiler and the compiler
15705options used during generation.
15706
15707  Previous Release
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
15710  Current Release:
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
15713
15714
157152) Linux
15716
15717Changed the implementation of the ACPI semaphores to use down()
15718instead of down_interruptable().  It is important that the
15719execution of ACPI control methods not be interrupted by signals.
15720Methods must run to completion, or the system may be left in an
15721unknown/unstable state.
15722
15723Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15724(Shawn Starr)
15725
15726
157273) iASL Compiler/Disassembler
15728
15729
15730Changed the default location of output files.  All output files
15731are now placed in the current directory by default instead of in
15732the directory of the source file.  This change may affect some
15733existing makefiles, but it brings the behavior of the compiler in
15734line with other similar tools.  The location of the output files
15735can be overridden with the -p command line switch.
15736
15737
15738----------------------------------------
1573911 November 2002.  Summary of changes for version 20021111.
15740
15741
157420) ACPI Specification 2.0B is released and is now available at:
15743http://www.acpi.info/index.html
15744
15745
157461) ACPI CA Core Subsystem:
15747
15748Implemented support for the ACPI 2.0 SMBus Operation Regions.
15749This includes the early detection and handoff of the request to
15750the SMBus region handler (avoiding all of the complex field
15751support code), and support for the bidirectional return packet
15752from an SMBus write operation.  This paves the way for the
15753development of SMBus drivers in each host operating system.
15754
15755Fixed a problem where the semaphore WAIT_FOREVER constant was
15756defined as 32 bits, but must be 16 bits according to the ACPI
15757specification.  This had the side effect of causing ASL
15758Mutex/Event timeouts even though the ASL code requested a wait
15759forever.  Changed all internal references to the ACPI timeout
15760parameter to 16 bits to prevent future problems.  Changed the name
15761of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15762
15763Code and Data Size: Current core subsystem library sizes are shown
15764below.  These are the code and data sizes for the acpica.lib
15765produced by the Microsoft Visual C++ 6.0 compiler, and these
15766values do not include any ACPI driver or OSPM code.  The debug
15767version of the code includes the debug output trace mechanism and
15768has a much larger code and data size.  Note that these values will
15769vary depending on the efficiency of the compiler and the compiler
15770options used during generation.
15771
15772  Previous Release
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
15775  Current Release:
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
15778
15779
157802) Linux
15781
15782Module loading/unloading fixes (John Cagle)
15783
15784
157853) iASL Compiler/Disassembler
15786
15787Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15788
15789Implemented support for the disassembly of all SMBus protocol
15790keywords (SMBQuick, SMBWord, etc.)
15791
15792----------------------------------------
1579301 November 2002.  Summary of changes for version 20021101.
15794
15795
157961) ACPI CA Core Subsystem:
15797
15798Fixed a problem where platforms that have a GPE1 block but no GPE0
15799block were not handled correctly.  This resulted in a "GPE
15800overlap" error message.  GPE0 is no longer required.
15801
15802Removed code added in the previous release that inserted nodes
15803into the namespace in alphabetical order.  This caused some side-
15804effects on various machines.  The root cause of the problem is
15805still under investigation since in theory, the internal ordering
15806of the namespace nodes should not matter.
15807
15808
15809Enhanced error reporting for the case where a named object is not
15810found during control method execution.  The full ACPI namepath
15811(name reference) of the object that was not found is displayed in
15812this case.
15813
15814Note: as a result of the overhaul of the namespace object types in
15815the previous release, the namespace nodes for the predefined
15816scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
15817instead of ACPI_TYPE_ANY.  This simplifies the namespace
15818management code but may affect code that walks the namespace tree
15819looking for specific object types.
15820
15821Code and Data Size: Current core subsystem library sizes are shown
15822below.  These are the code and data sizes for the acpica.lib
15823produced by the Microsoft Visual C++ 6.0 compiler, and these
15824values do not include any ACPI driver or OSPM code.  The debug
15825version of the code includes the debug output trace mechanism and
15826has a much larger code and data size.  Note that these values will
15827vary depending on the efficiency of the compiler and the compiler
15828options used during generation.
15829
15830  Previous Release
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
15833  Current Release:
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
15836
15837
158382) Linux
15839
15840Fixed a problem introduced in the previous release where the
15841Processor and Thermal objects were not recognized and installed in
15842/proc.  This was related to the scope type change described above.
15843
15844
158453) iASL Compiler/Disassembler
15846
15847Implemented the -g option to get all of the required ACPI tables
15848from the registry and save them to files (Windows version of the
15849compiler only.)  The required tables are the FADT, FACS, and DSDT.
15850
15851Added ACPI table checksum validation during table disassembly in
15852order to catch corrupted tables.
15853
15854
15855----------------------------------------
1585622 October 2002.  Summary of changes for version 20021022.
15857
158581) ACPI CA Core Subsystem:
15859
15860Implemented a restriction on the Scope operator that the target
15861must already exist in the namespace at the time the operator is
15862encountered (during table load or method execution).  In other
15863words, forward references are not allowed and Scope() cannot
15864create a new object. This changes the previous behavior where the
15865interpreter would create the name if not found.  This new behavior
15866correctly enables the search-to-root algorithm during namespace
15867lookup of the target name.  Because of this upsearch, this fixes
15868the known Compaq _SB_.OKEC problem and makes both the AML
15869interpreter and iASL compiler compatible with other ACPI
15870implementations.
15871
15872Completed a major overhaul of the internal ACPI object types for
15873the ACPI Namespace and the associated operand objects.  Many of
15874these types had become obsolete with the introduction of the two-
15875pass namespace load.  This cleanup simplifies the code and makes
15876the entire namespace load mechanism much clearer and easier to
15877understand.
15878
15879Improved debug output for tracking scope opening/closing to help
15880diagnose scoping issues.  The old scope name as well as the new
15881scope name are displayed.  Also improved error messages for
15882problems with ASL Mutex objects and error messages for GPE
15883problems.
15884
15885Cleaned up the namespace dump code, removed obsolete code.
15886
15887All string output (for all namespace/object dumps) now uses the
15888common ACPI string output procedure which handles escapes properly
15889and does not emit non-printable characters.
15890
15891Fixed some issues with constants in the 64-bit version of the
15892local C library (utclib.c)
15893
15894
158952) Linux
15896
15897EC Driver:  No longer attempts to acquire the Global Lock at
15898interrupt level.
15899
15900
159013) iASL Compiler/Disassembler
15902
15903Implemented ACPI 2.0B grammar change that disallows all Type 1 and
159042 opcodes outside of a control method.  This means that the
15905"executable" operators (versus the "namespace" operators) cannot
15906be used at the table level; they can only be used within a control
15907method.
15908
15909Implemented the restriction on the Scope() operator where the
15910target must already exist in the namespace at the time the
15911operator is encountered (during ASL compilation). In other words,
15912forward references are not allowed and Scope() cannot create a new
15913object.  This makes the iASL compiler compatible with other ACPI
15914implementations and makes the Scope() implementation adhere to the
15915ACPI specification.
15916
15917Fixed a problem where namepath optimization for the Alias operator
15918was optimizing the wrong path (of the two namepaths.)  This caused
15919a "Missing alias link" error message.
15920
15921Fixed a problem where an "unknown reserved name" warning could be
15922incorrectly generated for names like "_SB" when the trailing
15923underscore is not used in the original ASL.
15924
15925Fixed a problem where the reserved name check did not handle
15926NamePaths with multiple NameSegs correctly.  The first nameseg of
15927the NamePath was examined instead of the last NameSeg.
15928
15929
15930----------------------------------------
15931
1593202 October 2002.  Summary of changes for this release.
15933
15934
159351) ACPI CA Core Subsystem version 20021002:
15936
15937Fixed a problem where a store/copy of a string to an existing
15938string did not always set the string length properly in the String
15939object.
15940
15941Fixed a reported problem with the ToString operator where the
15942behavior was identical to the ToHexString operator instead of just
15943simply converting a raw buffer to a string data type.
15944
15945Fixed a problem where CopyObject and the other "explicit"
15946conversion operators were not updating the internal namespace node
15947type as part of the store operation.
15948
15949Fixed a memory leak during implicit source operand conversion
15950where the original object was not deleted if it was converted to a
15951new object of a different type.
15952
15953Enhanced error messages for all problems associated with namespace
15954lookups.  Common procedure generates and prints the lookup name as
15955well as the formatted status.
15956
15957Completed implementation of a new design for the Alias support
15958within the namespace.  The existing design did not handle the case
15959where a new object was assigned to one of the two names due to the
15960use of an explicit conversion operator, resulting in the two names
15961pointing to two different objects.  The new design simply points
15962the Alias name to the original name node - not to the object.
15963This results in a level of indirection that must be handled in the
15964name resolution mechanism.
15965
15966Code and Data Size: Current core subsystem library sizes are shown
15967below.  These are the code and data sizes for the acpica.lib
15968produced by the Microsoft Visual C++ 6.0 compiler, and these
15969values do not include any ACPI driver or OSPM code.  The debug
15970version of the code includes the debug output trace mechanism and
15971has a larger code and data size.  Note that these values will vary
15972depending on the efficiency of the compiler and the compiler
15973options used during generation.
15974
15975  Previous Release
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
15978  Current Release:
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
15981
15982
159832) Linux
15984
15985Initialize thermal driver's timer before it is used. (Knut
15986Neumann)
15987
15988Allow handling negative celsius values. (Kochi Takayoshi)
15989
15990Fix thermal management and make trip points. R/W (Pavel Machek)
15991
15992Fix /proc/acpi/sleep. (P. Christeas)
15993
15994IA64 fixes. (David Mosberger)
15995
15996Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15997
15998Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15999Brodowski)
16000
16001
160023) iASL Compiler/Disassembler
16003
16004Clarified some warning/error messages.
16005
16006
16007----------------------------------------
1600818 September 2002.  Summary of changes for this release.
16009
16010
160111) ACPI CA Core Subsystem version 20020918:
16012
16013Fixed a reported problem with reference chaining (via the Index()
16014and RefOf() operators) in the ObjectType() and SizeOf() operators.
16015The definition of these operators includes the dereferencing of
16016all chained references to return information on the base object.
16017
16018Fixed a problem with stores to indexed package elements - the
16019existing code would not complete the store if an "implicit
16020conversion" was not performed.  In other words, if the existing
16021object (package element) was to be replaced completely, the code
16022didn't handle this case.
16023
16024Relaxed typechecking on the ASL "Scope" operator to allow the
16025target name to refer to an object of type Integer, String, or
16026Buffer, in addition to the scoping object types (Device,
16027predefined Scopes, Processor, PowerResource, and ThermalZone.)
16028This allows existing AML code that has workarounds for a bug in
16029Windows to function properly.  A warning is issued, however.  This
16030affects both the AML interpreter and the iASL compiler. Below is
16031an example of this type of ASL code:
16032
16033      Name(DEB,0x00)
16034      Scope(DEB)
16035      {
16036
16037Fixed some reported problems with 64-bit integer support in the
16038local implementation of C library functions (clib.c)
16039
16040
160412) Linux
16042
16043Use ACPI fix map region instead of IOAPIC region, since it is
16044undefined in non-SMP.
16045
16046Ensure that the SCI has the proper polarity and trigger, even on
16047systems that do not have an interrupt override entry in the MADT.
16048
160492.5 big driver reorganization (Pat Mochel)
16050
16051Use early table mapping code from acpitable.c (Andi Kleen)
16052
16053New blacklist entries (Andi Kleen)
16054
16055Blacklist improvements. Split blacklist code out into a separate
16056file. Move checking the blacklist to very early. Previously, we
16057would use ACPI tables, and then halfway through init, check the
16058blacklist -- too late. Now, it's early enough to completely fall-
16059back to non-ACPI.
16060
16061
160623) iASL Compiler/Disassembler version 20020918:
16063
16064Fixed a problem where the typechecking code didn't know that an
16065alias could point to a method.  In other words, aliases were not
16066being dereferenced during typechecking.
16067
16068
16069----------------------------------------
1607029 August 2002.  Summary of changes for this release.
16071
160721) ACPI CA Core Subsystem Version 20020829:
16073
16074If the target of a Scope() operator already exists, it must be an
16075object type that actually opens a scope -- such as a Device,
16076Method, Scope, etc.  This is a fatal runtime error.  Similar error
16077check has been added to the iASL compiler also.
16078
16079Tightened up the namespace load to disallow multiple names in the
16080same scope.  This previously was allowed if both objects were of
16081the same type.  (i.e., a lookup was the same as entering a new
16082name).
16083
16084
160852) Linux
16086
16087Ensure that the ACPI interrupt has the proper trigger and
16088polarity.
16089
16090local_irq_disable is extraneous. (Matthew Wilcox)
16091
16092Make "acpi=off" actually do what it says, and not use the ACPI
16093interpreter *or* the tables.
16094
16095Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16096Takayoshi)
16097
16098
160993) iASL Compiler/Disassembler  Version 20020829:
16100
16101Implemented namepath optimization for name declarations.  For
16102example, a declaration like "Method (\_SB_.ABCD)" would get
16103optimized to "Method (ABCD)" if the declaration is within the
16104\_SB_ scope.  This optimization is in addition to the named
16105reference path optimization first released in the previous
16106version. This would seem to complete all possible optimizations
16107for namepaths within the ASL/AML.
16108
16109If the target of a Scope() operator already exists, it must be an
16110object type that actually opens a scope -- such as a Device,
16111Method, Scope, etc.
16112
16113Implemented a check and warning for unreachable code in the same
16114block below a Return() statement.
16115
16116Fixed a problem where the listing file was not generated if the
16117compiler aborted if the maximum error count was exceeded (200).
16118
16119Fixed a problem where the typechecking of method return values was
16120broken.  This includes the check for a return value when the
16121method is invoked as a TermArg (a return value is expected.)
16122
16123Fixed a reported problem where EOF conditions during a quoted
16124string or comment caused a fault.
16125
16126
16127----------------------------------------
1612815 August 2002.  Summary of changes for this release.
16129
161301) ACPI CA Core Subsystem Version 20020815:
16131
16132Fixed a reported problem where a Store to a method argument that
16133contains a reference did not perform the indirect store correctly.
16134This problem was created during the conversion to the new
16135reference object model - the indirect store to a method argument
16136code was not updated to reflect the new model.
16137
16138Reworked the ACPI mode change code to better conform to ACPI 2.0,
16139handle corner cases, and improve code legibility (Kochi Takayoshi)
16140
16141Fixed a problem with the pathname parsing for the carat (^)
16142prefix.  The heavy use of the carat operator by the new namepath
16143optimization in the iASL compiler uncovered a problem with the AML
16144interpreter handling of this prefix.  In the case where one or
16145more carats precede a single nameseg, the nameseg was treated as
16146standalone and the search rule (to root) was inadvertently
16147applied.  This could cause both the iASL compiler and the
16148interpreter to find the wrong object or to miss the error that
16149should occur if the object does not exist at that exact pathname.
16150
16151Found and fixed the problem where the HP Pavilion DSDT would not
16152load.  This was a relatively minor tweak to the table loading code
16153(a problem caused by the unexpected encounter with a method
16154invocation not within a control method), but it does not solve the
16155overall issue of the execution of AML code at the table level.
16156This investigation is still ongoing.
16157
16158Code and Data Size: Current core subsystem library sizes are shown
16159below.  These are the code and data sizes for the acpica.lib
16160produced by the Microsoft Visual C++ 6.0 compiler, and these
16161values do not include any ACPI driver or OSPM code.  The debug
16162version of the code includes the debug output trace mechanism and
16163has a larger code and data size.  Note that these values will vary
16164depending on the efficiency of the compiler and the compiler
16165options used during generation.
16166
16167  Previous Release
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
16170  Current Release:
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
16173
16174
161752) Linux
16176
16177Remove redundant slab.h include (Brad Hards)
16178
16179Fix several bugs in thermal.c (Herbert Nachtnebel)
16180
16181Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16182
16183Change acpi_system_suspend to use updated irq functions (Pavel
16184Machek)
16185
16186Export acpi_get_firmware_table (Matthew Wilcox)
16187
16188Use proper root proc entry for ACPI (Kochi Takayoshi)
16189
16190Fix early-boot table parsing (Bjorn Helgaas)
16191
16192
161933) iASL Compiler/Disassembler
16194
16195Reworked the compiler options to make them more consistent and to
16196use two-letter options where appropriate.  We were running out of
16197sensible letters.   This may break some makefiles, so check the
16198current options list by invoking the compiler with no parameters.
16199
16200Completed the design and implementation of the ASL namepath
16201optimization option for the compiler.  This option optimizes all
16202references to named objects to the shortest possible path.  The
16203first attempt tries to utilize a single nameseg (4 characters) and
16204the "search-to-root" algorithm used by the interpreter.  If that
16205cannot be used (because either the name is not in the search path
16206or there is a conflict with another object with the same name),
16207the pathname is optimized using the carat prefix (usually a
16208shorter string than specifying the entire path from the root.)
16209
16210Implemented support to obtain the DSDT from the Windows registry
16211(when the disassembly option is specified with no input file).
16212Added this code as the implementation for AcpiOsTableOverride in
16213the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16214utility) to scan memory for the DSDT to the AcpiOsTableOverride
16215function in the DOS OSL to make the disassembler truly OS
16216independent.
16217
16218Implemented a new option to disassemble and compile in one step.
16219When used without an input filename, this option will grab the
16220DSDT from the local machine, disassemble it, and compile it in one
16221step.
16222
16223Added a warning message for invalid escapes (a backslash followed
16224by any character other than the allowable escapes).  This catches
16225the quoted string error "\_SB_" (which should be "\\_SB_" ).
16226
16227Also, there are numerous instances in the ACPI specification where
16228this error occurs.
16229
16230Added a compiler option to disable all optimizations.  This is
16231basically the "compatibility mode" because by using this option,
16232the AML code will come out exactly the same as other ASL
16233compilers.
16234
16235Added error messages for incorrectly ordered dependent resource
16236functions.  This includes: missing EndDependentFn macro at end of
16237dependent resource list, nested dependent function macros (both
16238start and end), and missing StartDependentFn macro.  These are
16239common errors that should be caught at compile time.
16240
16241Implemented _OSI support for the disassembler and compiler.  _OSI
16242must be included in the namespace for proper disassembly (because
16243the disassembler must know the number of arguments.)
16244
16245Added an "optimization" message type that is optional (off by
16246default).  This message is used for all optimizations - including
16247constant folding, integer optimization, and namepath optimization.
16248
16249----------------------------------------
1625025 July 2002.  Summary of changes for this release.
16251
16252
162531) ACPI CA Core Subsystem Version 20020725:
16254
16255The AML Disassembler has been enhanced to produce compilable ASL
16256code and has been integrated into the iASL compiler (see below) as
16257well as the single-step disassembly for the AML debugger and the
16258disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16259resource templates and macros are fully supported.  The
16260disassembler has been tested on over 30 different AML files,
16261producing identical AML when the resulting disassembled ASL file
16262is recompiled with the same ASL compiler.
16263
16264Modified the Resource Manager to allow zero interrupts and zero
16265dma channels during the GetCurrentResources call.  This was
16266causing problems on some platforms.
16267
16268Added the AcpiOsRedirectOutput interface to the OSL to simplify
16269output redirection for the AcpiOsPrintf and AcpiOsVprintf
16270interfaces.
16271
16272Code and Data Size: Current core subsystem library sizes are shown
16273below.  These are the code and data sizes for the acpica.lib
16274produced by the Microsoft Visual C++ 6.0 compiler, and these
16275values do not include any ACPI driver or OSPM code.  The debug
16276version of the code includes the debug output trace mechanism and
16277has a larger code and data size.  Note that these values will vary
16278depending on the efficiency of the compiler and the compiler
16279options used during generation.
16280
16281  Previous Release
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
16284  Current Release:
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
16287
16288
162892) Linux
16290
16291Fixed a panic in the EC driver (Dominik Brodowski)
16292
16293Implemented checksum of the R/XSDT itself during Linux table scan
16294(Richard Schaal)
16295
16296
162973) iASL compiler
16298
16299The AML disassembler is integrated into the compiler.  The "-d"
16300option invokes the disassembler  to completely disassemble an
16301input AML file, producing as output a text ASL file with the
16302extension ".dsl" (to avoid name collisions with existing .asl
16303source files.)  A future enhancement will allow the disassembler
16304to obtain the BIOS DSDT from the registry under Windows.
16305
16306Fixed a problem with the VendorShort and VendorLong resource
16307descriptors where an invalid AML sequence was created.
16308
16309Implemented a fix for BufferData term in the ASL parser.  It was
16310inadvertently defined twice, allowing invalid syntax to pass and
16311causing reduction conflicts.
16312
16313Fixed a problem where the Ones opcode could get converted to a
16314value of zero if "Ones" was used where a byte, word or dword value
16315was expected.  The 64-bit value is now truncated to the correct
16316size with the correct value.
16317
16318
16319
16320----------------------------------------
1632102 July 2002.  Summary of changes for this release.
16322
16323
163241) ACPI CA Core Subsystem Version 20020702:
16325
16326The Table Manager code has been restructured to add several new
16327features.  Tables that are not required by the core subsystem
16328(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16329validated in any way and are returned from AcpiGetFirmwareTable if
16330requested.  The AcpiOsTableOverride interface is now called for
16331each table that is loaded by the subsystem in order to allow the
16332host to override any table it chooses.  Previously, only the DSDT
16333could be overridden.  Added one new files, tbrsdt.c and
16334tbgetall.c.
16335
16336Fixed a problem with the conversion of internal package objects to
16337external objects (when a package is returned from a control
16338method.)  The return buffer length was set to zero instead of the
16339proper length of the package object.
16340
16341Fixed a reported problem with the use of the RefOf and DeRefOf
16342operators when passing reference arguments to control methods.  A
16343new type of Reference object is used internally for references
16344produced by the RefOf operator.
16345
16346Added additional error messages in the Resource Manager to explain
16347AE_BAD_DATA errors when they occur during resource parsing.
16348
16349Split the AcpiEnableSubsystem into two primitives to enable a
16350finer granularity initialization sequence.  These two calls should
16351be called in this order: AcpiEnableSubsystem (flags),
16352AcpiInitializeObjects (flags).  The flags parameter remains the
16353same.
16354
16355
163562) Linux
16357
16358Updated the ACPI utilities module to understand the new style of
16359fully resolved package objects that are now returned from the core
16360subsystem.  This eliminates errors of the form:
16361
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)
16365
16366The method evaluation utility uses the new buffer allocation
16367scheme instead of calling AcpiEvaluate Object twice.
16368
16369Added support for ECDT. This allows the use of the Embedded
16370
16371Controller before the namespace has been fully initialized, which
16372is necessary for ACPI 2.0 support, and for some laptops to
16373initialize properly. (Laptops using ECDT are still rare, so only
16374limited testing was performed of the added functionality.)
16375
16376Fixed memory leaks in the EC driver.
16377
16378Eliminated a brittle code structure in acpi_bus_init().
16379
16380Eliminated the acpi_evaluate() helper function in utils.c. It is
16381no longer needed since acpi_evaluate_object can optionally
16382allocate memory for the return object.
16383
16384Implemented fix for keyboard hang when getting battery readings on
16385some systems (Stephen White)
16386
16387PCI IRQ routing update (Dominik Brodowski)
16388
16389Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16390support
16391
16392----------------------------------------
1639311 June 2002.  Summary of changes for this release.
16394
16395
163961) ACPI CA Core Subsystem Version 20020611:
16397
16398Fixed a reported problem where constants such as Zero and One
16399appearing within _PRT packages were not handled correctly within
16400the resource manager code.  Originally reported against the ASL
16401compiler because the code generator now optimizes integers to
16402their minimal AML representation (i.e. AML constants if possible.)
16403The _PRT code now handles all AML constant opcodes correctly
16404(Zero, One, Ones, Revision).
16405
16406Fixed a problem with the Concatenate operator in the AML
16407interpreter where a buffer result object was incorrectly marked as
16408not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16409
16410All package sub-objects are now fully resolved before they are
16411returned from the external ACPI interfaces.  This means that name
16412strings are resolved to object handles, and constant operators
16413(Zero, One, Ones, Revision) are resolved to Integers.
16414
16415Implemented immediate resolution of the AML Constant opcodes
16416(Zero, One, Ones, Revision) to Integer objects upon detection
16417within the AML stream. This has simplified and reduced the
16418generated code size of the subsystem by eliminating about 10
16419switch statements for these constants (which previously were
16420contained in Reference objects.)  The complicating issues are that
16421the Zero opcode is used as a "placeholder" for unspecified
16422optional target operands and stores to constants are defined to be
16423no-ops.
16424
16425Code and Data Size: Current core subsystem library sizes are shown
16426below. These are the code and data sizes for the acpica.lib
16427produced by the Microsoft Visual C++ 6.0 compiler, and these
16428values do not include any ACPI driver or OSPM code.  The debug
16429version of the code includes the debug output trace mechanism and
16430has a larger code and data size.  Note that these values will vary
16431depending on the efficiency of the compiler and the compiler
16432options used during generation.
16433
16434  Previous Release
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
16437  Current Release:
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
16440
16441
164422) Linux
16443
16444
16445Added preliminary support for obtaining _TRA data for PCI root
16446bridges (Bjorn Helgaas).
16447
16448
164493) iASL Compiler Version X2046:
16450
16451Fixed a problem where the "_DDN" reserved name was defined to be a
16452control method with one argument.  There are no arguments, and
16453_DDN does not have to be a control method.
16454
16455Fixed a problem with the Linux version of the compiler where the
16456source lines printed with error messages were the wrong lines.
16457This turned out to be the "LF versus CR/LF" difference between
16458Windows and Unix.  This appears to be the longstanding issue
16459concerning listing output and error messages.
16460
16461Fixed a problem with the Linux version of compiler where opcode
16462names within error messages were wrong.  This was caused by a
16463slight difference in the output of the Flex tool on Linux versus
16464Windows.
16465
16466Fixed a problem with the Linux compiler where the hex output files
16467contained some garbage data caused by an internal buffer overrun.
16468
16469
16470----------------------------------------
1647117 May 2002.  Summary of changes for this release.
16472
16473
164741) ACPI CA Core Subsystem Version 20020517:
16475
16476Implemented a workaround to an BIOS bug discovered on the HP
16477OmniBook where the FADT revision number and the table size are
16478inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16479behavior is to fallback to using only the ACPI 1.0 fields of the
16480FADT if the table is too small to be a ACPI 2.0 table as claimed
16481by the revision number.  Although this is a BIOS bug, this is a
16482case where the workaround is simple enough and with no side
16483effects, so it seemed prudent to add it.  A warning message is
16484issued, however.
16485
16486Implemented minimum size checks for the fixed-length ACPI tables -
16487- the FADT and FACS, as well as consistency checks between the
16488revision number and the table size.
16489
16490Fixed a reported problem in the table override support where the
16491new table pointer was incorrectly treated as a physical address
16492instead of a logical address.
16493
16494Eliminated the use of the AE_AML_ERROR exception and replaced it
16495with more descriptive codes.
16496
16497Fixed a problem where an exception would occur if an ASL Field was
16498defined with no named Field Units underneath it (used by some
16499index fields).
16500
16501Code and Data Size: Current core subsystem library sizes are shown
16502below.  These are the code and data sizes for the acpica.lib
16503produced by the Microsoft Visual C++ 6.0 compiler, and these
16504values do not include any ACPI driver or OSPM code.  The debug
16505version of the code includes the debug output trace mechanism and
16506has a larger code and data size.  Note that these values will vary
16507depending on the efficiency of the compiler and the compiler
16508options used during generation.
16509
16510  Previous Release
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
16513  Current Release:
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
16516
16517
16518
165192) Linux
16520
16521Much work done on ACPI init (MADT and PCI IRQ routing support).
16522(Paul D. and Dominik Brodowski)
16523
16524Fix PCI IRQ-related panic on boot (Sam Revitch)
16525
16526Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16527
16528Fix "MHz" typo (Dominik Brodowski)
16529
16530Fix RTC year 2000 issue (Dominik Brodowski)
16531
16532Preclude multiple button proc entries (Eric Brunet)
16533
16534Moved arch-specific code out of include/platform/aclinux.h
16535
165363) iASL Compiler Version X2044:
16537
16538Implemented error checking for the string used in the EISAID macro
16539(Usually used in the definition of the _HID object.)  The code now
16540strictly enforces the PnP format - exactly 7 characters, 3
16541uppercase letters and 4 hex digits.
16542
16543If a raw string is used in the definition of the _HID object
16544(instead of the EISAID macro), the string must contain all
16545alphanumeric characters (e.g., "*PNP0011" is not allowed because
16546of the asterisk.)
16547
16548Implemented checking for invalid use of ACPI reserved names for
16549most of the name creation operators (Name, Device, Event, Mutex,
16550OperationRegion, PowerResource, Processor, and ThermalZone.)
16551Previously, this check was only performed for control methods.
16552
16553Implemented an additional check on the Name operator to emit an
16554error if a reserved name that must be implemented in ASL as a
16555control method is used.  We know that a reserved name must be a
16556method if it is defined with input arguments.
16557
16558The warning emitted when a namespace object reference is not found
16559during the cross reference phase has been changed into an error.
16560The "External" directive should be used for names defined in other
16561modules.
16562
16563
165644) Tools and Utilities
16565
16566The 16-bit tools (adump16 and aexec16) have been regenerated and
16567tested.
16568
16569Fixed a problem with the output of both acpidump and adump16 where
16570the indentation of closing parentheses and brackets was not
16571
16572aligned properly with the parent block.
16573
16574
16575----------------------------------------
1657603 May 2002.  Summary of changes for this release.
16577
16578
165791) ACPI CA Core Subsystem Version 20020503:
16580
16581Added support a new OSL interface that allows the host operating
16582
16583system software to override the DSDT found in the firmware -
16584AcpiOsTableOverride.  With this interface, the OSL can examine the
16585version of the firmware DSDT and replace it with a different one
16586if desired.
16587
16588Added new external interfaces for accessing ACPI registers from
16589device drivers and other system software - AcpiGetRegister and
16590AcpiSetRegister.  This was simply an externalization of the
16591existing AcpiHwBitRegister interfaces.
16592
16593Fixed a regression introduced in the previous build where the
16594ASL/AML CreateField operator always returned an error,
16595"destination must be a NS Node".
16596
16597Extended the maximum time (before failure) to successfully enable
16598ACPI mode to 3 seconds.
16599
16600Code and Data Size: Current core subsystem library sizes are shown
16601below.  These are the code and data sizes for the acpica.lib
16602produced by the Microsoft Visual C++ 6.0 compiler, and these
16603values do not include any ACPI driver or OSPM code.  The debug
16604version of the code includes the debug output trace mechanism and
16605has a larger code and data size.  Note that these values will vary
16606depending on the efficiency of the compiler and the compiler
16607options used during generation.
16608
16609  Previous Release
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
16612  Current Release:
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
16615
16616
166172) Linux
16618
16619Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16620free. While 3 out of 4 of our in-house systems work fine, the last
16621one still hangs when testing the LAPIC timer.
16622
16623Renamed many files in 2.5 kernel release to omit "acpi_" from the
16624name.
16625
16626Added warning on boot for Presario 711FR.
16627
16628Sleep improvements (Pavel Machek)
16629
16630ACPI can now be built without CONFIG_PCI enabled.
16631
16632IA64: Fixed memory map functions (JI Lee)
16633
16634
166353) iASL Compiler Version X2043:
16636
16637Added support to allow the compiler to be integrated into the MS
16638VC++ development environment for one-button compilation of single
16639files or entire projects -- with error-to-source-line mapping.
16640
16641Implemented support for compile-time constant folding for the
16642Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16643specification.  This allows the ASL writer to use expressions
16644instead of Integer/Buffer/String constants in terms that must
16645evaluate to constants at compile time and will also simplify the
16646emitted AML in any such sub-expressions that can be folded
16647(evaluated at compile-time.)  This increases the size of the
16648compiler significantly because a portion of the ACPI CA AML
16649interpreter is included within the compiler in order to pre-
16650evaluate constant expressions.
16651
16652
16653Fixed a problem with the "Unicode" ASL macro that caused the
16654compiler to fault.  (This macro is used in conjunction with the
16655_STR reserved name.)
16656
16657Implemented an AML opcode optimization to use the Zero, One, and
16658Ones opcodes where possible to further reduce the size of integer
16659constants and thus reduce the overall size of the generated AML
16660code.
16661
16662Implemented error checking for new reserved terms for ACPI version
166632.0A.
16664
16665Implemented the -qr option to display the current list of ACPI
16666reserved names known to the compiler.
16667
16668Implemented the -qc option to display the current list of ASL
16669operators that are allowed within constant expressions and can
16670therefore be folded at compile time if the operands are constants.
16671
16672
166734) Documentation
16674
16675Updated the Programmer's Reference for new interfaces, data types,
16676and memory allocation model options.
16677
16678Updated the iASL Compiler User Reference to apply new format and
16679add information about new features and options.
16680
16681----------------------------------------
1668219 April 2002.  Summary of changes for this release.
16683
166841) ACPI CA Core Subsystem Version 20020419:
16685
16686The source code base for the Core Subsystem has been completely
16687cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16688versions.  The Lint option files used are included in the
16689/acpi/generate/lint directory.
16690
16691Implemented enhanced status/error checking across the entire
16692Hardware manager subsystem.  Any hardware errors (reported from
16693the OSL) are now bubbled up and will abort a running control
16694method.
16695
16696
16697Fixed a problem where the per-ACPI-table integer width (32 or 64)
16698was stored only with control method nodes, causing a fault when
16699non-control method code was executed during table loading.  The
16700solution implemented uses a global variable to indicate table
16701width across the entire ACPI subsystem.  Therefore, ACPI CA does
16702not support mixed integer widths across different ACPI tables
16703(DSDT, SSDT).
16704
16705Fixed a problem where NULL extended fields (X fields) in an ACPI
167062.0 ACPI FADT caused the table load to fail.  Although the
16707existing ACPI specification is a bit fuzzy on this topic, the new
16708behavior is to fall back on a ACPI 1.0 field if the corresponding
16709ACPI 2.0 X field is zero (even though the table revision indicates
16710a full ACPI 2.0 table.)  The ACPI specification will be updated to
16711clarify this issue.
16712
16713Fixed a problem with the SystemMemory operation region handler
16714where memory was always accessed byte-wise even if the AML-
16715specified access width was larger than a byte.  This caused
16716problems on systems with memory-mapped I/O.  Memory is now
16717accessed with the width specified.  On systems that do not support
16718non-aligned transfers, a check is made to guarantee proper address
16719alignment before proceeding in order to avoid an AML-caused
16720alignment fault within the kernel.
16721
16722
16723Fixed a problem with the ExtendedIrq resource where only one byte
16724of the 4-byte Irq field was extracted.
16725
16726Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
16727function was out of date and required a rewrite.
16728
16729Code and Data Size: Current core subsystem library sizes are shown
16730below.  These are the code and data sizes for the acpica.lib
16731produced by the Microsoft Visual C++ 6.0 compiler, and these
16732values do not include any ACPI driver or OSPM code.  The debug
16733version of the code includes the debug output trace mechanism and
16734has a larger code and data size.  Note that these values will vary
16735depending on the efficiency of the compiler and the compiler
16736options used during generation.
16737
16738  Previous Release
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
16741  Current Release:
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
16744
16745
167462) Linux
16747
16748PCI IRQ routing fixes (Dominik Brodowski)
16749
16750
167513) iASL Compiler Version X2042:
16752
16753Implemented an additional compile-time error check for a field
16754unit whose size + minimum access width would cause a run-time
16755access beyond the end-of-region.  Previously, only the field size
16756itself was checked.
16757
16758The Core subsystem and iASL compiler now share a common parse
16759object in preparation for compile-time evaluation of the type
167603/4/5 ASL operators.
16761
16762
16763----------------------------------------
16764Summary of changes for this release: 03_29_02
16765
167661) ACPI CA Core Subsystem Version 20020329:
16767
16768Implemented support for late evaluation of TermArg operands to
16769Buffer and Package objects.  This allows complex expressions to be
16770used in the declarations of these object types.
16771
16772Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
167731.0, if the field was larger than 32 bits, it was returned as a
16774buffer - otherwise it was returned as an integer.  In ACPI 2.0,
16775the field is returned as a buffer only if the field is larger than
1677664 bits.  The TableRevision is now considered when making this
16777conversion to avoid incompatibility with existing ASL code.
16778
16779Implemented logical addressing for AcpiOsGetRootPointer.  This
16780allows an RSDP with either a logical or physical address.  With
16781this support, the host OS can now override all ACPI tables with
16782one logical RSDP.  Includes implementation of  "typed" pointer
16783support to allow a common data type for both physical and logical
16784pointers internally.  This required a change to the
16785AcpiOsGetRootPointer interface.
16786
16787Implemented the use of ACPI 2.0 Generic Address Structures for all
16788GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
16789mapped I/O for these ACPI features.
16790
16791Initialization now ignores not only non-required tables (All
16792tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16793not validate the table headers of unrecognized tables.
16794
16795Fixed a problem where a notify handler could only be
16796installed/removed on an object of type Device.  All "notify"
16797
16798objects are now supported -- Devices, Processor, Power, and
16799Thermal.
16800
16801Removed most verbosity from the ACPI_DB_INFO debug level.  Only
16802critical information is returned when this debug level is enabled.
16803
16804Code and Data Size: Current core subsystem library sizes are shown
16805below.  These are the code and data sizes for the acpica.lib
16806produced by the Microsoft Visual C++ 6.0 compiler, and these
16807values do not include any ACPI driver or OSPM code.  The debug
16808version of the code includes the debug output trace mechanism and
16809has a larger code and data size.  Note that these values will vary
16810depending on the efficiency of the compiler and the compiler
16811options used during generation.
16812
16813  Previous Release
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
16816  Current Release:
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
16819
16820
168212) Linux:
16822
16823The processor driver (acpi_processor.c) now fully supports ACPI
168242.0-based processor performance control (e.g. Intel(R)
16825SpeedStep(TM) technology) Note that older laptops that only have
16826the 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
16829transitions will be included in the next version of ospmd.]  The
16830idle handler was modified to more aggressively use C2, and PIIX4
16831errata handling underwent a complete overhaul (big thanks to
16832Dominik Brodowski).
16833
16834Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
16835based devices in the ACPI namespace are now dynamically bound
16836(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
16837This allows, among other things, ACPI to resolve bus numbers for
16838subordinate PCI bridges.
16839
16840Enhanced PCI IRQ routing to get the proper bus number for _PRT
16841entries defined underneath PCI bridges.
16842
16843Added IBM 600E to bad bios list due to invalid _ADR value for
16844PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
16845
16846In the process of adding full MADT support (e.g. IOAPIC) for IA32
16847(acpi.c, mpparse.c) -- stay tuned.
16848
16849Added back visual differentiation between fixed-feature and
16850control-method buttons in dmesg.  Buttons are also subtyped (e.g.
16851button/power/PWRF) to simplify button identification.
16852
16853We no longer use -Wno-unused when compiling debug. Please ignore
16854any "_THIS_MODULE defined but not used" messages.
16855
16856Can now shut down the system using "magic sysrq" key.
16857
16858
168593) iASL Compiler version 2041:
16860
16861Fixed a problem where conversion errors for hex/octal/decimal
16862constants were not reported.
16863
16864Implemented a fix for the General Register template Address field.
16865This field was 8 bits when it should be 64.
16866
16867Fixed a problem where errors/warnings were no longer being emitted
16868within the listing output file.
16869
16870Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16871exactly 4 characters, alphanumeric only.
16872
16873
16874
16875
16876----------------------------------------
16877Summary of changes for this release: 03_08_02
16878
16879
168801) ACPI CA Core Subsystem Version 20020308:
16881
16882Fixed a problem with AML Fields where the use of the "AccessAny"
16883keyword could cause an interpreter error due to attempting to read
16884or write beyond the end of the parent Operation Region.
16885
16886Fixed a problem in the SystemMemory Operation Region handler where
16887an attempt was made to map memory beyond the end of the region.
16888This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16889errors on some Linux systems.
16890
16891Fixed a problem where the interpreter/namespace "search to root"
16892algorithm was not functioning for some object types.  Relaxed the
16893internal restriction on the search to allow upsearches for all
16894external object types as well as most internal types.
16895
16896
168972) Linux:
16898
16899We now use safe_halt() macro versus individual calls to sti | hlt.
16900
16901Writing to the processor limit interface should now work. "echo 1"
16902will increase the limit, 2 will decrease, and 0 will reset to the
16903
16904default.
16905
16906
169073) ASL compiler:
16908
16909Fixed segfault on Linux version.
16910
16911
16912----------------------------------------
16913Summary of changes for this release: 02_25_02
16914
169151) ACPI CA Core Subsystem:
16916
16917
16918Fixed a problem where the GPE bit masks were not initialized
16919properly, causing erratic GPE behavior.
16920
16921Implemented limited support for multiple calling conventions.  The
16922code can be generated with either the VPL (variable parameter
16923list, or "C") convention, or the FPL (fixed parameter list, or
16924"Pascal") convention.  The core subsystem is about 3.4% smaller
16925when generated with FPL.
16926
16927
169282) Linux
16929
16930Re-add some /proc/acpi/event functionality that was lost during
16931the rewrite
16932
16933Resolved issue with /proc events for fixed-feature buttons showing
16934up as the system device.
16935
16936Fixed checks on C2/C3 latencies to be inclusive of maximum values.
16937
16938Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
16939
16940Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
16941
16942Fixed limit interface & usage to fix bugs with passive cooling
16943hysterisis.
16944
16945Restructured PRT support.
16946
16947
16948----------------------------------------
16949Summary of changes for this label: 02_14_02
16950
16951
169521) ACPI CA Core Subsystem:
16953
16954Implemented support in AcpiLoadTable to allow loading of FACS and
16955FADT tables.
16956
16957Support for the now-obsolete interim 0.71 64-bit ACPI tables has
16958been removed.  All 64-bit platforms should be migrated to the ACPI
169592.0 tables.  The actbl71.h header has been removed from the source
16960tree.
16961
16962All C macros defined within the subsystem have been prefixed with
16963"ACPI_" to avoid collision with other system include files.
16964
16965Removed the return value for the two AcpiOsPrint interfaces, since
16966it is never used and causes lint warnings for ignoring the return
16967value.
16968
16969Added error checking to all internal mutex acquire and release
16970calls.  Although a failure from one of these interfaces is
16971probably a fatal system error, these checks will cause the
16972immediate abort of the currently executing method or interface.
16973
16974Fixed a problem where the AcpiSetCurrentResources interface could
16975fault.  This was a side effect of the deployment of the new memory
16976allocation model.
16977
16978Fixed a couple of problems with the Global Lock support introduced
16979in the last major build.  The "common" (1.0/2.0) internal FACS was
16980being overwritten with the FACS signature and clobbering the
16981Global Lock pointer.  Also, the actual firmware FACS was being
16982unmapped after construction of the "common" FACS, preventing
16983access to the actual Global Lock field within it.  The "common"
16984internal FACS is no longer installed as an actual ACPI table; it
16985is used simply as a global.
16986
16987Code and Data Size: Current core subsystem library sizes are shown
16988below.  These are the code and data sizes for the acpica.lib
16989produced by the Microsoft Visual C++ 6.0 compiler, and these
16990values do not include any ACPI driver or OSPM code.  The debug
16991version of the code includes the debug output trace mechanism and
16992has a larger code and data size.  Note that these values will vary
16993depending on the efficiency of the compiler and the compiler
16994options used during generation.
16995
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
16999  Current Release:
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
17002
17003
170042) Linux
17005
17006Updated Linux-specific code for core macro and OSL interface
17007changes described above.
17008
17009Improved /proc/acpi/event. It now can be opened only once and has
17010proper poll functionality.
17011
17012Fixed and restructured power management (acpi_bus).
17013
17014Only create /proc "view by type" when devices of that class exist.
17015
17016Fixed "charging/discharging" bug (and others) in acpi_battery.
17017
17018Improved thermal zone code.
17019
17020
170213) ASL Compiler, version X2039:
17022
17023
17024Implemented the new compiler restriction on ASL String hex/octal
17025escapes to non-null, ASCII values.  An error results if an invalid
17026value is used.  (This will require an ACPI 2.0 specification
17027change.)
17028
17029AML object labels that are output to the optional C and ASM source
17030are now prefixed with both the ACPI table signature and table ID
17031to help guarantee uniqueness within a large BIOS project.
17032
17033
17034----------------------------------------
17035Summary of changes for this label: 02_01_02
17036
170371) ACPI CA Core Subsystem:
17038
17039ACPI 2.0 support is complete in the entire Core Subsystem and the
17040ASL compiler. All new ACPI 2.0 operators are implemented and all
17041other changes for ACPI 2.0 support are complete.  With
17042simultaneous code and data optimizations throughout the subsystem,
17043ACPI 2.0 support has been implemented with almost no additional
17044cost in terms of code and data size.
17045
17046Implemented a new mechanism for allocation of return buffers.  If
17047the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17048be allocated on behalf of the caller.  Consolidated all return
17049buffer validation and allocation to a common procedure.  Return
17050buffers will be allocated via the primary OSL allocation interface
17051since it appears that a separate pool is not needed by most users.
17052If a separate pool is required for these buffers, the caller can
17053still use the original mechanism and pre-allocate the buffer(s).
17054
17055Implemented support for string operands within the DerefOf
17056operator.
17057
17058Restructured the Hardware and Event managers to be table driven,
17059simplifying the source code and reducing the amount of generated
17060code.
17061
17062Split the common read/write low-level ACPI register bitfield
17063procedure into a separate read and write, simplifying the code
17064considerably.
17065
17066Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17067used only a handful of times and didn't have enough critical mass
17068for a separate interface.  Replaced with a common calloc procedure
17069in the core.
17070
17071Fixed a reported problem with the GPE number mapping mechanism
17072that allows GPE1 numbers to be non-contiguous with GPE0.
17073Reorganized the GPE information and shrunk a large array that was
17074originally large enough to hold info for all possible GPEs (256)
17075to simply large enough to hold all GPEs up to the largest GPE
17076number on the machine.
17077
17078Fixed a reported problem with resource structure alignment on 64-
17079bit platforms.
17080
17081Changed the AcpiEnableEvent and AcpiDisableEvent external
17082interfaces to not require any flags for the common case of
17083enabling/disabling a GPE.
17084
17085Implemented support to allow a "Notify" on a Processor object.
17086
17087Most TBDs in comments within the source code have been resolved
17088and eliminated.
17089
17090
17091Fixed a problem in the interpreter where a standalone parent
17092prefix (^) was not handled correctly in the interpreter and
17093debugger.
17094
17095Removed obsolete and unnecessary GPE save/restore code.
17096
17097Implemented Field support in the ASL Load operator.  This allows a
17098table to be loaded from a named field, in addition to loading a
17099table directly from an Operation Region.
17100
17101Implemented timeout and handle support in the external Global Lock
17102interfaces.
17103
17104Fixed a problem in the AcpiDump utility where pathnames were no
17105longer being generated correctly during the dump of named objects.
17106
17107Modified the AML debugger to give a full display of if/while
17108predicates instead of just one AML opcode at a time.  (The
17109predicate can have several nested ASL statements.)  The old method
17110was confusing during single stepping.
17111
17112Code and Data Size: Current core subsystem library sizes are shown
17113below. These are the code and data sizes for the acpica.lib
17114produced by the Microsoft Visual C++ 6.0 compiler, and these
17115values do not include any ACPI driver or OSPM code.  The debug
17116version of the code includes the debug output trace mechanism and
17117has a larger code and data size.  Note that these values will vary
17118depending on the efficiency of the compiler and the compiler
17119options used during generation.
17120
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
17124   Current Release:
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
17127
171282) Linux
17129
17130 Implemented fix for PIIX reverse throttling errata (Processor
17131driver)
17132
17133Added new Limit interface (Processor and Thermal drivers)
17134
17135New thermal policy (Thermal driver)
17136
17137Many updates to /proc
17138
17139Battery "low" event support (Battery driver)
17140
17141Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17142
17143IA32 - IA64 initialization unification, no longer experimental
17144
17145Menuconfig options redesigned
17146
171473) ASL Compiler, version X2037:
17148
17149Implemented several new output features to simplify integration of
17150AML code into  firmware: 1) Output the AML in C source code with
17151labels for each named ASL object.  The    original ASL source code
17152is interleaved as C comments. 2) Output the AML in ASM source code
17153with labels and interleaved ASL    source. 3) Output the AML in
17154raw hex table form, in either C or ASM.
17155
17156Implemented support for optional string parameters to the
17157LoadTable operator.
17158
17159Completed support for embedded escape sequences within string
17160literals.  The compiler now supports all single character escapes
17161as well as the Octal and Hex escapes.  Note: the insertion of a
17162null byte into a string literal (via the hex/octal escape) causes
17163the string to be immediately terminated.  A warning is issued.
17164
17165Fixed a problem where incorrect AML was generated for the case
17166where an ASL namepath consists of a single parent prefix (
17167
17168) with no trailing name segments.
17169
17170The compiler has been successfully generated with a 64-bit C
17171compiler.
17172
17173
17174
17175
17176----------------------------------------
17177Summary of changes for this label: 12_18_01
17178
171791) Linux
17180
17181Enhanced blacklist with reason and severity fields. Any table's
17182signature may now be used to identify a blacklisted system.
17183
17184Call _PIC control method to inform the firmware which interrupt
17185model the OS is using. Turn on any disabled link devices.
17186
17187Cleaned up busmgr /proc error handling (Andreas Dilger)
17188
17189 2) ACPI CA Core Subsystem:
17190
17191Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17192while loop)
17193
17194Completed implementation of the ACPI 2.0 "Continue",
17195"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17196operators.  All new ACPI 2.0 operators are now implemented in both
17197the ASL compiler and the AML interpreter.  The only remaining ACPI
171982.0 task is support for the String data type in the DerefOf
17199operator.  Fixed a problem with AcquireMutex where the status code
17200was lost if the caller had to actually wait for the mutex.
17201
17202Increased the maximum ASL Field size from 64K bits to 4G bits.
17203
17204Completed implementation of the external Global Lock interfaces --
17205AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17206Handler parameters were added.
17207
17208Completed another pass at removing warnings and issues when
17209compiling with 64-bit compilers.  The code now compiles cleanly
17210with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17211add and subtract (diff) macros have changed considerably.
17212
17213
17214Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1721564-bit platforms, 32-bits on all others.  This type is used
17216wherever memory allocation and/or the C sizeof() operator is used,
17217and affects the OSL memory allocation interfaces AcpiOsAllocate
17218and AcpiOsCallocate.
17219
17220Implemented sticky user breakpoints in the AML debugger.
17221
17222Code and Data Size: Current core subsystem library sizes are shown
17223below. These are the code and data sizes for the acpica.lib
17224produced by the Microsoft Visual C++ 6.0 compiler, and these
17225values do not include any ACPI driver or OSPM code.  The debug
17226version of the code includes the debug output trace mechanism and
17227has a larger code and data size. Note that these values will vary
17228depending on the efficiency of the compiler and the compiler
17229options used during generation.
17230
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
17234   Current Release:
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
17237
17238 3) ASL Compiler, version X2034:
17239
17240Now checks for (and generates an error if detected) the use of a
17241Break or Continue statement without an enclosing While statement.
17242
17243
17244Successfully generated the compiler with the Intel 64-bit C
17245compiler.
17246
17247 ----------------------------------------
17248Summary of changes for this label: 12_05_01
17249
17250 1) ACPI CA Core Subsystem:
17251
17252The ACPI 2.0 CopyObject operator is fully implemented.  This
17253operator creates a new copy of an object (and is also used to
17254bypass the "implicit conversion" mechanism of the Store operator.)
17255
17256The ACPI 2.0 semantics for the SizeOf operator are fully
17257implemented.  The change is that performing a SizeOf on a
17258reference object causes an automatic dereference of the object to
17259tha actual value before the size is evaluated. This behavior was
17260undefined in ACPI 1.0.
17261
17262The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17263have been implemented.  The interrupt polarity and mode are now
17264independently set.
17265
17266Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17267appearing in Package objects were not properly converted to
17268integers when the internal Package was converted to an external
17269object (via the AcpiEvaluateObject interface.)
17270
17271Fixed a problem with the namespace object deletion mechanism for
17272objects created by control methods.  There were two parts to this
17273problem: 1) Objects created during the initialization phase method
17274parse were not being deleted, and 2) The object owner ID mechanism
17275to track objects was broken.
17276
17277Fixed a problem where the use of the ASL Scope operator within a
17278control method would result in an invalid opcode exception.
17279
17280Fixed a problem introduced in the previous label where the buffer
17281length required for the _PRT structure was not being returned
17282correctly.
17283
17284Code and Data Size: Current core subsystem library sizes are shown
17285below. These are the code and data sizes for the acpica.lib
17286produced by the Microsoft Visual C++ 6.0 compiler, and these
17287values do not include any ACPI driver or OSPM code.  The debug
17288version of the code includes the debug output trace mechanism and
17289has a larger code and data size.  Note that these values will vary
17290depending on the efficiency of the compiler and the compiler
17291options used during generation.
17292
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
17296
17297  Current Release:
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
17300
17301 2) Linux:
17302
17303Updated all files to apply cleanly against 2.4.16.
17304
17305Added basic PCI Interrupt Routing Table (PRT) support for IA32
17306(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17307version supports both static and dynamic PRT entries, but dynamic
17308entries are treated as if they were static (not yet
17309reconfigurable).  Architecture- specific code to use this data is
17310absent on IA32 but should be available shortly.
17311
17312Changed the initialization sequence to start the ACPI interpreter
17313(acpi_init) prior to initialization of the PCI driver (pci_init)
17314in init/main.c.  This ordering is required to support PRT and
17315facilitate other (future) enhancement.  A side effect is that the
17316ACPI bus driver and certain device drivers can no longer be loaded
17317as modules.
17318
17319Modified the 'make menuconfig' options to allow PCI Interrupt
17320Routing support to be included without the ACPI Bus and other
17321device drivers.
17322
17323 3) ASL Compiler, version X2033:
17324
17325Fixed some issues with the use of the new CopyObject and
17326DataTableRegion operators.  Both are fully functional.
17327
17328 ----------------------------------------
17329Summary of changes for this label: 11_20_01
17330
17331 20 November 2001.  Summary of changes for this release.
17332
17333 1) ACPI CA Core Subsystem:
17334
17335Updated Index support to match ACPI 2.0 semantics.  Storing a
17336Integer, String, or Buffer to an Index of a Buffer will store only
17337the least-significant byte of the source to the Indexed buffer
17338byte.  Multiple writes are not performed.
17339
17340Fixed a problem where the access type used in an AccessAs ASL
17341operator was not recorded correctly into the field object.
17342
17343Fixed a problem where ASL Event objects were created in a
17344signalled state. Events are now created in an unsignalled state.
17345
17346The internal object cache is now purged after table loading and
17347initialization to reduce the use of dynamic kernel memory -- on
17348the assumption that object use is greatest during the parse phase
17349of the entire table (versus the run-time use of individual control
17350methods.)
17351
17352ACPI 2.0 variable-length packages are now fully operational.
17353
17354Code and Data Size: Code and Data optimizations have permitted new
17355feature development with an actual reduction in the library size.
17356Current core subsystem library sizes are shown below.  These are
17357the code and data sizes for the acpica.lib produced by the
17358Microsoft Visual C++ 6.0 compiler, and these values do not include
17359any ACPI driver or OSPM code.  The debug version of the code
17360includes the debug output trace mechanism and has a larger code
17361and data size.  Note that these values will vary depending on the
17362efficiency of the compiler and the compiler options used during
17363generation.
17364
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
17368
17369  Current Release:
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
17372
17373 2) Linux:
17374
17375Enhanced the ACPI boot-time initialization code to allow the use
17376of Local APIC tables for processor enumeration on IA-32, and to
17377pave the way for a fully MPS-free boot (on SMP systems) in the
17378near future.  This functionality replaces
17379arch/i386/kernel/acpitables.c, which was introduced in an earlier
173802.4.15-preX release.  To enable this feature you must add
17381"acpi_boot=on" to the kernel command line -- see the help entry
17382for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17383the works...
17384
17385Restructured the configuration options to allow boot-time table
17386parsing support without inclusion of the ACPI Interpreter (and
17387other) code.
17388
17389NOTE: This release does not include fixes for the reported events,
17390power-down, and thermal passive cooling issues (coming soon).
17391
17392 3) ASL Compiler:
17393
17394Added additional typechecking for Fields within restricted access
17395Operation Regions.  All fields within EC and CMOS regions must be
17396declared with ByteAcc. All fields within SMBus regions must be
17397declared with the BufferAcc access type.
17398
17399Fixed a problem where the listing file output of control methods
17400no longer interleaved the actual AML code with the ASL source
17401code.
17402
17403
17404
17405
17406----------------------------------------
17407Summary of changes for this label: 11_09_01
17408
174091) ACPI CA Core Subsystem:
17410
17411Implemented ACPI 2.0-defined support for writes to fields with a
17412Buffer, String, or Integer source operand that is smaller than the
17413target field. In these cases, the source operand is zero-extended
17414to fill the target field.
17415
17416Fixed a problem where a Field starting bit offset (within the
17417parent operation region) was calculated incorrectly if the
17418
17419alignment of the field differed from the access width.  This
17420affected CreateWordField, CreateDwordField, CreateQwordField, and
17421possibly other fields that use the "AccessAny" keyword.
17422
17423Fixed a problem introduced in the 11_02_01 release where indirect
17424stores through method arguments did not operate correctly.
17425
174262) Linux:
17427
17428Implemented boot-time ACPI table parsing support
17429(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17430facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17431legacy BIOS interfaces (e.g. MPS) for the configuration of system
17432processors, memory, and interrupts during setup_arch().  Note that
17433this patch does not include the required architecture-specific
17434changes required to apply this information -- subsequent patches
17435will be posted for both IA32 and IA64 to achieve this.
17436
17437Added low-level sleep support for IA32 platforms, courtesy of Pat
17438Mochel. This allows IA32 systems to transition to/from various
17439sleeping states (e.g. S1, S3), although the lack of a centralized
17440driver model and power-manageable drivers will prevent its
17441(successful) use on most systems.
17442
17443Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17444submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17445tables" option, etc.
17446
17447Increased 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
17449transactions.
17450
17451 ----------------------------------------
17452Summary of changes for this label: 11_02_01
17453
174541) ACPI CA Core Subsystem:
17455
17456ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17457(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17458implemented.
17459
17460OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17461changes to support ACPI 2.0 Qword field access.  Read/Write
17462PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17463accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17464the value parameter for the address space handler interface is now
17465an ACPI_INTEGER.  OSL implementations of these interfaces must now
17466handle the case where the Width parameter is 64.
17467
17468Index Fields: Fixed a problem where unaligned bit assembly and
17469disassembly for IndexFields was not supported correctly.
17470
17471Index and Bank Fields:  Nested Index and Bank Fields are now
17472supported. During field access, a check is performed to ensure
17473that the value written to an Index or Bank register is not out of
17474the range of the register.  The Index (or Bank) register is
17475written before each access to the field data. Future support will
17476include allowing individual IndexFields to be wider than the
17477DataRegister width.
17478
17479Fields: Fixed a problem where the AML interpreter was incorrectly
17480attempting to write beyond the end of a Field/OpRegion.  This was
17481a boundary case that occurred when a DWORD field was written to a
17482BYTE access OpRegion, forcing multiple writes and causing the
17483interpreter to write one datum too many.
17484
17485Fields: Fixed a problem with Field/OpRegion access where the
17486starting bit address of a field was incorrectly calculated if the
17487current access type was wider than a byte (WordAcc, DwordAcc, or
17488QwordAcc).
17489
17490Fields: Fixed a problem where forward references to individual
17491FieldUnits (individual Field names within a Field definition) were
17492not resolved during the AML table load.
17493
17494Fields: Fixed a problem where forward references from a Field
17495definition to the parent Operation Region definition were not
17496resolved during the AML table load.
17497
17498Fields: Duplicate FieldUnit names within a scope are now detected
17499during AML table load.
17500
17501Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17502returned an incorrect name for the root node.
17503
17504Code and Data Size: Code and Data optimizations have permitted new
17505feature development with an actual reduction in the library size.
17506Current core subsystem library sizes are shown below.  These are
17507the code and data sizes for the acpica.lib produced by the
17508Microsoft Visual C++ 6.0 compiler, and these values do not include
17509any ACPI driver or OSPM code.  The debug version of the code
17510includes the debug output trace mechanism and has a larger code
17511and data size.  Note that these values will vary depending on the
17512efficiency of the compiler and the compiler options used during
17513generation.
17514
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
17518
17519  Current Release:
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
17522
17523 2) Linux:
17524
17525Improved /proc processor output (Pavel Machek) Re-added
17526MODULE_LICENSE("GPL") to all modules.
17527
17528 3) ASL Compiler version X2030:
17529
17530Duplicate FieldUnit names within a scope are now detected and
17531flagged as errors.
17532
17533 4) Documentation:
17534
17535Programmer Reference updated to reflect OSL and address space
17536handler interface changes described above.
17537
17538----------------------------------------
17539Summary of changes for this label: 10_18_01
17540
17541ACPI CA Core Subsystem:
17542
17543Fixed a problem with the internal object reference count mechanism
17544that occasionally caused premature object deletion. This resolves
17545all of the outstanding problem reports where an object is deleted
17546in the middle of an interpreter evaluation.  Although this problem
17547only showed up in rather obscure cases, the solution to the
17548problem involved an adjustment of all reference counts involving
17549objects attached to namespace nodes.
17550
17551Fixed a problem with Field support in the interpreter where
17552writing to an aligned field whose length is an exact multiple (2
17553or greater) of the field access granularity would cause an attempt
17554to write beyond the end of the field.
17555
17556The top level AML opcode execution functions within the
17557interpreter have been renamed with a more meaningful and
17558consistent naming convention.  The modules exmonad.c and
17559exdyadic.c were eliminated.  New modules are exoparg1.c,
17560exoparg2.c, exoparg3.c, and exoparg6.c.
17561
17562Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17563
17564Fixed a problem where the AML debugger was causing some internal
17565objects to not be deleted during subsystem termination.
17566
17567Fixed a problem with the external AcpiEvaluateObject interface
17568where the subsystem would fault if the named object to be
17569evaluated referred to a constant such as Zero, Ones, etc.
17570
17571Fixed a problem with IndexFields and BankFields where the
17572subsystem would fault if the index, data, or bank registers were
17573not defined in the same scope as the field itself.
17574
17575Added printf format string checking for compilers that support
17576this feature.  Corrected more than 50 instances of issues with
17577format specifiers within invocations of ACPI_DEBUG_PRINT
17578throughout the core subsystem code.
17579
17580The ASL "Revision" operator now returns the ACPI support level
17581implemented in the core - the value "2" since the ACPI 2.0 support
17582is more than 50% implemented.
17583
17584Enhanced the output of the AML debugger "dump namespace" command
17585to output in a more human-readable form.
17586
17587Current core subsystem library code sizes are shown below.  These
17588
17589are the code and data sizes for the acpica.lib produced by the
17590Microsoft Visual C++ 6.0 compiler, and these values do not include
17591any ACPI driver or OSPM code.  The debug version of the code
17592includes the full debug trace mechanism -- leading to a much
17593
17594larger code and data size.  Note that these values will vary
17595depending on the efficiency of the compiler and the compiler
17596options used during generation.
17597
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
17601
17602     This Label:
17603
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
17606
17607Linux:
17608
17609Implemented a "Bad BIOS Blacklist" to track machines that have
17610known ASL/AML problems.
17611
17612Enhanced the /proc interface for the thermal zone driver and added
17613support for _HOT (the critical suspend trip point).  The 'info'
17614file now includes threshold/policy information, and allows setting
17615of _SCP (cooling preference) and _TZP (polling frequency) values
17616to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17617frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17618preference to the passive/quiet mode (if supported by the ASL).
17619
17620Implemented a workaround for a gcc bug that resuted in an OOPs
17621when loading the control method battery driver.
17622
17623 ----------------------------------------
17624Summary of changes for this label: 09_20_01
17625
17626 ACPI CA Core Subsystem:
17627
17628The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17629modified to allow individual GPE levels to be flagged as wake-
17630enabled (i.e., these GPEs are to remain enabled when the platform
17631sleeps.)
17632
17633The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17634support wake-enabled GPEs.  This means that upon entering the
17635sleep state, all GPEs that are not wake-enabled are disabled.
17636When leaving the sleep state, these GPEs are re-enabled.
17637
17638A local double-precision divide/modulo module has been added to
17639enhance portability to OS kernels where a 64-bit math library is
17640not available.  The new module is "utmath.c".
17641
17642Several optimizations have been made to reduce the use of CPU
17643stack.  Originally over 2K, the maximum stack usage is now below
176442K at 1860  bytes (1.82k)
17645
17646Fixed a problem with the AcpiGetFirmwareTable interface where the
17647root table pointer was not mapped into a logical address properly.
17648
17649Fixed a problem where a NULL pointer was being dereferenced in the
17650interpreter code for the ASL Notify operator.
17651
17652Fixed a problem where the use of the ASL Revision operator
17653returned an error. This operator now returns the current version
17654of the ACPI CA core subsystem.
17655
17656Fixed a problem where objects passed as control method parameters
17657to AcpiEvaluateObject were always deleted at method termination.
17658However, these objects may end up being stored into the namespace
17659by the called method.  The object reference count mechanism was
17660applied to these objects instead of a force delete.
17661
17662Fixed a problem where static strings or buffers (contained in the
17663AML code) that are declared as package elements within the ASL
17664code could cause a fault because the interpreter would attempt to
17665delete them.  These objects are now marked with the "static
17666object" flag to prevent any attempt to delete them.
17667
17668Implemented an interpreter optimization to use operands directly
17669from the state object instead of extracting the operands to local
17670variables.  This reduces stack use and code size, and improves
17671performance.
17672
17673The module exxface.c was eliminated as it was an unnecessary extra
17674layer of code.
17675
17676Current core subsystem library code sizes are shown below.  These
17677are the code and data sizes for the acpica.lib produced by the
17678Microsoft Visual C++ 6.0 compiler, and these values do not include
17679any ACPI driver or OSPM code.  The debug version of the code
17680includes the full debug trace mechanism -- leading to a much
17681larger code and data size.  Note that these values will vary
17682depending on the efficiency of the compiler and the compiler
17683options used during generation.
17684
17685  Non-Debug Version:  65K Code,   5K Data,   70K Total
17686(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
17687Total  (Previously 195K)
17688
17689Linux:
17690
17691Support for ACPI 2.0 64-bit integers has been added.   All ACPI
17692Integer objects are now 64 bits wide
17693
17694All Acpi data types and structures are now in lower case.  Only
17695Acpi macros are upper case for differentiation.
17696
17697 Documentation:
17698
17699Changes to the external interfaces as described above.
17700
17701 ----------------------------------------
17702Summary of changes for this label: 08_31_01
17703
17704 ACPI CA Core Subsystem:
17705
17706A bug with interpreter implementation of the ASL Divide operator
17707was found and fixed.  The implicit function return value (not the
17708explicit store operands) was returning the remainder instead of
17709the quotient.  This was a longstanding bug and it fixes several
17710known outstanding issues on various platforms.
17711
17712The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17713been further optimized for size.  There are 700 invocations of the
17714DEBUG_PRINT macro alone, so each optimization reduces the size of
17715the debug version of the subsystem significantly.
17716
17717A stack trace mechanism has been implemented.  The maximum stack
17718usage is about 2K on 32-bit platforms.  The debugger command "stat
17719stack" will display the current maximum stack usage.
17720
17721All public symbols and global variables within the subsystem are
17722now prefixed with the string "Acpi".  This keeps all of the
17723symbols grouped together in a kernel map, and avoids conflicts
17724with other kernel subsystems.
17725
17726Most of the internal fixed lookup tables have been moved into the
17727code segment via the const operator.
17728
17729Several enhancements have been made to the interpreter to both
17730reduce the code size and improve performance.
17731
17732Current core subsystem library code sizes are shown below.  These
17733are the code and data sizes for the acpica.lib produced by the
17734Microsoft Visual C++ 6.0 compiler, and these values do not include
17735any ACPI driver or OSPM code.  The debug version of the code
17736includes the full debug trace mechanism which contains over 700
17737invocations of the DEBUG_PRINT macro, 500 function entry macro
17738invocations, and over 900 function exit macro invocations --
17739leading to a much larger code and data size.  Note that these
17740values will vary depending on the efficiency of the compiler and
17741the compiler options used during generation.
17742
17743        Non-Debug Version:  64K Code,   5K Data,   69K Total
17744Debug Version:     137K Code,  58K Data,  195K Total
17745
17746 Linux:
17747
17748Implemented wbinvd() macro, pending a kernel-wide definition.
17749
17750Fixed /proc/acpi/event to handle poll() and short reads.
17751
17752 ASL Compiler, version X2026:
17753
17754Fixed a problem introduced in the previous label where the AML
17755
17756code emitted for package objects produced packages with zero
17757length.
17758
17759 ----------------------------------------
17760Summary of changes for this label: 08_16_01
17761
17762ACPI CA Core Subsystem:
17763
17764The following ACPI 2.0 ASL operators have been implemented in the
17765AML interpreter (These are already supported by the Intel ASL
17766compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
17767ToBuffer.  Support for 64-bit AML constants is implemented in the
17768AML parser, debugger, and disassembler.
17769
17770The internal memory tracking mechanism (leak detection code) has
17771been upgraded to reduce the memory overhead (a separate tracking
17772block is no longer allocated for each memory allocation), and now
17773supports all of the internal object caches.
17774
17775The data structures and code for the internal object caches have
17776been coelesced and optimized so that there is a single cache and
17777memory list data structure and a single group of functions that
17778implement generic cache management.  This has reduced the code
17779size in both the debug and release versions of the subsystem.
17780
17781The DEBUG_PRINT macro(s) have been optimized for size and replaced
17782by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
17783different, because it generates a single call to an internal
17784function.  This results in a savings of about 90 bytes per
17785invocation, resulting in an overall code and data savings of about
1778616% in the debug version of the subsystem.
17787
17788 Linux:
17789
17790Fixed C3 disk corruption problems and re-enabled C3 on supporting
17791machines.
17792
17793Integrated low-level sleep code by Patrick Mochel.
17794
17795Further tweaked source code Linuxization.
17796
17797Other minor fixes.
17798
17799 ASL Compiler:
17800
17801Support for ACPI 2.0 variable length packages is fixed/completed.
17802
17803Fixed a problem where the optional length parameter for the ACPI
178042.0 ToString operator.
17805
17806Fixed multiple extraneous error messages when a syntax error is
17807detected within the declaration line of a control method.
17808
17809 ----------------------------------------
17810Summary of changes for this label: 07_17_01
17811
17812ACPI CA Core Subsystem:
17813
17814Added a new interface named AcpiGetFirmwareTable to obtain any
17815ACPI table via the ACPI signature.  The interface can be called at
17816any time during kernel initialization, even before the kernel
17817virtual memory manager is initialized and paging is enabled.  This
17818allows kernel subsystems to obtain ACPI tables very early, even
17819before the ACPI CA subsystem is initialized.
17820
17821Fixed a problem where Fields defined with the AnyAcc attribute
17822could be resolved to the incorrect address under the following
17823conditions: 1) the field width is larger than 8 bits and 2) the
17824parent operation region is not defined on a DWORD boundary.
17825
17826Fixed a problem where the interpreter is not being locked during
17827namespace initialization (during execution of the _INI control
17828methods), causing an error when an attempt is made to release it
17829later.
17830
17831ACPI 2.0 support in the AML Interpreter has begun and will be
17832ongoing throughout the rest of this year.  In this label, The Mod
17833operator is implemented.
17834
17835Added a new data type to contain full PCI addresses named
17836ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
17837and Function values.
17838
17839 Linux:
17840
17841Enhanced the Linux version of the source code to change most
17842capitalized ACPI type names to lowercase. For example, all
17843instances of ACPI_STATUS are changed to acpi_status.  This will
17844result in a large diff, but the change is strictly cosmetic and
17845aligns the CA code closer to the Linux coding standard.
17846
17847OSL Interfaces:
17848
17849The interfaces to the PCI configuration space have been changed to
17850add the PCI Segment number and to split the single 32-bit combined
17851DeviceFunction field into two 16-bit fields.  This was
17852accomplished by moving the four values that define an address in
17853PCI configuration space (segment, bus, device, and function) to
17854the new ACPI_PCI_ID structure.
17855
17856The changes to the PCI configuration space interfaces led to a
17857reexamination of the complete set of address space access
17858interfaces for PCI, I/O, and Memory.  The previously existing 18
17859interfaces have proven difficult to maintain (any small change
17860must be propagated across at least 6 interfaces) and do not easily
17861allow for future expansion to 64 bits if necessary.  Also, on some
17862systems, it would not be appropriate to demultiplex the access
17863width (8, 16, 32,or 64) before calling the OSL if the
17864corresponding native OS interfaces contain a similar access width
17865parameter.  For these reasons, the 18 address space interfaces
17866have been replaced by these 6 new ones:
17867
17868AcpiOsReadPciConfiguration
17869AcpiOsWritePciConfiguration
17870AcpiOsReadMemory
17871AcpiOsWriteMemory
17872AcpiOsReadPort
17873AcpiOsWritePort
17874
17875Added a new interface named AcpiOsGetRootPointer to allow the OSL
17876to perform the platform and/or OS-specific actions necessary to
17877obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
17878interface will simply call down to the CA core to perform the low-
17879memory search for the table.  On IA-64, the RSDP is obtained from
17880EFI.  Migrating this interface to the OSL allows the CA core to
17881
17882remain OS and platform independent.
17883
17884Added a new interface named AcpiOsSignal to provide a generic
17885"function code and pointer" interface for various miscellaneous
17886signals and notifications that must be made to the host OS.   The
17887first such signals are intended to support the ASL Fatal and
17888Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
17889interface has been obsoleted.
17890
17891The definition of the AcpiFormatException interface has been
17892changed to simplify its use.  The caller no longer must supply a
17893buffer to the call; A pointer to a const string is now returned
17894directly.  This allows the call to be easily used in printf
17895statements, etc. since the caller does not have to manage a local
17896buffer.
17897
17898
17899 ASL Compiler, Version X2025:
17900
17901The ACPI 2.0 Switch/Case/Default operators have been implemented
17902and are fully functional.  They will work with all ACPI 1.0
17903interpreters, since the operators are simply translated to If/Else
17904pairs.
17905
17906The ACPI 2.0 ElseIf operator is implemented and will also work
17907with 1.0 interpreters, for the same reason.
17908
17909Implemented support for ACPI 2.0 variable-length packages.  These
17910packages have a separate opcode, and their size is determined by
17911the interpreter at run-time.
17912
17913Documentation The ACPI CA Programmer Reference has been updated to
17914reflect the new interfaces and changes to existing interfaces.
17915
17916 ------------------------------------------
17917Summary of changes for this label: 06_15_01
17918
17919 ACPI CA Core Subsystem:
17920
17921Fixed a problem where a DWORD-accessed field within a Buffer
17922object would get its byte address inadvertently rounded down to
17923the nearest DWORD.  Buffers are always Byte-accessible.
17924
17925 ASL Compiler, version X2024:
17926
17927Fixed a problem where the Switch() operator would either fault or
17928hang the compiler.  Note however, that the AML code for this ACPI
179292.0 operator is not yet implemented.
17930
17931Compiler uses the new AcpiOsGetTimer interface to obtain compile
17932timings.
17933
17934Implementation of the CreateField operator automatically converts
17935a reference to a named field within a resource descriptor from a
17936byte offset to a bit offset if required.
17937
17938Added some missing named fields from the resource descriptor
17939support. These are the names that are automatically created by the
17940compiler to reference fields within a descriptor.  They are only
17941valid at compile time and are not passed through to the AML
17942interpreter.
17943
17944Resource descriptor named fields are now typed as Integers and
17945subject to compile-time typechecking when used in expressions.
17946
17947 ------------------------------------------
17948Summary of changes for this label: 05_18_01
17949
17950 ACPI CA Core Subsystem:
17951
17952Fixed a couple of problems in the Field support code where bits
17953from adjacent fields could be returned along with the proper field
17954bits. Restructured the field support code to improve performance,
17955readability and maintainability.
17956
17957New DEBUG_PRINTP macro automatically inserts the procedure name
17958into the output, saving hundreds of copies of procedure name
17959strings within the source, shrinking the memory footprint of the
17960debug version of the core subsystem.
17961
17962 Source Code Structure:
17963
17964The source code directory tree was restructured to reflect the
17965current organization of the component architecture.  Some files
17966and directories have been moved and/or renamed.
17967
17968 Linux:
17969
17970Fixed leaking kacpidpc processes.
17971
17972Fixed queueing event data even when /proc/acpi/event is not
17973opened.
17974
17975 ASL Compiler, version X2020:
17976
17977Memory allocation performance enhancement - over 24X compile time
17978improvement on large ASL files.  Parse nodes and namestring
17979buffers are now allocated from a large internal compiler buffer.
17980
17981The temporary .SRC file is deleted unless the "-s" option is
17982specified
17983
17984The "-d" debug output option now sends all output to the .DBG file
17985instead of the console.
17986
17987"External" second parameter is now optional
17988
17989"ElseIf" syntax now properly allows the predicate
17990
17991Last operand to "Load" now recognized as a Target operand
17992
17993Debug object can now be used anywhere as a normal object.
17994
17995ResourceTemplate now returns an object of type BUFFER
17996
17997EISAID now returns an object of type INTEGER
17998
17999"Index" now works with a STRING operand
18000
18001"LoadTable" now accepts optional parameters
18002
18003"ToString" length parameter is now optional
18004
18005"Interrupt (ResourceType," parse error fixed.
18006
18007"Register" with a user-defined region space parse error fixed
18008
18009Escaped backslash at the end of a string ("\\") scan/parse error
18010fixed
18011
18012"Revision" is now an object of type INTEGER.
18013
18014
18015
18016------------------------------------------
18017Summary of changes for this label: 05_02_01
18018
18019Linux:
18020
18021/proc/acpi/event now blocks properly.
18022
18023Removed /proc/sys/acpi. You can still dump your DSDT from
18024/proc/acpi/dsdt.
18025
18026 ACPI CA Core Subsystem:
18027
18028Fixed a problem introduced in the previous label where some of the
18029"small" resource descriptor types were not recognized.
18030
18031Improved error messages for the case where an ASL Field is outside
18032the range of the parent operation region.
18033
18034 ASL Compiler, version X2018:
18035
18036
18037Added error detection for ASL Fields that extend beyond the length
18038of the parent operation region (only if the length of the region
18039is known at compile time.)  This includes fields that have a
18040minimum access width that is smaller than the parent region, and
18041individual field units that are partially or entirely beyond the
18042extent of the parent.
18043
18044
18045
18046------------------------------------------
18047Summary of changes for this label: 04_27_01
18048
18049 ACPI CA Core Subsystem:
18050
18051Fixed a problem where the namespace mutex could be released at the
18052wrong time during execution of AcpiRemoveAddressSpaceHandler.
18053
18054Added optional thread ID output for debug traces, to simplify
18055debugging of multiple threads.  Added context switch notification
18056when the debug code realizes that a different thread is now
18057executing ACPI code.
18058
18059Some additional external data types have been prefixed with the
18060string "ACPI_" for consistency.  This may effect existing code.
18061The data types affected are the external callback typedefs - e.g.,
18062
18063WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18064
18065 Linux:
18066
18067Fixed an issue with the OSL semaphore implementation where a
18068thread was waking up with an error from receiving a SIGCHLD
18069signal.
18070
18071Linux version of ACPI CA now uses the system C library for string
18072manipulation routines instead of a local implementation.
18073
18074Cleaned up comments and removed TBDs.
18075
18076 ASL Compiler, version X2017:
18077
18078Enhanced error detection and reporting for all file I/O
18079operations.
18080
18081 Documentation:
18082
18083Programmer Reference updated to version 1.06.
18084
18085
18086
18087------------------------------------------
18088Summary of changes for this label: 04_13_01
18089
18090 ACPI CA Core Subsystem:
18091
18092Restructured support for BufferFields and RegionFields.
18093BankFields support is now fully operational.  All known 32-bit
18094limitations on field sizes have been removed.  Both BufferFields
18095and (Operation) RegionFields are now supported by the same field
18096management code.
18097
18098Resource support now supports QWORD address and IO resources. The
1809916/32/64 bit address structures and the Extended IRQ structure
18100have been changed to properly handle Source Resource strings.
18101
18102A ThreadId of -1 is now used to indicate a "mutex not acquired"
18103condition internally and must never be returned by AcpiOsThreadId.
18104This reserved value was changed from 0 since Unix systems allow a
18105thread ID of 0.
18106
18107Linux:
18108
18109Driver code reorganized to enhance portability
18110
18111Added a kernel configuration option to control ACPI_DEBUG
18112
18113Fixed the EC driver to honor _GLK.
18114
18115ASL Compiler, version X2016:
18116
18117Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18118address space was set to 0, not 0x7f as it should be.
18119
18120 ------------------------------------------
18121Summary of changes for this label: 03_13_01
18122
18123 ACPI CA Core Subsystem:
18124
18125During ACPI initialization, the _SB_._INI method is now run if
18126present.
18127
18128Notify handler fix - notifies are deferred until the parent method
18129completes execution.  This fixes the "mutex already acquired"
18130issue seen occasionally.
18131
18132Part of the "implicit conversion" rules in ACPI 2.0 have been
18133found to cause compatibility problems with existing ASL/AML.  The
18134convert "result-to-target-type" implementation has been removed
18135for stores to method Args and Locals.  Source operand conversion
18136is still fully implemented.  Possible changes to ACPI 2.0
18137specification pending.
18138
18139Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18140length.
18141
18142Fix for compiler warnings for 64-bit compiles.
18143
18144 Linux:
18145
18146/proc output aligned for easier parsing.
18147
18148Release-version compile problem fixed.
18149
18150New kernel configuration options documented in Configure.help.
18151
18152IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18153context" message.
18154
18155 OSPM:
18156
18157Power resource driver integrated with bus manager.
18158
18159Fixed kernel fault during active cooling for thermal zones.
18160
18161Source Code:
18162
18163The source code tree has been restructured.
18164
18165
18166
18167------------------------------------------
18168Summary of changes for this label: 03_02_01
18169
18170 Linux OS Services Layer (OSL):
18171
18172Major revision of all Linux-specific code.
18173
18174Modularized all ACPI-specific drivers.
18175
18176Added new thermal zone and power resource drivers.
18177
18178Revamped /proc interface (new functionality is under /proc/acpi).
18179
18180New kernel configuration options.
18181
18182 Linux known issues:
18183
18184New kernel configuration options not documented in Configure.help
18185yet.
18186
18187
18188Module dependencies not currently implemented. If used, they
18189should be loaded in this order: busmgr, power, ec, system,
18190processor, battery, ac_adapter, button, thermal.
18191
18192Modules will not load if CONFIG_MODVERSION is set.
18193
18194IBM 600E - entering S5 may reboot instead of shutting down.
18195
18196IBM 600E - Sleep button may generate "Invalid <NULL> context"
18197message.
18198
18199Some systems may fail with "execution mutex already acquired"
18200message.
18201
18202 ACPI CA Core Subsystem:
18203
18204Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18205for the  deadlock detection code. Defined to return a non-zero, 32-
18206bit thread ID for the currently executing thread.  May be a non-
18207zero constant integer on single-thread systems.
18208
18209Implemented deadlock detection for internal subsystem mutexes.  We
18210may add conditional compilation for this code (debug only) later.
18211
18212ASL/AML Mutex object semantics are now fully supported.  This
18213includes multiple acquires/releases by owner and support for the
18214
18215Mutex SyncLevel parameter.
18216
18217A new "Force Release" mechanism automatically frees all ASL
18218Mutexes that have been acquired but not released when a thread
18219exits the interpreter.  This forces conformance to the ACPI spec
18220("All mutexes must be released when an invocation exits") and
18221prevents deadlocked ASL threads.  This mechanism can be expanded
18222(later) to monitor other resource acquisitions if OEM ASL code
18223continues to misbehave (which it will).
18224
18225Several new ACPI exception codes have been added for the Mutex
18226support.
18227
18228Recursive method calls are now allowed and supported (the ACPI
18229spec does in fact allow recursive method calls.)  The number of
18230recursive calls is subject to the restrictions imposed by the
18231SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18232parameter.
18233
18234Implemented support for the SyncLevel parameter for control
18235methods (ACPI 2.0 feature)
18236
18237Fixed a deadlock problem when multiple threads attempted to use
18238the interpreter.
18239
18240Fixed a problem where the string length of a String package
18241element was not always set in a package returned from
18242AcpiEvaluateObject.
18243
18244Fixed a problem where the length of a String package element was
18245not always included in the length of the overall package returned
18246from AcpiEvaluateObject.
18247
18248Added external interfaces (Acpi*) to the ACPI debug memory
18249manager.  This manager keeps a list of all outstanding
18250allocations, and can therefore detect memory leaks and attempts to
18251free memory blocks more than once. Useful for code such as the
18252power manager, etc.  May not be appropriate for device drivers.
18253Performance with the debug code enabled is slow.
18254
18255The ACPI Global Lock is now an optional hardware element.
18256
18257 ASL Compiler Version X2015:
18258
18259Integrated changes to allow the compiler to be generated on
18260multiple platforms.
18261
18262Linux makefile added to generate the compiler on Linux
18263
18264 Source Code:
18265
18266All platform-specific headers have been moved to their own
18267subdirectory, Include/Platform.
18268
18269New source file added, Interpreter/ammutex.c
18270
18271New header file, Include/acstruct.h
18272
18273 Documentation:
18274
18275The programmer reference has been updated for the following new
18276interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18277
18278 ------------------------------------------
18279Summary of changes for this label: 02_08_01
18280
18281Core ACPI CA Subsystem: Fixed a problem where an error was
18282incorrectly returned if the return resource buffer was larger than
18283the actual data (in the resource interfaces).
18284
18285References to named objects within packages are resolved to the
18286
18287full pathname string before packages are returned directly (via
18288the AcpiEvaluateObject interface) or indirectly via the resource
18289interfaces.
18290
18291Linux OS Services Layer (OSL):
18292
18293Improved /proc battery interface.
18294
18295
18296Added C-state debugging output and other miscellaneous fixes.
18297
18298ASL Compiler Version X2014:
18299
18300All defined method arguments can now be used as local variables,
18301including the ones that are not actually passed in as parameters.
18302The compiler tracks initialization of the arguments and issues an
18303exception if they are used without prior assignment (just like
18304locals).
18305
18306The -o option now specifies a filename prefix that is used for all
18307output files, including the AML output file.  Otherwise, the
18308default behavior is as follows:  1) the AML goes to the file
18309specified in the DSDT.  2) all other output files use the input
18310source filename as the base.
18311
18312 ------------------------------------------
18313Summary of changes for this label: 01_25_01
18314
18315Core ACPI CA Subsystem: Restructured the implementation of object
18316store support within the  interpreter.  This includes support for
18317the Store operator as well  as any ASL operators that include a
18318target operand.
18319
18320Partially implemented support for Implicit Result-to-Target
18321conversion. This is when a result object is converted on the fly
18322to the type of  an existing target object.  Completion of this
18323support is pending  further analysis of the ACPI specification
18324concerning this matter.
18325
18326CPU-specific code has been removed from the subsystem (hardware
18327directory).
18328
18329New Power Management Timer functions added
18330
18331Linux OS Services Layer (OSL): Moved system state transition code
18332to the core, fixed it, and modified  Linux OSL accordingly.
18333
18334Fixed C2 and C3 latency calculations.
18335
18336
18337We no longer use the compilation date for the version message on
18338initialization, but retrieve the version from AcpiGetSystemInfo().
18339
18340Incorporated for fix Sony VAIO machines.
18341
18342Documentation:  The Programmer Reference has been updated and
18343reformatted.
18344
18345
18346ASL Compiler:  Version X2013: Fixed a problem where the line
18347numbering and error reporting could get out  of sync in the
18348presence of multiple include files.
18349
18350 ------------------------------------------
18351Summary of changes for this label: 01_15_01
18352
18353Core ACPI CA Subsystem:
18354
18355Implemented support for type conversions in the execution of the
18356ASL  Concatenate operator (The second operand is converted to
18357match the type  of the first operand before concatenation.)
18358
18359Support for implicit source operand conversion is partially
18360implemented.   The ASL source operand types Integer, Buffer, and
18361String are freely  interchangeable for most ASL operators and are
18362converted by the interpreter  on the fly as required.  Implicit
18363Target operand conversion (where the  result is converted to the
18364target type before storing) is not yet implemented.
18365
18366Support for 32-bit and 64-bit BCD integers is implemented.
18367
18368Problem fixed where a field read on an aligned field could cause a
18369read  past the end of the field.
18370
18371New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18372does not return a value, but the caller expects one.  (The ASL
18373compiler flags this as a warning.)
18374
18375ASL Compiler:
18376
18377Version X2011:
183781. Static typechecking of all operands is implemented. This
18379prevents the use of invalid objects (such as using a Package where
18380an Integer is required) at compile time instead of at interpreter
18381run-time.
183822. The ASL source line is printed with ALL errors and warnings.
183833. Bug fix for source EOF without final linefeed.
183844. Debug option is split into a parse trace and a namespace trace.
183855. Namespace output option (-n) includes initial values for
18386integers and strings.
183876. Parse-only option added for quick syntax checking.
183887. Compiler checks for duplicate ACPI name declarations
18389
18390Version X2012:
183911. Relaxed typechecking to allow interchangeability between
18392strings, integers, and buffers.  These types are now converted by
18393the interpreter at runtime.
183942. Compiler reports time taken by each internal subsystem in the
18395debug         output file.
18396
18397
18398 ------------------------------------------
18399Summary of changes for this label: 12_14_00
18400
18401ASL Compiler:
18402
18403This is the first official release of the compiler. Since the
18404compiler requires elements of the Core Subsystem, this label
18405synchronizes everything.
18406
18407------------------------------------------
18408Summary of changes for this label: 12_08_00
18409
18410
18411Fixed a problem where named references within the ASL definition
18412of both OperationRegions and CreateXXXFields did not work
18413properly.  The symptom was an AE_AML_OPERAND_TYPE during
18414initialization of the region/field. This is similar (but not
18415related internally) to the problem that was fixed in the last
18416label.
18417
18418Implemented both 32-bit and 64-bit support for the BCD ASL
18419functions ToBCD and FromBCD.
18420
18421Updated all legal headers to include "2000" in the copyright
18422years.
18423
18424 ------------------------------------------
18425Summary of changes for this label: 12_01_00
18426
18427Fixed a problem where method invocations within the ASL definition
18428of both OperationRegions and CreateXXXFields did not work
18429properly.  The symptom was an AE_AML_OPERAND_TYPE during
18430initialization of the region/field:
18431
18432  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18433[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18434(0x3005)
18435
18436Fixed a problem where operators with more than one nested
18437subexpression would fail.  The symptoms were varied, by mostly
18438AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18439problem that has gone unnoticed until now.
18440
18441  Subtract (Add (1,2), Multiply (3,4))
18442
18443Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18444previous build (The prefix part of a relative path was handled
18445incorrectly).
18446
18447Fixed a problem where Operation Region initialization failed if
18448the operation region name was a "namepath" instead of a simple
18449"nameseg". Symptom was an AE_NO_OPERAND error.
18450
18451Fixed a problem where an assignment to a local variable via the
18452indirect RefOf mechanism only worked for the first such
18453assignment.  Subsequent assignments were ignored.
18454
18455 ------------------------------------------
18456Summary of changes for this label: 11_15_00
18457
18458ACPI 2.0 table support with backwards support for ACPI 1.0 and the
184590.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18460the AML  interpreter does NOT have support for the new 2.0 ASL
18461grammar terms at this time.
18462
18463All ACPI hardware access is via the GAS structures in the ACPI 2.0
18464FADT.
18465
18466All physical memory addresses across all platforms are now 64 bits
18467wide. Logical address width remains dependent on the platform
18468(i.e., "void *").
18469
18470AcpiOsMapMemory interface changed to a 64-bit physical address.
18471
18472The AML interpreter integer size is now 64 bits, as per the ACPI
184732.0 specification.
18474
18475For backwards compatibility with ACPI 1.0, ACPI tables with a
18476revision number less than 2 use 32-bit integers only.
18477
18478Fixed a problem where the evaluation of OpRegion operands did not
18479always resolve them to numbers properly.
18480
18481------------------------------------------
18482Summary of changes for this label: 10_20_00
18483
18484Fix for CBN_._STA issue.  This fix will allow correct access to
18485CBN_ OpRegions when the _STA returns 0x8.
18486
18487Support to convert ACPI constants (Ones, Zeros, One) to actual
18488values before a package object is returned
18489
18490Fix for method call as predicate to if/while construct causing
18491incorrect if/while behavior
18492
18493Fix for Else block package lengths sometimes calculated wrong (if
18494block > 63 bytes)
18495
18496Fix for Processor object length field, was always zero
18497
18498Table load abort if FACP sanity check fails
18499
18500Fix for problem with Scope(name) if name already exists
18501
18502Warning emitted if a named object referenced cannot be found
18503(resolved) during method execution.
18504
18505
18506
18507
18508
18509------------------------------------------
18510Summary of changes for this label: 9_29_00
18511
18512New table initialization interfaces: AcpiInitializeSubsystem no
18513longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18514necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18515>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18516AcpiLoadTables
18517
18518Note: These interface changes require changes to all existing OSDs
18519
18520The PCI_Config default address space handler is always installed
18521at the root namespace object.
18522
18523-------------------------------------------
18524Summary of changes for this label: 09_15_00
18525
18526The new initialization architecture is implemented.  New
18527interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18528AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18529
18530(Namespace is automatically loaded when a table is loaded)
18531
18532The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1853352 bytes to 32 bytes.  There is usually one of these for every
18534namespace object, so the memory savings is significant.
18535
18536Implemented just-in-time evaluation of the CreateField operators.
18537
18538Bug fixes for IA-64 support have been integrated.
18539
18540Additional code review comments have been implemented
18541
18542The so-called "third pass parse" has been replaced by a final walk
18543through the namespace to initialize all operation regions (address
18544spaces) and fields that have not yet been initialized during the
18545execution of the various _INI and REG methods.
18546
18547New file - namespace/nsinit.c
18548
18549-------------------------------------------
18550Summary of changes for this label: 09_01_00
18551
18552Namespace manager data structures have been reworked to change the
18553primary  object from a table to a single object.  This has
18554resulted in dynamic memory  savings of 3X within the namespace and
185552X overall in the ACPI CA subsystem.
18556
18557Fixed problem where the call to AcpiEvFindPciRootBuses was
18558inadvertently left  commented out.
18559
18560Reduced the warning count when generating the source with the GCC
18561compiler.
18562
18563Revision numbers added to each module header showing the
18564SourceSafe version of the file.  Please refer to this version
18565number when giving us feedback or comments on individual modules.
18566
18567The main object types within the subsystem have been renamed to
18568clarify their  purpose:
18569
18570ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18571ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18572ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18573
18574NOTE: no changes to the initialization sequence are included in
18575this label.
18576
18577-------------------------------------------
18578Summary of changes for this label: 08_23_00
18579
18580Fixed problem where TerminateControlMethod was being called
18581multiple times per  method
18582
18583Fixed debugger problem where single stepping caused a semaphore to
18584be  oversignalled
18585
18586Improved performance through additional parse object caching -
18587added  ACPI_EXTENDED_OP type
18588
18589-------------------------------------------
18590Summary of changes for this label: 08_10_00
18591
18592Parser/Interpreter integration:  Eliminated the creation of
18593complete parse trees  for ACPI tables and control methods.
18594Instead, parse subtrees are created and  then deleted as soon as
18595they are processed (Either entered into the namespace or  executed
18596by the interpreter).  This reduces the use of dynamic kernel
18597memory  significantly. (about 10X)
18598
18599Exception codes broken into classes and renumbered.  Be sure to
18600recompile all  code that includes acexcep.h.  Hopefully we won't
18601have to renumber the codes  again now that they are split into
18602classes (environment, programmer, AML code,  ACPI table, and
18603internal).
18604
18605Fixed some additional alignment issues in the Resource Manager
18606subcomponent
18607
18608Implemented semaphore tracking in the AcpiExec utility, and fixed
18609several places  where mutexes/semaphores were being unlocked
18610without a corresponding lock  operation.  There are no known
18611semaphore or mutex "leaks" at this time.
18612
18613Fixed the case where an ASL Return operator is used to return an
18614unnamed  package.
18615
18616-------------------------------------------
18617Summary of changes for this label: 07_28_00
18618
18619Fixed a problem with the way addresses were calculated in
18620AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
18621manifested itself when a Field was  created with WordAccess or
18622DwordAccess, but the field unit defined within the  Field was less
18623
18624than a Word or Dword.
18625
18626Fixed a problem in AmlDumpOperands() module's loop to pull
18627operands off of the  operand stack to display information. The
18628problem manifested itself as a TLB  error on 64-bit systems when
18629accessing an operand stack with two or more  operands.
18630
18631Fixed a problem with the PCI configuration space handlers where
18632context was  getting confused between accesses. This required a
18633change to the generic address  space handler and address space
18634setup definitions. Handlers now get both a  global handler context
18635(this is the one passed in by the user when executing
18636AcpiInstallAddressSpaceHandler() and a specific region context
18637that is unique to  each region (For example, the _ADR, _SEG and
18638_BBN values associated with a  specific region). The generic
18639function definitions have changed to the  following:
18640
18641typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18642UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18643*HandlerContext, // This used to be void *Context void
18644*RegionContext); // This is an additional parameter
18645
18646typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18647RegionHandle, UINT32 Function, void *HandlerContext,  void
18648**RegionContext); // This used to be **ReturnContext
18649
18650-------------------------------------------
18651Summary of changes for this label: 07_21_00
18652
18653Major file consolidation and rename.  All files within the
18654interpreter have been  renamed as well as most header files.  This
18655was done to prevent collisions with  existing files in the host
18656OSs -- filenames such as "config.h" and "global.h"  seem to be
18657quite common.  The VC project files have been updated.  All
18658makefiles  will require modification.
18659
18660The parser/interpreter integration continues in Phase 5 with the
18661implementation  of a complete 2-pass parse (the AML is parsed
18662twice) for each table;  This  avoids the construction of a huge
18663parse tree and therefore reduces the amount of  dynamic memory
18664required by the subsystem.  Greater use of the parse object cache
18665means that performance is unaffected.
18666
18667Many comments from the two code reviews have been rolled in.
18668
18669The 64-bit alignment support is complete.
18670
18671-------------------------------------------
18672Summary of changes for this label: 06_30_00
18673
18674With a nod and a tip of the hat to the technology of yesteryear,
18675we've added  support in the source code for 80 column output
18676devices.  The code is now mostly  constrained to 80 columns or
18677less to support environments and editors that 1)  cannot display
18678or print more than 80 characters on a single line, and 2) cannot
18679disable line wrapping.
18680
18681A major restructuring of the namespace data structure has been
18682completed.  The  result is 1) cleaner and more
18683understandable/maintainable code, and 2) a  significant reduction
18684in the dynamic memory requirement for each named ACPI  object
18685(almost half).
18686
18687-------------------------------------------
18688Summary of changes for this label: 06_23_00
18689
18690Linux support has been added.  In order to obtain approval to get
18691the ACPI CA  subsystem into the Linux kernel, we've had to make
18692quite a few changes to the  base subsystem that will affect all
18693users (all the changes are generic and OS- independent).  The
18694effects of these global changes have been somewhat far  reaching.
18695Files have been merged and/or renamed and interfaces have been
18696renamed.   The major changes are described below.
18697
18698Osd* interfaces renamed to AcpiOs* to eliminate namespace
18699pollution/confusion  within our target kernels.  All OSD
18700interfaces must be modified to match the new  naming convention.
18701
18702Files merged across the subsystem.  A number of the smaller source
18703and header  files have been merged to reduce the file count and
18704increase the density of the  existing files.  There are too many
18705to list here.  In general, makefiles that  call out individual
18706files will require rebuilding.
18707
18708Interpreter files renamed.  All interpreter files now have the
18709prefix am*  instead of ie* and is*.
18710
18711Header files renamed:  The acapi.h file is now acpixf.h.  The
18712acpiosd.h file is  now acpiosxf.h.  We are removing references to
18713the acronym "API" since it is  somewhat windowsy. The new name is
18714"external interface" or xface or xf in the  filenames.j
18715
18716
18717All manifest constants have been forced to upper case (some were
18718mixed case.)   Also, the string "ACPI_" has been prepended to many
18719(not all) of the constants,  typedefs, and structs.
18720
18721The globals "DebugLevel" and "DebugLayer" have been renamed
18722"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
18723
18724All other globals within the subsystem are now prefixed with
18725"AcpiGbl_" Internal procedures within the subsystem are now
18726prefixed with "Acpi" (with only  a few exceptions).  The original
18727two-letter abbreviation for the subcomponent  remains after "Acpi"
18728- for example, CmCallocate became AcpiCmCallocate.
18729
18730Added a source code translation/conversion utility.  Used to
18731generate the Linux  source code, it can be modified to generate
18732other types of source as well. Can  also be used to cleanup
18733existing source by removing extraneous spaces and blank  lines.
18734Found in tools/acpisrc/*
18735
18736OsdUnMapMemory was renamed to OsdUnmapMemory and then
18737AcpiOsUnmapMemory.  (UnMap  became Unmap).
18738
18739A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18740When set to  one, this indicates that the caller wants to use the
18741
18742semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
18743both types.  However, implementers of this  call may want to use
18744different OS primitives depending on the type of semaphore
18745requested.  For example, some operating systems provide separate
18746
18747"mutex" and  "semaphore" interfaces - where the mutex interface is
18748much faster because it  doesn't have all the overhead of a full
18749semaphore implementation.
18750
18751Fixed a deadlock problem where a method that accesses the PCI
18752address space can  block forever if it is the first access to the
18753space.
18754
18755-------------------------------------------
18756Summary of changes for this label: 06_02_00
18757
18758Support for environments that cannot handle unaligned data
18759accesses (e.g.  firmware and OS environments devoid of alignment
18760handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
18761been added (via configurable macros) in  these three areas: -
18762Transfer of data from the raw AML byte stream is done via byte
18763moves instead of    word/dword/qword moves. - External objects are
18764aligned within the user buffer, including package   elements (sub-
18765objects). - Conversion of name strings to UINT32 Acpi Names is now
18766done byte-wise.
18767
18768The Store operator was modified to mimic Microsoft's
18769implementation when storing  to a Buffer Field.
18770
18771Added a check of the BM_STS bit before entering C3.
18772
18773The methods subdirectory has been obsoleted and removed.  A new
18774file, cmeval.c  subsumes the functionality.
18775
18776A 16-bit (DOS) version of AcpiExec has been developed.  The
18777makefile is under  the acpiexec directory.
18778