xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 7c4f4eee)
1----------------------------------------
203 July 2019. Summary of changes for version 20190703:
3
4
51) ACPICA kernel-resident subsystem:
6
7Remove legacy module-level support code. There were still some remnants
8of the legacy module-level code executions. Since we no longer support
9this option, this is essentially dead code and has been removed from the
10ACPICA source.
11
12iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
13scope. If these named objects are declared outside the root scope, they
14will not be invoked by any host Operating System.
15
16Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
17one) can be enabled in two situations. First, the GPEs with existing _Lxx
18and _Exx methods are enabled implicitly by ACPICA during system
19initialization.  Second, the GPEs without these methods (like GPEs listed
20by _PRW objects for wakeup devices) need to be enabled directly by the
21code that is going to use them (e.g. ACPI power management or device
22drivers).
23
24In the former case, if the status of a given GPE is set to start with,
25its handler method (either _Lxx or _Exx) needs to be invoked to take care
26of the events (possibly) signaled before the GPE was enabled. In the
27latter case, however, the first caller of AcpiEnableGpe() for a given GPE
28should not be expected to care about any events that might be signaled
29through it earlier.  In that case, it is better to clear the status of
30the GPE before enabling it, to prevent stale events from triggering
31unwanted actions (like spurious system resume, for example).
32
33For this reason, modify AcpiEvAddGpeReference() to take an additional
34boolean argument indicating whether or not the GPE status needs to be
35cleared when its reference counter changes from zero to one and make
36AcpiEnableGpe() pass TRUE to it through that new argument.
37
38
392) iASL Compiler/Disassembler and ACPICA tools:
40
41The tool generation process has been migrated to MSVC 2017, and all
42project files have been upgraded. The new project files appear in the
43directory \acpica\generate\msvc2017. This change effectively deprecates
44the older project files in \acpica\generate\msvc9.
45
46iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
47scope. If these named objects are declared outside the root scope, they
48will not be invoked by any host Operating System
49
50----------------------------------------
5109 May 2019. Summary of changes for version 20190509:
52
53
541) ACPICA kernel-resident subsystem:
55
56Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
57them") that causes problems with Thunderbolt controllers to occur if a
58dock device is connected at init time (the xhci_hcd and thunderbolt
59modules crash which prevents peripherals connected through them from
60working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
61Dispatch active GPEs at init time") to get undone, so the problem
62addressed by commit ecc1165b8b74 appears again as a result of it.
63
64
652) iASL Compiler/Disassembler and ACPICA tools:
66
67Reverted iASL: Additional forward reference detection. This change
68reverts forward reference detection for field declarations. The feature
69unintentionally emitted AML bytecode with incorrect package lengths for
70some ASL code related to Fields and OperationRegions. This malformed AML
71can cause systems to crash
72during boot. The malformed AML bytecode is emitted in iASL version
7320190329 and 20190405.
74
75iASL: improve forward reference detection. This change improves forward
76reference detection for named objects inside of scopes. If a parse object
77has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
78a named object that is declared later in the AML bytecode. This is
79allowed if the reference is inside of a method and the declaration is
80outside of a method like so:
81
82DefinitionBlock(...)
83{
84    Method (TEST)
85    {
86        Return (NUM0)
87    }
88    Name (NUM0,0)
89}
90
91However, if the declaration and reference are both in the same method or
92outside any methods, this is a forward reference and should be marked as
93an error because it would result in runtime errors.
94
95DefinitionBlock(...)
96{
97    Name (BUFF, Buffer (NUM0) {}) // Forward reference
98    Name (NUM0, 0x0)
99
100    Method (TEST)
101    {
102        Local0 = NUM1
103        Name (NUM1, 0x1) // Forward reference
104        return (Local0)
105    }
106}
107
108iASL: Implemented additional buffer overflow analysis for BufferField
109declarations. Check if a buffer index argument to a create buffer field
110operation is beyond the end of the target buffer.
111
112This affects these AML operators:
113
114   AML_CREATE_FIELD_OP
115   AML_CREATE_BIT_FIELD_OP
116   AML_CREATE_BYTE_FIELD_OP
117   AML_CREATE_WORD_FIELD_OP
118   AML_CREATE_DWORD_FIELD_OP
119   AML_CREATE_QWORD_FIELD_OP
120
121 There are three conditions that must be satisfied in order to allow this
122validation at compile time:
123
124   1) The length of the target buffer must be an integer constant
125   2) The index specified in the create* must be an integer constant
126   3) For CreateField, the bit length argument must be non-zero.
127
128Example:
129    Name (BUF1, Buffer() {1,2})
130    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
131
132dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
133Error    6165 -                           ^ Buffer index beyond end of
134target buffer
135
136
137----------------------------------------
13805 April 2019. Summary of changes for version 20190405:
139
140
1411) ACPICA kernel-resident subsystem:
142
143Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
144unconditionally clearing ACPI IRQs during suspend/resume") was added
145earlier to stop clearing of event status bits unconditionally on suspend
146and resume paths. Though this change fixed an issue on suspend path, it
147introduced regressions on several resume paths. In the case of S0ix,
148events are enabled as part of device suspend path. If status bits for the
149events are set when they are enabled, it could result in premature wake
150from S0ix. If status is cleared for any event that is being enabled so
151that any stale events are cleared out. In case of S0ix, events are
152enabled as part of device suspend path. If status bits for the events are
153set when they are enabled, it could result in premature wake from S0ix.
154
155This change ensures that status is cleared for any event that is being
156enabled so that any stale events are cleared out.
157
158
1592) iASL Compiler/Disassembler and ACPICA tools:
160
161iASL: Implemented an enhanced multiple file compilation that combines
162named objects from all input files to a single namespace. With this
163feature, any unresolved external declarations as well as duplicate named
164object declarations can be detected during compilation rather than
165generating errors much later at runtime. The following commands are
166examples that utilize this feature:
167    iasl dsdt.asl ssdt.asl
168    iasl dsdt.asl ssdt1.asl ssdt2.asl
169    iasl dsdt.asl ssdt*.asl
170
171----------------------------------------
17229 March 2019. Summary of changes for version 20190329:
173
174
1751) ACPICA kernel-resident subsystem:
176
177Namespace support: Remove the address nodes from global list after method
178termination. The global address list contains pointers to namespace nodes
179that represent Operation Regions. This change properly removes Operation
180Region namespace nodes that are declared dynamically during method
181execution.
182
183Linux: Use a different debug default than ACPICA. There was a divergence
184between Linux and the ACPICA codebases. In order to resolve this
185divergence, Linux now declares its own debug default in aclinux.h
186
187Renamed some internal macros to improve code understanding and
188maintenance. The macros below all operate on single 4-character ACPI
189NameSegs, not generic strings (old -> new):
190    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
191    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
192    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
193
194Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
195table.
196
197Test suite: Update makefiles, add PCC operation region support
198
199
2002) iASL Compiler/Disassembler and Tools:
201
202iASL: Implemented additional illegal forward reference detection. Now
203detect and emit an error upon detection of a forward reference from a
204Field to an Operation Region. This will fail at runtime if allowed to
205pass the compiler.
206
207AcpiExec: Add an address list check for dynamic Operation Regions. This
208feature performs a sanity test for each node the global address list.
209This is done in order to ensure that all dynamic operation regions are
210properly removed from the global address list and no dangling pointers
211are left behind.
212
213Disassembler: Improved generation of resource pathnames. This change
214improves the code that generates resource descriptor and resource tag
215pathnames. The original code used a bunch of str* C library functions
216that caused warnings on some compilers.
217
218iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
219function can overwrite buffers if the calling code is not very careful.
220In the case of generating a module/table header, use of memmove is a
221better implementation.
222
223
2243) Status of new features that have not been completed at this time:
225
226iASL: Implementing an enhanced multiple file compilation into a single
227namespace feature (Status): This feature will be released soon, and
228allows multiple ASL files to be compiled into the same single namespace.
229By doing so, any unresolved external declarations as well as duplicate
230named object declarations can be detected during compilation (rather than
231later during runtime). The following commands are examples that utilize
232this feature:
233    iasl dsdt.asl ssdt.asl
234    iasl dsdt.asl ssdt1.asl ssdt2.asl
235    iasl dsdt.asl ssdt*.asl
236
237ASL tutorial status: Feedback is being gathered internally and the
238current plan is to publish this tutorial on the ACPICA website after a
239final review by a tech writer.
240
241----------------------------------------
24215 February 2019. Summary of changes for version 20190215:
243
244
2450) Support for ACPI specification version 6.3:
246
247Add PCC operation region support for the AML interpreter. This adds PCC
248operation region support in the AML interpreter and a default handler for
249acpiexec. The change also renames the PCC region address space keyword to
250PlatformCommChannel.
251
252Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
253These methods provide OSPM with health information and device boot
254status.
255
256PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
257defines if the trigger needs to be invoked by OSPM before or at the end
258of kernel crash dump processing/handling operation.
259
260SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
261is used for describing devices such as heterogeneous processors,
262accelerators, GPUs, and IO devices with integrated compute or DMA
263engines.
264
265MADT: Add support for statistical profiling in GICC. Statistical
266profiling extension (SPE) is an architecture-specific feature for ARM.
267
268MADT: Add online capable flag. If this bit is set, system hardware
269supports enabling this processor during OS runtime.
270
271New Error Disconnect Recover Notification value. There are a number of
272scenarios where system Firmware in collaboration with hardware may
273disconnect one or more devices from the rest of the system for purposes
274of error containment. Firmware can use this new notification value to
275alert OSPM of such a removal.
276
277PPTT: New additional fields in Processor Structure Flags. These flags
278provide more information about processor topology.
279
280NFIT/Disassembler: Change a field name from "Address Range" to "Region
281Type".
282
283HMAT updates: make several existing fields to be reserved as well as
284rename subtable 0 to "memory proximity domain attributes".
285
286GTDT: Add support for new GTDT Revision 3. This revision adds information
287for the EL2 timer.
288
289iASL: Update the HMAT example template for new fields.
290
291iASL: Add support for the new revision of the GTDT (Rev 3).
292
293
2941) ACPICA kernel-resident subsystem:
295
296AML Parser: fix the main AML parse loop to correctly skip erroneous
297extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
298byte extended opcodes. If an error occurs during an AML table load, the
299AML parser will continue loading the table by skipping the offending
300opcode. This implements a "load table at any cost" philosophy.
301
302
3032) iASL Compiler/Disassembler and Tools:
304
305iASL: Add checks for illegal object references, such as a reference
306outside of method to an object within a method. Such an object is only
307temporary.
308
309iASL: Emit error for creation of a zero-length operation region. Such a
310region is rather pointless. If encountered, a runtime error is also
311implemented in the interpeter.
312
313Debugger: Fix a possible fault with the "test objects" command.
314
315iASL: Makefile: support parent directory filenames containing embedded
316spaces.
317
318iASL: Update the TPM2 template to revision 4.
319
320iASL: Add the ability to report specific warnings or remarks as errors.
321
322Disassembler: Disassemble OEMx tables as actual AML byte code.
323Previously, these tables were treated as "unknown table".
324
325iASL: Add definition and disassembly for TPM2 revision 3.
326
327iASL: Add support for TPM2 rev 3 compilation.
328
329
330----------------------------------------
33108 January 2019. Summary of changes for version 20190108:
332
333
3341) ACPICA kernel-resident subsystem:
335
336Updated all copyrights to 2019. This affects all source code modules.
337
338
3392) iASL Compiler/Disassembler and Tools:
340
341ASL test suite (ASLTS): Updated all copyrights to 2019.
342
343Tools: Updated all signon copyrights to 2019.
344
345AcpiExec: Added a new option to dump extra information concerning any
346memory leaks detected by the internal object/cache tracking mechanism. -
347va
348
349iASL: Updated the table template for the TPM2 table to the newest version
350of the table (Revision 4)
351
352
353----------------------------------------
35413 December 2018. Summary of changes for version 20181213:
355
356
3571) ACPICA Kernel-resident Subsystem:
358
359Fixed some buffer length issues with the GenericSerialBus, related to two
360of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
361which are rarely seen in the field. For these, the LEN field of the ASL
362buffer is now ignored. Hans de Goede
363
364Implemented a new object evaluation trace mechanism for control methods
365and data objects. This includes nested control methods. It is
366particularly useful for examining the ACPI execution during system
367initialization since the output is relatively terse. The flag below
368enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
369   #define ACPI_LV_EVALUATION          0x00080000
370
371Examples:
372   Enter evaluation       :  _SB.PCI0._INI (Method)
373   Exit evaluation        :  _SB.PCI0._INI
374   Enter evaluation       :  _OSI (Method)
375   Exit evaluation        :  _OSI
376   Enter evaluation       :  _SB.PCI0.TEST (Method)
377   Nested method call     :     _SB.PCI0.NST1
378   Exit nested method     :     _SB.PCI0.NST1
379   Exit evaluation        :  _SB.PCI0.TEST
380
381Added two recently-defined _OSI strings. See
382https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
383osi.
384   "Windows 2018"
385   "Windows 2018.2"
386
387Update for buffer-to-string conversions via the ToHexString ASL operator.
388A "0x" is now prepended to each of the hex values in the output string.
389This provides compatibility with other ACPI implementations. The ACPI
390specification is somewhat vague on this issue.
391   Example output string after conversion:
392"0x01,0x02,0x03,0x04,0x05,0x06"
393
394Return a run-time error for TermArg expressions within individual package
395elements. Although this is technically supported by the ASL grammar,
396other ACPI implementations do not support this either. Also, this fixes a
397fault if this type of construct is ever encountered (it never has been).
398
399
4002) iASL Compiler/Disassembler and Tools:
401
402iASL: Implemented a new compile option (-ww) that will promote individual
403warnings and remarks to errors. This is intended to enhance the firmware
404build process.
405
406AcpiExec: Implemented a new command-line option (-eo) to support the new
407object evaluation trace mechanism described above.
408
409Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
410instead of a "unknown table" message.
411
412AcpiHelp: Improved support for the "special" predefined names such as
413_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
414used for "xx" and "x".
415
416----------------------------------------
41731 October 2018. Summary of changes for version 20181031:
418
419
420An Operation Region regression was fixed by properly adding address
421ranges to a global list during initialization. This allows OS to
422accurately check for overlapping regions between native devices (such as
423PCI) and Operation regions as well as checking for region conflicts
424between two Operation Regions.
425
426Added support for the 2-byte extended opcodes in the code/feature that
427attempts to continue parsing during the table load phase. Skip parsing
428Device declarations (and other extended opcodes) when an error occurs
429during parsing. Previously, only single-byte opcodes were supported.
430
431Cleanup: Simplified the module-level code support by eliminating a
432useless global variable (AcpiGbl_GroupModuleLeveCode).
433
434
4352) iASL Compiler/Disassembler and Tools:
436
437iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
438could cause a fault in the preprocessor. This was an inadvertent side-
439effect from moving more allocations/frees to the local cache/memory
440mechanism.
441
442iASL: Enhanced error detection by validating that all NameSeg elements
443within a NamePatch actually exist. The previous behavior was spotty at
444best, and such errors could be improperly ignored at compiler time (never
445at runtime, however. There are two new error messages, as shown in the
446examples below:
447
448dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
449Error    6161 -                              ^ One or more objects within
450the Pathname do not exist (TTTT.BXXX)
451
452dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
453Error    6160 -        One or more prefix Scopes do not exist ^
454(BBBB.CBF1)
455
456iASL: Disassembler/table-compiler: Added support for the static data
457table TPM2 revision 3 (an older version of TPM2). The support has been
458added for the compiler and the disassembler.
459
460Fixed compilation of DOS format data table file on Unix/Linux systems.
461iASL now properly detects line continuations (\) for DOS format data
462table definition language files on when executing on Unix/Linux.
463
464----------------------------------------
46503 October 2018. Summary of changes for version 20181003:
466
467
4682) iASL Compiler/Disassembler and Tools:
469
470Fixed a regression introduced in version 20180927 that could cause the
471compiler to fault, especially with NamePaths containing one or more
472carats (^). Such as: ^^_SB_PCI0
473
474Added a new remark for the Sleep() operator when the sleep time operand
475is larger than one second. This is a very long time for the ASL/BIOS code
476and may not be what was intended by the ASL writer.
477
478----------------------------------------
47927 September 2018. Summary of changes for version 20180927:
480
481
4821) ACPICA kernel-resident subsystem:
483
484Updated the GPE support to clear the status of all ACPI events when
485entering any/all sleep states in order to avoid premature wakeups. In
486theory, this may cause some wakeup events to be missed, but the
487likelihood of this is small. This change restores the original behavior
488of the ACPICA code in order to fix a regression seen from the previous
489"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
490This regression could cause some systems to incorrectly wake immediately.
491
492Updated the execution of the _REG methods during initialization and
493namespace loading to bring the behavior into closer conformance to the
494ACPI specification and other ACPI implementations:
495
496From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
497    "Control methods must assume all operation regions are inaccessible
498until the _REG(RegionSpace, 1) method is executed"
499
500    "The exceptions to this rule are:
5011.  OSPM must guarantee that the following operation regions are always
502accessible:
503    SystemIO operation regions.
504    SystemMemory operation regions when accessing memory returned by the
505System Address Map reporting interfaces."
506
507Since the state of both the SystemIO and SystemMemory address spaces are
508defined by the specification to never change, this ACPICA change ensures
509that now _REG is never called on them. This solves some problems seen in
510the field and provides compatibility with other ACPI implementations. An
511update to the upcoming new version of the ACPI specification will help
512clarify this behavior.
513
514Updated the implementation of support for the Generic Serial Bus. For the
515"bidirectional" protocols, the internal implementation now automatically
516creates a return data buffer of the maximum size (255). This handles the
517worst-case for data that is returned from the serial bus handler, and
518fixes some problems seen in the field. This new buffer is directly
519returned to the ASL. As such, there is no true "bidirectional" buffer,
520which matches the ACPI specification. This is the reason for the "double
521store" seen in the example ASL code in the specification, shown below:
522
523Word Process Call (AttribProcessCall):
524    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
525    Field(TOP1, BufferAcc, NoLock, Preserve)
526    {
527        FLD1, 8, // Virtual register at command value 1.
528    }
529
530    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
531                             // as BUFF
532    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
533
534    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
535    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
536transaction
537                           // This is the "double store". The write to
538                           // FLD1 returns a new buffer, which is stored
539                           // back into BUFF with the second Store.
540
541
5422) iASL Compiler/Disassembler and Tools:
543
544iASL: Implemented detection of extraneous/redundant uses of the Offset()
545operator within a Field Unit list. A remark is now issued for these. For
546example, the first two of the Offset() operators below are extraneous.
547Because both the compiler and the interpreter track the offsets
548automatically, these Offsets simply refer to the current offset and are
549unnecessary. Note, when optimization is enabled, the iASL compiler will
550in fact remove the redundant Offset operators and will not emit any AML
551code for them.
552
553    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
554    Field (OPR1)
555    {
556        Offset (0),     // Never needed
557        FLD1, 32,
558        Offset (4),     // Redundant, offset is already 4 (bytes)
559        FLD2, 8,
560        Offset (64),    // OK use of Offset.
561        FLD3, 16,
562    }
563dsdt.asl     14:         Offset (0),
564Remark   2158 -                 ^ Unnecessary/redundant use of Offset
565operator
566
567dsdt.asl     16:         Offset (4),
568Remark   2158 -                 ^ Unnecessary/redundant use of Offset
569operator
570
571----------------------------------------
57210 August 2018. Summary of changes for version 20180810:
573
574
5751) ACPICA kernel-resident subsystem:
576
577Initial ACPI table loading: Attempt to continue loading ACPI tables
578regardless of malformed AML. Since migrating table initialization to the
579new module-level code support, the AML interpreter rejected tables upon
580any ACPI error encountered during table load. This is a problem because
581non-serious ACPI errors during table load do not necessarily mean that
582the entire definition block (DSDT or SSDT) is invalid. This change
583improves the table loading by ignoring some types of errors that can be
584generated by incorrect AML. This can range from object type errors, scope
585errors, and index errors.
586
587Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
588during suspend/resume. The status of ACPI events is no longer cleared
589when entering the ACPI S5 system state (power off) which caused some
590systems to power up immediately after turning off power in certain
591situations. This was a functional regression. It was fixed by clearing
592the status of all ACPI events again when entering S5 (for system-wide
593suspend or hibernation the clearing of the status of all events is not
594desirable, as it might cause the kernel to miss wakeup events sometimes).
595Rafael Wysocki.
596
597
5982) iASL Compiler/Disassembler and Tools:
599
600AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
601elements listed in the initialization file were previously initialized
602after the table load and before executing module-level code blocks.
603Recent changes in the module-level code support means that the table load
604becomes a large control method execution. If fields are used within
605module-level code and we are executing with the -fi option, the
606initialization values were used to initialize the namespace object(s)
607only after the table was finished loading. This change Provides an early
608initialization of objects specified in the initialization file so that
609field unit values are populated during the table load (not after the
610load).
611
612AcpiExec: Fixed a small memory leak regression that could result in
613warnings during exit of the utility. These warnings were similar to
614these:
615    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
616    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
617
618----------------------------------------
61929 June 2018. Summary of changes for version 20180629:
620
621
6221) iASL Compiler/Disassembler and Tools:
623
624iASL: Fixed a regression related to the use of the ASL External
625statement. Error checking for the use of the External() statement has
626been relaxed. Previously, a restriction on the use of External meant that
627the referenced named object was required to be defined in a different
628table (an SSDT). Thus it would be an error to declare an object as an
629external and then define the same named object in the same table. For
630example:
631    DefinitionBlock (...)
632    {
633        External (DEV1)
634        Device (DEV1){...} // This was an error
635    }
636However, this behavior has caused regressions in some existing ASL code,
637because there is code that depends on named objects and externals (with
638the same name) being declared in the same table. This change will allow
639the ASL code above to compile without errors or warnings.
640
641iASL: Implemented ASL language extensions for four operators to make some
642of their arguments optional instead of required:
643    1) Field (RegionName, AccessType, LockRule, UpdateRule)
644    2) BankField (RegionName, BankName, BankValue,
645                AccessType, LockRule, UpdateRule)
646    3) IndexField (IndexName, DataName,
647                AccessType, LockRule, UpdateRule)
648For the Field operators above, the AccessType, LockRule, and UpdateRule
649are now optional arguments. The default values are:
650        AccessType: AnyAcc
651        LockRule:   NoLock
652        UpdateRule: Preserve
653    4) Mutex (MutexName, SyncLevel)
654For this operator, the SyncLevel argument is now optional. This argument
655is rarely used in any meaningful way by ASL code, and thus it makes sense
656to make it optional. The default value is:
657        SyncLevel:  0
658
659iASL: Attempted use of the ASL Unload() operator now results in the
660following warning:
661    "Unload is not supported by all operating systems"
662This is in fact very true, and the Unload operator may be completely
663deprecated in the near future.
664
665AcpiExec: Fixed a regression for the -fi option (Namespace initialization
666file. Recent changes in the ACPICA module-level code support altered the
667table load/initialization sequence . This means that the table load has
668become a large method execution of the table itself. If Operation Region
669Fields are used within any module-level code and the -fi option was
670specified, the initialization values were populated only after the table
671had completely finished loading (and thus the module-level code had
672already been executed). This change moves the initialization of objects
673listed in the initialization file to before the table is executed as a
674method. Field unit values are now initialized before the table execution
675is performed.
676
677----------------------------------------
67831 May 2018. Summary of changes for version 20180531:
679
680
6811) ACPICA kernel-resident Subsystem:
682
683Implemented additional support to help ensure that a DSDT or SSDT is
684fully loaded even if errors are incurred during the load. The majority of
685the problems that are seen is the failure of individual AML operators
686that occur during execution of any module-level code (MLC) existing in
687the table. This support adds a mechanism to abort the current ASL
688statement (AML opcode), emit an error message, and to simply move on to
689the next opcode -- instead of aborting the entire table load. This is
690different than the execution of a control method where the entire method
691is aborted upon any error. The goal is to perform a very "best effort" to
692load the ACPI tables. The most common MLC errors that have been seen in
693the field are direct references to unresolved ASL/AML symbols (referenced
694directly without the use of the CondRefOf operator to validate the
695symbol). This new ACPICA behavior is now compatible with other ACPI
696implementations.
697
698Interpreter: The Unload AML operator is no longer supported for the
699reasons below. An AE_NOT_IMPLEMENTED exception is returned.
7001) A correct implementation on at least some hosts may not be possible.
7012) Other ACPI implementations do not correctly/fully support it.
7023) It requires host device driver support which is not known to exist.
703    (To properly support namespace unload out from underneath.)
7044) This AML operator has never been seen in the field.
705
706Parser: Added a debug option to dump AML parse sub-trees as they are
707being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
708ACPI_DB_PARSE_TREES.
709
710Debugger: Reduced the verbosity for errors incurred during table load and
711module-level code execution.
712
713Completed an investigation into adding a namespace node "owner list"
714instead of the current "owner ID" associated with namespace nodes. This
715list would link together all nodes that are owned by an individual
716control method. The purpose would be to enhance control method execution
717by speeding up cleanup during method exit (all namespace nodes created by
718a method are deleted upon method termination.) Currently, the entire
719namespace must be searched for matching owner IDs if (and only if) the
720method creates named objects outside of the local scope. However, by far
721the most common case is that methods create objects locally, not outside
722the method scope. There is already an ACPICA optimization in place that
723only searches the entire namespace in the rare case of a method creating
724objects elsewhere in the namespace. Therefore, it is felt that the
725overhead of adding an additional pointer to each namespace node to
726implement the owner list makes this feature unnecessary.
727
728
7292) iASL Compiler/Disassembler and Tools:
730
731iASL, Disassembler, and Template generator: Implemented support for
732Revision D of the IORT table. Adds a new subtable that is used to specify
733SMMUv3 PMCGs. rmurphy-arm.
734
735Disassembler: Restored correct table header validation for the "special"
736ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
737table header and must be special-cased. This was a regression that has
738been present for apparently a long time.
739
740AcpiExec: Reduced verbosity of the local exception handler implemented
741within acpiexec. This handler is invoked by ACPICA upon any exceptions
742generated during control method execution. A new option was added: -vh
743restores the original verbosity level if desired.
744
745AcpiExec: Changed the default base from decimal to hex for the -x option
746(set debug level). This simplifies the use of this option and matches the
747behavior of the corresponding iASL -x option.
748
749AcpiExec: Restored a force-exit on multiple control-c (sigint)
750interrupts. This allows program termination even if other issues cause
751the control-c to fail.
752
753ASL test suite (ASLTS): Added tests for the recently implemented package
754element resolution mechanism that allows forward references to named
755objects from individual package elements (this mechanism provides
756compatibility with other ACPI implementations.)
757
758
759----------------------------------------
7608 May 2018. Summary of changes for version 20180508:
761
762
7631) ACPICA kernel-resident subsystem:
764
765Completed the new (recently deployed) package resolution mechanism for
766the Load and LoadTable ASL/AML operators. This fixes a regression that
767was introduced in version 20180209 that could result in an
768AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
769(SSDT) that contains package objects.
770
771
7722) iASL Compiler/Disassembler and Tools:
773
774AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
7751 MB. This change allows for table offsets within the acpidump file to be
776up to 8 characters. These changes are backwards compatible with existing
777acpidump files.
778
779
780----------------------------------------
78127 April 2018. Summary of changes for version 20180427:
782
783
7841) ACPICA kernel-resident subsystem:
785
786Debugger: Added support for Package objects in the "Test Objects"
787command. This command walks the entire namespace and evaluates all named
788data objects (Integers, Strings, Buffers, and now Packages).
789
790Improved error messages for the namespace root node. Originally, the root
791was referred to by the confusing string "\___". This has been replaced by
792"Namespace Root" for clarification.
793
794Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
795Ian King <colin.king@canonical.com>.
796
797
7982) iASL Compiler/Disassembler and Tools:
799
800iASL: Implemented support to detect and flag illegal forward references.
801For compatibility with other ACPI implementations, these references are
802now illegal at the root level of the DSDT or SSDTs. Forward references
803have always been illegal within control methods. This change should not
804affect existing ASL/AML code because of the fact that these references
805have always been illegal in the other ACPI implementation.
806
807iASL: Added error messages for the case where a table OEM ID and OEM
808TABLE ID strings are longer than the ACPI-defined length. Previously,
809these strings were simply silently truncated.
810
811iASL: Enhanced the -tc option (which creates an AML hex file in C,
812suitable for import into a firmware project):
813  1) Create a unique name for the table, to simplify use of multiple
814SSDTs.
815  2) Add a protection #ifdef in the file, similar to a .h header file.
816With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
817evan.lloyd@arm.com
818
819AcpiExec: Added a new option, -df, to disable the local fault handler.
820This is useful during debugging, where it may be desired to drop into a
821debugger on a fault.
822
823----------------------------------------
82413 March 2018. Summary of changes for version 20180313:
825
826
8271) ACPICA kernel-resident subsystem:
828
829Implemented various improvements to the GPE support:
830
8311) Dispatch all active GPEs at initialization time so that no GPEs are
832lost.
8332) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
834before devices are enumerated.
8353) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
836IRQs are not lost.
8374) Add parallel GPE handling to eliminate the possibility of dispatching
838the same GPE twice.
8395) Dispatch any pending GPEs after enabling for the first time.
840
841AcpiGetObjectInfo - removed support for the _STA method. This was causing
842problems on some platforms.
843
844Added a new _OSI string, "Windows 2017.2".
845
846Cleaned up and simplified the module-level code support. These changes
847are in preparation for the eventual removal of the legacy MLC support
848(deferred execution), replaced by the new MLC architecture which executes
849the MLC as a table is loaded (DSDT/SSDTs).
850
851Changed a compile-time option to a runtime option. Changes the option to
852ignore ACPI table load-time package resolution errors into a runtime
853option. Used only for platforms that generate many AE_NOT_FOUND errors
854during boot. AcpiGbl_IgnorePackageResolutionErrors.
855
856Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
857ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
858compilation errors from unused variables (seen with some compilers).
859
860
8612) iASL Compiler/Disassembler and Tools:
862
863ASLTS: parallelized execution in order to achieve an (approximately) 2X
864performance increase.
865
866ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
867error reporting.
868
869----------------------------------------
87009 February 2018. Summary of changes for version 20180209:
871
872
8731) ACPICA kernel-resident subsystem:
874
875Completed the final integration of the recent changes to Package Object
876handling and the module-level AML code support. This allows forward
877references from individual package elements when the package object is
878declared from within module-level code blocks. Provides compatibility
879with other ACPI implementations.
880
881The new architecture for the AML module-level code has been completed and
882is now the default for the ACPICA code. This new architecture executes
883the module-level code in-line as the ACPI table is loaded/parsed instead
884of the previous architecture which deferred this code until after the
885table was fully loaded. This solves some ASL code ordering issues and
886provides compatibility with other ACPI implementations. At this time,
887there is an option to fallback to the earlier architecture, but this
888support is deprecated and is planned to be completely removed later this
889year.
890
891Added a compile-time option to ignore AE_NOT_FOUND exceptions during
892resolution of named reference elements within Package objects. Although
893this is potentially a serious problem, it can generate a lot of
894noise/errors on platforms whose firmware carries around a bunch of unused
895Package objects. To disable these errors, define
896ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
897errors are always reported for ACPICA applications such as AcpiExec.
898
899Fixed a regression related to the explicit type-conversion AML operators
900(ToXXXX). The regression was introduced early in 2017 but was not seen
901until recently because these operators are not fully supported by other
902ACPI implementations and are thus rarely used by firmware developers. The
903operators are defined by the ACPI specification to not implement the
904"implicit result object conversion". The regression incorrectly
905introduced this object conversion for the following explicit conversion
906operators:
907    ToInteger
908    ToString
909    ToBuffer
910    ToDecimalString
911    ToHexString
912    ToBCD
913    FromBCD
914
915
9162) iASL Compiler/Disassembler and Tools:
917
918iASL: Fixed a problem with the compiler constant folding feature as
919related to the ToXXXX explicit conversion operators. These operators do
920not support the "implicit result object conversion" by definition. Thus,
921ASL expressions that use these operators cannot be folded to a simple
922Store operator because Store implements the implicit conversion. This
923change uses the CopyObject operator for the ToXXXX operator folding
924instead. CopyObject is defined to not implement implicit result
925conversions and is thus appropriate for folding the ToXXXX operators.
926
927iASL: Changed the severity of an error condition to a simple warning for
928the case where a symbol is declared both locally and as an external
929symbol. This accommodates existing ASL code.
930
931AcpiExec: The -ep option to enable the new architecture for module-level
932code has been removed. It is replaced by the -dp option which instead has
933the opposite effect: it disables the new architecture (the default) and
934enables the legacy architecture. When the legacy code is removed in the
935future, the -dp option will be removed also.
936
937----------------------------------------
93805 January 2018. Summary of changes for version 20180105:
939
940
9411) ACPICA kernel-resident subsystem:
942
943Updated all copyrights to 2018. This affects all source code modules.
944
945Fixed a possible build error caused by an unresolved reference to the
946AcpiUtSafeStrncpy function.
947
948Removed NULL pointer arithmetic in the various pointer manipulation
949macros. All "(void *) NULL" constructs are converted to "(void *) 0".
950This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
951
952Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
953Mittal.
954
955
9562) iASL Compiler/Disassembler and Tools:
957
958ASLTS: Updated all copyrights to 2018.
959
960Tools: Updated all signon copyrights to 2018.
961
962AcpiXtract: Fixed a regression related to ACPI table signatures where the
963signature was truncated to 3 characters (instead of 4).
964
965AcpiExec: Restore the original terminal mode after the use of the -v and
966-vd options.
967
968ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
969
970----------------------------------------
97114 December 2017. Summary of changes for version 20171214:
972
973
9741) ACPICA kernel-resident subsystem:
975
976Fixed a regression in the external (public) AcpiEvaluateObjectTyped
977interface where the optional "pathname" argument had inadvertently become
978a required argument returning an error if omitted (NULL pointer
979argument).
980
981Fixed two possible memory leaks related to the recently developed "late
982resolution" of reference objects within ASL Package Object definitions.
983
984Added two recently defined _OSI strings: "Windows 2016" and "Windows
9852017". Mario Limonciello.
986
987Implemented and deployed a safer version of the C library function
988strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
989creation of unterminated strings as a possible result of a standard
990strncpy.
991
992Cleaned up and restructured the global variable file (acglobal.h). There
993are many changes, but no functional changes.
994
995
9962) iASL Compiler/Disassembler and Tools:
997
998iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
999optional OemData field at the end of the table was incorrectly required
1000for proper compilation. It is now correctly an optional field.
1001
1002ASLTS: The entire suite was converted from standard ASL to the ASL+
1003language, using the ASL-to-ASL+ converter which is integrated into the
1004iASL compiler. A binary compare of all output files has verified the
1005correctness of the conversion.
1006
1007iASL: Fixed the source code build for platforms where "char" is unsigned.
1008This affected the iASL lexer only. Jung-uk Kim.
1009
1010----------------------------------------
101110 November 2017. Summary of changes for version 20171110:
1012
1013
10141) ACPICA kernel-resident subsystem:
1015
1016This release implements full support for ACPI 6.2A:
1017    NFIT - Added a new subtable, "Platform Capabilities Structure"
1018No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1019errata release of the specification.
1020
1021Other ACPI table changes:
1022    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1023    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1024Linton
1025
1026Utilities: Modified the string/integer conversion functions to use
1027internal 64-bit divide support instead of a native divide. On 32-bit
1028platforms, a 64-bit divide typically requires a library function which
1029may not be present in the build (kernel or otherwise).
1030
1031Implemented a targeted error message for timeouts returned from the
1032Embedded Controller device driver. This is seen frequently enough to
1033special-case an AE_TIME returned from an EC operation region access:
1034    "Timeout from EC hardware or EC device driver"
1035
1036Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1037runtime error messages have the identical prefix.
1038
1039
10402) iASL Compiler/Disassembler and Tools:
1041
1042AcpiXtract: Fixed a problem with table header detection within the
1043acpidump file. Processing a table could be ended early if a 0x40 (@)
1044appears in the original binary table, resulting in the @ symbol appearing
1045in the decoded ASCII field at the end of the acpidump text line. The
1046symbol caused acpixtract to incorrectly think it had reached the end of
1047the current table and the beginning of a new table.
1048
1049AcpiXtract: Added an option (-f) to ignore some errors during table
1050extraction. This initial implementation ignores non-ASCII and non-
1051printable characters found in the acpidump text file.
1052
1053TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1054for ASLTS. This feature is used to track memory allocations from
1055different memory caches within the ACPICA code. At the end of an ASLTS
1056run, these memory statistics are recorded and stored in a log file.
1057
1058Debugger (user-space version): Implemented a simple "Background" command.
1059Creates a new thread to execute a control method in the background, while
1060control returns to the debugger prompt to allow additional commands.
1061    Syntax: Background <Namepath> [Arguments]
1062
1063----------------------------------------
106429 September 2017. Summary of changes for version 20170929:
1065
1066
10671) ACPICA kernel-resident subsystem:
1068
1069Redesigned and implemented an improved ASL While() loop timeout
1070mechanism. This mechanism is used to prevent infinite loops in the kernel
1071AML interpreter caused by either non-responsive hardware or incorrect AML
1072code. The new implementation uses AcpiOsGetTimer instead of a simple
1073maximum loop count, and is thus more accurate and constant across
1074different machines. The default timeout is currently 30 seconds, but this
1075may be adjusted later.
1076
1077Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1078better reflect the new implementation of the loop timeout mechanism.
1079
1080Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1081and to fix an off-by-one error. Jung-uk Kim.
1082
1083Fixed an EFI build problem by updating the makefiles to for a new file
1084that was added, utstrsuppt.c
1085
1086
10872) iASL Compiler/Disassembler and Tools:
1088
1089Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1090includes support in the table disassembler, compiler, and template
1091generator.
1092
1093iASL: Added an exception for an illegal type of recursive method
1094invocation. If a method creates named objects, the first recursive call
1095will fail at runtime. This change adds an error detection at compile time
1096to catch the problem up front. Note: Marking such a method as
1097"serialized" will not help with this problem, because the same thread can
1098acquire the method mutex more than once. Example compiler and runtime
1099output:
1100
1101    Method (MTH1)
1102    {
1103        Name (INT1, 1)
1104        MTH1 ()
1105    }
1106
1107    dsdt.asl     22: MTH1 ()
1108    Error    6152 -  ^ Illegal recursive call to method
1109                       that creates named objects (MTH1)
1110
1111Previous runtime exception:
1112    ACPI Error: [INT1] Namespace lookup failure,
1113    AE_ALREADY_EXISTS (20170831/dswload2-465)
1114
1115iASL: Updated support for External() opcodes to improve namespace
1116management and error detection. These changes are related to issues seen
1117with multiple-segment namespace pathnames within External declarations,
1118such as below:
1119
1120    External(\_SB.PCI0.GFX0, DeviceObj)
1121    External(\_SB.PCI0.GFX0.ALSI)
1122
1123iASL: Implemented support for multi-line error/warning messages. This
1124enables more detailed and helpful error messages as below, from the
1125initial deployment for the duplicate names error:
1126
1127    DSDT.iiii   1692:       Device(PEG2) {
1128    Error    6074 -                  ^ Name already exists in scope
1129(PEG2)
1130
1131        Original name creation/declaration below:
1132        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1133
1134AcpiXtract: Added additional flexibility to support differing input hex
1135dump formats. Specifically, hex dumps that contain partial disassembly
1136and/or comments within the ACPI table data definition. There exist some
1137dump utilities seen in the field that create this type of hex dump (such
1138as Simics). For example:
1139
1140    DSDT @ 0xdfffd0c0 (10999 bytes)
1141        Signature DSDT
1142        Length 10999
1143        Revision 1
1144        Checksum 0xf3 (Ok)
1145        OEM_ID BXPC
1146        OEM_table_id BXDSDT
1147        OEM_revision 1
1148        Creator_id 1280593481
1149        Creator_revision 537399345
1150      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1151      ...
1152      2af0: 5f 4c 30 46 00 a4 01
1153
1154Test suite: Miscellaneous changes/fixes:
1155    More cleanup and simplification of makefiles
1156    Continue compilation of test cases after a compile failure
1157    Do not perform binary compare unless both files actually exist
1158
1159iASL: Performed some code/module restructuring. Moved all memory
1160allocation functions to new modules. Two new files, aslallocate.c and
1161aslcache.c
1162
1163----------------------------------------
116431 August 2017. Summary of changes for version 20170831:
1165
1166
11671) ACPICA kernel-resident subsystem:
1168
1169Implemented internal support for full 64-bit addresses that appear in all
1170Generic Address Structure (GAS) structures. Previously, only the lower 32
1171bits were used. Affects the use of GAS structures in the FADT and other
1172tables, as well as the GAS structures passed to the AcpiRead and
1173AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1174
1175Added header support for the PDTT ACPI table (Processor Debug Trigger
1176Table). Full support in the iASL Data Table Compiler and disassembler is
1177forthcoming.
1178
1179
11802) iASL Compiler/Disassembler and Tools:
1181
1182iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1183Properties Topology Table) where a flag bit was specified in the wrong
1184bit position ("Line Size Valid", bit 6).
1185
1186iASL: Implemented support for Octal integer constants as defined by the
1187ASL language grammar, per the ACPI specification. Any integer constant
1188that starts with a zero is an octal constant. For example,
1189    Store (037777, Local0) /* Octal constant */
1190    Store (0x3FFF, Local0) /* Hex equivalent */
1191    Store (16383,  Local0) /* Decimal equivalent */
1192
1193iASL: Improved overflow detection for 64-bit string conversions during
1194compilation of integer constants. "Overflow" in this case means a string
1195that represents an integer that is too large to fit into a 64-bit value.
1196Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1197the low-order 32 bits with a warning, as previously implemented. Several
1198new exceptions are defined that indicate a 64-bit overflow, as well as
1199the base (radix) that was used during the attempted conversion. Examples:
1200    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1201    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1202    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1203
1204iASL: Added a warning for the case where a ResourceTemplate is declared
1205with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1206this case, the resulting template is created with a single END_TAG
1207descriptor, which is essentially useless.
1208
1209iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1210include compilation error codes as well.
1211
1212----------------------------------------
121328 July 2017. Summary of changes for version 20170728:
1214
1215
12161) ACPICA kernel-resident subsystem:
1217
1218Fixed a regression seen with small resource descriptors that could cause
1219an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1220
1221AML interpreter: Implemented a new feature that allows forward references
1222from individual named references within package objects that are
1223contained within blocks of "module-level code". This provides
1224compatibility with other ACPI implementations and supports existing
1225firmware that depends on this feature. Example:
1226
1227    Name (ABCD, 1)
1228    If (ABCD)                       /* An If() at module-level */
1229    {
1230        Name (PKG1, Package()
1231        {
1232            INT1                    /* Forward reference to object INT1
1233*/
1234        })
1235        Name (INT1, 0x1234)
1236    }
1237
1238AML Interpreter: Fixed a problem with the Alias() operator where aliases
1239to some ASL objects were not handled properly. Objects affected are:
1240Mutex, Event, and OperationRegion.
1241
1242AML Debugger: Enhanced to properly handle AML Alias objects. These
1243objects have one level of indirection which was not fully supported by
1244the debugger.
1245
1246Table Manager: Added support to detect and ignore duplicate SSDTs within
1247the XSDT/RSDT. This error in the XSDT has been seen in the field.
1248
1249EFI and EDK2 support:
1250    Enabled /WX flag for MSVC builds
1251    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1252    Added local support for 64-bit multiply and shift operations
1253    Added support to compile acpidump.efi on Windows
1254    Added OSL function stubs for interfaces not used under EFI
1255
1256Added additional support for the _DMA predefined name. _DMA returns a
1257buffer containing a resource template. This change add support within the
1258resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1259resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1260
1261
12622) iASL Compiler/Disassembler and Tools:
1263
1264iASL: Fixed a problem where the internal input line buffer(s) could
1265overflow if there are very long lines in the input ASL source code file.
1266Implemented buffer management that automatically increases the size of
1267the buffers as necessary.
1268
1269iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1270errors. If the specified exception is not raised during compilation, the
1271compiler emits an error. This is intended to support the ASL test suite,
1272but may be useful in other contexts.
1273
1274iASL: Implemented a new predefined macro, __METHOD__, which returns a
1275string containing the name of the current control method that is being
1276compiled.
1277
1278iASL: Implemented debugger and table compiler support for the SDEI ACPI
1279table (Software Delegated Exception Interface). James Morse
1280<james.morse@arm.com>
1281
1282Unix/Linux makefiles: Added an option to disable compile optimizations.
1283The disable occurs when the NOOPT flag is set to TRUE.
1284theracermaster@gmail.com
1285
1286Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1287when there are different tables for 32-bit versus 64-bit.
1288
1289Enhanced error reporting for the ASL test suite (ASLTS) by removing
1290unnecessary/verbose text, and emit the actual line number where an error
1291has occurred. These changes are intended to improve the usefulness of the
1292test suite.
1293
1294----------------------------------------
129529 June 2017. Summary of changes for version 20170629:
1296
1297
12981) ACPICA kernel-resident subsystem:
1299
1300Tables: Implemented a deferred ACPI table verification. This is useful
1301for operating systems where the tables cannot be verified in the early
1302initialization stage due to early memory mapping limitations on some
1303architectures. Lv Zheng.
1304
1305Tables: Removed the signature validation for dynamically loaded tables.
1306Provides compatibility with other ACPI implementations. Previously, only
1307SSDT tables were allowed, as per the ACPI specification. Now, any table
1308signature can be used via the Load() operator. Lv Zheng.
1309
1310Tables: Fixed several mutex issues that could cause errors during table
1311acquisition. Lv Zheng.
1312
1313Tables: Fixed a problem where an ACPI warning could be generated if a
1314null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1315
1316Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1317AcpiPutTable interfaces. This applies to the "late stage" table loading
1318when the use of AcpiPutTable is no longer required (since the system
1319memory manager is fully running and available). Lv Zheng.
1320
1321Fixed/Reverted a regression during processing of resource descriptors
1322that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1323exception in this case.
1324
1325Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1326I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1327
1328Interpreter: Fixed a possible fault if an Alias operator with an invalid
1329or duplicate target is encountered during Alias creation in
1330AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1331
1332Added an option to use designated initializers for function pointers.
1333Kees Cook <keescook@google.com>
1334
1335
13362) iASL Compiler/Disassembler and Tools:
1337
1338iASL: Allow compilation of External declarations with target pathnames
1339that refer to existing named objects within the table. Erik Schmauss.
1340
1341iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1342FieldUnit name also is declared via External in the same table. Erik
1343Schmauss.
1344
1345iASL: Allow existing scope names within pathnames used in External
1346statements. For example:
1347    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1348    Device (ABCD)
1349
1350iASL: IORT ACPI table: Implemented changes required to decode the new
1351Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1352compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1353
1354Disassembler: Don't abort disassembly on errors from External()
1355statements. Erik Schmauss.
1356
1357Disassembler: fixed a possible fault when one of the Create*Field
1358operators references a Resource Template. ACPICA Bugzilla 1396.
1359
1360iASL: In the source code, resolved some naming inconsistences across the
1361parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1362Adds a new file, aslparseop.c
1363
1364----------------------------------------
136531 May 2017. Summary of changes for version 20170531:
1366
1367
13680) ACPI 6.2 support:
1369
1370The ACPI specification version 6.2 has been released and is available at
1371http://uefi.org/specifications
1372
1373This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1374are summarized below.
1375
1376New ACPI tables (Table Compiler/Disassembler/Templates):
1377    HMAT (Heterogeneous Memory Attributes Table)
1378    WSMT (Windows SMM Security Mitigation Table)
1379    PPTT (Processor Properties Topology Table)
1380
1381New subtables for existing ACPI tables:
1382    HEST (New subtable, Arch-deferred machine check)
1383    SRAT (New subtable, Arch-specific affinity structure)
1384    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1385
1386Simple updates for existing ACPI tables:
1387    BGRT (two new flag bits)
1388    HEST (New bit defined for several subtables, GHES_ASSIST)
1389
1390New Resource Descriptors and Resource macros (Compiler/Disassembler):
1391    PinConfig()
1392    PinFunction()
1393    PinGroup()
1394    PinGroupConfig()
1395    PinGroupFunction()
1396    New type for hardware error notification (section 18.3.2.9)
1397
1398New predefined names/methods (Compiler/Interpreter):
1399    _HMA (Heterogeneous Memory Attributes)
1400    _LSI (Label Storage Information)
1401    _LSR (Label Storage Read)
1402    _LSW (Label Storage Write)
1403
1404ASL grammar/macro changes (Compiler):
1405    For() ASL macro, implemented with the AML while operator
1406    Extensions to Concatenate operator
1407    Support for multiple definition blocks in same ASL file
1408    Clarification for Buffer operator
1409    Allow executable AML code underneath all scopes (Devices, etc.)
1410    Clarification/change for the _OSI return value
1411    ASL grammar update for reference operators
1412    Allow a zero-length string for AML filename in DefinitionBlock
1413
1414Miscellaneous:
1415    New device object notification value
1416    Remove a notify value (0x0C) for graceful shutdown
1417    New UUIDs for processor/cache properties and
1418        physical package property
1419    New _HID, ACPI0014 (Wireless Power Calibration Device)
1420
1421
14221) ACPICA kernel-resident subsystem:
1423
1424Added support to disable ACPI events on hardware-reduced platforms.
1425Eliminates error messages of the form "Could not enable fixed event". Lv
1426Zheng
1427
1428Fixed a problem using Device/Thermal objects with the ObjectType and
1429DerefOf ASL operators. This support had not been fully/properly
1430implemented.
1431
1432Fixed a problem where if a Buffer object containing a resource template
1433was longer than the actual resource template, an error was generated --
1434even though the AML is legal. This case has been seen in the field.
1435
1436Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1437The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1438
1439Added header file changes for the TPM2 ACPI table. Update to new version
1440of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1441
1442Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1443These interfaces are intended to be used only in conjunction with the
1444predefined _DLM method (Device Lock Method). "This object appears in a
1445device scope when AML access to the device must be synchronized with the
1446OS environment".
1447
1448Example Code and Data Size: These are the sizes for the OS-independent
1449acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1450debug version of the code includes the debug output trace mechanism and
1451has a much larger code and data size.
1452
1453  Current Release:
1454    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1455    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
1456  Previous Release:
1457    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1458    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1459
1460
14612) iASL Compiler/Disassembler and Tools:
1462
1463iASL: Fixed a problem where an External() declaration could not refer to
1464a Field Unit. Erik Schmauss.
1465
1466Disassembler: Improved support for the Switch/Case operators. This
1467feature will disassemble AML code back to the original Switch operators
1468when possible, instead of an If..Else sequence. David Box
1469
1470iASL and disassembler: Improved the handling of multiple extraneous
1471parentheses for both ASL input and disassembled ASL output.
1472
1473Improved the behavior of the iASL compiler and disassembler to detect
1474improper use of external declarations
1475
1476Disassembler: Now aborts immediately upon detection of an unknown AML
1477opcode. The AML parser has no real way to recover from this, and can
1478result in the creation of an ill-formed parse tree that causes errors
1479later during the disassembly.
1480
1481All tools: Fixed a problem where the Unix application OSL did not handle
1482control-c correctly. For example, a control-c could incorrectly wake the
1483debugger.
1484
1485AcpiExec: Improved the Control-C handling and added a handler for
1486segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1487environments.
1488
1489Reduced the verbosity of the generic unix makefiles. Previously, each
1490compilation displayed the full set of compiler options. This has been
1491eliminated as the options are easily inspected within the makefiles. Each
1492compilation now results in a single line of output.
1493
1494----------------------------------------
149503 March 2017. Summary of changes for version 20170303:
1496
1497
14980) ACPICA licensing:
1499
1500The licensing information at the start of each source code module has
1501been updated. In addition to the Intel license, the dual GPLv2/BSD
1502license has been added for completeness. Now, a single version of the
1503source code should be suitable for all ACPICA customers. This is the
1504major change for this release since it affects all source code modules.
1505
1506
15071) ACPICA kernel-resident subsystem:
1508
1509Fixed two issues with the common asltypes.h header that could cause
1510problems in some environments: (Kim Jung-uk)
1511    Removed typedef for YY_BUFFER_STATE ?
1512       Fixes an error with earlier versions of Flex.
1513    Removed use of FILE typedef (which is only defined in stdio.h)
1514
1515
15162) iASL Compiler/Disassembler and Tools:
1517
1518Disassembler: fixed a regression introduced in 20170224. A fix for a
1519memory leak related to resource descriptor tags (names) could fault when
1520the disassembler was generated with 64-bit compilers.
1521
1522The ASLTS test suite has been updated to implement a new testing
1523architecture. During generation of the suite from ASL source, both the
1524ASL and ASL+ compilers are now validated, as well as the disassembler
1525itself (Erik Schmauss). The architecture executes as follows:
1526
1527    For every ASL source module:
1528        Compile (legacy ASL compilation)
1529        Disassemble the resulting AML to ASL+ source code
1530        Compile the new ASL+ module
1531        Perform a binary compare on the legacy AML and the new ASL+ AML
1532    The ASLTS suite then executes normally using the AML binaries.
1533
1534----------------------------------------
153524 February 2017. Summary of changes for version 20170224:
1536
1537
15381) ACPICA kernel-resident subsystem:
1539
1540Interpreter: Fixed two issues with the control method return value auto-
1541repair feature, where an attempt to double-delete an internal object
1542could result in an ACPICA warning (for _CID repair and others). No fault
1543occurs, however, because the attempted deletion (actually a release to an
1544internal cache) is detected and ignored via object poisoning.
1545
1546Debugger: Fixed an AML interpreter mutex issue during the single stepping
1547of control methods. If certain debugger commands are executed during
1548stepping, a mutex acquire/release error could occur. Lv Zheng.
1549
1550Fixed some issues generating ACPICA with the Intel C compiler by
1551restoring the original behavior and compiler-specific include file in
1552acenv.h. Lv Zheng.
1553
1554Example Code and Data Size: These are the sizes for the OS-independent
1555acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1556debug version of the code includes the debug output trace mechanism and
1557has a much larger code and data size.
1558
1559  Current Release:
1560    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1561    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1562  Previous Release:
1563    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1564    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1565
1566
15672) iASL Compiler/Disassembler and Tools:
1568
1569iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1570tool has been designed, implemented, and included in this release. The
1571key feature of this utility is that the original comments within the
1572input ASL file are preserved during the conversion process, and included
1573within the converted ASL+ file -- thus creating a transparent conversion
1574of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1575
1576    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
1577converted code
1578
1579iASL/Disassembler: Improved the detection and correct disassembly of
1580Switch/Case operators. This feature detects sequences of if/elseif/else
1581operators that originated from ASL Switch/Case/Default operators and
1582emits the original operators. David Box.
1583
1584iASL: Improved the IORT ACPI table support in the following areas. Lv
1585Zheng:
1586    Clear MappingOffset if the MappingCount is zero.
1587    Fix the disassembly of the SMMU GSU interrupt offset.
1588    Update the template file for the IORT table.
1589
1590Disassembler: Enhanced the detection and disassembly of resource
1591template/descriptor within a Buffer object. An EndTag descriptor is now
1592required to have a zero second byte, since all known ASL compilers emit
1593this. This helps eliminate incorrect decisions when a buffer is
1594disassembled (false positives on resource templates).
1595
1596----------------------------------------
159719 January 2017. Summary of changes for version 20170119:
1598
1599
16001) General ACPICA software:
1601
1602Entire source code base: Added the 2017 copyright to all source code
1603legal/licensing module headers and utility/tool signons. This includes
1604the standard Linux dual-license header. This affects virtually every file
1605in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
1606the ACPICA test suite.
1607
1608
16092) iASL Compiler/Disassembler and Tools:
1610
1611iASL: Removed/fixed an inadvertent remark when a method argument
1612containing a reference is used as a target operand within the method (and
1613never used as a simple argument), as in the example below. Jeffrey Hugo.
1614
1615    dsdt.asl   1507:    Store(0x1, Arg0)
1616    Remark   2146 -                ^ Method Argument is never used (Arg0)
1617
1618All tools: Removed the bit width of the compiler that generated the tool
1619from the common signon for all user space tools. This proved to be
1620confusing and unnecessary. This includes similar removal of HARDWARE_NAME
1621from the generic makefiles (Thomas Petazzoni). Example below.
1622
1623    Old:
1624    ASL+ Optimizing Compiler version 20170119-32
1625    ASL+ Optimizing Compiler version 20170119-64
1626
1627    New:
1628    ASL+ Optimizing Compiler version 20170119
1629
1630----------------------------------------
163122 December 2016. Summary of changes for version 20161222:
1632
1633
16341) ACPICA kernel-resident subsystem:
1635
1636AML Debugger: Implemented a new mechanism to simplify and enhance
1637debugger integration into all environments, including kernel debuggers
1638and user-space utilities, as well as remote debug services. This
1639mechanism essentially consists of new OSL interfaces to support debugger
1640initialization/termination, as well as wait/notify interfaces to perform
1641the debugger handshake with the host. Lv Zheng.
1642
1643    New OSL interfaces:
1644        AcpiOsInitializeDebugger (void)
1645        AcpiOsTerminateDebugger (void)
1646        AcpiOsWaitCommandReady (void)
1647        AcpiOsNotifyCommandComplete (void)
1648
1649    New OS services layer:
1650        osgendbg.c -- Example implementation, and used for AcpiExec
1651
1652Update for Generic Address Space (GAS) support: Although the AccessWidth
1653and/or BitOffset fields of the GAS are not often used, this change now
1654fully supports these fields. This affects the internal support for FADT
1655registers, registers in other ACPI data tables, and the AcpiRead and
1656AcpiWrite public interfaces. Lv Zheng.
1657
1658Sleep support: In order to simplify integration of ACPI sleep for the
1659various host operating systems, a new OSL interface has been introduced.
1660AcpiOsEnterSleep allows the host to perform any required operations
1661before the final write to the sleep control register(s) is performed by
1662ACPICA. Lv Zheng.
1663
1664    New OSL interface:
1665        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1666
1667    Called from these internal interfaces:
1668        AcpiHwLegacySleep
1669        AcpiHwExtendedSleep
1670
1671EFI support: Added a very small EFI/ACPICA example application. Provides
1672a simple demo for EFI integration, as well as assisting with resolution
1673of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1674
1675    source/tools/efihello/efihello.c
1676
1677Local C library: Implemented several new functions to enhance ACPICA
1678portability, for environments where these clib functions are not
1679available (such as EFI). Lv Zheng:
1680    putchar
1681    getchar
1682    strpbrk
1683    strtok
1684    memmove
1685
1686Fixed a regression where occasionally a valid resource descriptor was
1687incorrectly detected as invalid at runtime, and a
1688AE_AML_NO_RESOURCE_END_TAG was returned.
1689
1690Fixed a problem with the recently implemented support that enables
1691control method invocations as Target operands to many ASL operators.
1692Warnings of this form: "Needed type [Reference], found [Processor]" were
1693seen at runtime for some method invocations.
1694
1695Example Code and Data Size: These are the sizes for the OS-independent
1696acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1697debug version of the code includes the debug output trace mechanism and
1698has a much larger code and data size.
1699
1700  Current Release:
1701    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1702    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
1703  Previous Release:
1704    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1705    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1706
1707
17082) iASL Compiler/Disassembler and Tools:
1709
1710Disassembler: Enhanced output by adding the capability to detect and
1711disassemble ASL Switch/Case statements back to the original ASL source
1712code instead of if/else blocks. David Box.
1713
1714AcpiHelp: Split a large file into separate files based upon
1715functionality/purpose. New files are:
1716    ahaml.c
1717    ahasl.c
1718
1719----------------------------------------
172017 November 2016. Summary of changes for version 20161117:
1721
1722
17231) ACPICA kernel-resident subsystem:
1724
1725Table Manager: Fixed a regression introduced in 20160729, "FADT support
1726cleanup". This was an attempt to remove all references in the source to
1727the FADT version 2, which never was a legal version number. It was
1728skipped because it was an early version of 64-bit support that was
1729eventually abandoned for the current 64-bit support.
1730
1731Interpreter: Fixed a problem where runtime implicit conversion was
1732incorrectly disabled for the ASL operators below. This brings the
1733behavior into compliance with the ACPI specification:
1734    FromBCD
1735    ToBCD
1736    ToDecimalString
1737    ToHexString
1738    ToInteger
1739    ToBuffer
1740
1741Table Manager: Added a new public interface, AcpiPutTable, used to
1742release and free an ACPI table returned by AcpiGetTable and related
1743interfaces. Lv Zheng.
1744
1745Example Code and Data Size: These are the sizes for the OS-independent
1746acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1747debug version of the code includes the debug output trace mechanism and
1748has a much larger code and data size.
1749
1750  Current Release:
1751    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1752    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1753  Previous Release:
1754    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1755    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1756
1757
17582) iASL Compiler/Disassembler and Tools:
1759
1760Disassembler: Fixed a regression for disassembly of Resource Template.
1761Detection of templates in the AML stream missed some types of templates.
1762
1763iASL: Fixed a problem where an Access Size error was returned for the PCC
1764address space when the AccessSize of the GAS register is greater than a
1765DWORD. Hoan Tran.
1766
1767iASL: Implemented several grammar changes for the operators below. These
1768changes are slated for the next version of the ACPI specification:
1769    RefOf        - Disallow method invocation as an operand
1770    CondRefOf    - Disallow method invocation as an operand
1771    DerefOf      - Disallow operands that use the result from operators
1772that
1773                   do not return a reference (Changed TermArg to
1774SuperName).
1775
1776iASL: Control method invocations are now allowed for Target operands, as
1777per the ACPI specification. Removed error for using a control method
1778invocation as a Target operand.
1779
1780Disassembler: Improved detection of Resource Templates, Unicode, and
1781Strings within Buffer objects. These subtypes do not contain a specific
1782opcode to indicate the originating ASL code, and they must be detected by
1783other means within the disassembler.
1784
1785iASL: Implemented an optimization improvement for 32-bit ACPI tables
1786(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
1787only after 64-bit to 32-bit truncation. A truncation warning message is
1788still emitted, however.
1789
1790AcpiXtract: Implemented handling for both types of line terminators (LF
1791or CR/LF) so that it can accept AcpiDump output files from any system.
1792Peter Wu.
1793
1794AcpiBin: Added two new options for comparing AML files:
1795    -a: compare and display ALL mismatches
1796    -o: start compare at this offset into the second file
1797
1798----------------------------------------
179930 September 2016. Summary of changes for version 20160930:
1800
1801
18021) ACPICA kernel-resident subsystem:
1803
1804Fixed a regression in the internal AcpiTbFindTable function where a non
1805AE_OK exception could inadvertently be returned even if the function did
1806not fail. This problem affects the following operators:
1807    DataTableRegion
1808    LoadTable
1809
1810Fixed a regression in the LoadTable operator where a load to any
1811namespace location other than the root no longer worked properly.
1812
1813Increased the maximum loop count value that will result in the
1814AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
1815prevent infinite loops within the AML interpreter and thus the host OS
1816kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
18171,048,575).
1818
1819Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
1820acpixf.h file. This allows hosts to easily configure the maximum loop
1821count at runtime.
1822
1823Removed an illegal character in the strtoul64.c file. This character
1824caused errors with some C compilers.
1825
1826Example Code and Data Size: These are the sizes for the OS-independent
1827acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1828debug version of the code includes the debug output trace mechanism and
1829has a much larger code and data size.
1830
1831  Current Release:
1832    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1833    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1834  Previous Release:
1835    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
1836    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1837
1838
18392) iASL Compiler/Disassembler and Tools:
1840
1841Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
1842the simpler ASL ElseIf keyword. During the conversion, a trailing If
1843block could be lost and missing from the disassembled output.
1844
1845iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
1846the missing rule caused a parse error when using the Index operator as an
1847operand to ObjectType. This construct now compiles properly. Example:
1848    ObjectType(PKG1[4]).
1849
1850iASL: Correctly handle unresolved symbols in the hardware map file (-lm
1851option). Previously, unresolved symbols could cause a protection fault.
1852Such symbols are now marked as unresolved in the map file.
1853
1854iASL: Implemented support to allow control method invocations as an
1855operand to the ASL DeRefOf operator. Example:
1856    DeRefOf(MTH1(Local0))
1857
1858Disassembler: Improved support for the ToPLD ASL macro. Detection of a
1859possible _PLD buffer now includes examination of both the normal buffer
1860length (16 or 20) as well as the surrounding AML package length.
1861
1862Disassembler: Fixed a problem with the decoding of complex expressions
1863within the Divide operator for ASL+. For the case where both the quotient
1864and remainder targets are specified, the entire statement cannot be
1865disassembled. Previously, the output incorrectly contained a mix of ASL-
1866and ASL+ operators. This mixed statement causes a syntax error when
1867compiled. Example:
1868    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
1869disassembled to:
1870    Divide (INT1 + 6, 128, RSLT, QUOT)
1871
1872iASL/Tools: Added support to process AML and non-AML ACPI tables
1873consistently. For the disassembler and AcpiExec, allow all types of ACPI
1874tables (AML and data tables). For the iASL -e option, allow only AML
1875tables (DSDT/SSDT).
1876
1877----------------------------------------
187831 August 2016. Summary of changes for version 20160831:
1879
1880
18811) ACPICA kernel-resident subsystem:
1882
1883Improve support for the so-called "module-level code", which is defined
1884to be math, logical and control AML opcodes that appear outside of any
1885control method. This change improves the support by adding more opcodes
1886that can be executed in the manner. Some other issues have been solved,
1887and the ASL grammar changes to support such code under all scope
1888operators (Device, etc.) are complete. Lv Zheng.
1889
1890UEFI support: these OSL functions have been implemented. This is an
1891additional step toward supporting the AcpiExec utility natively (with
1892full hardware access) under UEFI. Marcelo Ferreira.
1893    AcpiOsReadPciConfiguration
1894    AcpiOsWritePciConfiguration
1895
1896Fixed a possible mutex error during control method auto-serialization. Lv
1897Zheng.
1898
1899Updated support for the Generic Address Structure by fully implementing
1900all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
1901Zheng.
1902
1903Updated the return value for the internal _OSI method. Instead of
19040xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
1905for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
1906implementations, and will be reflected and clarified in the next version
1907of the ACPI specification.
1908
1909Implemented two new table events that can be passed to an ACPICA table
1910handler. These events are used to indicate a table installation or
1911uninstallation. These events are used in addition to existed table load
1912and unload events. Lv Zheng.
1913
1914Implemented a cleanup for all internal string-to-integer conversions.
1915Consolidate multiple versions of this functionality and limit possible
1916bases to either 10 or 16 to simplify the code. Adds a new file,
1917utstrtoul64.
1918
1919Cleanup the inclusion order of the various compiler-specific headers.
1920This simplifies build configuration management. The compiler-specific
1921headers are now split out from the host-specific headers. Lv Zheng.
1922
1923Example Code and Data Size: These are the sizes for the OS-independent
1924acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1925debug version of the code includes the debug output trace mechanism and
1926has a much larger code and data size.
1927
1928  Current Release:
1929    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
1930    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1931
1932
19332) iASL Compiler/Disassembler and Tools:
1934
1935iASL/AcpiExec: Added a command line option to display the build date/time
1936of the tool (-vd). This can be useful to verify that the correct version
1937of the tools are being used.
1938
1939AML Debugger: Implemented a new subcommand ("execute predef") to execute
1940all predefined control methods and names within the current namespace.
1941This can be useful for debugging problems with ACPI tables and the ACPI
1942namespace.
1943
1944----------------------------------------
194529 July 2016. Summary of changes for version 20160729:
1946
1947
19481) ACPICA kernel-resident subsystem:
1949
1950Implemented basic UEFI support for the various ACPICA tools. This
1951includes:
19521) An OSL to implement the various AcpiOs* interfaces on UEFI.
19532) Support to obtain the ACPI tables on UEFI.
19543) Local implementation of required C library functions not available on
1955UEFI.
19564) A front-end (main) function for the tools for UEFI-related
1957initialization.
1958
1959The initial deployment of this support is the AcpiDump utility executing
1960as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
1961Current environments supported are Linux/Unix. MSVC generation is not
1962supported at this time. See the generate/efi/README file for build
1963instructions. Lv Zheng.
1964
1965Future plans include porting the AcpiExec utility to execute natively on
1966the platform with I/O and memory access. This will allow viewing/dump of
1967the platform namespace and native execution of ACPI control methods that
1968access the actual hardware. To fully implement this support, the OSL
1969functions below must be implemented with UEFI interfaces. Any community
1970help in the implementation of these functions would be appreciated:
1971    AcpiOsReadPort
1972    AcpiOsWritePort
1973    AcpiOsReadMemory
1974    AcpiOsWriteMemory
1975    AcpiOsReadPciConfiguration
1976    AcpiOsWritePciConfiguration
1977
1978Restructured and standardized the C library configuration for ACPICA,
1979resulting in the various configuration options below. This includes a
1980global restructuring of the compiler-dependent and platform-dependent
1981include files. These changes may affect the existing platform-dependent
1982configuration files on some hosts. Lv Zheng.
1983
1984The current C library configuration options appear below. For any issues,
1985it may be helpful to examine the existing compiler-dependent and
1986platform-dependent files as examples. Lv Zheng.
1987
19881) Linux kernel:
1989    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1990library.
1991    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
19922) Unix/Windows/BSD applications:
1993    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
1994library.
1995    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
19963) UEFI applications:
1997    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1998library.
1999    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
20004) UEFI applications (EDK2/StdLib):
2001    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2002    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2003
2004
2005AML interpreter: "module-level code" support. Allows for execution of so-
2006called "executable" AML code (math/logical operations, etc.) outside of
2007control methods not just at the module level (top level) but also within
2008any scope declared outside of a control method - Scope{}, Device{},
2009Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2010
2011Simplified the configuration of the "maximum AML loops" global option by
2012adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2013modified at runtime.
2014
2015
2016Example Code and Data Size: These are the sizes for the OS-independent
2017acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2018debug version of the code includes the debug output trace mechanism and
2019has a much larger code and data size.
2020
2021  Current Release:
2022    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2023    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2024
2025
20262) iASL Compiler/Disassembler and Tools:
2027
2028iASL: Add full support for the RASF ACPI table (RAS Features Table).
2029Includes disassembler, data table compiler, and header support.
2030
2031iASL Expand "module-level code" support. Allows for
2032compilation/disassembly of so-called "executable" AML code (math/logical
2033operations, etc.) outside of control methods not just at the module level
2034(top level) but also within any scope declared outside of a control
2035method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2036ThermalZone{}.
2037
2038AcpiDump: Added support for dumping all SSDTs on newer versions of
2039Windows. These tables are now easily available -- SSDTs are not available
2040through the registry on older versions.
2041
2042----------------------------------------
204327 May 2016. Summary of changes for version 20160527:
2044
2045
20461) ACPICA kernel-resident subsystem:
2047
2048Temporarily reverted the new arbitrary bit length/alignment support in
2049AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2050a number of regressions with the new code that need to be fully resolved
2051and tested before this support can be finally integrated into ACPICA.
2052Apologies for any inconveniences these issues may have caused.
2053
2054The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2055ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2056and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2057
2058Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2059option. Adds a new return macro, return_STR. Junk-uk Kim.
2060
2061Example Code and Data Size: These are the sizes for the OS-independent
2062acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2063debug version of the code includes the debug output trace mechanism and
2064has a much larger code and data size.
2065
2066  Current Release:
2067    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2068    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2069  Previous Release:
2070    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2071    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2072
2073----------------------------------------
207422 April 2016. Summary of changes for version 20160422:
2075
20761) ACPICA kernel-resident subsystem:
2077
2078Fixed a regression in the GAS (generic address structure) arbitrary bit
2079support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2080and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2081
2082ACPI 6.0: Added support for new/renamed resource macros. One new argument
2083was added to each of these macros, and the original name has been
2084deprecated. The AML disassembler will always disassemble to the new
2085names. Support for the new macros was added to iASL, disassembler,
2086resource manager, and the acpihelp utility. ACPICA BZ 1274.
2087
2088    I2cSerialBus  -> I2cSerialBusV2
2089    SpiSerialBus  -> SpiSerialBusV2
2090    UartSerialBus -> UartSerialBusV2
2091
2092ACPI 6.0: Added support for a new integer field that was appended to the
2093package object returned by the _BIX method. This adds iASL compile-time
2094and AML runtime error checking. ACPICA BZ 1273.
2095
2096ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2097Subspace Type2" (Headers, Disassembler, and data table compiler).
2098
2099Example Code and Data Size: These are the sizes for the OS-independent
2100acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2101debug version of the code includes the debug output trace mechanism and
2102has a much larger code and data size.
2103
2104  Current Release:
2105    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2106    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2107  Previous Release:
2108    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2109    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2110
2111
21122) iASL Compiler/Disassembler and Tools:
2113
2114iASL: Implemented an ASL grammar extension to allow/enable executable
2115"module-level code" to be created and executed under the various
2116operators that create new scopes. This type of AML code is already
2117supported in all known AML interpreters, and the grammar change will
2118appear in the next version of the ACPI specification. Simplifies the
2119conditional runtime creation of named objects under these object types:
2120
2121    Device
2122    PowerResource
2123    Processor
2124    Scope
2125    ThermalZone
2126
2127iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2128ease-of-use to the ASL language. The syntax is similar to the
2129corresponding C operator, and is implemented with the existing AML While
2130opcode -- thus requiring no changes to existing AML interpreters.
2131
2132    For (Initialize, Predicate, Update) {TermList}
2133
2134Grammar:
2135    ForTerm :=
2136        For (
2137            Initializer    // Nothing | TermArg => ComputationalData
2138            Predicate      // Nothing | TermArg => ComputationalData
2139            Update         // Nothing | TermArg => ComputationalData
2140        ) {TermList}
2141
2142
2143iASL: The _HID/_ADR detection and validation has been enhanced to search
2144under conditionals in order to allow these objects to be conditionally
2145created at runtime.
2146
2147iASL: Fixed several issues with the constant folding feature. The
2148improvement allows better detection and resolution of statements that can
2149be folded at compile time. ACPICA BZ 1266.
2150
2151iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2152conversion to the ASL ElseIf operator where incorrect ASL code could be
2153generated.
2154
2155iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2156sometimes an extra (and extraneous) set of parentheses were emitted for
2157some combinations of operators. Although this did not cause any problems
2158with recompilation of the disassembled code, it made the code more
2159difficult to read. David Box. ACPICA BZ 1231.
2160
2161iASL: Changed to ignore the unreferenced detection for predefined names
2162of resource descriptor elements, when the resource descriptor is
2163created/defined within a control method.
2164
2165iASL: Disassembler: Fix a possible fault with externally declared Buffer
2166objects.
2167
2168----------------------------------------
216918 March 2016. Summary of changes for version 20160318:
2170
21711) ACPICA kernel-resident subsystem:
2172
2173Added support for arbitrary bit lengths and bit offsets for registers
2174defined by the Generic Address Structure. Previously, only aligned bit
2175lengths of 8/16/32/64 were supported. This was sufficient for many years,
2176but recently some machines have been seen that require arbitrary bit-
2177level support. ACPICA BZ 1240. Lv Zheng.
2178
2179Fixed an issue where the \_SB._INI method sometimes must be evaluated
2180before any _REG methods are evaluated. Lv Zheng.
2181
2182Implemented several changes related to ACPI table support
2183(Headers/Disassembler/TableCompiler):
2184NFIT: For ACPI 6.1, updated to add some additional new fields and
2185constants.
2186FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
21876).
2188DMAR: Added new constants per the 10/2014 DMAR spec.
2189IORT: Added new subtable per the 10/2015 IORT spec.
2190HEST: For ACPI 6.1, added new constants and new subtable.
2191DBG2: Added new constants per the 12/2015 DBG2 spec.
2192FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2193ACPICA BZ 1249.
2194ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2195
2196Updated header support for the DMAR table to match the current version of
2197the related spec.
2198
2199Added extensions to the ASL Concatenate operator to allow any ACPI object
2200to be passed as an operand. Any object other than Integer/String/Buffer
2201simply returns a string containing the object type. This extends the
2202usefulness of the Printf macros. Previously, Concatenate would abort the
2203control method if a non-data object was encountered.
2204
2205ACPICA source code: Deployed the C "const" keyword across the source code
2206where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2207
2208Example Code and Data Size: These are the sizes for the OS-independent
2209acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2210debug version of the code includes the debug output trace mechanism and
2211has a much larger code and data size.
2212
2213  Current Release:
2214    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2215    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2216  Previous Release:
2217    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2218    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2219
2220
22212) iASL Compiler/Disassembler and Tools:
2222
2223iASL/Disassembler: Improved the heuristic used to determine the number of
2224arguments for an externally defined control method (a method in another
2225table). Although this is an improvement, there is no deterministic way to
2226"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2227will completely solve this problem as it is deployed (automatically) in
2228newer BIOS code.
2229
2230iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2231statements that could cause errors when the disassembled file is
2232compiled. ACPICA BZ 1243. David Box.
2233
2234iASL: Fixed a regression caused by the merger of the two versions of the
2235local strtoul64. Because of a dependency on a global variable, strtoul64
2236could return an error for integers greater than a 32-bit value. ACPICA BZ
22371260.
2238
2239iASL: Fixed a regression where a fault could occur for an ASL Return
2240statement if it invokes a control method that is not resolved. ACPICA BZ
22411264.
2242
2243AcpiXtract: Improved input file validation: detection of binary files and
2244non-acpidump text files.
2245
2246----------------------------------------
224712 February 2016. Summary of changes for version 20160212:
2248
22491) ACPICA kernel-resident subsystem:
2250
2251Implemented full support for the ACPI 6.1 specification (released in
2252January). This version of the specification is available at:
2253http://www.uefi.org/specifications
2254
2255Only a relatively small number of changes were required in ACPICA to
2256support ACPI 6.1, in these areas:
2257- New predefined names
2258- New _HID values
2259- A new subtable for HEST
2260- A few other header changes for new values
2261
2262Ensure \_SB_._INI is executed before any _REG methods are executed. There
2263appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2264
2265Reverted a change made in version 20151218 which enabled method
2266invocations to be targets of various ASL operators (SuperName and Target
2267grammar elements). While the new behavior is supported by the ACPI
2268specification, other AML interpreters do not support this behavior and
2269never will. The ACPI specification will be updated for ACPI 6.2 to remove
2270this support. Therefore, the change was reverted to the original ACPICA
2271behavior.
2272
2273ACPICA now supports the GCC 6 compiler.
2274
2275Current Release: (Note: build changes increased sizes)
2276    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2277    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2278Previous Release:
2279    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2280    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2281
2282
22832) iASL Compiler/Disassembler and Tools:
2284
2285Completed full support for the ACPI 6.0 External() AML opcode. The
2286compiler emits an external AML opcode for each ASL External statement.
2287This opcode is used by the disassembler to assist with the disassembly of
2288external control methods by specifying the required number of arguments
2289for the method. AML interpreters do not use this opcode. To ensure that
2290interpreters do not even see the opcode, a block of one or more external
2291opcodes is surrounded by an "If(0)" construct. As this feature becomes
2292commonly deployed in BIOS code, the ability of disassemblers to correctly
2293disassemble AML code will be greatly improved. David Box.
2294
2295iASL: Implemented support for an optional cross-reference output file.
2296The -lx option will create a the cross-reference file with the suffix
2297"xrf". Three different types of cross-reference are created in this file:
2298- List of object references made from within each control method
2299- Invocation (caller) list for each user-defined control method
2300- List of references to each non-method object in the namespace
2301
2302iASL: Method invocations as ASL Target operands are now disallowed and
2303flagged as errors in preparation for ACPI 6.2 (see the description of the
2304problem above).
2305
2306----------------------------------------
23078 January 2016. Summary of changes for version 20160108:
2308
23091) ACPICA kernel-resident subsystem:
2310
2311Updated all ACPICA copyrights and signons to 2016: Added the 2016
2312copyright to all source code module headers and utility/tool signons.
2313This includes the standard Linux dual-license header. This affects
2314virtually every file in the ACPICA core subsystem, iASL compiler, all
2315ACPICA utilities, and the ACPICA test suite.
2316
2317Fixed a regression introduced in version 20151218 concerning the
2318execution of so-called module-level ASL/AML code. Namespace objects
2319created under a module-level If() construct were not properly/fully
2320entered into the namespace and could cause an interpreter fault when
2321accessed.
2322
2323Example Code and Data Size: These are the sizes for the OS-independent
2324acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2325debug version of the code includes the debug output trace mechanism and
2326has a much larger code and data size.
2327
2328Current Release:
2329    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2330    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2331  Previous Release:
2332    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2333    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2334
2335
23362) iASL Compiler/Disassembler and Tools:
2337
2338Fixed a problem with the compilation of the GpioIo and GpioInt resource
2339descriptors. The _PIN field name was incorrectly defined to be an array
2340of 32-bit values, but the _PIN values are in fact 16 bits each. This
2341would cause incorrect bit width warnings when using Word (16-bit) fields
2342to access the descriptors.
2343
2344
2345----------------------------------------
234618 December 2015. Summary of changes for version 20151218:
2347
23481) ACPICA kernel-resident subsystem:
2349
2350Implemented per-AML-table execution of "module-level code" as individual
2351ACPI tables are loaded into the namespace during ACPICA initialization.
2352In other words, any module-level code within an AML table is executed
2353immediately after the table is loaded, instead of batched and executed
2354after all of the tables have been loaded. This provides compatibility
2355with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2356David Box.
2357
2358To fully support the feature above, the default operation region handlers
2359for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2360installed before any ACPI tables are loaded. This enables module-level
2361code to access these address spaces during the table load and module-
2362level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2363Box.
2364
2365Implemented several changes to the internal _REG support in conjunction
2366with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2367utilities for the changes above. Although these tools were changed, host
2368operating systems that simply use the default handlers for SystemMemory,
2369SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2370
2371For example, in the code below, DEV1 is conditionally added to the
2372namespace by the DSDT via module-level code that accesses an operation
2373region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2374created immediately after the DSDT is loaded in order for the SSDT to
2375successfully reference DEV1. Previously, this code would cause an
2376AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2377fully supported by ACPICA.
2378
2379    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2380    {
2381        OperationRegion (OPR1, SystemMemory, 0x400, 32)
2382        Field (OPR1, AnyAcc, NoLock, Preserve)
2383        {
2384            FLD1, 1
2385        }
2386        If (FLD1)
2387        {
2388            Device (\DEV1)
2389            {
2390            }
2391        }
2392    }
2393    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2394    {
2395        External (\DEV1, DeviceObj)
2396        Scope (\DEV1)
2397        {
2398        }
2399    }
2400
2401Fixed an AML interpreter problem where control method invocations were
2402not handled correctly when the invocation was itself a SuperName argument
2403to another ASL operator. In these cases, the method was not invoked.
2404ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2405argument:
2406    Store
2407    Acquire, Wait
2408    CondRefOf, RefOf
2409    Decrement, Increment
2410    Load, Unload
2411    Notify
2412    Signal, Release, Reset
2413    SizeOf
2414
2415Implemented automatic String-to-ObjectReference conversion support for
2416packages returned by predefined names (such as _DEP). A common BIOS error
2417is to add double quotes around an ObjectReference namepath, which turns
2418the reference into an unexpected string object. This support detects the
2419problem and corrects it before the package is returned to the caller that
2420invoked the method. Lv Zheng.
2421
2422Implemented extensions to the Concatenate operator. Concatenate now
2423accepts any type of object, it is not restricted to simply
2424Integer/String/Buffer. For objects other than these 3 basic data types,
2425the argument is treated as a string containing the name of the object
2426type. This expands the utility of Concatenate and the Printf/Fprintf
2427macros. ACPICA BZ 1222.
2428
2429Cleaned up the output of the ASL Debug object. The timer() value is now
2430optional and no longer emitted by default. Also, the basic data types of
2431Integer/String/Buffer are simply emitted as their values, without a data
2432type string -- since the data type is obvious from the output. ACPICA BZ
24331221.
2434
2435Example Code and Data Size: These are the sizes for the OS-independent
2436acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2437debug version of the code includes the debug output trace mechanism and
2438has a much larger code and data size.
2439
2440  Current Release:
2441    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2442    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2443  Previous Release:
2444    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2445    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2446
2447
24482) iASL Compiler/Disassembler and Tools:
2449
2450iASL: Fixed some issues with the ASL Include() operator. This operator
2451was incorrectly defined in the iASL parser rules, causing a new scope to
2452be opened for the code within the include file. This could lead to
2453several issues, including allowing ASL code that is technically illegal
2454and not supported by AML interpreters. Note, this does not affect the
2455related #include preprocessor operator. ACPICA BZ 1212.
2456
2457iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2458operator is essentially an ASL macro since there is no AML opcode
2459associated with it. The code emitted by the iASL compiler for ElseIf is
2460an Else opcode followed immediately by an If opcode. The disassembler
2461will now emit an ElseIf if it finds an Else immediately followed by an
2462If. This simplifies the decoded ASL, especially for deeply nested
2463If..Else and large Switch constructs. Thus, the disassembled code more
2464closely follows the original source ASL. ACPICA BZ 1211. Example:
2465
2466    Old disassembly:
2467        Else
2468        {
2469            If (Arg0 == 0x02)
2470            {
2471                Local0 = 0x05
2472            }
2473        }
2474
2475    New disassembly:
2476        ElseIf (Arg0 == 0x02)
2477        {
2478            Local0 = 0x05
2479        }
2480
2481AcpiExec: Added support for the new module level code behavior and the
2482early region installation. This required a small change to the
2483initialization, since AcpiExec must install its own operation region
2484handlers.
2485
2486AcpiExec: Added support to make the debug object timer optional. Default
2487is timer disabled. This cleans up the debug object output -- the timer
2488data is rarely used.
2489
2490AcpiExec: Multiple ACPI tables are now loaded in the order that they
2491appear on the command line. This can be important when there are
2492interdependencies/references between the tables.
2493
2494iASL/Templates. Add support to generate template files with multiple
2495SSDTs within a single output file. Also added ommand line support to
2496specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
24971223, 1225.
2498
2499
2500----------------------------------------
250124 November 2015. Summary of changes for version 20151124:
2502
25031) ACPICA kernel-resident subsystem:
2504
2505Fixed a possible regression for a previous update to FADT handling. The
2506FADT no longer has a fixed table ID, causing some issues with code that
2507was hardwired to a specific ID. Lv Zheng.
2508
2509Fixed a problem where the method auto-serialization could interfere with
2510the current SyncLevel. This change makes the auto-serialization support
2511transparent to the SyncLevel support and management.
2512
2513Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2514interface is intended for early access to the namespace during the
2515initial namespace device discovery walk. The _SUB method has been seen to
2516access operation regions in some cases, causing errors because the
2517operation regions are not fully initialized.
2518
2519AML Debugger: Fixed some issues with the terminate/quit/exit commands
2520that can cause faults. Lv Zheng.
2521
2522AML Debugger: Add thread ID support so that single-step mode only applies
2523to the AML Debugger thread. This prevents runtime errors within some
2524kernels. Lv Zheng.
2525
2526Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2527methods that are invoked by this interface are optional, removed warnings
2528emitted for the case where one or more of these methods do not exist.
2529ACPICA BZ 1208, original change by Prarit Bhargava.
2530
2531Made a major pass through the entire ACPICA source code base to
2532standardize formatting that has diverged a bit over time. There are no
2533functional changes, but this will of course cause quite a few code
2534differences from the previous ACPICA release.
2535
2536Example Code and Data Size: These are the sizes for the OS-independent
2537acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2538debug version of the code includes the debug output trace mechanism and
2539has a much larger code and data size.
2540
2541  Current Release:
2542    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2543    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2544  Previous Release:
2545    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2546    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2547
2548
25492) iASL Compiler/Disassembler and Tools:
2550
2551iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2552definition blocks within a single ASL file and the resulting AML file.
2553Support for this type of file was also added to the various tools that
2554use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2555example code below shows two definition blocks within the same file:
2556
2557    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
25580x12345678)
2559    {
2560    }
2561    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2562    {
2563    }
2564
2565iASL: Enhanced typechecking for the Name() operator. All expressions for
2566the value of the named object must be reduced/folded to a single constant
2567at compile time, as per the ACPI specification (the AML definition of
2568Name()).
2569
2570iASL: Fixed some code indentation issues for the -ic and -ia options (C
2571and assembly headers). Now all emitted code correctly begins in column 1.
2572
2573iASL: Added an error message for an attempt to open a Scope() on an
2574object defined in an SSDT. The DSDT is always loaded into the namespace
2575first, so any attempt to open a Scope on an SSDT object will fail at
2576runtime.
2577
2578
2579----------------------------------------
258030 September 2015. Summary of changes for version 20150930:
2581
25821) ACPICA kernel-resident subsystem:
2583
2584Debugger: Implemented several changes and bug fixes to assist support for
2585the in-kernel version of the AML debugger. Lv Zheng.
2586- Fix the "predefined" command for in-kernel debugger.
2587- Do not enter debug command loop for the help and version commands.
2588- Disallow "execute" command during execution/single-step of a method.
2589
2590Interpreter: Updated runtime typechecking for all operators that have
2591target operands. The operand is resolved and validated that it is legal.
2592For example, the target cannot be a non-data object such as a Device,
2593Mutex, ThermalZone, etc., as per the ACPI specification.
2594
2595Debugger: Fixed the double-mutex user I/O handshake to work when local
2596deadlock detection is enabled.
2597
2598Debugger: limited display of method locals and arguments (LocalX and
2599ArgX) to only those that have actually been initialized. This prevents
2600lines of extraneous output.
2601
2602Updated the definition of the NFIT table to correct the bit polarity of
2603one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2604
2605Example Code and Data Size: These are the sizes for the OS-independent
2606acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2607debug version of the code includes the debug output trace mechanism and
2608has a much larger code and data size.
2609
2610  Current Release:
2611    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2612    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2613  Previous Release:
2614    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2615    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2616
2617
26182) iASL Compiler/Disassembler and Tools:
2619
2620iASL: Improved the compile-time typechecking for operands of many of the
2621ASL operators:
2622
2623-- Added an option to disable compiler operand/operator typechecking (-
2624ot).
2625
2626-- For the following operators, the TermArg operands are now validated
2627when possible to be Integer data objects: BankField, OperationRegion,
2628DataTableRegion, Buffer, and Package.
2629
2630-- Store (Source, Target): Both the source and target operands are
2631resolved and checked that the operands are both legal. For example,
2632neither operand can be a non-data object such as a Device, Mutex,
2633ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
2634operator can be used to store an object to any type of target object.
2635
2636-- Store (Source, Target): If the source is a Package object, the target
2637must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
2638is a Package, the source must also be a Package.
2639
2640-- Store (Source, Target): A warning is issued if the source and target
2641resolve to the identical named object.
2642
2643-- Store (Source, <method invocation>): An error is generated for the
2644target method invocation, as this construct is not supported by the AML
2645interpreter.
2646
2647-- For all ASL math and logic operators, the target operand must be a
2648data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
2649includes the function return value also.
2650
2651-- External declarations are also included in the typechecking where
2652possible. External objects defined using the UnknownObj keyword cannot be
2653typechecked, however.
2654
2655iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
2656operator:
2657- Legacy code: Index(PKG1, 3)
2658- New ASL+ code: PKG1[3]
2659This completes the ACPI 6.0 ASL+ support as it was the only operator not
2660supported.
2661
2662iASL: Fixed the file suffix for the preprocessor output file (.i). Two
2663spaces were inadvertently appended to the filename, causing file access
2664and deletion problems on some systems.
2665
2666ASL Test Suite (ASLTS): Updated the master makefile to generate all
2667possible compiler output files when building the test suite -- thus
2668exercising these features of the compiler. These files are automatically
2669deleted when the test suite exits.
2670
2671
2672----------------------------------------
267318 August 2015. Summary of changes for version 20150818:
2674
26751) ACPICA kernel-resident subsystem:
2676
2677Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
2678Zheng. ACPICA BZ 1186.
2679
2680Completed development to ensure that the ACPICA Disassembler and Debugger
2681are fully standalone components of ACPICA. Removed cross-component
2682dependences. Lv Zheng.
2683
2684The max-number-of-AML-loops is now runtime configurable (previously was
2685compile-time only). This is essentially a loop timeout to force-abort
2686infinite AML loops. ACPCIA BZ 1192.
2687
2688Debugger: Cleanup output to dump ACPI names and namepaths without any
2689trailing underscores. Lv Zheng. ACPICA BZ 1135.
2690
2691Removed unnecessary conditional compilations across the Debugger and
2692Disassembler components where entire modules could be left uncompiled.
2693
2694The aapits test is deprecated and has been removed from the ACPICA git
2695tree. The test has never been completed and has not been maintained, thus
2696becoming rather useless. ACPICA BZ 1015, 794.
2697
2698A batch of small changes to close bugzilla and other reports:
2699- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2700- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2701- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2702- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
2703Moore.
2704- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
2705ACPICA BZ 1184.
2706- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
2707operators.
2708- Debugger: Split debugger initialization/termination interfaces. Lv
2709Zheng.
2710- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
2711identification.
2712- AcpiExec: Add debug message during _REG method phase during table
2713load/init.
2714- AcpiNames: Fix a regression where some output was missing and no longer
2715emitted.
2716- Debugger: General cleanup and simplification. Lv Zheng.
2717- Disassembler: Cleanup use of several global option variables. Lv Zheng.
2718
2719Example Code and Data Size: These are the sizes for the OS-independent
2720acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2721debug version of the code includes the debug output trace mechanism and
2722has a much larger code and data size.
2723
2724  Current Release:
2725    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2726    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2727  Previous Release:
2728    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2729    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2730
2731
27322) iASL Compiler/Disassembler and Tools:
2733
2734AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
2735were not handled properly and caused load errors. Now, properly invoke
2736and use the ACPICA auto-reallocate mechanism for ACPI table data
2737structures. ACPICA BZ 1188
2738
2739AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
2740BZ 1190.
2741
2742AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
2743AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
2744executed during initialization. ACPICA BZ 1187, 1189.
2745
2746iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
2747that corresponds to each disassembled ASL statement, to simplify
2748debugging. ACPICA BZ 1191.
2749
2750Debugger: Add option to the "objects" command to display a summary of the
2751current namespace objects (Object type and count). This is displayed if
2752the command is entered with no arguments.
2753
2754AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2755
2756
2757----------------------------------------
275817 July 2015. Summary of changes for version 20150717:
2759
27601) ACPICA kernel-resident subsystem:
2761
2762Improved the partitioning between the Debugger and Disassembler
2763components. This allows the Debugger to be used standalone within kernel
2764code without the Disassembler (which is used for single stepping also).
2765This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2766
2767Debugger: Implemented a new command to trace the execution of control
2768methods (Trace). This is especially useful for the in-kernel version of
2769the debugger when file I/O may not be available for method trace output.
2770See the ACPICA reference for more information. Lv Zheng.
2771
2772Moved all C library prototypes (used for the local versions of these
2773functions when requested) to a new header, acclib.h
2774Cleaned up the use of non-ANSI C library functions. These functions are
2775implemented locally in ACPICA. Moved all such functions to a common
2776source file, utnonansi.c
2777
2778Debugger: Fixed a problem with the "!!" command (get last command
2779executed) where the debugger could enter an infinite loop and eventually
2780crash.
2781
2782Removed the use of local macros that were used for some of the standard C
2783library functions to automatically cast input parameters. This mostly
2784affected the is* functions where the input parameter is defined to be an
2785int. This required a few modifications to the main ACPICA source code to
2786provide casting for these functions and eliminate possible compiler
2787warnings for these parameters.
2788
2789Across the source code, added additional status/error checking to resolve
2790issues discovered by static source code analysis tools such as Coverity.
2791
2792Example Code and Data Size: These are the sizes for the OS-independent
2793acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2794debug version of the code includes the debug output trace mechanism and
2795has a much larger code and data size.
2796
2797  Current Release:
2798    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2799    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2800  Previous Release:
2801    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2802    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2803
2804
28052) iASL Compiler/Disassembler and Tools:
2806
2807iASL: Fixed a regression where the device map file feature no longer
2808worked properly when used in conjunction with the disassembler. It only
2809worked properly with the compiler itself.
2810
2811iASL: Implemented a new warning for method LocalX variables that are set
2812but never used (similar to a C compiler such as gcc). This also applies
2813to ArgX variables that are not defined by the parent method, and are
2814instead (legally) used as local variables.
2815
2816iASL/Preprocessor: Finished the pass-through of line numbers from the
2817preprocessor to the compiler. This ensures that compiler errors/warnings
2818have the correct original line numbers and filenames, regardless of any
2819#include files.
2820
2821iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2822pass-through of comments to the preprocessor output file (which becomes
2823the compiler input file). Also fixed a problem with // comments that
2824appear after a math expression.
2825
2826iASL: Added support for the TCPA server table to the table compiler and
2827template generator. (The client table was already previously supported)
2828
2829iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
2830identify the iASL compiler.
2831
2832Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
2833multiple times. The new names are ACPI_SIGN_NEGATIVE and
2834ACPI_SIGN_POSITIVE.
2835
2836AcpiHelp: Update to expand help messages for the iASL preprocessor
2837directives.
2838
2839
2840----------------------------------------
284119 June 2015. Summary of changes for version 20150619:
2842
2843Two regressions in version 20150616 have been addressed:
2844
2845Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
2846etc.) This update changes ACPICA to only use the standard headers for
2847functions, or the prototypes for the local versions of the C library
2848functions. Across the source code, this required some additional casts
2849for some Clib invocations for portability. Moved all local prototypes to
2850a new file, acclib.h
2851
2852Fixes several problems with recent changes to the handling of the FACS
2853table that could cause some systems not to boot.
2854
2855
2856----------------------------------------
285716 June 2015. Summary of changes for version 20150616:
2858
2859
28601) ACPICA kernel-resident subsystem:
2861
2862Across the entire ACPICA source code base, the various macros for the C
2863library functions (such as ACPI_STRLEN, etc.) have been removed and
2864replaced by the standard C library names (strlen, etc.) The original
2865purpose for these macros is no longer applicable. This simplification
2866reduces the number of macros used in the ACPICA source code
2867significantly, improving readability and maintainability.
2868
2869Implemented support for a new ACPI table, the OSDT. This table, the
2870"override" SDT, can be loaded directly by the host OS at boot time. It
2871enables the replacement of existing namespace objects that were installed
2872via the DSDT and/or SSDTs. The primary purpose for this is to replace
2873buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
2874for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
2875Moore.
2876
2877Added support for systems with (improperly) two FACS tables -- a "32-bit"
2878table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
2879X field). This change will support both automatically. There continues to
2880be systems found with this issue. This support requires a change to the
2881AcpiSetFirmwareWakingVector interface. Also, a public global variable has
2882been added to allow the host to select which FACS is desired
2883(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
2884details Lv Zheng.
2885
2886Added a new feature to allow for systems that do not contain an FACS.
2887Although this is already supported on hardware-reduced platforms, the
2888feature has been extended for all platforms. The reasoning is that we do
2889not want to abort the entire ACPICA initialization just because the
2890system is seriously buggy and has no FACS.
2891
2892Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
2893not correctly transcribed from the ACPI specification in ACPICA version
289420150515.
2895
2896Implemented support for the _CLS object in the AcpiGetObjectInfo external
2897interface.
2898
2899Updated the definitions of the TCPA and TPM2 ACPI tables to the more
2900recent TCG ACPI Specification, December 14, 2014. Table disassembler and
2901compiler also updated. Note: The TCPA "server" table is not supported by
2902the disassembler/table-compiler at this time.
2903
2904ACPI 6.0: Added definitions for the new GIC version field in the MADT.
2905
2906Example Code and Data Size: These are the sizes for the OS-independent
2907acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2908debug version of the code includes the debug output trace mechanism and
2909has a much larger code and data size.
2910
2911  Current Release:
2912    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2913    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2914  Previous Release:
2915    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2916    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2917
2918
29192) iASL Compiler/Disassembler and Tools:
2920
2921Disassembler: Fixed a problem with the new symbolic operator disassembler
2922where incorrect ASL code could be emitted in some cases for the "non-
2923commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
2924ShiftRight. The actual problem cases seem to be rather unusual in common
2925ASL code, however. David Box.
2926
2927Modified the linux version of acpidump to obtain ACPI tables from not
2928just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
2929Zheng.
2930
2931iASL: Fixed a problem where the user preprocessor output file (.i)
2932contained extra data that was not expected. The compiler was using this
2933file as a temporary file and passed through #line directives in order to
2934keep compiler error messages in sync with the input file and line number
2935across multiple include files. The (.i) is no longer a temporary file as
2936the compiler uses a new, different file for the original purpose.
2937
2938iASL: Fixed a problem where comments within the original ASL source code
2939file were not passed through to the preprocessor output file, nor any
2940listing files.
2941
2942iASL: Fixed some issues for the handling of the "#include" preprocessor
2943directive and the similar (but not the same) "Include" ASL operator.
2944
2945iASL: Add support for the new OSDT in both the disassembler and compiler.
2946
2947iASL: Fixed a problem with the constant folding support where a Buffer
2948object could be incorrectly generated (incorrectly formed) during a
2949conversion to a Store() operator.
2950
2951AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
2952description text for the _REV predefined name. _REV now permanently
2953returns 2, as per the ACPI 6.0 specification.
2954
2955Debugger: Enhanced the output of the Debug ASL object for references
2956produced by the Index operator. For Buffers and strings, only output the
2957actual byte pointed to by the index. For packages, only print the single
2958package element decoded by the index. Previously, the entire
2959buffer/string/package was emitted.
2960
2961iASL/Table-compiler: Fixed a regression where the "generic" data types
2962were no longer recognized, causing errors.
2963
2964
2965----------------------------------------
296615 May 2015. Summary of changes for version 20150515:
2967
2968This release implements most of ACPI 6.0 as described below.
2969
29701) ACPICA kernel-resident subsystem:
2971
2972Implemented runtime argument checking and return value checking for all
2973new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
2974_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
2975
2976Example Code and Data Size: These are the sizes for the OS-independent
2977acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2978debug version of the code includes the debug output trace mechanism and
2979has a much larger code and data size.
2980
2981  Current Release:
2982    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2983    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2984  Previous Release:
2985    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
2986    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
2987
2988
29892) iASL Compiler/Disassembler and Tools:
2990
2991iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
2992names (argument count validation and return value typechecking.)
2993
2994iASL disassembler and table compiler: implemented support for all new
2995ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
2996
2997iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
2998tables: FADT, MADT.
2999
3000iASL preprocessor: Added a new directive to enable inclusion of binary
3001blobs into ASL code. The new directive is #includebuffer. It takes a
3002binary file as input and emits a named ascii buffer object into the ASL
3003code.
3004
3005AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3006
3007AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3008directives.
3009
3010AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3011tables.
3012
3013
3014----------------------------------------
301510 April 2015. Summary of changes for version 20150410:
3016
3017Reverted a change introduced in version 20150408 that caused
3018a regression in the disassembler where incorrect operator
3019symbols could be emitted.
3020
3021
3022----------------------------------------
302308 April 2015. Summary of changes for version 20150408:
3024
3025
30261) ACPICA kernel-resident subsystem:
3027
3028Permanently set the return value for the _REV predefined name. It now
3029returns 2 (was 5). This matches other ACPI implementations. _REV will be
3030deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3031for ACPI 2.0 and later. It should never be used to differentiate or
3032identify operating systems.
3033
3034Added the "Windows 2015" string to the _OSI support. ACPICA will now
3035return TRUE to a query with this string.
3036
3037Fixed several issues with the local version of the printf function.
3038
3039Added the C99 compiler option (-std=c99) to the Unix makefiles.
3040
3041  Current Release:
3042    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3043    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3044  Previous Release:
3045    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3046    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3047
3048
30492) iASL Compiler/Disassembler and Tools:
3050
3051iASL: Implemented an enhancement to the constant folding feature to
3052transform the parse tree to a simple Store operation whenever possible:
3053    Add (2, 3, X) ==> is converted to: Store (5, X)
3054    X = 2 + 3     ==> is converted to: Store (5, X)
3055
3056Updated support for the SLIC table (Software Licensing Description Table)
3057in both the Data Table compiler and the disassembler. The SLIC table
3058support now conforms to "Microsoft Software Licensing Tables (SLIC and
3059MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3060following the ACPI header is now defined to be "Proprietary Data", and as
3061such, can only be entered or displayed as a hex data block.
3062
3063Implemented full support for the MSDM table as described in the document
3064above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3065following the ACPI header is defined to be "Proprietary Data", and can
3066only be entered or displayed as a hex data block.
3067
3068Implemented the -Pn option for the iASL Table Compiler (was only
3069implemented for the ASL compiler). This option disables the iASL
3070preprocessor.
3071
3072Disassembler: For disassembly of Data Tables, added a comment field
3073around the Ascii equivalent data that is emitted as part of the "Raw
3074Table Data" block. This prevents the iASL Preprocessor from possible
3075confusion if/when the table is compiled.
3076
3077Disassembler: Added an option (-df) to force the disassembler to assume
3078that the table being disassembled contains valid AML. This feature is
3079useful for disassembling AML files that contain ACPI signatures other
3080than DSDT or SSDT (such as OEMx or other signatures).
3081
3082Changes for the EFI version of the tools:
30831) Fixed a build error/issue
30842) Fixed a cast warning
3085
3086iASL: Fixed a path issue with the __FILE__ operator by making the
3087directory prefix optional within the internal SplitInputFilename
3088function.
3089
3090Debugger: Removed some unused global variables.
3091
3092Tests: Updated the makefile for proper generation of the AAPITS suite.
3093
3094
3095----------------------------------------
309604 February 2015. Summary of changes for version 20150204:
3097
3098ACPICA kernel-resident subsystem:
3099
3100Updated all ACPICA copyrights and signons to 2014. Added the 2014
3101copyright to all module headers and signons, including the standard Linux
3102header. This affects virtually every file in the ACPICA core subsystem,
3103iASL compiler, all ACPICA utilities, and the test suites.
3104
3105Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3106A raw gpe handling mechanism was created to allow better handling of GPE
3107storms that aren't easily managed by the normal handler. The raw handler
3108allows disabling/renabling of the the GPE so that interrupt storms can be
3109avoided in cases where events cannot be timely serviced. In this
3110scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3111GPE. This API will leave the reference counts undisturbed, thereby
3112preventing unintentional clearing of the GPE when the intent in only to
3113temporarily disable it. Raw handlers allow enabling and disabling of a
3114GPE by removing GPE register locking. As such, raw handlers much provide
3115their own locks while using GPE API's to protect access to GPE data
3116structures.
3117Lv Zheng
3118
3119Events: Always modify GPE registers under the GPE lock.
3120Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3121values. Reported as bug by joe.liu@apple.com.
3122
3123Unix makefiles: Separate option to disable optimizations and
3124_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3125NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3126purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3127errors when building ACPICA. This allows disabling the option without
3128also having to disable optimazations.
3129David Box
3130
3131  Current Release:
3132    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3133    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3134
3135--
3136--------------------------------------
313707 November 2014. Summary of changes for version 20141107:
3138
3139This release is available at https://acpica.org/downloads
3140
3141This release introduces and implements language extensions to ASL that
3142provide support for symbolic ("C-style") operators and expressions. These
3143language extensions are known collectively as ASL+.
3144
3145
31461) iASL Compiler/Disassembler and Tools:
3147
3148Disassembler: Fixed a problem with disassembly of the UartSerialBus
3149macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3150Box.
3151
3152Disassembler: Fixed the Unicode macro support to add escape sequences.
3153All non-printable ASCII values are emitted as escape sequences, as well
3154as the standard escapes for quote and backslash. Ensures that the
3155disassembled macro can be correctly recompiled.
3156
3157iASL: Added Printf/Fprintf macros for formatted output. These macros are
3158translated to existing AML Concatenate and Store operations. Printf
3159writes to the ASL Debug object. Fprintf allows the specification of an
3160ASL name as the target. Only a single format specifier is required, %o,
3161since the AML interpreter dynamically converts objects to the required
3162type. David E. Box.
3163
3164    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3165                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3166                 ": Unexpected value for "), Arg1), ", "), Arg2),
3167                 " at line "), Arg3), Debug)
3168
3169    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3170                 Arg0, Arg1, Arg2, Arg3)
3171
3172    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3173                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3174
3175    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3176
3177iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3178ASL parse tree before the AML code is generated. This allows blocks of
3179ASL code to be removed in order to help locate and identify problem
3180devices and/or code. David E. Box.
3181
3182AcpiExec: Added support (-fi) for an optional namespace object
3183initialization file. This file specifies initial values for namespace
3184objects as necessary for debugging and testing different ASL code paths
3185that may be taken as a result of BIOS options.
3186
3187
31882) Overview of symbolic operator support for ASL (ASL+)
3189-------------------------------------------------------
3190
3191As an extension to the ASL language, iASL implements support for symbolic
3192(C-style) operators for math and logical expressions. This can greatly
3193simplify ASL code as well as improve both readability and
3194maintainability. These language extensions can exist concurrently with
3195all legacy ASL code and expressions.
3196
3197The symbolic extensions are 100% compatible with existing AML
3198interpreters, since no new AML opcodes are created. To implement the
3199extensions, the iASL compiler transforms the symbolic expressions into
3200the legacy ASL/AML equivalents at compile time.
3201
3202Full symbolic expressions are supported, along with the standard C
3203precedence and associativity rules.
3204
3205Full disassembler support for the symbolic expressions is provided, and
3206creates an automatic migration path for existing ASL code to ASL+ code
3207via the disassembly process. By default, the disassembler now emits ASL+
3208code with symbolic expressions. An option (-dl) is provided to force the
3209disassembler to emit legacy ASL code if desired.
3210
3211Below is the complete list of the currently supported symbolic operators
3212with examples. See the iASL User Guide for additional information.
3213
3214
3215ASL+ Syntax      Legacy ASL Equivalent
3216-----------      ---------------------
3217
3218    // Math operators
3219
3220Z = X + Y        Add (X, Y, Z)
3221Z = X - Y        Subtract (X, Y, Z)
3222Z = X * Y        Multiply (X, Y, Z)
3223Z = X / Y        Divide (X, Y, , Z)
3224Z = X % Y        Mod (X, Y, Z)
3225Z = X << Y       ShiftLeft (X, Y, Z)
3226Z = X >> Y       ShiftRight (X, Y, Z)
3227Z = X & Y        And (X, Y, Z)
3228Z = X | Y        Or (X, Y, Z)
3229Z = X ^ Y        Xor (X, Y, Z)
3230Z = ~X           Not (X, Z)
3231X++              Increment (X)
3232X--              Decrement (X)
3233
3234    // Logical operators
3235
3236(X == Y)         LEqual (X, Y)
3237(X != Y)         LNotEqual (X, Y)
3238(X < Y)          LLess (X, Y)
3239(X > Y)          LGreater (X, Y)
3240(X <= Y)         LLessEqual (X, Y)
3241(X >= Y)         LGreaterEqual (X, Y)
3242(X && Y)         LAnd (X, Y)
3243(X || Y)         LOr (X, Y)
3244(!X)             LNot (X)
3245
3246    // Assignment and compound assignment operations
3247
3248X = Y           Store (Y, X)
3249X += Y          Add (X, Y, X)
3250X -= Y          Subtract (X, Y, X)
3251X *= Y          Multiply (X, Y, X)
3252X /= Y          Divide (X, Y, , X)
3253X %= Y          Mod (X, Y, X)
3254X <<= Y         ShiftLeft (X, Y, X)
3255X >>= Y         ShiftRight (X, Y, X)
3256X &= Y          And (X, Y, X)
3257X |= Y          Or (X, Y, X)
3258X ^= Y          Xor (X, Y, X)
3259
3260
32613) ASL+ Examples:
3262-----------------
3263
3264Legacy ASL:
3265        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3266            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
32670x03FB),
3268            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3269        {
3270            And (MEMB, 0xFFFFFFF0, SRMB)
3271            Store (MEMB, Local2)
3272            Store (PDBM, Local1)
3273            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3274            Store (SRMB, MEMB)
3275            Or (PDBM, 0x02, PDBM)
3276        }
3277
3278ASL+ version:
3279        If (((R510 & 0x03FB) == 0x02E0) ||
3280            ((R520 & 0x03FB) == 0x02E0) ||
3281            ((R530 & 0x03FB) == 0x02E0) ||
3282            ((R540 & 0x03FB) == 0x02E0))
3283        {
3284            SRMB = (MEMB & 0xFFFFFFF0)
3285            Local2 = MEMB
3286            Local1 = PDBM
3287            PDBM &= 0xFFFFFFFFFFFFFFF9
3288            MEMB = SRMB
3289            PDBM |= 0x02
3290        }
3291
3292Legacy ASL:
3293        Store (0x1234, Local1)
3294        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3295        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3296        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3297        Store (Index (PKG1, 0x03), Local6)
3298        Store (Add (Local3, Local2), Debug)
3299        Add (Local1, 0x0F, Local2)
3300        Add (Local1, Multiply (Local2, Local3), Local2)
3301        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3302
3303ASL+ version:
3304        Local1 = 0x1234
3305        Local3 = (((Local1 + TEST) + 0x20) * Local2)
3306        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3307        Local3 = (Local1 + (TEST + (0x20 * Local2)))
3308        Local6 = Index (PKG1, 0x03)
3309        Debug = (Local3 + Local2)
3310        Local2 = (Local1 + 0x0F)
3311        Local2 = (Local1 + (Local2 * Local3))
3312        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3313
3314
3315----------------------------------------
331626 September 2014. Summary of changes for version 20140926:
3317
33181) ACPICA kernel-resident subsystem:
3319
3320Updated the GPIO operation region handler interface (GeneralPurposeIo).
3321In order to support GPIO Connection objects with multiple pins, along
3322with the related Field objects, the following changes to the interface
3323have been made: The Address is now defined to be the offset in bits of
3324the field unit from the previous invocation of a Connection. It can be
3325viewed as a "Pin Number Index" into the connection resource descriptor.
3326The BitWidth is the exact bit width of the field. It is usually one bit,
3327but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3328additional information and examples.
3329
3330GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3331corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3332by the firmware), so that they cannot fire until they are enabled via
3333AcpiUpdateAllGpes. Rafael J. Wysocki.
3334
3335Added a new return flag for the Event/GPE status interfaces --
3336AcpiGetEventStatus and AcpiGetGpeStatus. The new
3337ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3338GPE currently has a handler associated with it, and can thus actually
3339affect the system. Lv Zheng.
3340
3341Example Code and Data Size: These are the sizes for the OS-independent
3342acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3343debug version of the code includes the debug output trace mechanism and
3344has a much larger code and data size.
3345
3346  Current Release:
3347    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3348    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3349  Previous Release:
3350    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3351    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3352
33532) iASL Compiler/Disassembler and Tools:
3354
3355iASL: Fixed a memory allocation/free regression introduced in 20140828
3356that could cause the compiler to crash. This was introduced inadvertently
3357during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
33581113.
3359
3360iASL: Removed two error messages that have been found to create false
3361positives, until they can be fixed and fully validated (ACPICA BZ 1112):
33621) Illegal forward reference within a method
33632) Illegal reference across two methods
3364
3365iASL: Implemented a new option (-lm) to create a hardware mapping file
3366that summarizes all GPIO, I2C, SPI, and UART connections. This option
3367works for both the compiler and disassembler. See the iASL compiler user
3368guide for additional information and examples (section 6.4.6).
3369
3370AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3371version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3372a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3373
3374AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3375unless STDIN is actually a terminal. Assists with batch-mode processing.
3376ACPICA BZ 1114.
3377
3378Disassembler/AcpiHelp: Added another large group of recognized _HID
3379values.
3380
3381
3382----------------------------------------
338328 August 2014. Summary of changes for version 20140828:
3384
33851) ACPICA kernel-resident subsystem:
3386
3387Fixed a problem related to the internal use of the Timer() operator where
3388a 64-bit divide could cause an attempted link to a double-precision math
3389library. This divide is not actually necessary, so the code was
3390restructured to eliminate it. Lv Zheng.
3391
3392ACPI 5.1: Added support for the runtime validation of the _DSD package
3393(similar to the iASL support).
3394
3395ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3396SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3397
3398Example Code and Data Size: These are the sizes for the OS-independent
3399acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3400debug version of the code includes the debug output trace mechanism and
3401has a much larger code and data size.
3402
3403  Current Release:
3404    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3405    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3406  Previous Release:
3407    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
3408    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3409
34102) iASL Compiler/Disassembler and Tools:
3411
3412AcpiExec: Fixed a problem on unix systems where the original terminal
3413state was not always properly restored upon exit. Seen when using the -v
3414option. ACPICA BZ 1104.
3415
3416iASL: Fixed a problem with the validation of the ranges/length within the
3417Memory24 resource descriptor. There was a boundary condition when the
3418range was equal to the (length -1) caused by the fact that these values
3419are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3420
3421Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3422polarity
3423flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3424is
3425now supported properly.
3426
3427ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3428in the disassembler, data table compiler, and table template generator.
3429
3430iASL: Added a requirement for Device() objects that one of either a _HID
3431or _ADR must exist within the scope of a Device, as per the ACPI
3432specification. Remove a similar requirement that was incorrectly in place
3433for the _DSD object.
3434
3435iASL: Added error detection for illegal named references within control
3436methods that would cause runtime failures. Now trapped as errors are: 1)
3437References to objects within a non-parent control method. 2) Forward
3438references (within a method) -- for control methods, AML interpreters use
3439a one-pass parse of control methods. ACPICA BZ 1008.
3440
3441iASL: Added error checking for dependencies related to the _PSx power
3442methods. ACPICA BZ 1029.
34431) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3444_PS3.
34452) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3446scope.
3447
3448iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3449deploying the existing object and string caches and adding new caches for
3450the table compiler.
3451
3452iASL: Split the huge parser source file into multiple subfiles to improve
3453manageability. Generation now requires the M4 macro preprocessor, which
3454is part of the Bison distribution on both unix and windows platforms.
3455
3456AcpiSrc: Fixed and removed all extraneous warnings generated during
3457entire ACPICA source code scan and/or conversion.
3458
3459
3460----------------------------------------
3461
346224 July 2014. Summary of changes for version 20140724:
3463
3464The ACPI 5.1 specification has been released and is available at:
3465http://uefi.org/specs/access
3466
3467
34680) ACPI 5.1 support in ACPICA:
3469
3470ACPI 5.1 is fully supported in ACPICA as of this release.
3471
3472New predefined names. Support includes iASL and runtime ACPICA
3473validation.
3474    _CCA (Cache Coherency Attribute).
3475    _DSD (Device-Specific Data). David Box.
3476
3477Modifications to existing ACPI tables. Support includes headers, iASL
3478Data Table compiler, disassembler, and the template generator.
3479    FADT - New fields and flags. Graeme Gregory.
3480    GTDT - One new subtable and new fields. Tomasz Nowicki.
3481    MADT - Two new subtables. Tomasz Nowicki.
3482    PCCT - One new subtable.
3483
3484Miscellaneous.
3485    New notification type for System Resource Affinity change events.
3486
3487
34881) ACPICA kernel-resident subsystem:
3489
3490Fixed a regression introduced in 20140627 where a fault can happen during
3491the deletion of Alias AML namespace objects. The problem affected both
3492the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3493
3494Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3495simple mechanism to enable wake GPEs that have no associated handler or
3496control method. Rafael Wysocki.
3497
3498Updated the AcpiEnableGpe interface to disallow the enable if there is no
3499handler or control method associated with the particular GPE. This will
3500help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3501
3502Updated GPE handling and dispatch by disabling the GPE before clearing
3503the status bit for edge-triggered GPEs. Lv Zheng.
3504
3505Added Timer() support to the AML Debug object. The current timer value is
3506now displayed with each invocation of (Store to) the debug object to
3507enable simple generation of execution times for AML code (method
3508execution for example.) ACPICA BZ 1093.
3509
3510Example Code and Data Size: These are the sizes for the OS-independent
3511acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3512debug version of the code includes the debug output trace mechanism and
3513has a much larger code and data size.
3514
3515  Current Release:
3516    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
3517    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3518  Previous Release:
3519    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3520    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3521
3522
35232) iASL Compiler/Disassembler and Tools:
3524
3525Fixed an issue with the recently added local printf implementation,
3526concerning width/precision specifiers that could cause incorrect output.
3527Lv Zheng. ACPICA BZ 1094.
3528
3529Disassembler: Added support to detect buffers that contain UUIDs and
3530disassemble them to an invocation of the ToUUID operator. Also emit
3531commented descriptions of known ACPI-related UUIDs.
3532
3533AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3534-u. Adds three new files.
3535
3536iASL: Update table compiler and disassembler for DMAR table changes that
3537were introduced in September 2013. With assistance by David Woodhouse.
3538
3539----------------------------------------
354027 June 2014. Summary of changes for version 20140627:
3541
35421) ACPICA kernel-resident subsystem:
3543
3544Formatted Output: Implemented local versions of standard formatted output
3545utilities such as printf, etc. Over time, it has been discovered that
3546there are in fact many portability issues with printf, and the addition
3547of this feature will fix/prevent these issues once and for all. Some
3548known issues are summarized below:
3549
35501) Output of 64-bit values is not portable. For example, UINT64 is %ull
3551for the Linux kernel and is %uI64 for some MSVC versions.
35522) Invoking printf consistently in a manner that is portable across both
355332-bit and 64-bit platforms is difficult at best in many situations.
35543) The output format for pointers varies from system to system (leading
3555zeros especially), and leads to inconsistent output from ACPICA across
3556platforms.
35574) Certain platform-specific printf formats may conflict with ACPICA use.
35585) If there is no local C library available, ACPICA now has local support
3559for printf.
3560
3561-- To address these printf issues in a complete manner, ACPICA now
3562directly implements a small subset of printf format specifiers, only
3563those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3564
3565Implemented support for ACPICA generation within the EFI environment.
3566Initially, the AcpiDump utility is supported in the UEFI shell
3567environment. Lv Zheng.
3568
3569Added a new external interface, AcpiLogError, to improve ACPICA
3570portability. This allows the host to redirect error messages from the
3571ACPICA utilities. Lv Zheng.
3572
3573Added and deployed new OSL file I/O interfaces to improve ACPICA
3574portability:
3575  AcpiOsOpenFile
3576  AcpiOsCloseFile
3577  AcpiOsReadFile
3578  AcpiOsWriteFile
3579  AcpiOsGetFileOffset
3580  AcpiOsSetFileOffset
3581There are C library implementations of these functions in the new file
3582service_layers/oslibcfs.c -- however, the functions can be implemented by
3583the local host in any way necessary. Lv Zheng.
3584
3585Implemented a mechanism to disable/enable ACPI table checksum validation
3586at runtime. This can be useful when loading tables very early during OS
3587initialization when it may not be possible to map the entire table in
3588order to compute the checksum. Lv Zheng.
3589
3590Fixed a buffer allocation issue for the Generic Serial Bus support.
3591Originally, a fixed buffer length was used. This change allows for
3592variable-length buffers based upon the protocol indicated by the field
3593access attributes. Reported by Lan Tianyu. Lv Zheng.
3594
3595Fixed a problem where an object detached from a namespace node was not
3596properly terminated/cleared and could cause a circular list problem if
3597reattached. ACPICA BZ 1063. David Box.
3598
3599Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3600
3601Fixed a possible memory leak in an error return path within the function
3602AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3603
3604Example Code and Data Size: These are the sizes for the OS-independent
3605acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3606debug version of the code includes the debug output trace mechanism and
3607has a much larger code and data size.
3608
3609  Current Release:
3610    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3611    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3612  Previous Release:
3613    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3614    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3615
3616
36172) iASL Compiler/Disassembler and Tools:
3618
3619Disassembler: Add dump of ASCII equivalent text within a comment at the
3620end of each line of the output for the Buffer() ASL operator.
3621
3622AcpiDump: Miscellaneous changes:
3623  Fixed repetitive table dump in -n mode.
3624  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
3625the ACPI 2.0 GUID fails.
3626
3627iASL: Fixed a problem where the compiler could fault if incorrectly given
3628an acpidump output file as input. ACPICA BZ 1088. David Box.
3629
3630AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
3631they are invoked without any arguments.
3632
3633Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
36341086. Colin Ian King.
3635
3636Disassembler: Cleaned up a block of code that extracts a parent Op
3637object. Added a comment that explains that the parent is guaranteed to be
3638valid in this case. ACPICA BZ 1069.
3639
3640
3641----------------------------------------
364224 April 2014. Summary of changes for version 20140424:
3643
36441) ACPICA kernel-resident subsystem:
3645
3646Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
3647Some of these tables are known to contain a trailing NULL entry. Lv
3648Zheng.
3649
3650Removed an extraneous error message for the case where there are a large
3651number of system GPEs (> 124). This was the "32-bit FADT register is too
3652long to convert to GAS struct" message, which is irrelevant for GPEs
3653since the GPEx_BLK_LEN fields of the FADT are always used instead of the
3654(limited capacity) GAS bit length. Also, several changes to ensure proper
3655support for GPE numbers > 255, where some "GPE number" fields were 8-bits
3656internally.
3657
3658Implemented and deployed additional configuration support for the public
3659ACPICA external interfaces. Entire classes of interfaces can now be
3660easily modified or configured out, replaced by stubbed inline functions
3661by default. Lv Zheng.
3662
3663Moved all public ACPICA runtime configuration globals to the public
3664ACPICA external interface file for convenience. Also, removed some
3665obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3666
3667Documentation: Added a new section to the ACPICA reference describing the
3668maximum number of GPEs that can be supported by the FADT-defined GPEs in
3669block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
3670reference.
3671
3672Example Code and Data Size: These are the sizes for the OS-independent
3673acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3674debug version of the code includes the debug output trace mechanism and
3675has a much larger code and data size.
3676
3677  Current Release:
3678    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3679    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3680  Previous Release:
3681    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3682    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3683
3684
36852) iASL Compiler/Disassembler and Tools:
3686
3687iASL and disassembler: Add full support for the LPIT table (Low Power
3688Idle Table). Includes support in the disassembler, data table compiler,
3689and template generator.
3690
3691AcpiDump utility:
36921) Add option to force the use of the RSDT (over the XSDT).
36932) Improve validation of the RSDP signature (use 8 chars instead of 4).
3694
3695iASL: Add check for predefined packages that are too large.  For
3696predefined names that contain subpackages, check if each subpackage is
3697too large. (Check for too small already exists.)
3698
3699Debugger: Updated the GPE command (which simulates a GPE by executing the
3700GPE code paths in ACPICA). The GPE device is now optional, and defaults
3701to the GPE 0/1 FADT-defined blocks.
3702
3703Unix application OSL: Update line-editing support. Add additional error
3704checking and take care not to reset terminal attributes on exit if they
3705were never set. This should help guarantee that the terminal is always
3706left in the previous state on program exit.
3707
3708
3709----------------------------------------
371025 March 2014. Summary of changes for version 20140325:
3711
37121) ACPICA kernel-resident subsystem:
3713
3714Updated the auto-serialize feature for control methods. This feature
3715automatically serializes all methods that create named objects in order
3716to prevent runtime errors. The update adds support to ignore the
3717currently executing AML SyncLevel when invoking such a method, in order
3718to prevent disruption of any existing SyncLevel priorities that may exist
3719in the AML code. Although the use of SyncLevels is relatively rare, this
3720change fixes a regression where an AE_AML_MUTEX_ORDER exception can
3721appear on some machines starting with the 20140214 release.
3722
3723Added a new external interface to allow the host to install ACPI tables
3724very early, before the namespace is even created. AcpiInstallTable gives
3725the host additional flexibility for ACPI table management. Tables can be
3726installed directly by the host as if they had originally appeared in the
3727XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
3728(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
3729with additional internal restructuring and cleanup. See the ACPICA
3730Reference for interface details. Lv Zheng.
3731
3732Added validation of the checksum for all incoming dynamically loaded
3733tables (via external interfaces or via AML Load/LoadTable operators). Lv
3734Zheng.
3735
3736Updated the use of the AcpiOsWaitEventsComplete interface during Notify
3737and GPE handler removal. Restructured calls to eliminate possible race
3738conditions. Lv Zheng.
3739
3740Added a warning for the use/execution of the ASL/AML Unload (table)
3741operator. This will help detect and identify machines that use this
3742operator if and when it is ever used. This operator has never been seen
3743in the field and the usage model and possible side-effects of the drastic
3744runtime action of a full table removal are unknown.
3745
3746Reverted the use of #pragma push/pop which was introduced in the 20140214
3747release. It appears that push and pop are not implemented by enough
3748compilers to make the use of this feature feasible for ACPICA at this
3749time. However, these operators may be deployed in a future ACPICA
3750release.
3751
3752Added the missing EXPORT_SYMBOL macros for the install and remove SCI
3753handler interfaces.
3754
3755Source code generation:
37561) Disabled the use of the "strchr" macro for the gcc-specific
3757generation. For some versions of gcc, this macro can periodically expose
3758a compiler bug which in turn causes compile-time error(s).
37592) Added support for PPC64 compilation. Colin Ian King.
3760
3761Example Code and Data Size: These are the sizes for the OS-independent
3762acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3763debug version of the code includes the debug output trace mechanism and
3764has a much larger code and data size.
3765
3766  Current Release:
3767    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3768    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3769  Previous Release:
3770    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3771    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3772
3773
37742) iASL Compiler/Disassembler and Tools:
3775
3776Disassembler: Added several new features to improve the readability of
3777the resulting ASL code. Extra information is emitted within comment
3778fields in the ASL code:
37791) Known _HID/_CID values are decoded to descriptive text.
37802) Standard values for the Notify() operator are decoded to descriptive
3781text.
37823) Target operands are expanded to full pathnames (in a comment) when
3783possible.
3784
3785Disassembler: Miscellaneous updates for extern() handling:
37861) Abort compiler if file specified by -fe option does not exist.
37872) Silence unnecessary warnings about argument count mismatches.
37883) Update warning messages concerning unresolved method externals.
37894) Emit "UnknownObj" keyword for externals whose type cannot be
3790determined.
3791
3792AcpiHelp utility:
37931) Added the -a option to display both the ASL syntax and the AML
3794encoding for an input ASL operator. This effectively displays all known
3795information about an ASL operator with one AcpiHelp invocation.
37962) Added substring match support (similar to a wildcard) for the -i
3797(_HID/PNP IDs) option.
3798
3799iASL/Disassembler: Since this tool does not yet support execution on big-
3800endian machines, added detection of endianness and an error message if
3801execution is attempted on big-endian. Support for big-endian within iASL
3802is a feature that is on the ACPICA to-be-done list.
3803
3804AcpiBin utility:
38051) Remove option to extract binary files from an acpidump; this function
3806is made obsolete by the AcpiXtract utility.
38072) General cleanup of open files and allocated buffers.
3808
3809
3810----------------------------------------
381114 February 2014. Summary of changes for version 20140214:
3812
38131) ACPICA kernel-resident subsystem:
3814
3815Implemented a new mechanism to proactively prevent problems with ill-
3816behaved reentrant control methods that create named ACPI objects. This
3817behavior is illegal as per the ACPI specification, but is nonetheless
3818frequently seen in the field. Previously, this could lead to an
3819AE_ALREADY_EXISTS exception if the method was actually entered by more
3820than one thread. This new mechanism detects such methods at table load
3821time and marks them "serialized" to prevent reentrancy. A new global
3822option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3823feature if desired. This mechanism and global option obsoletes and
3824supersedes the previous AcpiGbl_SerializeAllMethods option.
3825
3826Added the "Windows 2013" string to the _OSI support. ACPICA will now
3827respond TRUE to _OSI queries with this string. It is the stated policy of
3828ACPICA to add new strings to the _OSI support as soon as possible after
3829they are defined. See the full ACPICA _OSI policy which has been added to
3830the utilities/utosi.c file.
3831
3832Hardened/updated the _PRT return value auto-repair code:
38331) Do not abort the repair on a single subpackage failure, continue to
3834check all subpackages.
38352) Add check for the minimum subpackage length (4).
38363) Properly handle extraneous NULL package elements.
3837
3838Added support to avoid the possibility of infinite loops when traversing
3839object linked lists. Never allow an infinite loop, even in the face of
3840corrupted object lists.
3841
3842ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
3843pack(pop) directives to ensure that the ACPICA headers are independent of
3844compiler settings or other host headers.
3845
3846Example Code and Data Size: These are the sizes for the OS-independent
3847acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3848debug version of the code includes the debug output trace mechanism and
3849has a much larger code and data size.
3850
3851  Current Release:
3852    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3853    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3854  Previous Release:
3855    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3856    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3857
3858
38592) iASL Compiler/Disassembler and Tools:
3860
3861iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
3862first reserved field was incorrectly forced to have a value of zero. This
3863change correctly forces the field to have a value of one. ACPICA BZ 1081.
3864
3865Debugger: Added missing support for the "Extra" and "Data" subobjects
3866when displaying object data.
3867
3868Debugger: Added support to display entire object linked lists when
3869displaying object data.
3870
3871iASL: Removed the obsolete -g option to obtain ACPI tables from the
3872Windows registry. This feature has been superseded by the acpidump
3873utility.
3874
3875
3876----------------------------------------
387714 January 2014. Summary of changes for version 20140114:
3878
38791) ACPICA kernel-resident subsystem:
3880
3881Updated all ACPICA copyrights and signons to 2014. Added the 2014
3882copyright to all module headers and signons, including the standard Linux
3883header. This affects virtually every file in the ACPICA core subsystem,
3884iASL compiler, all ACPICA utilities, and the test suites.
3885
3886Improved parameter validation for AcpiInstallGpeBlock. Added the
3887following checks:
38881) The incoming device handle refers to type ACPI_TYPE_DEVICE.
38892) There is not already a GPE block attached to the device.
3890Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
3891device.
3892
3893Correctly support "references" in the ACPI_OBJECT. This change fixes the
3894support to allow references (namespace nodes) to be passed as arguments
3895to control methods via the evaluate object interface. This is probably
3896most useful for testing purposes, however.
3897
3898Improved support for 32/64 bit physical addresses in printf()-like
3899output. This change improves the support for physical addresses in printf
3900debug statements and other output on both 32-bit and 64-bit hosts. It
3901consistently outputs the appropriate number of bytes for each host. The
3902%p specifier is unsatisfactory since it does not emit uniform output on
3903all hosts/clib implementations (on some, leading zeros are not supported,
3904leading to difficult-to-read output).
3905
3906Example Code and Data Size: These are the sizes for the OS-independent
3907acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3908debug version of the code includes the debug output trace mechanism and
3909has a much larger code and data size.
3910
3911  Current Release:
3912    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3913    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3914  Previous Release:
3915    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
3916    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
3917
3918
39192) iASL Compiler/Disassembler and Tools:
3920
3921iASL: Fix a possible fault when using the Connection() operator. Fixes a
3922problem if the parent Field definition for the Connection operator refers
3923to an operation region that does not exist. ACPICA BZ 1064.
3924
3925AcpiExec: Load of local test tables is now optional. The utility has the
3926capability to load some various tables to test features of ACPICA.
3927However, there are enough of them that the output of the utility became
3928confusing. With this change, only the required local tables are displayed
3929(RSDP, XSDT, etc.) along with the actual tables loaded via the command
3930line specification. This makes the default output simler and easier to
3931understand. The -el command line option restores the original behavior
3932for testing purposes.
3933
3934AcpiExec: Added support for overlapping operation regions. This change
3935expands the simulation of operation regions by supporting regions that
3936overlap within the given address space. Supports SystemMemory and
3937SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
3938
3939AcpiExec: Added region handler support for PCI_Config and EC spaces. This
3940allows AcpiExec to simulate these address spaces, similar to the current
3941support for SystemMemory and SystemIO.
3942
3943Debugger: Added new command to read/write/compare all namespace objects.
3944The command "test objects" will exercise the entire namespace by writing
3945new values to each data object, and ensuring that the write was
3946successful. The original value is then restored and verified.
3947
3948Debugger: Added the "test predefined" command. This change makes this
3949test public and puts it under the new "test" command. The test executes
3950each and every predefined name within the current namespace.
3951
3952
3953----------------------------------------
395418 December 2013. Summary of changes for version 20131218:
3955
3956Global note: The ACPI 5.0A specification was released this month. There
3957are no changes needed for ACPICA since this release of ACPI is an
3958errata/clarification release. The specification is available at
3959acpi.info.
3960
3961
39621) ACPICA kernel-resident subsystem:
3963
3964Added validation of the XSDT root table if it is present. Some older
3965platforms contain an XSDT that is ill-formed or otherwise invalid (such
3966as containing some or all entries that are NULL pointers). This change
3967adds a new function to validate the XSDT before actually using it. If the
3968XSDT is found to be invalid, ACPICA will now automatically fall back to
3969using the RSDT instead. Original implementation by Zhao Yakui. Ported to
3970ACPICA and enhanced by Lv Zheng and Bob Moore.
3971
3972Added a runtime option to ignore the XSDT and force the use of the RSDT.
3973This change adds a runtime option that will force ACPICA to use the RSDT
3974instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
3975requires that an XSDT be used instead of the RSDT, the XSDT has been
3976found to be corrupt or ill-formed on some machines. Lv Zheng.
3977
3978Added a runtime option to favor 32-bit FADT register addresses over the
397964-bit addresses. This change adds an option to favor 32-bit FADT
3980addresses when there is a conflict between the 32-bit and 64-bit versions
3981of the same register. The default behavior is to use the 64-bit version
3982in accordance with the ACPI specification. This can now be overridden via
3983the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
3984
3985During the change above, the internal "Convert FADT" and "Verify FADT"
3986functions have been merged to simplify the code, making it easier to
3987understand and maintain. ACPICA BZ 933.
3988
3989Improve exception reporting and handling for GPE block installation.
3990Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
3991status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
3992
3993Added helper macros to extract bus/segment numbers from the HEST table.
3994This change adds two macros to extract the encoded bus and segment
3995numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
3996Betty Dall <betty.dall@hp.com>
3997
3998Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
3999by ACPICA. It is not a public macro, so it should have no effect on
4000existing OSV code. Lv Zheng.
4001
4002Example Code and Data Size: These are the sizes for the OS-independent
4003acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4004debug version of the code includes the debug output trace mechanism and
4005has a much larger code and data size.
4006
4007  Current Release:
4008    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4009    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4010  Previous Release:
4011    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4012    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4013
4014
40152) iASL Compiler/Disassembler and Tools:
4016
4017Disassembler: Improved pathname support for emitted External()
4018statements. This change adds full pathname support for external names
4019that have been resolved internally by the inclusion of additional ACPI
4020tables (via the iASL -e option). Without this change, the disassembler
4021can emit multiple externals for the same object, or it become confused
4022when the Scope() operator is used on an external object. Overall, greatly
4023improves the ability to actually recompile the emitted ASL code when
4024objects a referenced across multiple ACPI tables. Reported by Michael
4025Tsirkin (mst@redhat.com).
4026
4027Tests/ASLTS: Updated functional control suite to execute with no errors.
4028David Box. Fixed several errors related to the testing of the interpreter
4029slack mode. Lv Zheng.
4030
4031iASL: Added support to detect names that are declared within a control
4032method, but are unused (these are temporary names that are only valid
4033during the time the method is executing). A remark is issued for these
4034cases. ACPICA BZ 1022.
4035
4036iASL: Added full support for the DBG2 table. Adds full disassembler,
4037table compiler, and template generator support for the DBG2 table (Debug
4038Port 2 table).
4039
4040iASL: Added full support for the PCCT table, update the table definition.
4041Updates the PCCT table definition in the actbl3.h header and adds table
4042compiler and template generator support.
4043
4044iASL: Added an option to emit only error messages (no warnings/remarks).
4045The -ve option will enable only error messages, warnings and remarks are
4046suppressed. This can simplify debugging when only the errors are
4047important, such as when an ACPI table is disassembled and there are many
4048warnings and remarks -- but only the actual errors are of real interest.
4049
4050Example ACPICA code (source/tools/examples): Updated the example code so
4051that it builds to an actual working program, not just example code. Added
4052ACPI tables and execution of an example control method in the DSDT. Added
4053makefile support for Unix generation.
4054
4055
4056----------------------------------------
405715 November 2013. Summary of changes for version 20131115:
4058
4059This release is available at https://acpica.org/downloads
4060
4061
40621) ACPICA kernel-resident subsystem:
4063
4064Resource Manager: Fixed loop termination for the "get AML length"
4065function. The loop previously had an error termination on a NULL resource
4066pointer, which can never happen since the loop simply increments a valid
4067resource pointer. This fix changes the loop to terminate with an error on
4068an invalid end-of-buffer condition. The problem can be seen as an
4069infinite loop by callers to AcpiSetCurrentResources with an invalid or
4070corrupted resource descriptor, or a resource descriptor that is missing
4071an END_TAG descriptor. Reported by Dan Carpenter
4072<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4073
4074Table unload and ACPICA termination: Delete all attached data objects
4075during namespace node deletion. This fix updates namespace node deletion
4076to delete the entire list of attached objects (attached via
4077AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
40781024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4079
4080ACPICA termination: Added support to delete all objects attached to the
4081root namespace node. This fix deletes any and all objects that have been
4082attached to the root node via AcpiAttachData. Previously, none of these
4083objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4084
4085Debug output: Do not emit the function nesting level for the in-kernel
4086build. The nesting level is really only useful during a single-thread
4087execution. Therefore, only enable this output for the AcpiExec utility.
4088Also, only emit the thread ID when executing under AcpiExec (Context
4089switches are still always detected and a message is emitted). ACPICA BZ
4090972.
4091
4092Example Code and Data Size: These are the sizes for the OS-independent
4093acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4094debug version of the code includes the debug output trace mechanism and
4095has a much larger code and data size.
4096
4097  Current Release:
4098    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4099    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4100  Previous Release:
4101    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4102    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4103
4104
41052) iASL Compiler/Disassembler and Tools:
4106
4107AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4108correct portable POSIX header for terminal control functions.
4109
4110Disassembler: Fixed control method invocation issues related to the use
4111of the CondRefOf() operator. The problem is seen in the disassembly where
4112control method invocations may not be disassembled properly if the
4113control method name has been used previously as an argument to CondRefOf.
4114The solution is to not attempt to emit an external declaration for the
4115CondRefOf target (it is not necessary in the first place). This prevents
4116disassembler object type confusion. ACPICA BZ 988.
4117
4118Unix Makefiles: Added an option to disable compiler optimizations and the
4119_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4120with optimizations (reportedly, gcc 4.4 for example). This change adds a
4121command line option for make (NOOPT) that disables all compiler
4122optimizations and the _FORTIFY_SOURCE compiler flag. The default
4123optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
41241034. Lv Zheng, Bob Moore.
4125
4126Tests/ASLTS: Added options to specify individual test cases and modes.
4127This allows testers running aslts.sh to optionally specify individual
4128test modes and test cases. Also added an option to disable the forced
4129generation of the ACPICA tools from source if desired. Lv Zheng.
4130
4131----------------------------------------
413227 September 2013. Summary of changes for version 20130927:
4133
4134This release is available at https://acpica.org/downloads
4135
4136
41371) ACPICA kernel-resident subsystem:
4138
4139Fixed a problem with store operations to reference objects. This change
4140fixes a problem where a Store operation to an ArgX object that contained
4141a
4142reference to a field object did not complete the automatic dereference
4143and
4144then write to the actual field object. Instead, the object type of the
4145field object was inadvertently changed to match the type of the source
4146operand. The new behavior will actually write to the field object (buffer
4147field or field unit), thus matching the correct ACPI-defined behavior.
4148
4149Implemented support to allow the host to redefine individual OSL
4150prototypes. This change enables the host to redefine OSL prototypes found
4151in the acpiosxf.h file. This allows the host to implement OSL interfaces
4152with a macro or inlined function. Further, it allows the host to add any
4153additional required modifiers such as __iomem, __init, __exit, etc., as
4154necessary on a per-interface basis. Enables maximum flexibility for the
4155OSL interfaces. Lv Zheng.
4156
4157Hardcoded the access width for the FADT-defined reset register. The ACPI
4158specification requires the reset register width to be 8 bits. ACPICA now
4159hardcodes the width to 8 and ignores the FADT width value. This provides
4160compatibility with other ACPI implementations that have allowed BIOS code
4161with bad register width values to go unnoticed. Matthew Garett, Bob
4162Moore,
4163Lv Zheng.
4164
4165Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4166used
4167in the OSL header (acpiosxf). The change modifies the position of this
4168macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4169build issues if the OSL defines the implementation of the interface to be
4170an inline stub function. Lv Zheng.
4171
4172Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4173initialization interfaces. This change adds a new macro for the main init
4174and terminate external interfaces in order to support hosts that require
4175additional or different processing for these functions. Changed from
4176ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4177Zheng, Bob Moore.
4178
4179Cleaned up the memory allocation macros for configurability. In the
4180common
4181case, the ACPI_ALLOCATE and related macros now resolve directly to their
4182respective AcpiOs* OSL interfaces. Two options:
41831) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4184default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
41852) For AcpiExec (and for debugging), the macros can optionally be
4186resolved
4187to the local ACPICA interfaces that track each allocation (local tracking
4188is used to immediately detect memory leaks).
4189Lv Zheng.
4190
4191Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4192to predefine this macro to either TRUE or FALSE during the system build.
4193
4194Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4195
4196Example Code and Data Size: These are the sizes for the OS-independent
4197acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4198debug version of the code includes the debug output trace mechanism and
4199has a much larger code and data size.
4200
4201  Current Release:
4202    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4203    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4204  Previous Release:
4205    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4206    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4207
4208
42092) iASL Compiler/Disassembler and Tools:
4210
4211iASL: Implemented wildcard support for the -e option. This simplifies use
4212when there are many SSDTs that must be included to resolve external
4213method
4214declarations. ACPICA BZ 1041. Example:
4215    iasl -e ssdt*.dat -d dsdt.dat
4216
4217AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4218adds a portable module that implements full history and limited line
4219editing for Unix and Linux systems. It does not use readline() due to
4220portability issues. Instead it uses the POSIX termio interface to put the
4221terminal in raw input mode so that the various special keys can be
4222trapped
4223(such as up/down-arrow for history support and left/right-arrow for line
4224editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4225
4226AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4227one or more spaces. This provides compatible with early or different
4228versions of the AcpiDump utility. ACPICA BZ 1044.
4229
4230AcpiDump: Do not ignore tables that contain only an ACPI table header.
4231Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4232no other data. This change adds support to dump these tables. Any tables
4233shorter than the length of an ACPI table header remain in error (an error
4234message is emitted). Reported by Yi Li.
4235
4236Debugger: Echo actual command along with the "unknown command" message.
4237
4238----------------------------------------
423923 August 2013. Summary of changes for version 20130823:
4240
42411) ACPICA kernel-resident subsystem:
4242
4243Implemented support for host-installed System Control Interrupt (SCI)
4244handlers. Certain ACPI functionality requires the host to handle raw
4245SCIs. For example, the "SCI Doorbell" that is defined for memory power
4246state support requires the host device driver to handle SCIs to examine
4247if the doorbell has been activated. Multiple SCI handlers can be
4248installed to allow for future expansion. New external interfaces are
4249AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4250details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4251
4252Operation region support: Never locally free the handler "context"
4253pointer. This change removes some dangerous code that attempts to free
4254the handler context pointer in some (rare) circumstances. The owner of
4255the handler owns this pointer and the ACPICA code should never touch it.
4256Although not seen to be an issue in any kernel, it did show up as a
4257problem (fault) under AcpiExec. Also, set the internal storage field for
4258the context pointer to zero when the region is deactivated, simply for
4259sanity. David Box. ACPICA BZ 1039.
4260
4261AcpiRead: On error, do not modify the return value target location. If an
4262error happens in the middle of a split 32/32 64-bit I/O operation, do not
4263modify the target of the return value pointer. Makes the code consistent
4264with the rest of ACPICA. Bjorn Helgaas.
4265
4266Example Code and Data Size: These are the sizes for the OS-independent
4267acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4268debug version of the code includes the debug output trace mechanism and
4269has a much larger code and data size.
4270
4271  Current Release:
4272    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4273    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4274  Previous Release:
4275    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4276    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4277
4278
42792) iASL Compiler/Disassembler and Tools:
4280
4281AcpiDump: Implemented several new features and fixed some problems:
42821) Added support to dump the RSDP, RSDT, and XSDT tables.
42832) Added support for multiple table instances (SSDT, UEFI).
42843) Added option to dump "customized" (overridden) tables (-c).
42854) Fixed a problem where some table filenames were improperly
4286constructed.
42875) Improved some error messages, removed some unnecessary messages.
4288
4289iASL: Implemented additional support for disassembly of ACPI tables that
4290contain invocations of external control methods. The -fe<file> option
4291allows the import of a file that specifies the external methods along
4292with the required number of arguments for each -- allowing for the
4293correct disassembly of the table. This is a workaround for a limitation
4294of AML code where the disassembler often cannot determine the number of
4295arguments required for an external control method and generates incorrect
4296ASL code. See the iASL reference for details. ACPICA BZ 1030.
4297
4298Debugger: Implemented a new command (paths) that displays the full
4299pathnames (namepaths) and object types of all objects in the namespace.
4300This is an alternative to the namespace command.
4301
4302Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4303mechanism and any installed handlers.
4304
4305iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4306This can occur if there are too many parent prefixes in a namepath (for
4307example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4308
4309Application OSLs: Set the return value for the PCI read functions. These
4310functions simply return AE_OK, but should set the return value to zero
4311also. This change implements this. ACPICA BZ 1038.
4312
4313Debugger: Prevent possible command line buffer overflow. Increase the
4314size of a couple of the debugger line buffers, and ensure that overflow
4315cannot happen. ACPICA BZ 1037.
4316
4317iASL: Changed to abort immediately on serious errors during the parsing
4318phase. Due to the nature of ASL, there is no point in attempting to
4319compile these types of errors, and they typically end up causing a
4320cascade of hundreds of errors which obscure the original problem.
4321
4322----------------------------------------
432325 July 2013. Summary of changes for version 20130725:
4324
43251) ACPICA kernel-resident subsystem:
4326
4327Fixed a problem with the DerefOf operator where references to FieldUnits
4328and BufferFields incorrectly returned the parent object, not the actual
4329value of the object. After this change, a dereference of a FieldUnit
4330reference results in a read operation on the field to get the value, and
4331likewise, the appropriate BufferField value is extracted from the target
4332buffer.
4333
4334Fixed a problem where the _WAK method could cause a fault under these
4335circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4336method returned no value. The problem is rarely seen because most kernels
4337run ACPICA in slack mode.
4338
4339For the DerefOf operator, a fatal error now results if an attempt is made
4340to dereference a reference (created by the Index operator) to a NULL
4341package element. Provides compatibility with other ACPI implementations,
4342and this behavior will be added to a future version of the ACPI
4343specification.
4344
4345The ACPI Power Management Timer (defined in the FADT) is now optional.
4346This provides compatibility with other ACPI implementations and will
4347appear in the next version of the ACPI specification. If there is no PM
4348Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4349zero in the FADT indicates no PM timer.
4350
4351Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4352allows the host to globally enable/disable all vendor strings, all
4353feature strings, or both. Intended to be primarily used for debugging
4354purposes only. Lv Zheng.
4355
4356Expose the collected _OSI data to the host via a global variable. This
4357data tracks the highest level vendor ID that has been invoked by the BIOS
4358so that the host (and potentially ACPICA itself) can change behaviors
4359based upon the age of the BIOS.
4360
4361Example Code and Data Size: These are the sizes for the OS-independent
4362acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4363debug version of the code includes the debug output trace mechanism and
4364has a much larger code and data size.
4365
4366  Current Release:
4367    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4368    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4369  Previous Release:
4370    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4371    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4372
4373
43742) iASL Compiler/Disassembler and Tools:
4375
4376iASL: Created the following enhancements for the -so option (create
4377offset table):
43781)Add offsets for the last nameseg in each namepath for every supported
4379object type
43802)Add support for Processor, Device, Thermal Zone, and Scope objects
43813)Add the actual AML opcode for the parent object of every supported
4382object type
43834)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4384
4385Disassembler: Emit all unresolved external symbols in a single block.
4386These are external references to control methods that could not be
4387resolved, and thus, the disassembler had to make a guess at the number of
4388arguments to parse.
4389
4390iASL: The argument to the -T option (create table template) is now
4391optional. If not specified, the default table is a DSDT, typically the
4392most common case.
4393
4394----------------------------------------
439526 June 2013. Summary of changes for version 20130626:
4396
43971) ACPICA kernel-resident subsystem:
4398
4399Fixed an issue with runtime repair of the _CST object. Null or invalid
4400elements were not always removed properly. Lv Zheng.
4401
4402Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4403FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4404the maximum number of GPEs is 1016. Use of multiple GPE block devices
4405makes the system-wide number of GPEs essentially unlimited.
4406
4407Example Code and Data Size: These are the sizes for the OS-independent
4408acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4409debug version of the code includes the debug output trace mechanism and
4410has a much larger code and data size.
4411
4412  Current Release:
4413    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4414    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4415  Previous Release:
4416    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4417    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4418
4419
44202) iASL Compiler/Disassembler and Tools:
4421
4422Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4423hosts. Now supports Linux, FreeBSD, and Windows.
4424
4425Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4426Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4427
4428iASL/Preprocessor: Implemented full support for nested
4429#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4430
4431Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4432max. The original purpose of this constraint was to limit the amount of
4433debug output. However, the string function in question (UtPrintString) is
4434now used for the disassembler also, where 256 bytes is insufficient.
4435Reported by RehabMan@GitHub.
4436
4437iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4438tables. ACPICA BZ 999. Lv Zheng.
4439
4440iASL: Fixed a couple of error exit issues that could result in a "Could
4441not delete <file>" message during ASL compilation.
4442
4443AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4444the actual signatures for these tables are "FACP" and "APIC",
4445respectively.
4446
4447AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4448tables are allowed to have multiple instances.
4449
4450----------------------------------------
445117 May 2013. Summary of changes for version 20130517:
4452
44531) ACPICA kernel-resident subsystem:
4454
4455Fixed a regression introduced in version 20130328 for _INI methods. This
4456change fixes a problem introduced in 20130328 where _INI methods are no
4457longer executed properly because of a memory block that was not
4458initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4459<tomasz.nowicki@linaro.org>.
4460
4461Fixed a possible problem with the new extended sleep registers in the
4462ACPI
44635.0 FADT. Do not use these registers (even if populated) unless the HW-
4464reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
44651020. Lv Zheng.
4466
4467Implemented return value repair code for _CST predefined objects: Sort
4468the
4469list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4470
4471Implemented a debug-only option to disable loading of SSDTs from the
4472RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4473ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4474acglobal.h - ACPICA BZ 1005. Lv Zheng.
4475
4476Fixed some issues in the ACPICA initialization and termination code:
4477Tomasz Nowicki <tomasz.nowicki@linaro.org>
44781) Clear events initialized flag upon event component termination. ACPICA
4479BZ 1013.
44802) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
44813) Delete global lock pending lock during termination. ACPICA BZ 1012.
44824) Clear debug buffer global on termination to prevent possible multiple
4483delete. ACPICA BZ 1010.
4484
4485Standardized all switch() blocks across the entire source base. After
4486many
4487years, different formatting for switch() had crept in. This change makes
4488the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4489
4490Split some files to enhance ACPICA modularity and configurability:
44911) Split buffer dump routines into utilities/utbuffer.c
44922) Split internal error message routines into utilities/uterror.c
44933) Split table print utilities into tables/tbprint.c
44944) Split iASL command-line option processing into asloptions.c
4495
4496Makefile enhancements:
44971) Support for all new files above.
44982) Abort make on errors from any subcomponent. Chao Guan.
44993) Add build support for Apple Mac OS X. Liang Qi.
4500
4501Example Code and Data Size: These are the sizes for the OS-independent
4502acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4503debug version of the code includes the debug output trace mechanism and
4504has a much larger code and data size.
4505
4506  Current Release:
4507    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4508    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4509  Previous Release:
4510    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4511    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4512
4513
45142) iASL Compiler/Disassembler and Tools:
4515
4516New utility: Implemented an easily portable version of the acpidump
4517utility to extract ACPI tables from the system (or a file) in an ASCII
4518hex
4519dump format. The top-level code implements the various command line
4520options, file I/O, and table dump routines. To port to a new host, only
4521three functions need to be implemented to get tables -- since this
4522functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4523the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
45241) The Windows version obtains the ACPI tables from the Registry.
45252) The Linux version is under development.
45263) Other hosts - If an OS-dependent module is submitted, it will be
4527distributed with ACPICA.
4528
4529iASL: Fixed a regression for -D preprocessor option (define symbol). A
4530restructuring/change to the initialization sequence caused this option to
4531no longer work properly.
4532
4533iASL: Implemented a mechanism to disable specific warnings and remarks.
4534Adds a new command line option, "-vw <messageid> as well as "#pragma
4535disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4536
4537iASL: Fix for too-strict package object validation. The package object
4538validation for return values from the predefined names is a bit too
4539strict, it does not allow names references within the package (which will
4540be resolved at runtime.) These types of references cannot be validated at
4541compile time. This change ignores named references within package objects
4542for names that return or define static packages.
4543
4544Debugger: Fixed the 80-character command line limitation for the History
4545command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4546
4547iASL: Added control method and package support for the -so option
4548(generates AML offset table for BIOS support.)
4549
4550iASL: issue a remark if a non-serialized method creates named objects. If
4551a thread blocks within the method for any reason, and another thread
4552enters the method, the method will fail because an attempt will be made
4553to
4554create the same (named) object twice. In this case, issue a remark that
4555the method should be marked serialized. NOTE: may become a warning later.
4556ACPICA BZ 909.
4557
4558----------------------------------------
455918 April 2013. Summary of changes for version 20130418:
4560
45611) ACPICA kernel-resident subsystem:
4562
4563Fixed a possible buffer overrun during some rare but specific field unit
4564read operations. This overrun can only happen if the DSDT version is 1 --
4565meaning that all AML integers are 32 bits -- and the field length is
4566between 33 and 55 bits long. During the read, an internal buffer object
4567is
4568created for the field unit because the field is larger than an integer
4569(32
4570bits). However, in this case, the buffer will be incorrectly written
4571beyond the end because the buffer length is less than the internal
4572minimum
4573of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4574long, but a full 8 bytes will be written.
4575
4576Updated the Embedded Controller "orphan" _REG method support. This refers
4577to _REG methods under the EC device that have no corresponding operation
4578region. This is allowed by the ACPI specification. This update removes a
4579dependency on the existence an ECDT table. It will execute an orphan _REG
4580method as long as the operation region handler for the EC is installed at
4581the EC device node and not the namespace root. Rui Zhang (original
4582update), Bob Moore (update/integrate).
4583
4584Implemented run-time argument typechecking for all predefined ACPI names
4585(_STA, _BIF, etc.) This change performs object typechecking on all
4586incoming arguments for all predefined names executed via
4587AcpiEvaluateObject. This ensures that ACPI-related device drivers are
4588passing correct object types as well as the correct number of arguments
4589(therefore identifying any issues immediately). Also, the ASL/namespace
4590definition of the predefined name is checked against the ACPI
4591specification for the proper argument count. Adds one new file,
4592nsarguments.c
4593
4594Changed an exception code for the ASL UnLoad() operator. Changed the
4595exception code for the case where the input DdbHandle is invalid, from
4596AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4597
4598Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
4599global makefile. The use of this flag causes compiler errors on earlier
4600versions of GCC, so it has been removed for compatibility.
4601
4602Miscellaneous cleanup:
46031) Removed some unused/obsolete macros
46042) Fixed a possible memory leak in the _OSI support
46053) Removed an unused variable in the predefined name support
46064) Windows OSL: remove obsolete reference to a memory list field
4607
4608Example Code and Data Size: These are the sizes for the OS-independent
4609acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4610debug version of the code includes the debug output trace mechanism and
4611has a much larger code and data size.
4612
4613  Current Release:
4614    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4615    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4616  Previous Release:
4617    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4618    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4619
4620
46212) iASL Compiler/Disassembler and Tools:
4622
4623AcpiExec: Added installation of a handler for the SystemCMOS address
4624space. This prevents control method abort if a method accesses this
4625space.
4626
4627AcpiExec: Added support for multiple EC devices, and now install EC
4628operation region handler(s) at the actual EC device instead of the
4629namespace root. This reflects the typical behavior of host operating
4630systems.
4631
4632AcpiExec: Updated to ensure that all operation region handlers are
4633installed before the _REG methods are executed. This prevents a _REG
4634method from aborting if it accesses an address space has no handler.
4635AcpiExec installs a handler for every possible address space.
4636
4637Debugger: Enhanced the "handlers" command to display non-root handlers.
4638This change enhances the handlers command to display handlers associated
4639with individual devices throughout the namespace, in addition to the
4640currently supported display of handlers associated with the root
4641namespace
4642node.
4643
4644ASL Test Suite: Several test suite errors have been identified and
4645resolved, reducing the total error count during execution. Chao Guan.
4646
4647----------------------------------------
464828 March 2013. Summary of changes for version 20130328:
4649
46501) ACPICA kernel-resident subsystem:
4651
4652Fixed several possible race conditions with the internal object reference
4653counting mechanism. Some of the external ACPICA interfaces update object
4654reference counts without holding the interpreter or namespace lock. This
4655change adds a spinlock to protect reference count updates on the internal
4656ACPICA objects. Reported by and with assistance from Andriy Gapon
4657(avg@FreeBSD.org).
4658
4659FADT support: Removed an extraneous warning for very large GPE register
4660sets. This change removes a size mismatch warning if the legacy length
4661field for a GPE register set is larger than the 64-bit GAS structure can
4662accommodate. GPE register sets can be larger than the 255-bit width
4663limitation of the GAS structure. Linn Crosetto (linn@hp.com).
4664
4665_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
4666return from this interface. Handles a possible timeout case if
4667ACPI_WAIT_FOREVER is modified by the host to be a value less than
4668"forever". Jung-uk Kim.
4669
4670Predefined name support: Add allowed/required argument type information
4671to
4672the master predefined info table. This change adds the infrastructure to
4673enable typechecking on incoming arguments for all predefined
4674methods/objects. It does not actually contain the code that will fully
4675utilize this information, this is still under development. Also condenses
4676some duplicate code for the predefined names into a new module,
4677utilities/utpredef.c
4678
4679Example Code and Data Size: These are the sizes for the OS-independent
4680acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4681debug version of the code includes the debug output trace mechanism and
4682has a much larger code and data size.
4683
4684  Previous Release:
4685    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4686    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4687  Current Release:
4688    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4689    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4690
4691
46922) iASL Compiler/Disassembler and Tools:
4693
4694iASL: Implemented a new option to simplify the development of ACPI-
4695related
4696BIOS code. Adds support for a new "offset table" output file. The -so
4697option will create a C table containing the AML table offsets of various
4698named objects in the namespace so that BIOS code can modify them easily
4699at
4700boot time. This can simplify BIOS runtime code by eliminating expensive
4701searches for "magic values", enhancing boot times and adding greater
4702reliability. With assistance from Lee Hamel.
4703
4704iASL: Allow additional predefined names to return zero-length packages.
4705Now, all predefined names that are defined by the ACPI specification to
4706return a "variable-length package of packages" are allowed to return a
4707zero length top-level package. This allows the BIOS to tell the host that
4708the requested feature is not supported, and supports existing BIOS/ASL
4709code and practices.
4710
4711iASL: Changed the "result not used" warning to an error. This is the case
4712where an ASL operator is effectively a NOOP because the result of the
4713operation is not stored anywhere. For example:
4714    Add (4, Local0)
4715There is no target (missing 3rd argument), nor is the function return
4716value used. This is potentially a very serious problem -- since the code
4717was probably intended to do something, but for whatever reason, the value
4718was not stored. Therefore, this issue has been upgraded from a warning to
4719an error.
4720
4721AcpiHelp: Added allowable/required argument types to the predefined names
4722info display. This feature utilizes the recent update to the predefined
4723names table (above).
4724
4725----------------------------------------
472614 February 2013. Summary of changes for version 20130214:
4727
47281) ACPICA Kernel-resident Subsystem:
4729
4730Fixed a possible regression on some hosts: Reinstated the safe return
4731macros (return_ACPI_STATUS, etc.) that ensure that the argument is
4732evaluated only once. Although these macros are not needed for the ACPICA
4733code itself, they are often used by ACPI-related host device drivers
4734where
4735the safe feature may be necessary.
4736
4737Fixed several issues related to the ACPI 5.0 reduced hardware support
4738(SOC): Now ensure that if the platform declares itself as hardware-
4739reduced
4740via the FADT, the following functions become NOOPs (and always return
4741AE_OK) because ACPI is always enabled by definition on these machines:
4742  AcpiEnable
4743  AcpiDisable
4744  AcpiHwGetMode
4745  AcpiHwSetMode
4746
4747Dynamic Object Repair: Implemented additional runtime repairs for
4748predefined name return values. Both of these repairs can simplify code in
4749the related device drivers that invoke these methods:
47501) For the _STR and _MLS names, automatically repair/convert an ASCII
4751string to a Unicode buffer.
47522) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
4753a
4754lone end tag descriptor in the following cases: A Return(0) was executed,
4755a null buffer was returned, or no object at all was returned (non-slack
4756mode only). Adds a new file, nsconvert.c
4757ACPICA BZ 998. Bob Moore, Lv Zheng.
4758
4759Resource Manager: Added additional code to prevent possible infinite
4760loops
4761while traversing corrupted or ill-formed resource template buffers. Check
4762for zero-length resource descriptors in all code that loops through
4763resource templates (the length field is used to index through the
4764template). This change also hardens the external AcpiWalkResources and
4765AcpiWalkResourceBuffer interfaces.
4766
4767Local Cache Manager: Enhanced the main data structure to eliminate an
4768unnecessary mechanism to access the next object in the list. Actually
4769provides a small performance enhancement for hosts that use the local
4770ACPICA cache manager. Jung-uk Kim.
4771
4772Example Code and Data Size: These are the sizes for the OS-independent
4773acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4774debug version of the code includes the debug output trace mechanism and
4775has a much larger code and data size.
4776
4777  Previous Release:
4778    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4779    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4780  Current Release:
4781    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4782    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4783
4784
47852) iASL Compiler/Disassembler and Tools:
4786
4787iASL/Disassembler: Fixed several issues with the definition of the ACPI
47885.0 RASF table (RAS Feature Table). This change incorporates late changes
4789that were made to the ACPI 5.0 specification.
4790
4791iASL/Disassembler: Added full support for the following new ACPI tables:
4792  1) The MTMR table (MID Timer Table)
4793  2) The VRTC table (Virtual Real Time Clock Table).
4794Includes header file, disassembler, table compiler, and template support
4795for both tables.
4796
4797iASL: Implemented compile-time validation of package objects returned by
4798predefined names. This new feature validates static package objects
4799returned by the various predefined names defined to return packages. Both
4800object types and package lengths are validated, for both parent packages
4801and sub-packages, if any. The code is similar in structure and behavior
4802to
4803the runtime repair mechanism within the AML interpreter and uses the
4804existing predefined name information table. Adds a new file, aslprepkg.c.
4805ACPICA BZ 938.
4806
4807iASL: Implemented auto-detection of binary ACPI tables for disassembly.
4808This feature detects a binary file with a valid ACPI table header and
4809invokes the disassembler automatically. Eliminates the need to
4810specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4811
4812iASL/Disassembler: Added several warnings for the case where there are
4813unresolved control methods during the disassembly. This can potentially
4814cause errors when the output file is compiled, because the disassembler
4815assumes zero method arguments in these cases (it cannot determine the
4816actual number of arguments without resolution/definition of the method).
4817
4818Debugger: Added support to display all resources with a single command.
4819Invocation of the resources command with no arguments will now display
4820all
4821resources within the current namespace.
4822
4823AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4824via the -e option.
4825
4826----------------------------------------
482717 January 2013. Summary of changes for version 20130117:
4828
48291) ACPICA Kernel-resident Subsystem:
4830
4831Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
4832return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
4833objects to return a package containing one integer, most BIOS code
4834returns
4835two integers and the previous code reflects that. However, we also need
4836to
4837support BIOS code that actually implements to the ACPI spec, and this
4838change reflects this.
4839
4840Fixed two issues with the ACPI_DEBUG_PRINT macros:
48411) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
4842C compilers that require this support.
48432) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
4844ACPI_DEBUG is already used by many of the various hosts.
4845
4846Updated all ACPICA copyrights and signons to 2013. Added the 2013
4847copyright to all module headers and signons, including the standard Linux
4848header. This affects virtually every file in the ACPICA core subsystem,
4849iASL compiler, all ACPICA utilities, and the test suites.
4850
4851Example Code and Data Size: These are the sizes for the OS-independent
4852acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4853debug version of the code includes the debug output trace mechanism and
4854has a much larger code and data size.
4855
4856  Previous Release:
4857    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4858    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4859  Current Release:
4860    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4861    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4862
4863
48642) iASL Compiler/Disassembler and Tools:
4865
4866Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
4867prevent a possible fault on some hosts. Some C libraries modify the arg
4868pointer parameter to vfprintf making it difficult to call it twice in the
4869AcpiOsVprintf function. Use a local buffer to workaround this issue. This
4870does not affect the Windows OSL since the Win C library does not modify
4871the arg pointer. Chao Guan, Bob Moore.
4872
4873iASL: Fixed a possible infinite loop when the maximum error count is
4874reached. If an output file other than the .AML file is specified (such as
4875a listing file), and the maximum number of errors is reached, do not
4876attempt to flush data to the output file(s) as the compiler is aborting.
4877This can cause an infinite loop as the max error count code essentially
4878keeps calling itself.
4879
4880iASL/Disassembler: Added an option (-in) to ignore NOOP
4881opcodes/operators.
4882Implemented for both the compiler and the disassembler. Often, the NOOP
4883opcode is used as padding for packages that are changed dynamically by
4884the
4885BIOS. When disassembled and recompiled, these NOOPs will cause syntax
4886errors. This option causes the disassembler to ignore all NOOP opcodes
4887(0xA3), and it also causes the compiler to ignore all ASL source code
4888NOOP
4889statements as well.
4890
4891Debugger: Enhanced the Sleep command to execute all sleep states. This
4892change allows Sleep to be invoked with no arguments and causes the
4893debugger to execute all of the sleep states, 0-5, automatically.
4894
4895----------------------------------------
489620 December 2012. Summary of changes for version 20121220:
4897
48981) ACPICA Kernel-resident Subsystem:
4899
4900Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
4901alternate entry point for AcpiWalkResources and improves the usability of
4902the resource manager by accepting as input a buffer containing the output
4903of either a _CRS, _PRS, or _AEI method. The key functionality is that the
4904input buffer is not deleted by this interface so that it can be used by
4905the host later. See the ACPICA reference for details.
4906
4907Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
4908(DSDT version < 2). The constant will be truncated and this warning
4909reflects that behavior.
4910
4911Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
4912ExtendedInterrupt, and GpioInt descriptors. This change adds support to
4913both get and set the new wake bit in these descriptors, separately from
4914the existing share bit. Reported by Aaron Lu.
4915
4916Interpreter: Fix Store() when an implicit conversion is not possible. For
4917example, in the cases such as a store of a string to an existing package
4918object, implement the store as a CopyObject(). This is a small departure
4919from the ACPI specification which states that the control method should
4920be
4921aborted in this case. However, the ASLTS suite depends on this behavior.
4922
4923Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
4924macros: check if debug output is currently enabled as soon as possible to
4925minimize performance impact if debug is in fact not enabled.
4926
4927Source code restructuring: Cleanup to improve modularity. The following
4928new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
4929psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
4930Associated makefiles and project files have been updated.
4931
4932Changed an exception code for LoadTable operator. For the case where one
4933of the input strings is too long, change the returned exception code from
4934AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
4935
4936Fixed a possible memory leak in dispatcher error path. On error, delete
4937the mutex object created during method mutex creation. Reported by
4938tim.gardner@canonical.com.
4939
4940Example Code and Data Size: These are the sizes for the OS-independent
4941acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4942debug version of the code includes the debug output trace mechanism and
4943has a much larger code and data size.
4944
4945  Previous Release:
4946    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
4947    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4948  Current Release:
4949    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4950    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4951
4952
49532) iASL Compiler/Disassembler and Tools:
4954
4955iASL: Disallow a method call as argument to the ObjectType ASL operator.
4956This change tracks an errata to the ACPI 5.0 document. The AML grammar
4957will not allow the interpreter to differentiate between a method and a
4958method invocation when these are used as an argument to the ObjectType
4959operator. The ACPI specification change is to disallow a method
4960invocation
4961(UserTerm) for the ObjectType operator.
4962
4963Finish support for the TPM2 and CSRT tables in the headers, table
4964compiler, and disassembler.
4965
4966Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
4967always expires immediately if the semaphore is not available. The
4968original
4969code was using a relative-time timeout, but sem_timedwait requires the
4970use
4971of an absolute time.
4972
4973iASL: Added a remark if the Timer() operator is used within a 32-bit
4974table. This operator returns a 64-bit time value that will be truncated
4975within a 32-bit table.
4976
4977iASL Source code restructuring: Cleanup to improve modularity. The
4978following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
4979aslmethod.c, and aslfileio.c. Associated makefiles and project files have
4980been updated.
4981
4982
4983----------------------------------------
498414 November 2012. Summary of changes for version 20121114:
4985
49861) ACPICA Kernel-resident Subsystem:
4987
4988Implemented a performance enhancement for ACPI/AML Package objects. This
4989change greatly increases the performance of Package objects within the
4990interpreter. It changes the processing of reference counts for packages
4991by
4992optimizing for the most common case where the package sub-objects are
4993either Integers, Strings, or Buffers. Increases the overall performance
4994of
4995the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
49962X.)
4997Chao Guan. ACPICA BZ 943.
4998
4999Implemented and deployed common macros to extract flag bits from resource
5000descriptors. Improves readability and maintainability of the code. Fixes
5001a
5002problem with the UART serial bus descriptor for the number of data bits
5003flags (was incorrectly 2 bits, should be 3).
5004
5005Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5006of the macros and changed the SETx macros to the style of (destination,
5007source). Also added ACPI_CASTx companion macros. Lv Zheng.
5008
5009Example Code and Data Size: These are the sizes for the OS-independent
5010acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5011debug version of the code includes the debug output trace mechanism and
5012has a much larger code and data size.
5013
5014  Previous Release:
5015    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5016    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5017  Current Release:
5018    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5019    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5020
5021
50222) iASL Compiler/Disassembler and Tools:
5023
5024Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5025adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5026Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5027
5028Disassembler: Fixed a problem with external declaration generation. Fixes
5029a problem where an incorrect pathname could be generated for an external
5030declaration if the original reference to the object includes leading
5031carats (^). ACPICA BZ 984.
5032
5033Debugger: Completed a major update for the Disassemble<method> command.
5034This command was out-of-date and did not properly disassemble control
5035methods that had any reasonable complexity. This fix brings the command
5036up
5037to the same level as the rest of the disassembler. Adds one new file,
5038dmdeferred.c, which is existing code that is now common with the main
5039disassembler and the debugger disassemble command. ACPICA MZ 978.
5040
5041iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5042Newer versions of Bison emit this prototype, so moved the prototype out
5043of
5044the iASL header to where it is actually used in order to avoid a
5045duplicate
5046declaration.
5047
5048iASL/Tools: Standardized use of the stream I/O functions:
5049  1) Ensure check for I/O error after every fopen/fread/fwrite
5050  2) Ensure proper order of size/count arguments for fread/fwrite
5051  3) Use test of (Actual != Requested) after all fwrite, and most fread
5052  4) Standardize I/O error messages
5053Improves reliability and maintainability of the code. Bob Moore, Lv
5054Zheng.
5055ACPICA BZ 981.
5056
5057Disassembler: Prevent duplicate External() statements. During generation
5058of external statements, detect similar pathnames that are actually
5059duplicates such as these:
5060  External (\ABCD)
5061  External (ABCD)
5062Remove all leading '\' characters from pathnames during the external
5063statement generation so that duplicates will be detected and tossed.
5064ACPICA BZ 985.
5065
5066Tools: Replace low-level I/O with stream I/O functions. Replace
5067open/read/write/close with the stream I/O equivalents
5068fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5069Moore.
5070
5071AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5072name header so that AcpiXtract recognizes the output file/table.
5073
5074iASL: Remove obsolete -2 option flag. Originally intended to force the
5075compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5076and the entire concept is now obsolete.
5077
5078----------------------------------------
507918 October 2012. Summary of changes for version 20121018:
5080
5081
50821) ACPICA Kernel-resident Subsystem:
5083
5084Updated support for the ACPI 5.0 MPST table. Fixes some problems
5085introduced by late changes to the table as it was added to the ACPI 5.0
5086specification. Includes header, disassembler, and data table compiler
5087support as well as a new version of the MPST template.
5088
5089AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
50905.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5091methods: _HID, _CID, and _UID.
5092
5093Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5094ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5095name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5096names for their various drivers. Affects the AcpiGetObjectInfo external
5097interface, and other internal interfaces as well.
5098
5099Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5100This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5101on machines that support non-aligned transfers. Optimizes for this case
5102rather than using a strncpy. With assistance from Zheng Lv.
5103
5104Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5105error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5106
5107Added a new debug print message for AML mutex objects that are force-
5108released. At control method termination, any currently acquired mutex
5109objects are force-released. Adds a new debug-only message for each one
5110that is released.
5111
5112Audited/updated all ACPICA return macros and the function debug depth
5113counter: 1) Ensure that all functions that use the various TRACE macros
5114also use the appropriate ACPICA return macros. 2) Ensure that all normal
5115return statements surround the return expression (value) with parens to
5116ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5117Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5118
5119Global source code changes/maintenance: All extra lines at the start and
5120end of each source file have been removed for consistency. Also, within
5121comments, all new sentences start with a single space instead of a double
5122space, again for consistency across the code base.
5123
5124Example Code and Data Size: These are the sizes for the OS-independent
5125acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5126debug version of the code includes the debug output trace mechanism and
5127has a much larger code and data size.
5128
5129  Previous Release:
5130    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5131    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5132  Current Release:
5133    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5134    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5135
5136
51372) iASL Compiler/Disassembler and Tools:
5138
5139AcpiExec: Improved the algorithm used for memory leak/corruption
5140detection. Added some intelligence to the code that maintains the global
5141list of allocated memory. The list is now ordered by allocated memory
5142address, significantly improving performance. When running AcpiExec on
5143the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5144on the platform and/or the environment. Note, this performance
5145enhancement affects the AcpiExec utility only, not the kernel-resident
5146ACPICA code.
5147
5148Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5149the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5150incorrect table offset reported for invalid opcodes. Report the original
515132-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5152
5153Disassembler: Enhanced the -vt option to emit the binary table data in
5154hex format to assist with debugging.
5155
5156Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5157size of file structure. Colin Ian King.
5158
5159----------------------------------------
516013 September 2012. Summary of changes for version 20120913:
5161
5162
51631) ACPICA Kernel-resident Subsystem:
5164
5165ACPI 5.0: Added two new notify types for the Hardware Error Notification
5166Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5167and
5168MCE(6).
5169
5170Table Manager: Merged/removed duplicate code in the root table resize
5171functions. One function is external, the other is internal. Lv Zheng,
5172ACPICA
5173BZ 846.
5174
5175Makefiles: Completely removed the obsolete "Linux" makefiles under
5176acpica/generate/linux. These makefiles are obsolete and have been
5177replaced
5178by
5179the generic unix makefiles under acpica/generate/unix.
5180
5181Makefiles: Ensure that binary files always copied properly. Minor rule
5182change
5183to ensure that the final binary output files are always copied up to the
5184appropriate binary directory (bin32 or bin64.)
5185
5186Example Code and Data Size: These are the sizes for the OS-independent
5187acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5188debug
5189version of the code includes the debug output trace mechanism and has a
5190much
5191larger code and data size.
5192
5193  Previous Release:
5194    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5195    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5196  Current Release:
5197    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5198    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5199
5200
52012) iASL Compiler/Disassembler and Tools:
5202
5203Disassembler: Fixed a possible fault during the disassembly of resource
5204descriptors when a second parse is required because of the invocation of
5205external control methods within the table. With assistance from
5206adq@lidskialf.net. ACPICA BZ 976.
5207
5208iASL: Fixed a namepath optimization problem. An error can occur if the
5209parse
5210node that contains the namepath to be optimized does not have a parent
5211node
5212that is a named object. This change fixes the problem.
5213
5214iASL: Fixed a regression where the AML file is not deleted on errors. The
5215AML
5216output file should be deleted if there are any errors during the
5217compiler.
5218The
5219only exception is if the -f (force output) option is used. ACPICA BZ 974.
5220
5221iASL: Added a feature to automatically increase internal line buffer
5222sizes.
5223Via realloc(), automatically increase the internal line buffer sizes as
5224necessary to support very long source code lines. The current version of
5225the
5226preprocessor requires a buffer long enough to contain full source code
5227lines.
5228This change increases the line buffer(s) if the input lines go beyond the
5229current buffer size. This eliminates errors that occurred when a source
5230code
5231line was longer than the buffer.
5232
5233iASL: Fixed a problem with constant folding in method declarations. The
5234SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5235if a
5236Type3 opcode was used.
5237
5238Debugger: Improved command help support. For incorrect argument count,
5239display
5240full help for the command. For help command itself, allow an argument to
5241specify a command.
5242
5243Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5244errors during execution of the suite. Guan Chao.
5245
5246----------------------------------------
524716 August 2012. Summary of changes for version 20120816:
5248
5249
52501) ACPICA Kernel-resident Subsystem:
5251
5252Removed all use of the deprecated _GTS and _BFS predefined methods. The
5253_GTS
5254(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5255deprecated and will probably be removed from the ACPI specification.
5256Windows
5257does not invoke them, and reportedly never will. The final nail in the
5258coffin
5259is that the ACPI specification states that these methods must be run with
5260interrupts off, which is not going to happen in a kernel interpreter.
5261Note:
5262Linux has removed all use of the methods also. It was discovered that
5263invoking these functions caused failures on some machines, probably
5264because
5265they were never tested since Windows does not call them. Affects two
5266external
5267interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5268ACPICA BZ 969.
5269
5270Implemented support for complex bit-packed buffers returned from the _PLD
5271(Physical Location of Device) predefined method. Adds a new external
5272interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5273C
5274structure. Note: C Bitfields cannot be used for this type of predefined
5275structure since the memory layout of individual bitfields is not defined
5276by
5277the C language. In addition, there are endian concerns where a compiler
5278will
5279change the bitfield ordering based on the machine type. The new ACPICA
5280interface eliminates these issues, and should be called after _PLD is
5281executed. ACPICA BZ 954.
5282
5283Implemented a change to allow a scope change to root (via "Scope (\)")
5284during
5285execution of module-level ASL code (code that is executed at table load
5286time.) Lin Ming.
5287
5288Added the Windows8/Server2012 string for the _OSI method. This change
5289adds
5290a
5291new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
52922012.
5293
5294Added header support for the new ACPI tables DBG2 (Debug Port Table Type
52952)
5296and CSRT (Core System Resource Table).
5297
5298Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5299names. This simplifies access to the buffers returned by these predefined
5300names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5301
5302GPE support: Removed an extraneous parameter from the various low-level
5303internal GPE functions. Tang Feng.
5304
5305Removed the linux makefiles from the unix packages. The generate/linux
5306makefiles are obsolete and have been removed from the unix tarball
5307release
5308packages. The replacement makefiles are under generate/unix, and there is
5309a
5310top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5311
5312Updates for Unix makefiles:
53131) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
53142) Update linker flags (move to end of command line) for AcpiExec
5315utility.
5316Guan Chao.
5317
5318Split ACPICA initialization functions to new file, utxfinit.c. Split from
5319utxface.c to improve modularity and reduce file size.
5320
5321Example Code and Data Size: These are the sizes for the OS-independent
5322acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5323debug version of the code includes the debug output trace mechanism and
5324has a
5325much larger code and data size.
5326
5327  Previous Release:
5328    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5329    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5330  Current Release:
5331    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5332    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5333
5334
53352) iASL Compiler/Disassembler and Tools:
5336
5337iASL: Fixed a problem with constant folding for fixed-length constant
5338expressions. The constant-folding code was not being invoked for constant
5339expressions that allow the use of type 3/4/5 opcodes to generate
5340constants
5341for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5342result
5343in the generation of invalid AML bytecode. ACPICA BZ 970.
5344
5345iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5346apparently automatically emit some of the necessary externals. This
5347change
5348handles these versions in order to eliminate generation warnings.
5349
5350Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5351
5352Disassembler: Add support to decode _PLD buffers. The decoded buffer
5353appears
5354within comments in the output file.
5355
5356Debugger: Fixed a regression with the "Threads" command where
5357AE_BAD_PARAMETER was always returned.
5358
5359----------------------------------------
536011 July 2012. Summary of changes for version 20120711:
5361
53621) ACPICA Kernel-resident Subsystem:
5363
5364Fixed a possible fault in the return package object repair code. Fixes a
5365problem that can occur when a lone package object is wrapped with an
5366outer
5367package object in order to force conformance to the ACPI specification.
5368Can
5369affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5370_DLM,
5371_CSD, _PSD, _TSD.
5372
5373Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5374PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5375ARB_DIS bit must be implemented in the host-dependent C3 processor power
5376state
5377support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5378both
5379Intel and other vendors. (for Intel: ICH4-M and earlier)
5380
5381This change removes the code to disable/enable bus master arbitration
5382during
5383suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5384causes
5385resume problems on some machines. The change has been in use for over
5386seven
5387years within Linux.
5388
5389Implemented two new external interfaces to support host-directed dynamic
5390ACPI
5391table load and unload. They are intended to simplify the host
5392implementation
5393of hot-plug support:
5394  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5395  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5396table.
5397See the ACPICA reference for additional details. Adds one new file,
5398components/tables/tbxfload.c
5399
5400Implemented and deployed two new interfaces for errors and warnings that
5401are
5402known to be caused by BIOS/firmware issues:
5403  AcpiBiosError: Prints "ACPI Firmware Error" message.
5404  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5405Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5406table
5407and FADT errors. Additional deployment to be completed as appropriate in
5408the
5409future. The associated conditional macros are ACPI_BIOS_ERROR and
5410ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5411ACPICA
5412BZ
5413843.
5414
5415Implicit notify support: ensure that no memory allocation occurs within a
5416critical region. This fix moves a memory allocation outside of the time
5417that a
5418spinlock is held. Fixes issues on systems that do not allow this
5419behavior.
5420Jung-uk Kim.
5421
5422Split exception code utilities and tables into a new file,
5423utilities/utexcep.c
5424
5425Example Code and Data Size: These are the sizes for the OS-independent
5426acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5427debug
5428version of the code includes the debug output trace mechanism and has a
5429much
5430larger code and data size.
5431
5432  Previous Release:
5433    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5434    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5435  Current Release:
5436    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5437    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5438
5439
54402) iASL Compiler/Disassembler and Tools:
5441
5442iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5443of
54440. Jung-uk Kim.
5445
5446Debugger: Enhanced the "tables" command to emit additional information
5447about
5448the current set of ACPI tables, including the owner ID and flags decode.
5449
5450Debugger: Reimplemented the "unload" command to use the new
5451AcpiUnloadParentTable external interface. This command was disable
5452previously
5453due to need for an unload interface.
5454
5455AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5456option
5457will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5458
5459----------------------------------------
546020 June 2012. Summary of changes for version 20120620:
5461
5462
54631) ACPICA Kernel-resident Subsystem:
5464
5465Implemented support to expand the "implicit notify" feature to allow
5466multiple
5467devices to be notified by a single GPE. This feature automatically
5468generates a
5469runtime device notification in the absence of a BIOS-provided GPE control
5470method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5471notify is
5472provided by ACPICA for Windows compatibility, and is a workaround for
5473BIOS
5474AML
5475code errors. See the description of the AcpiSetupGpeForWake interface in
5476the
5477APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5478
5479Changed some comments and internal function names to simplify and ensure
5480correctness of the Linux code translation. No functional changes.
5481
5482Example Code and Data Size: These are the sizes for the OS-independent
5483acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5484debug
5485version of the code includes the debug output trace mechanism and has a
5486much
5487larger code and data size.
5488
5489  Previous Release:
5490    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5491    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5492  Current Release:
5493    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5494    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5495
5496
54972) iASL Compiler/Disassembler and Tools:
5498
5499Disassembler: Added support to emit short, commented descriptions for the
5500ACPI
5501predefined names in order to improve the readability of the disassembled
5502output. ACPICA BZ 959. Changes include:
5503  1) Emit descriptions for all standard predefined names (_INI, _STA,
5504_PRW,
5505etc.)
5506  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5507  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5508etc.)
5509
5510AcpiSrc: Fixed several long-standing Linux code translation issues.
5511Argument
5512descriptions in function headers are now translated properly to lower
5513case
5514and
5515underscores. ACPICA BZ 961. Also fixes translation problems such as
5516these:
5517(old -> new)
5518  i_aSL -> iASL
5519  00-7_f -> 00-7F
5520  16_k -> 16K
5521  local_fADT -> local_FADT
5522  execute_oSI -> execute_OSI
5523
5524iASL: Fixed a problem where null bytes were inadvertently emitted into
5525some
5526listing files.
5527
5528iASL: Added the existing debug options to the standard help screen. There
5529are
5530no longer two different help screens. ACPICA BZ 957.
5531
5532AcpiHelp: Fixed some typos in the various predefined name descriptions.
5533Also
5534expand some of the descriptions where appropriate.
5535
5536iASL: Fixed the -ot option (display compile times/statistics). Was not
5537working
5538properly for standard output; only worked for the debug file case.
5539
5540----------------------------------------
554118 May 2012. Summary of changes for version 20120518:
5542
5543
55441) ACPICA Core Subsystem:
5545
5546Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5547defined
5548to block until asynchronous events such as notifies and GPEs have
5549completed.
5550Within ACPICA, it is only called before a notify or GPE handler is
5551removed/uninstalled. It also may be useful for the host OS within related
5552drivers such as the Embedded Controller driver. See the ACPICA reference
5553for
5554additional information. ACPICA BZ 868.
5555
5556ACPI Tables: Added a new error message for a possible overflow failure
5557during
5558the conversion of FADT 32-bit legacy register addresses to internal
5559common
556064-
5561bit GAS structure representation. The GAS has a one-byte "bit length"
5562field,
5563thus limiting the register length to 255 bits. ACPICA BZ 953.
5564
5565Example Code and Data Size: These are the sizes for the OS-independent
5566acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5567debug
5568version of the code includes the debug output trace mechanism and has a
5569much
5570larger code and data size.
5571
5572  Previous Release:
5573    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5574    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5575  Current Release:
5576    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5577    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5578
5579
55802) iASL Compiler/Disassembler and Tools:
5581
5582iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
5583macro.
5584This keyword was added late in the ACPI 5.0 release cycle and was not
5585implemented until now.
5586
5587Disassembler: Added support for Operation Region externals. Adds missing
5588support for operation regions that are defined in another table, and
5589referenced locally via a Field or BankField ASL operator. Now generates
5590the
5591correct External statement.
5592
5593Disassembler: Several additional fixes for the External() statement
5594generation
5595related to some ASL operators. Also, order the External() statements
5596alphabetically in the disassembler output. Fixes the External()
5597generation
5598for
5599the Create* field, Alias, and Scope operators:
5600 1) Create* buffer field operators - fix type mismatch warning on
5601disassembly
5602 2) Alias - implement missing External support
5603 3) Scope - fix to make sure all necessary externals are emitted.
5604
5605iASL: Improved pathname support. For include files, merge the prefix
5606pathname
5607with the file pathname and eliminate unnecessary components. Convert
5608backslashes in all pathnames to forward slashes, for readability. Include
5609file
5610pathname changes affect both #include and Include() type operators.
5611
5612iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
5613end
5614of a valid line by inserting a newline and then returning the EOF during
5615the
5616next call to GetNextLine. Prevents the line from being ignored due to EOF
5617condition.
5618
5619iASL: Implemented some changes to enhance the IDE support (-vi option.)
5620Error
5621and Warning messages are now correctly recognized for both the source
5622code
5623browser and the global error and warning counts.
5624
5625----------------------------------------
562620 April 2012. Summary of changes for version 20120420:
5627
5628
56291) ACPICA Core Subsystem:
5630
5631Implemented support for multiple notify handlers. This change adds
5632support
5633to
5634allow multiple system and device notify handlers on Device, Thermal Zone,
5635and
5636Processor objects. This can simplify the host OS notification
5637implementation.
5638Also re-worked and restructured the entire notify support code to
5639simplify
5640handler installation, handler removal, notify event queuing, and notify
5641dispatch to handler(s). Note: there can still only be two global notify
5642handlers - one for system notifies and one for device notifies. There are
5643no
5644changes to the existing handler install/remove interfaces. Lin Ming, Bob
5645Moore, Rafael Wysocki.
5646
5647Fixed a regression in the package repair code where the object reference
5648count was calculated incorrectly. Regression was introduced in the commit
5649"Support to add Package wrappers".
5650
5651Fixed a couple possible memory leaks in the AML parser, in the error
5652recovery
5653path. Jesper Juhl, Lin Ming.
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 version of the code includes the debug output trace mechanism and
5658has a
5659much larger code and data size.
5660
5661  Previous Release:
5662    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5663    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5664  Current Release:
5665    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5666    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5667
5668
56692) iASL Compiler/Disassembler and Tools:
5670
5671iASL: Fixed a problem with the resource descriptor support where the
5672length
5673of the StartDependentFn and StartDependentFnNoPrio descriptors were not
5674included in cumulative descriptor offset, resulting in incorrect values
5675for
5676resource tags within resource descriptors appearing after a
5677StartDependent*
5678descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5679
5680iASL and Preprocessor: Implemented full support for the #line directive
5681to
5682correctly track original source file line numbers through the .i
5683preprocessor
5684output file - for error and warning messages.
5685
5686iASL: Expand the allowable byte constants for address space IDs.
5687Previously,
5688the allowable range was 0x80-0xFF (user-defined spaces), now the range is
56890x0A-0xFF to allow for custom and new IDs without changing the compiler.
5690
5691iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5692
5693iASL: Add option to completely disable the preprocessor (-Pn).
5694
5695iASL: Now emit all error/warning messages to standard error (stderr) by
5696default (instead of the previous stdout).
5697
5698ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
5699Update
5700for resource descriptor offset fix above. Update/cleanup error output
5701routines. Enable and send iASL errors/warnings to an error logfile
5702(error.txt). Send all other iASL output to a logfile (compiler.txt).
5703Fixed
5704several extraneous "unrecognized operator" messages.
5705
5706----------------------------------------
570720 March 2012. Summary of changes for version 20120320:
5708
5709
57101) ACPICA Core Subsystem:
5711
5712Enhanced the sleep/wake interfaces to optionally execute the _GTS method
5713(Going To Sleep) and the _BFS method (Back From Sleep). Windows
5714apparently
5715does not execute these methods, and therefore these methods are often
5716untested. It has been seen on some systems where the execution of these
5717methods causes errors and also prevents the machine from entering S5. It
5718is
5719therefore suggested that host operating systems do not execute these
5720methods
5721by default. In the future, perhaps these methods can be optionally
5722executed
5723based on the age of the system and/or what is the newest version of
5724Windows
5725that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
5726and
5727AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
5728Ming.
5729
5730Fixed a problem where the length of the local/common FADT was set too
5731early.
5732The local FADT table length cannot be set to the common length until the
5733original length has been examined. There is code that checks the table
5734length
5735and sets various fields appropriately. This can affect older machines
5736with
5737early FADT versions. For example, this can cause inadvertent writes to
5738the
5739CST_CNT register. Julian Anastasov.
5740
5741Fixed a mapping issue related to a physical table override. Use the
5742deferred
5743mapping mechanism for tables loaded via the physical override OSL
5744interface.
5745This allows for early mapping before the virtual memory manager is
5746available.
5747Thomas Renninger, Bob Moore.
5748
5749Enhanced the automatic return-object repair code: Repair a common problem
5750with
5751predefined methods that are defined to return a variable-length Package
5752of
5753sub-objects. If there is only one sub-object, some BIOS ASL code
5754mistakenly
5755simply returns the single object instead of a Package with one sub-
5756object.
5757This new support will repair this error by wrapping a Package object
5758around
5759the original object, creating the correct and expected Package with one
5760sub-
5761object. Names that can be repaired in this manner include: _ALR, _CSD,
5762_HPX,
5763_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
5764939.
5765
5766Changed the exception code returned for invalid ACPI paths passed as
5767parameters to external interfaces such as AcpiEvaluateObject. Was
5768AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
5769
5770Example Code and Data Size: These are the sizes for the OS-independent
5771acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5772debug
5773version of the code includes the debug output trace mechanism and has a
5774much
5775larger code and data size.
5776
5777  Previous Release:
5778    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5779    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5780  Current Release:
5781    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5782    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5783
5784
57852) iASL Compiler/Disassembler and Tools:
5786
5787iASL: Added the infrastructure and initial implementation of a integrated
5788C-
5789like preprocessor. This will simplify BIOS development process by
5790eliminating
5791the need for a separate preprocessing step during builds. On Windows, it
5792also
5793eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
5794features including full #define() macro support are still under
5795development.
5796These preprocessor directives are supported:
5797    #define
5798    #elif
5799    #else
5800    #endif
5801    #error
5802    #if
5803    #ifdef
5804    #ifndef
5805    #include
5806    #pragma message
5807    #undef
5808    #warning
5809In addition, these new command line options are supported:
5810    -D <symbol> Define symbol for preprocessor use
5811    -li         Create preprocessed output file (*.i)
5812    -P          Preprocess only and create preprocessor output file (*.i)
5813
5814Table Compiler: Fixed a problem where the equals operator within an
5815expression
5816did not work properly.
5817
5818Updated iASL to use the current versions of Bison/Flex. Updated the
5819Windows
5820project file to invoke these tools from the standard location. ACPICA BZ
5821904.
5822Versions supported:
5823    Flex for Windows:  V2.5.4
5824    Bison for Windows: V2.4.1
5825
5826----------------------------------------
582715 February 2012. Summary of changes for version 20120215:
5828
5829
58301) ACPICA Core Subsystem:
5831
5832There have been some major changes to the sleep/wake support code, as
5833described below (a - e).
5834
5835a) The AcpiLeaveSleepState has been split into two interfaces, similar to
5836AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
5837AcpiLeaveSleepStatePrep. This allows the host to perform actions between
5838the
5839time the _BFS method is called and the _WAK method is called. NOTE: all
5840hosts
5841must update their wake/resume code or else sleep/wake will not work
5842properly.
5843Rafael Wysocki.
5844
5845b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
5846_WAK
5847method. Some machines require that the GPEs are enabled before the _WAK
5848method
5849is executed. Thomas Renninger.
5850
5851c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
5852bit.
5853Some BIOS code assumes that WAK_STS will be cleared on resume and use it
5854to
5855determine whether the system is rebooting or resuming. Matthew Garrett.
5856
5857d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
5858Sleep) to
5859match the ACPI specification requirement. Rafael Wysocki.
5860
5861e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
5862registers within the V5 FADT. This support adds two new files:
5863hardware/hwesleep.c implements the support for the new registers. Moved
5864all
5865sleep/wake external interfaces to hardware/hwxfsleep.c.
5866
5867
5868Added a new OSL interface for ACPI table overrides,
5869AcpiOsPhysicalTableOverride. This interface allows the host to override a
5870table via a physical address, instead of the logical address required by
5871AcpiOsTableOverride. This simplifies the host implementation. Initial
5872implementation by Thomas Renninger. The ACPICA implementation creates a
5873single
5874shared function for table overrides that attempts both a logical and a
5875physical override.
5876
5877Expanded the OSL memory read/write interfaces to 64-bit data
5878(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
5879transfer support for GAS register structures passed to AcpiRead and
5880AcpiWrite.
5881
5882Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
5883custom
5884build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
5885model.
5886See the ACPICA reference for details. ACPICA BZ 942. This option removes
5887about
588810% of the code and 5% of the static data, and the following hardware
5889ACPI
5890features become unavailable:
5891    PM Event and Control registers
5892    SCI interrupt (and handler)
5893    Fixed Events
5894    General Purpose Events (GPEs)
5895    Global Lock
5896    ACPI PM timer
5897    FACS table (Waking vectors and Global Lock)
5898
5899Updated the unix tarball directory structure to match the ACPICA git
5900source
5901tree. This ensures that the generic unix makefiles work properly (in
5902generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
5903867.
5904
5905Updated the return value of the _REV predefined method to integer value 5
5906to
5907reflect ACPI 5.0 support.
5908
5909Moved the external ACPI PM timer interface prototypes to the public
5910acpixf.h
5911file where they belong.
5912
5913Example Code and Data Size: These are the sizes for the OS-independent
5914acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5915debug
5916version of the code includes the debug output trace mechanism and has a
5917much
5918larger code and data size.
5919
5920  Previous Release:
5921    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
5922    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
5923  Current Release:
5924    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5925    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5926
5927
59282) iASL Compiler/Disassembler and Tools:
5929
5930Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
5931descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
5932incorrectly displayed.
5933
5934AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
5935specification.
5936
5937----------------------------------------
593811 January 2012. Summary of changes for version 20120111:
5939
5940
59411) ACPICA Core Subsystem:
5942
5943Implemented a new mechanism to allow host device drivers to check for
5944address
5945range conflicts with ACPI Operation Regions. Both SystemMemory and
5946SystemIO
5947address spaces are supported. A new external interface,
5948AcpiCheckAddressRange,
5949allows drivers to check an address range against the ACPI namespace. See
5950the
5951ACPICA reference for additional details. Adds one new file,
5952utilities/utaddress.c. Lin Ming, Bob Moore.
5953
5954Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
5955Control
5956and
5957Status registers, update the ACPI 5.0 flags, and update internal data
5958structures to handle an FADT larger than 256 bytes. The size of the ACPI
59595.0
5960FADT is 268 bytes.
5961
5962Updated all ACPICA copyrights and signons to 2012. Added the 2012
5963copyright to
5964all module headers and signons, including the standard Linux header. This
5965affects virtually every file in the ACPICA core subsystem, iASL compiler,
5966and
5967all ACPICA utilities.
5968
5969Example Code and Data Size: These are the sizes for the OS-independent
5970acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5971debug
5972version of the code includes the debug output trace mechanism and has a
5973much
5974larger code and data size.
5975
5976  Previous Release:
5977    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
5978    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
5979  Current Release:
5980    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
5981    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
5982
5983
59842) iASL Compiler/Disassembler and Tools:
5985
5986Disassembler: fixed a problem with the automatic resource tag generation
5987support. Fixes a problem where the resource tags are inadvertently not
5988constructed if the table being disassembled contains external references
5989to
5990control methods. Moved the actual construction of the tags to after the
5991final
5992namespace is constructed (after 2nd parse is invoked due to external
5993control
5994method references.) ACPICA BZ 941.
5995
5996Table Compiler: Make all "generic" operators caseless. These are the
5997operators
5998like UINT8, String, etc. Making these caseless improves ease-of-use.
5999ACPICA BZ
6000934.
6001
6002----------------------------------------
600323 November 2011. Summary of changes for version 20111123:
6004
60050) ACPI 5.0 Support:
6006
6007This release contains full support for the ACPI 5.0 specification, as
6008summarized below.
6009
6010Reduced Hardware Support:
6011-------------------------
6012
6013This support allows for ACPI systems without the usual ACPI hardware.
6014This
6015support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6016will
6017not attempt to initialize or use any of the usual ACPI hardware. Note,
6018when
6019this flag is set, all of the following ACPI hardware is assumed to be not
6020present and is not initialized or accessed:
6021
6022    General Purpose Events (GPEs)
6023    Fixed Events (PM1a/PM1b and PM Control)
6024    Power Management Timer and Console Buttons (power/sleep)
6025    Real-time Clock Alarm
6026    Global Lock
6027    System Control Interrupt (SCI)
6028    The FACS is assumed to be non-existent
6029
6030ACPI Tables:
6031------------
6032
6033All new tables and updates to existing tables are fully supported in the
6034ACPICA headers (for use by device drivers), the disassembler, and the
6035iASL
6036Data Table Compiler. ACPI 5.0 defines these new tables:
6037
6038    BGRT        /* Boot Graphics Resource Table */
6039    DRTM        /* Dynamic Root of Trust for Measurement table */
6040    FPDT        /* Firmware Performance Data Table */
6041    GTDT        /* Generic Timer Description Table */
6042    MPST        /* Memory Power State Table */
6043    PCCT        /* Platform Communications Channel Table */
6044    PMTT        /* Platform Memory Topology Table */
6045    RASF        /* RAS Feature table */
6046
6047Operation Regions/SpaceIDs:
6048---------------------------
6049
6050All new operation regions are fully supported by the iASL compiler, the
6051disassembler, and the ACPICA runtime code (for dispatch to region
6052handlers.)
6053The new operation region Space IDs are:
6054
6055    GeneralPurposeIo
6056    GenericSerialBus
6057
6058Resource Descriptors:
6059---------------------
6060
6061All new ASL resource descriptors are fully supported by the iASL
6062compiler,
6063the
6064ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6065(including
6066all new predefined resource tags). New descriptors are:
6067
6068    FixedDma
6069    GpioIo
6070    GpioInt
6071    I2cSerialBus
6072    SpiSerialBus
6073    UartSerialBus
6074
6075ASL/AML Operators, New and Modified:
6076------------------------------------
6077
6078One new operator is added, the Connection operator, which is used to
6079associate
6080a GeneralPurposeIo or GenericSerialBus resource descriptor with
6081individual
6082field objects within an operation region. Several new protocols are
6083associated
6084with the AccessAs operator. All are fully supported by the iASL compiler,
6085disassembler, and runtime ACPICA AML interpreter:
6086
6087    Connection                      // Declare Field Connection
6088attributes
6089    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6090    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6091Protocol
6092    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6093    RawDataBuffer                       // Data type for Vendor Data
6094fields
6095
6096Predefined ASL/AML Objects:
6097---------------------------
6098
6099All new predefined objects/control-methods are supported by the iASL
6100compiler
6101and the ACPICA runtime validation/repair (arguments and return values.)
6102New
6103predefined names include the following:
6104
6105Standard Predefined Names (Objects or Control Methods):
6106    _AEI, _CLS, _CPC, _CWS, _DEP,
6107    _DLM, _EVT, _GCP, _CRT, _GWS,
6108    _HRV, _PRE, _PSE, _SRT, _SUB.
6109
6110Resource Tags (Names used to access individual fields within resource
6111descriptors):
6112    _DBT, _DPL, _DRS, _END, _FLC,
6113    _IOR, _LIN, _MOD, _PAR, _PHA,
6114    _PIN, _PPI, _POL, _RXL, _SLV,
6115    _SPE, _STB, _TXL, _VEN.
6116
6117ACPICA External Interfaces:
6118---------------------------
6119
6120Several new interfaces have been defined for use by ACPI-related device
6121drivers and other host OS services:
6122
6123AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6124to
6125acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6126provided by the BIOS. They are intended to be used in conjunction with
6127the
6128ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6129mutual exclusion with the AML code/interpreter.
6130
6131AcpiGetEventResources: Returns the (formatted) resource descriptors as
6132defined
6133by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6134provides
6135resource descriptors associated with hardware-reduced platform events,
6136similar
6137to the AcpiGetCurrentResources interface.
6138
6139Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6140operation regions, information about the Connection() object and any
6141optional
6142length information is passed to the region handler within the Context
6143parameter.
6144
6145AcpiBufferToResource: This interface converts a raw AML buffer containing
6146a
6147resource template or resource descriptor to the ACPI_RESOURCE internal
6148format
6149suitable for use by device drivers. Can be used by an operation region
6150handler
6151to convert the Connection() buffer object into a ACPI_RESOURCE.
6152
6153Miscellaneous/Tools/TestSuites:
6154-------------------------------
6155
6156Support for extended _HID names (Four alpha characters instead of three).
6157Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6158Support for ACPI 5.0 features in the ASLTS test suite.
6159Fully updated documentation (ACPICA and iASL reference documents.)
6160
6161ACPI Table Definition Language:
6162-------------------------------
6163
6164Support for this language was implemented and released as a subsystem of
6165the
6166iASL compiler in 2010. (See the iASL compiler User Guide.)
6167
6168
6169Non-ACPI 5.0 changes for this release:
6170--------------------------------------
6171
61721) ACPICA Core Subsystem:
6173
6174Fix a problem with operation region declarations where a failure can
6175occur
6176if
6177the region name and an argument that evaluates to an object (such as the
6178region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6179937.
6180
6181Do not abort an ACPI table load if an invalid space ID is found within.
6182This
6183will be caught later if the offending method is executed. ACPICA BZ 925.
6184
6185Fixed an issue with the FFixedHW space ID where the ID was not always
6186recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6187
6188Fixed a problem with the 32-bit generation of the unix-specific OSL
6189(osunixxf.c). Lin Ming, ACPICA BZ 936.
6190
6191Several changes made to enable generation with the GCC 4.6 compiler.
6192ACPICA BZ
6193935.
6194
6195New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6196Index/Bank
6197field registers out-of-range.
6198
61992) iASL Compiler/Disassembler and Tools:
6200
6201iASL: Implemented the __PATH__ operator, which returns the full pathname
6202of
6203the current source file.
6204
6205AcpiHelp: Automatically display expanded keyword information for all ASL
6206operators.
6207
6208Debugger: Add "Template" command to disassemble/dump resource template
6209buffers.
6210
6211Added a new master script to generate and execute the ASLTS test suite.
6212Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6213
6214iASL: Fix problem with listing generation during processing of the
6215Switch()
6216operator where AML listing was disabled until the entire Switch block was
6217completed.
6218
6219iASL: Improve support for semicolon statement terminators. Fix "invalid
6220character" message for some cases when the semicolon is used. Semicolons
6221are
6222now allowed after every <Term> grammar element. ACPICA BZ 927.
6223
6224iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6225923.
6226
6227Disassembler: Fix problem with disassembly of the DataTableRegion
6228operator
6229where an inadvertent "Unhandled deferred opcode" message could be
6230generated.
6231
62323) Example Code and Data Size
6233
6234These are the sizes for the OS-independent acpica.lib produced by the
6235Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6236includes the debug output trace mechanism and has a much larger code and
6237data
6238size.
6239
6240  Previous Release:
6241    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6242    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6243  Current Release:
6244    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6245    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6246
6247----------------------------------------
624822 September 2011. Summary of changes for version 20110922:
6249
62500) ACPI 5.0 News:
6251
6252Support for ACPI 5.0 in ACPICA has been underway for several months and
6253will
6254be released at the same time that ACPI 5.0 is officially released.
6255
6256The ACPI 5.0 specification is on track for release in the next few
6257months.
6258
62591) ACPICA Core Subsystem:
6260
6261Fixed a problem where the maximum sleep time for the Sleep() operator was
6262intended to be limited to two seconds, but was inadvertently limited to
626320
6264seconds instead.
6265
6266Linux and Unix makefiles: Added header file dependencies to ensure
6267correct
6268generation of ACPICA core code and utilities. Also simplified the
6269makefiles
6270considerably through the use of the vpath variable to specify search
6271paths.
6272ACPICA BZ 924.
6273
62742) iASL Compiler/Disassembler and Tools:
6275
6276iASL: Implemented support to check the access length for all fields
6277created to
6278access named Resource Descriptor fields. For example, if a resource field
6279is
6280defined to be two bits, a warning is issued if a CreateXxxxField() is
6281used
6282with an incorrect bit length. This is implemented for all current
6283resource
6284descriptor names. ACPICA BZ 930.
6285
6286Disassembler: Fixed a byte ordering problem with the output of 24-bit and
628756-
6288bit integers.
6289
6290iASL: Fixed a couple of issues associated with variable-length package
6291objects. 1) properly handle constants like One, Ones, Zero -- do not make
6292a
6293VAR_PACKAGE when these are used as a package length. 2) Allow the
6294VAR_PACKAGE
6295opcode (in addition to PACKAGE) when validating object types for
6296predefined
6297names.
6298
6299iASL: Emit statistics for all output files (instead of just the ASL input
6300and
6301AML output). Includes listings, hex files, etc.
6302
6303iASL: Added -G option to the table compiler to allow the compilation of
6304custom
6305ACPI tables. The only part of a table that is required is the standard
630636-
6307byte
6308ACPI header.
6309
6310AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6311headers),
6312which also adds correct 64-bit support. Also, now all output filenames
6313are
6314completely lower case.
6315
6316AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6317loading table files. A warning is issued for any such tables. The only
6318exception is an FADT. This also fixes a possible fault when attempting to
6319load
6320non-AML tables. ACPICA BZ 932.
6321
6322AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6323a
6324missing table terminator could cause a fault when using the -p option.
6325
6326AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6327statistics.
6328
63293) Example Code and Data Size
6330
6331These are the sizes for the OS-independent acpica.lib produced by the
6332Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6333includes the debug output trace mechanism and has a much larger code and
6334data
6335size.
6336
6337  Previous Release (VC 9.0):
6338    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6339    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6340  Current Release (VC 9.0):
6341    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6342    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6343
6344
6345----------------------------------------
634623 June 2011. Summary of changes for version 20110623:
6347
63481) ACPI CA Core Subsystem:
6349
6350Updated the predefined name repair mechanism to not attempt repair of a
6351_TSS
6352return object if a _PSS object is present. We can only sort the _TSS
6353return
6354package if there is no _PSS within the same scope. This is because if
6355_PSS
6356is
6357present, the ACPI specification dictates that the _TSS Power Dissipation
6358field
6359is to be ignored, and therefore some BIOSs leave garbage values in the
6360_TSS
6361Power field(s). In this case, it is best to just return the _TSS package
6362as-
6363is. Reported by, and fixed with assistance from Fenghua Yu.
6364
6365Added an option to globally disable the control method return value
6366validation
6367and repair. This runtime option can be used to disable return value
6368repair
6369if
6370this is causing a problem on a particular machine. Also added an option
6371to
6372AcpiExec (-dr) to set this disable flag.
6373
6374All makefiles and project files: Major changes to improve generation of
6375ACPICA
6376tools. ACPICA BZ 912:
6377    Reduce default optimization levels to improve compatibility
6378    For Linux, add strict-aliasing=0 for gcc 4
6379    Cleanup and simplify use of command line defines
6380    Cleanup multithread library support
6381    Improve usage messages
6382
6383Linux-specific header: update handling of THREAD_ID and pthread. For the
638432-
6385bit case, improve casting to eliminate possible warnings, especially with
6386the
6387acpica tools.
6388
6389Example Code and Data Size: These are the sizes for the OS-independent
6390acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6391debug
6392version of the code includes the debug output trace mechanism and has a
6393much
6394larger code and data size.
6395
6396  Previous Release (VC 9.0):
6397    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6398    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6399  Current Release (VC 9.0):
6400    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6401    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6402
64032) iASL Compiler/Disassembler and Tools:
6404
6405With this release, a new utility named "acpihelp" has been added to the
6406ACPICA
6407package. This utility summarizes the ACPI specification chapters for the
6408ASL
6409and AML languages. It generates under Linux/Unix as well as Windows, and
6410provides the following functionality:
6411    Find/display ASL operator(s) -- with description and syntax.
6412    Find/display ASL keyword(s) -- with exact spelling and descriptions.
6413    Find/display ACPI predefined name(s) -- with description, number
6414        of arguments, and the return value data type.
6415    Find/display AML opcode name(s) -- with opcode, arguments, and
6416grammar.
6417    Decode/display AML opcode -- with opcode name, arguments, and
6418grammar.
6419
6420Service Layers: Make multi-thread support configurable. Conditionally
6421compile
6422the multi-thread support so that threading libraries will not be linked
6423if
6424not
6425necessary. The only tool that requires multi-thread support is AcpiExec.
6426
6427iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6428of
6429Bison appear to want the interface to yyerror to be a const char * (or at
6430least this is a problem when generating iASL on some systems.) ACPICA BZ
6431923
6432Pierre Lejeune.
6433
6434Tools: Fix for systems where O_BINARY is not defined. Only used for
6435Windows
6436versions of the tools.
6437
6438----------------------------------------
643927 May 2011. Summary of changes for version 20110527:
6440
64411) ACPI CA Core Subsystem:
6442
6443ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6444table
6445signature. Now, only allow SSDT, OEMx, and a null signature. History:
6446    1) Originally, we checked the table signature for "SSDT" or "PSDT".
6447       (PSDT is now obsolete.)
6448    2) We added support for OEMx tables, signature "OEM" plus a fourth
6449       "don't care" character.
6450    3) Valid tables were encountered with a null signature, so we just
6451       gave up on validating the signature, (05/2008).
6452    4) We encountered non-AML tables such as the MADT, which caused
6453       interpreter errors and kernel faults. So now, we once again allow
6454       only SSDT, OEMx, and now, also a null signature. (05/2011).
6455
6456Added the missing _TDL predefined name to the global name list in order
6457to
6458enable validation. Affects both the core ACPICA code and the iASL
6459compiler.
6460
6461Example Code and Data Size: These are the sizes for the OS-independent
6462acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6463debug
6464version of the code includes the debug output trace mechanism and has a
6465much
6466larger code and data size.
6467
6468  Previous Release (VC 9.0):
6469    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6470    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6471  Current Release (VC 9.0):
6472    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6473    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6474
64752) iASL Compiler/Disassembler and Tools:
6476
6477Debugger/AcpiExec: Implemented support for "complex" method arguments on
6478the
6479debugger command line. This adds support beyond simple integers --
6480including
6481Strings, Buffers, and Packages. Includes support for nested packages.
6482Increased the default command line buffer size to accommodate these
6483arguments.
6484See the ACPICA reference for details and syntax. ACPICA BZ 917.
6485
6486Debugger/AcpiExec: Implemented support for "default" method arguments for
6487the
6488Execute/Debug command. Now, the debugger will always invoke a control
6489method
6490with the required number of arguments -- even if the command line
6491specifies
6492none or insufficient arguments. It uses default integer values for any
6493missing
6494arguments. Also fixes a bug where only six method arguments maximum were
6495supported instead of the required seven.
6496
6497Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6498and
6499also return status in order to prevent buffer overruns. See the ACPICA
6500reference for details and syntax. ACPICA BZ 921
6501
6502iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6503makefiles to simplify support for the two different but similar parser
6504generators, bison and yacc.
6505
6506Updated the generic unix makefile for gcc 4. The default gcc version is
6507now
6508expected to be 4 or greater, since options specific to gcc 4 are used.
6509
6510----------------------------------------
651113 April 2011. Summary of changes for version 20110413:
6512
65131) ACPI CA Core Subsystem:
6514
6515Implemented support to execute a so-called "orphan" _REG method under the
6516EC
6517device. This change will force the execution of a _REG method underneath
6518the
6519EC
6520device even if there is no corresponding operation region of type
6521EmbeddedControl. Fixes a problem seen on some machines and apparently is
6522compatible with Windows behavior. ACPICA BZ 875.
6523
6524Added more predefined methods that are eligible for automatic NULL
6525package
6526element removal. This change adds another group of predefined names to
6527the
6528list
6529of names that can be repaired by having NULL package elements dynamically
6530removed. This group are those methods that return a single variable-
6531length
6532package containing simple data types such as integers, buffers, strings.
6533This
6534includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6535_PSL,
6536_Sx,
6537and _TZD. ACPICA BZ 914.
6538
6539Split and segregated all internal global lock functions to a new file,
6540evglock.c.
6541
6542Updated internal address SpaceID for DataTable regions. Moved this
6543internal
6544space
6545id in preparation for ACPI 5.0 changes that will include some new space
6546IDs.
6547This
6548change should not affect user/host code.
6549
6550Example Code and Data Size: These are the sizes for the OS-independent
6551acpica.lib
6552produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6553version of
6554the code includes the debug output trace mechanism and has a much larger
6555code
6556and
6557data size.
6558
6559  Previous Release (VC 9.0):
6560    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6561    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6562  Current Release (VC 9.0):
6563    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6564    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6565
65662) iASL Compiler/Disassembler and Tools:
6567
6568iASL/DTC: Major update for new grammar features. Allow generic data types
6569in
6570custom ACPI tables. Field names are now optional. Any line can be split
6571to
6572multiple lines using the continuation char (\). Large buffers now use
6573line-
6574continuation character(s) and no colon on the continuation lines. See the
6575grammar
6576update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
6577Moore.
6578
6579iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
6580statements.
6581Since the parser stuffs a "zero" as the return value for these statements
6582(due
6583to
6584the underlying AML grammar), they were seen as "return with value" by the
6585iASL
6586semantic checking. They are now seen correctly as "null" return
6587statements.
6588
6589iASL: Check if a_REG declaration has a corresponding Operation Region.
6590Adds a
6591check for each _REG to ensure that there is in fact a corresponding
6592operation
6593region declaration in the same scope. If not, the _REG method is not very
6594useful
6595since it probably won't be executed. ACPICA BZ 915.
6596
6597iASL/DTC: Finish support for expression evaluation. Added a new
6598expression
6599parser
6600that implements c-style operator precedence and parenthesization. ACPICA
6601bugzilla
6602908.
6603
6604Disassembler/DTC: Remove support for () and <> style comments in data
6605tables.
6606Now
6607that DTC has full expression support, we don't want to have comment
6608strings
6609that
6610start with a parentheses or a less-than symbol. Now, only the standard /*
6611and
6612//
6613comments are supported, as well as the bracket [] comments.
6614
6615AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
6616"unusual"
6617headers in the acpidump file. Update the header validation to support
6618these
6619tables. Problem introduced in previous AcpiXtract version in the change
6620to
6621support "wrong checksum" error messages emitted by acpidump utility.
6622
6623iASL: Add a * option to generate all template files (as a synonym for
6624ALL)
6625as
6626in
6627"iasl -T *" or "iasl -T ALL".
6628
6629iASL/DTC: Do not abort compiler on fatal errors. We do not want to
6630completely
6631abort the compiler on "fatal" errors, simply should abort the current
6632compile.
6633This allows multiple compiles with a single (possibly wildcard) compiler
6634invocation.
6635
6636----------------------------------------
663716 March 2011. Summary of changes for version 20110316:
6638
66391) ACPI CA Core Subsystem:
6640
6641Fixed a problem caused by a _PRW method appearing at the namespace root
6642scope
6643during the setup of wake GPEs. A fault could occur if a _PRW directly
6644under
6645the
6646root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
6647
6648Implemented support for "spurious" Global Lock interrupts. On some
6649systems, a
6650global lock interrupt can occur without the pending flag being set. Upon
6651a
6652GL
6653interrupt, we now ensure that a thread is actually waiting for the lock
6654before
6655signaling GL availability. Rafael Wysocki, Bob Moore.
6656
6657Example Code and Data Size: These are the sizes for the OS-independent
6658acpica.lib
6659produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6660version of
6661the code includes the debug output trace mechanism and has a much larger
6662code
6663and
6664data size.
6665
6666  Previous Release (VC 9.0):
6667    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6668    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6669  Current Release (VC 9.0):
6670    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6671    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6672
66732) iASL Compiler/Disassembler and Tools:
6674
6675Implemented full support for the "SLIC" ACPI table. Includes support in
6676the
6677header files, disassembler, table compiler, and template generator. Bob
6678Moore,
6679Lin Ming.
6680
6681AcpiXtract: Correctly handle embedded comments and messages from
6682AcpiDump.
6683Apparently some or all versions of acpidump will occasionally emit a
6684comment
6685like
6686"Wrong checksum", etc., into the dump file. This was causing problems for
6687AcpiXtract. ACPICA BZ 905.
6688
6689iASL: Fix the Linux makefile by removing an inadvertent double file
6690inclusion.
6691ACPICA BZ 913.
6692
6693AcpiExec: Update installation of operation region handlers. Install one
6694handler
6695for a user-defined address space. This is used by the ASL test suite
6696(ASLTS).
6697
6698----------------------------------------
669911 February 2011. Summary of changes for version 20110211:
6700
67011) ACPI CA Core Subsystem:
6702
6703Added a mechanism to defer _REG methods for some early-installed
6704handlers.
6705Most user handlers should be installed before call to
6706AcpiEnableSubsystem.
6707However, Event handlers and region handlers should be installed after
6708AcpiInitializeObjects. Override handlers for the "default" regions should
6709be
6710installed early, however. This change executes all _REG methods for the
6711default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
6712chicken/egg issues between them. ACPICA BZ 848.
6713
6714Implemented an optimization for GPE detection. This optimization will
6715simply
6716ignore GPE registers that contain no enabled GPEs -- there is no need to
6717read the register since this information is available internally. This
6718becomes more important on machines with a large GPE space. ACPICA
6719bugzilla
6720884. Lin Ming. Suggestion from Joe Liu.
6721
6722Removed all use of the highly unreliable FADT revision field. The
6723revision
6724number in the FADT has been found to be completely unreliable and cannot
6725be
6726trusted. Only the actual table length can be used to infer the version.
6727This
6728change updates the ACPICA core and the disassembler so that both no
6729longer
6730even look at the FADT version and instead depend solely upon the FADT
6731length.
6732
6733Fix an unresolved name issue for the no-debug and no-error-message source
6734generation cases. The _AcpiModuleName was left undefined in these cases,
6735but
6736it is actually needed as a parameter to some interfaces. Define
6737_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
6738
6739Split several large files (makefiles and project files updated)
6740  utglobal.c   -> utdecode.c
6741  dbcomds.c    -> dbmethod.c dbnames.c
6742  dsopcode.c   -> dsargs.c dscontrol.c
6743  dsload.c     -> dsload2.c
6744  aslanalyze.c -> aslbtypes.c aslwalks.c
6745
6746Example Code and Data Size: These are the sizes for the OS-independent
6747acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6748debug version of the code includes the debug output trace mechanism and
6749has
6750a much larger code and data size.
6751
6752  Previous Release (VC 9.0):
6753    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6754    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6755  Current Release (VC 9.0):
6756    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6757    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6758
67592) iASL Compiler/Disassembler and Tools:
6760
6761iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
6762These are useful C-style macros with the standard definitions. ACPICA
6763bugzilla 898.
6764
6765iASL/DTC: Added support for integer expressions and labels. Support for
6766full
6767expressions for all integer fields in all ACPI tables. Support for labels
6768in
6769"generic" portions of tables such as UEFI. See the iASL reference manual.
6770
6771Debugger: Added a command to display the status of global handlers. The
6772"handlers" command will display op region, fixed event, and miscellaneous
6773global handlers. installation status -- and for op regions, whether
6774default
6775or user-installed handler will be used.
6776
6777iASL: Warn if reserved method incorrectly returns a value. Many
6778predefined
6779names are defined such that they do not return a value. If implemented as
6780a
6781method, issue a warning if such a name explicitly returns a value. ACPICA
6782Bugzilla 855.
6783
6784iASL: Added detection of GPE method name conflicts. Detects a conflict
6785where
6786there are two GPE methods of the form _Lxy and _Exy in the same scope.
6787(For
6788example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6789
6790iASL/DTC: Fixed a couple input scanner issues with comments and line
6791numbers. Comment remover could get confused and miss a comment ending.
6792Fixed
6793a problem with line counter maintenance.
6794
6795iASL/DTC: Reduced the severity of some errors from fatal to error. There
6796is
6797no need to abort on simple errors within a field definition.
6798
6799Debugger: Simplified the output of the help command. All help output now
6800in
6801a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6802
6803----------------------------------------
680412 January 2011. Summary of changes for version 20110112:
6805
68061) ACPI CA Core Subsystem:
6807
6808Fixed a race condition between method execution and namespace walks that
6809can
6810possibly cause a fault. The problem was apparently introduced in version
681120100528 as a result of a performance optimization that reduces the
6812number
6813of
6814namespace walks upon method exit by using the delete_namespace_subtree
6815function instead of the delete_namespace_by_owner function used
6816previously.
6817Bug is a missing namespace lock in the delete_namespace_subtree function.
6818dana.myers@oracle.com
6819
6820Fixed several issues and a possible fault with the automatic "serialized"
6821method support. History: This support changes a method to "serialized" on
6822the
6823fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6824possibility that it cannot handle reentrancy. This fix repairs a couple
6825of
6826issues seen in the field, especially on machines with many cores:
6827
6828    1) Delete method children only upon the exit of the last thread,
6829       so as to not delete objects out from under other running threads
6830      (and possibly causing a fault.)
6831    2) Set the "serialized" bit for the method only upon the exit of the
6832       Last thread, so as to not cause deadlock when running threads
6833       attempt to exit.
6834    3) Cleanup the use of the AML "MethodFlags" and internal method flags
6835       so that there is no longer any confusion between the two.
6836
6837    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
6838
6839Debugger: Now lock the namespace for duration of a namespace dump.
6840Prevents
6841issues if the namespace is changing dynamically underneath the debugger.
6842Especially affects temporary namespace nodes, since the debugger displays
6843these also.
6844
6845Updated the ordering of include files. The ACPICA headers should appear
6846before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
6847set
6848any necessary compiler-specific defines, etc. Affects the ACPI-related
6849tools
6850and utilities.
6851
6852Updated all ACPICA copyrights and signons to 2011. Added the 2011
6853copyright
6854to all module headers and signons, including the Linux header. This
6855affects
6856virtually every file in the ACPICA core subsystem, iASL compiler, and all
6857utilities.
6858
6859Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
6860project files for VC++ 6.0 are now obsolete. New project files can be
6861found
6862under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
6863details.
6864
6865Example Code and Data Size: These are the sizes for the OS-independent
6866acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6867debug version of the code includes the debug output trace mechanism and
6868has a
6869much larger code and data size.
6870
6871  Previous Release (VC 6.0):
6872    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
6873    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
6874  Current Release (VC 9.0):
6875    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6876    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6877
68782) iASL Compiler/Disassembler and Tools:
6879
6880iASL: Added generic data types to the Data Table compiler. Add "generic"
6881data
6882types such as UINT32, String, Unicode, etc., to simplify the generation
6883of
6884platform-defined tables such as UEFI. Lin Ming.
6885
6886iASL: Added listing support for the Data Table Compiler. Adds listing
6887support
6888(-l) to display actual binary output for each line of input code.
6889
6890----------------------------------------
689109 December 2010. Summary of changes for version 20101209:
6892
68931) ACPI CA Core Subsystem:
6894
6895Completed the major overhaul of the GPE support code that was begun in
6896July
68972010. Major features include: removal of _PRW execution in ACPICA (host
6898executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
6899changes to existing interfaces, simplification of GPE handler operation,
6900and
6901a handful of new interfaces:
6902
6903    AcpiUpdateAllGpes
6904    AcpiFinishGpe
6905    AcpiSetupGpeForWake
6906    AcpiSetGpeWakeMask
6907    One new file, evxfgpe.c to consolidate all external GPE interfaces.
6908
6909See the ACPICA Programmer Reference for full details and programming
6910information. See the new section 4.4 "General Purpose Event (GPE)
6911Support"
6912for a full overview, and section 8.7 "ACPI General Purpose Event
6913Management"
6914for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
6915Ming,
6916Bob Moore, Rafael Wysocki.
6917
6918Implemented a new GPE feature for Windows compatibility, the "Implicit
6919Wake
6920GPE Notify". This feature will automatically issue a Notify(2) on a
6921device
6922when a Wake GPE is received if there is no corresponding GPE method or
6923handler. ACPICA BZ 870.
6924
6925Fixed a problem with the Scope() operator during table parse and load
6926phase.
6927During load phase (table load or method execution), the scope operator
6928should
6929not enter the target into the namespace. Instead, it should open a new
6930scope
6931at the target location. Linux BZ 19462, ACPICA BZ 882.
6932
6933Example Code and Data Size: These are the sizes for the OS-independent
6934acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6935debug version of the code includes the debug output trace mechanism and
6936has a
6937much larger code and data size.
6938
6939  Previous Release:
6940    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
6941    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
6942  Current Release:
6943    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6944    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6945
69462) iASL Compiler/Disassembler and Tools:
6947
6948iASL: Relax the alphanumeric restriction on _CID strings. These strings
6949are
6950"bus-specific" per the ACPI specification, and therefore any characters
6951are
6952acceptable. The only checks that can be performed are for a null string
6953and
6954perhaps for a leading asterisk. ACPICA BZ 886.
6955
6956iASL: Fixed a problem where a syntax error that caused a premature EOF
6957condition on the source file emitted a very confusing error message. The
6958premature EOF is now detected correctly. ACPICA BZ 891.
6959
6960Disassembler: Decode the AccessSize within a Generic Address Structure
6961(byte
6962access, word access, etc.) Note, this field does not allow arbitrary bit
6963access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
6964
6965New: AcpiNames utility - Example namespace dump utility. Shows an example
6966of
6967ACPICA configuration for a minimal namespace dump utility. Uses table and
6968namespace managers, but no AML interpreter. Does not add any
6969functionality
6970over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
6971partition and configure ACPICA. ACPICA BZ 883.
6972
6973AML Debugger: Increased the debugger buffer size for method return
6974objects.
6975Was 4K, increased to 16K. Also enhanced error messages for debugger
6976method
6977execution, including the buffer overflow case.
6978
6979----------------------------------------
698013 October 2010. Summary of changes for version 20101013:
6981
69821) ACPI CA Core Subsystem:
6983
6984Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
6985now
6986clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
6987HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
6988
6989Changed the type of the predefined namespace object _TZ from ThermalZone
6990to
6991Device. This was found to be confusing to the host software that
6992processes
6993the various thermal zones, since _TZ is not really a ThermalZone.
6994However,
6995a
6996Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
6997Zhang.
6998
6999Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7000string is "Windows 2006 SP2".
7001
7002Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7003nsrepair
7004code automatically repairs _HID-related strings, this type of code is no
7005longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7006878.
7007
7008Example Code and Data Size: These are the sizes for the OS-independent
7009acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7010debug version of the code includes the debug output trace mechanism and
7011has a
7012much larger code and data size.
7013
7014  Previous Release:
7015    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7016    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7017  Current Release:
7018    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7019    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7020
70212) iASL Compiler/Disassembler and Tools:
7022
7023iASL: Implemented additional compile-time validation for _HID strings.
7024The
7025non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7026length
7027of
7028the string must be exactly seven or eight characters. For both _HID and
7029_CID
7030strings, all characters must be alphanumeric. ACPICA BZ 874.
7031
7032iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7033descriptors that are mostly or all zeros, with the expectation that they
7034will
7035be filled in at runtime. iASL now allows this as long as there is a
7036"resource
7037tag" (name) associated with the descriptor, which gives the ASL a handle
7038needed to modify the descriptor. ACPICA BZ 873.
7039
7040Added single-thread support to the generic Unix application OSL.
7041Primarily
7042for iASL support, this change removes the use of semaphores in the
7043single-
7044threaded ACPICA tools/applications - increasing performance. The
7045_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7046option. ACPICA BZ 879.
7047
7048AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7049support
7050for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7051
7052iASL: Moved all compiler messages to a new file, aslmessages.h.
7053
7054----------------------------------------
705515 September 2010. Summary of changes for version 20100915:
7056
70571) ACPI CA Core Subsystem:
7058
7059Removed the AcpiOsDerivePciId OSL interface. The various host
7060implementations
7061of this function were not OS-dependent and are now obsolete and can be
7062removed from all host OSLs. This function has been replaced by
7063AcpiHwDerivePciId, which is now part of the ACPICA core code.
7064AcpiHwDerivePciId has been implemented without recursion. Adds one new
7065module, hwpci.c. ACPICA BZ 857.
7066
7067Implemented a dynamic repair for _HID and _CID strings. The following
7068problems are now repaired at runtime: 1) Remove a leading asterisk in the
7069string, and 2) the entire string is uppercased. Both repairs are in
7070accordance with the ACPI specification and will simplify host driver
7071code.
7072ACPICA BZ 871.
7073
7074The ACPI_THREAD_ID type is no longer configurable, internally it is now
7075always UINT64. This simplifies the ACPICA code, especially any printf
7076output.
7077UINT64 is the only common data type for all thread_id types across all
7078operating systems. It is now up to the host OSL to cast the native
7079thread_id
7080type to UINT64 before returning the value to ACPICA (via
7081AcpiOsGetThreadId).
7082Lin Ming, Bob Moore.
7083
7084Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7085"inline"
7086keyword is not standard across compilers, and this type allows inline to
7087be
7088configured on a per-compiler basis. Lin Ming.
7089
7090Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7091available.
7092Added an extern for this boolean in acpixf.h. Some hosts utilize this
7093value
7094during suspend/restore operations. ACPICA BZ 869.
7095
7096All code that implements error/warning messages with the "ACPI:" prefix
7097has
7098been moved to a new module, utxferror.c.
7099
7100The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7101it
7102is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7103
7104Example Code and Data Size: These are the sizes for the OS-independent
7105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7106debug version of the code includes the debug output trace mechanism and
7107has a
7108much larger code and data size.
7109
7110  Previous Release:
7111    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7112    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7113  Current Release:
7114    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7115    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7116
71172) iASL Compiler/Disassembler and Tools:
7118
7119iASL/Disassembler: Write ACPI errors to stderr instead of the output
7120file.
7121This keeps the output files free of random error messages that may
7122originate
7123from within the namespace/interpreter code. Used this opportunity to
7124merge
7125all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7126866. Lin Ming, Bob Moore.
7127
7128Tools: update some printfs for ansi warnings on size_t. Handle width
7129change
7130of size_t on 32-bit versus 64-bit generations. Lin Ming.
7131
7132----------------------------------------
713306 August 2010. Summary of changes for version 20100806:
7134
71351) ACPI CA Core Subsystem:
7136
7137Designed and implemented a new host interface to the _OSI support code.
7138This
7139will allow the host to dynamically add or remove multiple _OSI strings,
7140as
7141well as install an optional handler that is called for each _OSI
7142invocation.
7143Also added a new AML debugger command, 'osi' to display and modify the
7144global
7145_OSI string table, and test support in the AcpiExec utility. See the
7146ACPICA
7147reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7148New Functions:
7149    AcpiInstallInterface - Add an _OSI string.
7150    AcpiRemoveInterface - Delete an _OSI string.
7151    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7152Obsolete Functions:
7153    AcpiOsValidateInterface - no longer used.
7154New Files:
7155    source/components/utilities/utosi.c
7156
7157Re-introduced the support to enable multi-byte transfers for Embedded
7158Controller (EC) operation regions. A reported problem was found to be a
7159bug
7160in the host OS, not in the multi-byte support. Previously, the maximum
7161data
7162size passed to the EC operation region handler was a single byte. There
7163are
7164often EC Fields larger than one byte that need to be transferred, and it
7165is
7166useful for the EC driver to lock these as a single transaction. This
7167change
7168enables single transfers larger than 8 bits. This effectively changes the
7169access to the EC space from ByteAcc to AnyAcc, and will probably require
7170changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7171bit
7172transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7173
7174Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7175prototype in acpiosxf.h had the output value pointer as a (void *).
7176It should be a (UINT64 *). This may affect some host OSL code.
7177
7178Fixed a couple problems with the recently modified Linux makefiles for
7179iASL
7180and AcpiExec. These new makefiles place the generated object files in the
7181local directory so that there can be no collisions between the files that
7182are
7183shared between them that are compiled with different options.
7184
7185Example Code and Data Size: These are the sizes for the OS-independent
7186acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7187debug version of the code includes the debug output trace mechanism and
7188has a
7189much larger code and data size.
7190
7191  Previous Release:
7192    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7193    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7194  Current Release:
7195    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7196    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7197
71982) iASL Compiler/Disassembler and Tools:
7199
7200iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7201the
7202namespace from and disassemble an entire group of AML files. Useful for
7203loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7204and
7205disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7206
7207iASL: Allow multiple invocations of -e option. This change allows
7208multiple
7209uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7210834.
7211Lin Ming.
7212
7213----------------------------------------
721402 July 2010. Summary of changes for version 20100702:
7215
72161) ACPI CA Core Subsystem:
7217
7218Implemented several updates to the recently added GPE reference count
7219support. The model for "wake" GPEs is changing to give the host OS
7220complete
7221control of these GPEs. Eventually, the ACPICA core will not execute any
7222_PRW
7223methods, since the host already must execute them. Also, additional
7224changes
7225were made to help ensure that the reference counts are kept in proper
7226synchronization with reality. Rafael J. Wysocki.
7227
72281) Ensure that GPEs are not enabled twice during initialization.
72292) Ensure that GPE enable masks stay in sync with the reference count.
72303) Do not inadvertently enable GPEs when writing GPE registers.
72314) Remove the internal wake reference counter and add new AcpiGpeWakeup
7232interface. This interface will set or clear individual GPEs for wakeup.
72335) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7234interfaces
7235are now used for "runtime" GPEs only.
7236
7237Changed the behavior of the GPE install/remove handler interfaces. The
7238GPE
7239is
7240no longer disabled during this process, as it was found to cause problems
7241on
7242some machines. Rafael J. Wysocki.
7243
7244Reverted a change introduced in version 20100528 to enable Embedded
7245Controller multi-byte transfers. This change was found to cause problems
7246with
7247Index Fields and possibly Bank Fields. It will be reintroduced when these
7248problems have been resolved.
7249
7250Fixed a problem with references to Alias objects within Package Objects.
7251A
7252reference to an Alias within the definition of a Package was not always
7253resolved properly. Aliases to objects like Processors, Thermal zones,
7254etc.
7255were resolved to the actual object instead of a reference to the object
7256as
7257it
7258should be. Package objects are only allowed to contain integer, string,
7259buffer, package, and reference objects. Redhat bugzilla 608648.
7260
7261Example Code and Data Size: These are the sizes for the OS-independent
7262acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7263debug version of the code includes the debug output trace mechanism and
7264has a
7265much larger code and data size.
7266
7267  Previous Release:
7268    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7269    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7270  Current Release:
7271    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7272    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7273
72742) iASL Compiler/Disassembler and Tools:
7275
7276iASL: Implemented a new compiler subsystem to allow definition and
7277compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7278These
7279are called "ACPI Data Tables", and the new compiler is the "Data Table
7280Compiler". This compiler is intended to simplify the existing error-prone
7281process of creating these tables for the BIOS, as well as allowing the
7282disassembly, modification, recompilation, and override of existing ACPI
7283data
7284tables. See the iASL User Guide for detailed information.
7285
7286iASL: Implemented a new Template Generator option in support of the new
7287Data
7288Table Compiler. This option will create examples of all known ACPI tables
7289that can be used as the basis for table development. See the iASL
7290documentation and the -T option.
7291
7292Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7293Descriptor Table).
7294
7295Updated the Linux makefiles for iASL and AcpiExec to place the generated
7296object files in the local directory so that there can be no collisions
7297between the shared files between them that are generated with different
7298options.
7299
7300Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7301Use
7302the #define __APPLE__ to enable this support.
7303
7304----------------------------------------
730528 May 2010. Summary of changes for version 20100528:
7306
7307Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7308available at www.acpi.info. This is primarily an errata release.
7309
73101) ACPI CA Core Subsystem:
7311
7312Undefined ACPI tables: We are looking for the definitions for the
7313following
7314ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7315
7316Implemented support to enable multi-byte transfers for Embedded
7317Controller
7318(EC) operation regions. Previously, the maximum data size passed to the
7319EC
7320operation region handler was a single byte. There are often EC Fields
7321larger
7322than one byte that need to be transferred, and it is useful for the EC
7323driver
7324to lock these as a single transaction. This change enables single
7325transfers
7326larger than 8 bits. This effectively changes the access to the EC space
7327from
7328ByteAcc to AnyAcc, and will probably require changes to the host OS
7329Embedded
7330Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7331bit
7332transfers. Alexey Starikovskiy, Lin Ming
7333
7334Implemented a performance enhancement for namespace search and access.
7335This
7336change enhances the performance of namespace searches and walks by adding
7337a
7338backpointer to the parent in each namespace node. On large namespaces,
7339this
7340change can improve overall ACPI performance by up to 9X. Adding a pointer
7341to
7342each namespace node increases the overall size of the internal namespace
7343by
7344about 5%, since each namespace entry usually consists of both a namespace
7345node and an ACPI operand object. However, this is the first growth of the
7346namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7347
7348Implemented a performance optimization that reduces the number of
7349namespace
7350walks. On control method exit, only walk the namespace if the method is
7351known
7352to have created namespace objects outside of its local scope. Previously,
7353the
7354entire namespace was traversed on each control method exit. This change
7355can
7356improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7357Moore.
7358
7359Added support to truncate I/O addresses to 16 bits for Windows
7360compatibility.
7361Some ASL code has been seen in the field that inadvertently has bits set
7362above bit 15. This feature is optional and is enabled if the BIOS
7363requests
7364any Windows OSI strings. It can also be enabled by the host OS. Matthew
7365Garrett, Bob Moore.
7366
7367Added support to limit the maximum time for the ASL Sleep() operator. To
7368prevent accidental deep sleeps, limit the maximum time that Sleep() will
7369actually sleep. Configurable, the default maximum is two seconds. ACPICA
7370bugzilla 854.
7371
7372Added run-time validation support for the _WDG and_WED Microsoft
7373predefined
7374methods. These objects are defined by "Windows Instrumentation", and are
7375not
7376part of the ACPI spec. ACPICA BZ 860.
7377
7378Expanded all statistic counters used during namespace and device
7379initialization from 16 to 32 bits in order to support very large
7380namespaces.
7381
7382Replaced all instances of %d in printf format specifiers with %u since
7383nearly
7384all integers in ACPICA are unsigned.
7385
7386Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7387returned
7388as AE_NO_HANDLER.
7389
7390Example Code and Data Size: These are the sizes for the OS-independent
7391acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7392debug version of the code includes the debug output trace mechanism and
7393has a
7394much larger code and data size.
7395
7396  Previous Release:
7397    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7398    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7399  Current Release:
7400    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7401    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7402
74032) iASL Compiler/Disassembler and Tools:
7404
7405iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7406methods. These objects are defined by "Windows Instrumentation", and are
7407not
7408part of the ACPI spec. ACPICA BZ 860.
7409
7410AcpiExec: added option to disable the memory tracking mechanism. The -dt
7411option will disable the tracking mechanism, which improves performance
7412considerably.
7413
7414AcpiExec: Restructured the command line options into -d (disable) and -e
7415(enable) options.
7416
7417----------------------------------------
741828 April 2010. Summary of changes for version 20100428:
7419
74201) ACPI CA Core Subsystem:
7421
7422Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7423including FADT-based and GPE Block Devices, execute any _PRW methods in
7424the
7425new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7426runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7427immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7428Devices. Provides compatibility with other ACPI implementations. Two new
7429files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7430Moore.
7431
7432Fixed a regression introduced in version 20100331 within the table
7433manager
7434where initial table loading could fail. This was introduced in the fix
7435for
7436AcpiReallocateRootTable. Also, renamed some of fields in the table
7437manager
7438data structures to clarify their meaning and use.
7439
7440Fixed a possible allocation overrun during internal object copy in
7441AcpiUtCopySimpleObject. The original code did not correctly handle the
7442case
7443where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7444847.
7445
7446Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7447possible access beyond end-of-allocation. Also, now fully validate
7448descriptor
7449(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7450
7451Example Code and Data Size: These are the sizes for the OS-independent
7452acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7453debug version of the code includes the debug output trace mechanism and
7454has a
7455much larger code and data size.
7456
7457  Previous Release:
7458    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7459    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7460  Current Release:
7461    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7462    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7463
74642) iASL Compiler/Disassembler and Tools:
7465
7466iASL: Implemented Min/Max/Len/Gran validation for address resource
7467descriptors. This change implements validation for the address fields
7468that
7469are common to all address-type resource descriptors. These checks are
7470implemented: Checks for valid Min/Max, length within the Min/Max window,
7471valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7472per
7473table 6-40 in the ACPI 4.0a specification. Also split the large
7474aslrestype1.c
7475and aslrestype2.c files into five new files. ACPICA BZ 840.
7476
7477iASL: Added support for the _Wxx predefined names. This support was
7478missing
7479and these names were not recognized by the compiler as valid predefined
7480names. ACPICA BZ 851.
7481
7482iASL: Added an error for all predefined names that are defined to return
7483no
7484value and thus must be implemented as Control Methods. These include all
7485of
7486the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7487names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7488
7489iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7490an
7491ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7492be
7493dynamically loaded via the Load() operator. Also cleaned up output for
7494the
7495-
7496ta and -tc options. ACPICA BZ 853.
7497
7498Tests: Added a new file with examples of extended iASL error checking.
7499Demonstrates the advanced error checking ability of the iASL compiler.
7500Available at tests/misc/badcode.asl.
7501
7502----------------------------------------
750331 March 2010. Summary of changes for version 20100331:
7504
75051) ACPI CA Core Subsystem:
7506
7507Completed a major update for the GPE support in order to improve support
7508for
7509shared GPEs and to simplify both host OS and ACPICA code. Added a
7510reference
7511count mechanism to support shared GPEs that require multiple device
7512drivers.
7513Several external interfaces have changed. One external interface has been
7514removed. One new external interface was added. Most of the GPE external
7515interfaces now use the GPE spinlock instead of the events mutex (and the
7516Flags parameter for many GPE interfaces has been removed.) See the
7517updated
7518ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7519Rafael
7520Wysocki. ACPICA BZ 831.
7521
7522Changed:
7523    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7524Removed:
7525    AcpiSetGpeType
7526New:
7527    AcpiSetGpe
7528
7529Implemented write support for DataTable operation regions. These regions
7530are
7531defined via the DataTableRegion() operator. Previously, only read support
7532was
7533implemented. The ACPI specification allows DataTableRegions to be
7534read/write,
7535however.
7536
7537Implemented a new subsystem option to force a copy of the DSDT to local
7538memory. Optionally copy the entire DSDT to local memory (instead of
7539simply
7540mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7541replace
7542the original DSDT, creating the need for this option. Default is FALSE,
7543do
7544not copy the DSDT.
7545
7546Implemented detection of a corrupted or replaced DSDT. This change adds
7547support to detect a DSDT that has been corrupted and/or replaced from
7548outside
7549the OS (by firmware). This is typically catastrophic for the system, but
7550has
7551been seen on some machines. Once this problem has been detected, the DSDT
7552copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7553
7554Fixed two problems with AcpiReallocateRootTable during the root table
7555copy.
7556When copying the root table to the new allocation, the length used was
7557incorrect. The new size was used instead of the current table size,
7558meaning
7559too much data was copied. Also, the count of available slots for ACPI
7560tables
7561was not set correctly. Alexey Starikovskiy, Bob Moore.
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:  87.5K Code, 18.4K Data, 105.9K Total
7571    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7572  Current Release:
7573    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7574    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7575
75762) iASL Compiler/Disassembler and Tools:
7577
7578iASL: Implement limited typechecking for values returned from predefined
7579control methods. The type of any returned static (unnamed) object is now
7580validated. For example, Return(1). ACPICA BZ 786.
7581
7582iASL: Fixed a predefined name object verification regression. Fixes a
7583problem
7584introduced in version 20100304. An error is incorrectly generated if a
7585predefined name is declared as a static named object with a value defined
7586using the keywords "Zero", "One", or "Ones". Lin Ming.
7587
7588iASL: Added Windows 7 support for the -g option (get local ACPI tables)
7589by
7590reducing the requested registry access rights. ACPICA BZ 842.
7591
7592Disassembler: fixed a possible fault when generating External()
7593statements.
7594Introduced in commit ae7d6fd: Properly handle externals with parent-
7595prefix
7596(carat). Fixes a string length allocation calculation. Lin Ming.
7597
7598----------------------------------------
759904 March 2010. Summary of changes for version 20100304:
7600
76011) ACPI CA Core Subsystem:
7602
7603Fixed a possible problem with the AML Mutex handling function
7604AcpiExReleaseMutex where the function could fault under the very rare
7605condition when the interpreter has blocked, the interpreter lock is
7606released,
7607the interpreter is then reentered via the same thread, and attempts to
7608acquire an AML mutex that was previously acquired. FreeBSD report 140979.
7609Lin
7610Ming.
7611
7612Implemented additional configuration support for the AML "Debug Object".
7613Output from the debug object can now be enabled via a global variable,
7614AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
7615debugging.
7616This debug output is now available in the release version of ACPICA
7617instead
7618of just the debug version. Also, the entire debug output module can now
7619be
7620configured out of the ACPICA build if desired. One new file added,
7621executer/exdebug.c. Lin Ming, Bob Moore.
7622
7623Added header support for the ACPI MCHI table (Management Controller Host
7624Interface Table). This table was added in ACPI 4.0, but the defining
7625document
7626has only recently become available.
7627
7628Standardized output of integer values for ACPICA warnings/errors. Always
7629use
76300x prefix for hex output, always use %u for unsigned integer decimal
7631output.
7632Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
7633400
7634invocations.) These invocations were converted from the original
7635ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
7636
7637Example Code and Data Size: These are the sizes for the OS-independent
7638acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7639debug version of the code includes the debug output trace mechanism and
7640has a
7641much larger code and data size.
7642
7643  Previous Release:
7644    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7645    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7646  Current Release:
7647    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7648    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7649
76502) iASL Compiler/Disassembler and Tools:
7651
7652iASL: Implemented typechecking support for static (non-control method)
7653predefined named objects that are declared with the Name() operator. For
7654example, the type of this object is now validated to be of type Integer:
7655Name(_BBN, 1). This change migrates the compiler to using the core
7656predefined
7657name table instead of maintaining a local version. Added a new file,
7658aslpredef.c. ACPICA BZ 832.
7659
7660Disassembler: Added support for the ACPI 4.0 MCHI table.
7661
7662----------------------------------------
766321 January 2010. Summary of changes for version 20100121:
7664
76651) ACPI CA Core Subsystem:
7666
7667Added the 2010 copyright to all module headers and signons. This affects
7668virtually every file in the ACPICA core subsystem, the iASL compiler, the
7669tools/utilities, and the test suites.
7670
7671Implemented a change to the AcpiGetDevices interface to eliminate
7672unnecessary
7673invocations of the _STA method. In the case where a specific _HID is
7674requested, do not run _STA until a _HID match is found. This eliminates
7675potentially dozens of _STA calls during a search for a particular
7676device/HID,
7677which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7678
7679Implemented an additional repair for predefined method return values.
7680Attempt
7681to repair unexpected NULL elements within returned Package objects.
7682Create
7683an
7684Integer of value zero, a NULL String, or a zero-length Buffer as
7685appropriate.
7686ACPICA BZ 818. Lin Ming, Bob Moore.
7687
7688Removed the obsolete ACPI_INTEGER data type. This type was introduced as
7689the
7690code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
7691(with
769264-bit AML integers). It is now obsolete and this change removes it from
7693the
7694ACPICA code base, replaced by UINT64. The original typedef has been
7695retained
7696for now for compatibility with existing device driver code. ACPICA BZ
7697824.
7698
7699Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
7700in
7701the parse tree object.
7702
7703Added additional warning options for the gcc-4 generation. Updated the
7704source
7705accordingly. This includes some code restructuring to eliminate
7706unreachable
7707code, elimination of some gotos, elimination of unused return values,
7708some
7709additional casting, and removal of redundant declarations.
7710
7711Example Code and Data Size: These are the sizes for the OS-independent
7712acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7713debug version of the code includes the debug output trace mechanism and
7714has a
7715much larger code and data size.
7716
7717  Previous Release:
7718    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7719    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7720  Current Release:
7721    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7722    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7723
77242) iASL Compiler/Disassembler and Tools:
7725
7726No functional changes for this release.
7727
7728----------------------------------------
772914 December 2009. Summary of changes for version 20091214:
7730
77311) ACPI CA Core Subsystem:
7732
7733Enhanced automatic data type conversions for predefined name repairs.
7734This
7735change expands the automatic repairs/conversions for predefined name
7736return
7737values to make Integers, Strings, and Buffers fully interchangeable.
7738Also,
7739a
7740Buffer can be converted to a Package of Integers if necessary. The
7741nsrepair.c
7742module was completely restructured. Lin Ming, Bob Moore.
7743
7744Implemented automatic removal of null package elements during predefined
7745name
7746repairs. This change will automatically remove embedded and trailing NULL
7747package elements from returned package objects that are defined to
7748contain
7749a
7750variable number of sub-packages. The driver is then presented with a
7751package
7752with no null elements to deal with. ACPICA BZ 819.
7753
7754Implemented a repair for the predefined _FDE and _GTM names. The expected
7755return value for both names is a Buffer of 5 DWORDs. This repair fixes
7756two
7757possible problems (both seen in the field), where a package of integers
7758is
7759returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
7760Kim.
7761
7762Implemented additional module-level code support. This change will
7763properly
7764execute module-level code that is not at the root of the namespace (under
7765a
7766Device object, etc.). Now executes the code within the current scope
7767instead
7768of the root. ACPICA BZ 762. Lin Ming.
7769
7770Fixed possible mutex acquisition errors when running _REG methods. Fixes
7771a
7772problem where mutex errors can occur when running a _REG method that is
7773in
7774the same scope as a method-defined operation region or an operation
7775region
7776under a module-level IF block. This type of code is rare, so the problem
7777has
7778not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7779
7780Fixed a possible memory leak during module-level code execution. An
7781object
7782could be leaked for each block of executed module-level code if the
7783interpreter slack mode is enabled This change deletes any implicitly
7784returned
7785object from the module-level code block. Lin Ming.
7786
7787Removed messages for successful predefined repair(s). The repair
7788mechanism
7789was considered too wordy. Now, messages are only unconditionally emitted
7790if
7791the return object cannot be repaired. Existing messages for successful
7792repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
7793827.
7794
7795Example Code and Data Size: These are the sizes for the OS-independent
7796acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7797debug version of the code includes the debug output trace mechanism and
7798has a
7799much larger code and data size.
7800
7801  Previous Release:
7802    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7803    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7804  Current Release:
7805    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7806    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7807
78082) iASL Compiler/Disassembler and Tools:
7809
7810iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
7811files
7812were no longer automatically removed at the termination of the compile.
7813
7814acpiexec: Implemented the -f option to specify default region fill value.
7815This option specifies the value used to initialize buffers that simulate
7816operation regions. Default value is zero. Useful for debugging problems
7817that
7818depend on a specific initial value for a region or field.
7819
7820----------------------------------------
782112 November 2009. Summary of changes for version 20091112:
7822
78231) ACPI CA Core Subsystem:
7824
7825Implemented a post-order callback to AcpiWalkNamespace. The existing
7826interface only has a pre-order callback. This change adds an additional
7827parameter for a post-order callback which will be more useful for bus
7828scans.
7829ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
7830
7831Modified the behavior of the operation region memory mapping cache for
7832SystemMemory. Ensure that the memory mappings created for operation
7833regions
7834do not cross 4K page boundaries. Crossing a page boundary while mapping
7835regions can cause kernel warnings on some hosts if the pages have
7836different
7837attributes. Such regions are probably BIOS bugs, and this is the
7838workaround.
7839Linux BZ 14445. Lin Ming.
7840
7841Implemented an automatic repair for predefined methods that must return
7842sorted lists. This change will repair (by sorting) packages returned by
7843_ALR,
7844_PSS, and _TSS. Drivers can now assume that the packages are correctly
7845sorted
7846and do not contain NULL package elements. Adds one new file,
7847namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
7848
7849Fixed a possible fault during predefined name validation if a return
7850Package
7851object contains NULL elements. Also adds a warning if a NULL element is
7852followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
7853may
7854include repair or removal of all such NULL elements where possible.
7855
7856Implemented additional module-level executable AML code support. This
7857change
7858will execute module-level code that is not at the root of the namespace
7859(under a Device object, etc.) at table load time. Module-level executable
7860AML
7861code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
7862
7863Implemented a new internal function to create Integer objects. This
7864function
7865simplifies miscellaneous object creation code. ACPICA BZ 823.
7866
7867Reduced the severity of predefined repair messages, Warning to Info.
7868Since
7869the object was successfully repaired, a warning is too severe. Reduced to
7870an
7871info message for now. These messages may eventually be changed to debug-
7872only.
7873ACPICA BZ 812.
7874
7875Example Code and Data Size: These are the sizes for the OS-independent
7876acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7877debug version of the code includes the debug output trace mechanism and
7878has a
7879much larger code and data size.
7880
7881  Previous Release:
7882    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
7883    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
7884  Current Release:
7885    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7886    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7887
78882) iASL Compiler/Disassembler and Tools:
7889
7890iASL: Implemented Switch() with While(1) so that Break works correctly.
7891This
7892change correctly implements the Switch operator with a surrounding
7893While(1)
7894so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
7895
7896iASL: Added a message if a package initializer list is shorter than
7897package
7898length. Adds a new remark for a Package() declaration if an initializer
7899list
7900exists, but is shorter than the declared length of the package. Although
7901technically legal, this is probably a coding error and it is seen in the
7902field. ACPICA BZ 815. Lin Ming, Bob Moore.
7903
7904iASL: Fixed a problem where the compiler could fault after the maximum
7905number
7906of errors was reached (200).
7907
7908acpixtract: Fixed a possible warning for pointer cast if the compiler
7909warning
7910level set very high.
7911
7912----------------------------------------
791313 October 2009. Summary of changes for version 20091013:
7914
79151) ACPI CA Core Subsystem:
7916
7917Fixed a problem where an Operation Region _REG method could be executed
7918more
7919than once. If a custom address space handler is installed by the host
7920before
7921the "initialize operation regions" phase of the ACPICA initialization,
7922any
7923_REG methods for that address space could be executed twice. This change
7924fixes the problem. ACPICA BZ 427. Lin Ming.
7925
7926Fixed a possible memory leak for the Scope() ASL operator. When the exact
7927invocation of "Scope(\)" is executed (change scope to root), one internal
7928operand object was leaked. Lin Ming.
7929
7930Implemented a run-time repair for the _MAT predefined method. If the _MAT
7931return value is defined as a Field object in the AML, and the field
7932size is less than or equal to the default width of an integer (32 or
793364),_MAT
7934can incorrectly return an Integer instead of a Buffer. ACPICA now
7935automatically repairs this problem. ACPICA BZ 810.
7936
7937Implemented a run-time repair for the _BIF and _BIX predefined methods.
7938The
7939"OEM Information" field is often incorrectly returned as an Integer with
7940value zero if the field is not supported by the platform. This is due to
7941an
7942ambiguity in the ACPI specification. The field should always be a string.
7943ACPICA now automatically repairs this problem by returning a NULL string
7944within the returned Package. ACPICA BZ 807.
7945
7946Example Code and Data Size: These are the sizes for the OS-independent
7947acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7948debug version of the code includes the debug output trace mechanism and
7949has a
7950much larger code and data size.
7951
7952  Previous Release:
7953    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
7954    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
7955  Current Release:
7956    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
7957    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
7958
79592) iASL Compiler/Disassembler and Tools:
7960
7961Disassembler: Fixed a problem where references to external symbols that
7962contained one or more parent-prefixes (carats) were not handled
7963correctly,
7964possibly causing a fault. ACPICA BZ 806. Lin Ming.
7965
7966Disassembler: Restructured the code so that all functions that handle
7967external symbols are in a single module. One new file is added,
7968common/dmextern.c.
7969
7970AML Debugger: Added a max count argument for the Batch command (which
7971executes multiple predefined methods within the namespace.)
7972
7973iASL: Updated the compiler documentation (User Reference.) Available at
7974http://www.acpica.org/documentation/. ACPICA BZ 750.
7975
7976AcpiXtract: Updated for Lint and other formatting changes. Close all open
7977files.
7978
7979----------------------------------------
798003 September 2009. Summary of changes for version 20090903:
7981
79821) ACPI CA Core Subsystem:
7983
7984For Windows Vista compatibility, added the automatic execution of an _INI
7985method located at the namespace root (\_INI). This method is executed at
7986table load time. This support is in addition to the automatic execution
7987of
7988\_SB._INI. Lin Ming.
7989
7990Fixed a possible memory leak in the interpreter for AML package objects
7991if
7992the package initializer list is longer than the defined size of the
7993package.
7994This apparently can only happen if the BIOS changes the package size on
7995the
7996fly (seen in a _PSS object), as ASL compilers do not allow this. The
7997interpreter will truncate the package to the defined size (and issue an
7998error
7999message), but previously could leave the extra objects undeleted if they
8000were
8001pre-created during the argument processing (such is the case if the
8002package
8003consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8004
8005Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8006This has been reported in the field. Previously, ACPICA would zero out
8007the
8008buffer/string. Now, the operation is treated as a noop. Provides Windows
8009compatibility. ACPICA BZ 803. Lin Ming.
8010
8011Removed an extraneous error message for ASL constructs of the form
8012Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8013statements
8014are seen in many BIOSs and are once again treated as NOOPs and no error
8015is
8016emitted when they are encountered. ACPICA BZ 785.
8017
8018Fixed an extraneous warning message if a _DSM reserved method returns a
8019Package object. _DSM can return any type of object, so validation on the
8020return type cannot be performed. ACPICA BZ 802.
8021
8022Example Code and Data Size: These are the sizes for the OS-independent
8023acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8024debug version of the code includes the debug output trace mechanism and
8025has a
8026much larger code and data size.
8027
8028  Previous Release:
8029    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8030    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8031  Current Release:
8032    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8033    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8034
80352) iASL Compiler/Disassembler and Tools:
8036
8037iASL: Fixed a problem with the use of the Alias operator and Resource
8038Templates. The correct alias is now constructed and no error is emitted.
8039ACPICA BZ 738.
8040
8041iASL: Implemented the -I option to specify additional search directories
8042for
8043include files. Allows multiple additional search paths for include files.
8044Directories are searched in the order specified on the command line
8045(after
8046the local directory is searched.) ACPICA BZ 800.
8047
8048iASL: Fixed a problem where the full pathname for include files was not
8049emitted for warnings/errors. This caused the IDE support to not work
8050properly. ACPICA BZ 765.
8051
8052iASL: Implemented the -@ option to specify a Windows-style response file
8053containing additional command line options. ACPICA BZ 801.
8054
8055AcpiExec: Added support to load multiple AML files simultaneously (such
8056as
8057a
8058DSDT and multiple SSDTs). Also added support for wildcards within the AML
8059pathname. These features allow all machine tables to be easily loaded and
8060debugged together. ACPICA BZ 804.
8061
8062Disassembler: Added missing support for disassembly of HEST table Error
8063Bank
8064subtables.
8065
8066----------------------------------------
806730 July 2009. Summary of changes for version 20090730:
8068
8069The ACPI 4.0 implementation for ACPICA is complete with this release.
8070
80711) ACPI CA Core Subsystem:
8072
8073ACPI 4.0: Added header file support for all new and changed ACPI tables.
8074Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8075new
8076for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8077BERT,
8078EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8079There
8080have been some ACPI 4.0 changes to other existing tables. Split the large
8081actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8082
8083ACPI 4.0: Implemented predefined name validation for all new names. There
8084are
808531 new names in ACPI 4.0. The predefined validation module was split into
8086two
8087files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8088
8089Implemented support for so-called "module-level executable code". This is
8090executable AML code that exists outside of any control method and is
8091intended
8092to be executed at table load time. Although illegal since ACPI 2.0, this
8093type
8094of code still exists and is apparently still being created. Blocks of
8095this
8096code are now detected and executed as intended. Currently, the code
8097blocks
8098must exist under either an If, Else, or While construct; these are the
8099typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8100
8101Implemented an automatic dynamic repair for predefined names that return
8102nested Package objects. This applies to predefined names that are defined
8103to
8104return a variable-length Package of sub-packages. If the number of sub-
8105packages is one, BIOS code is occasionally seen that creates a simple
8106single
8107package with no sub-packages. This code attempts to fix the problem by
8108wrapping a new package object around the existing package. These methods
8109can
8110be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8111BZ
8112790.
8113
8114Fixed a regression introduced in 20090625 for the AcpiGetDevices
8115interface.
8116The _HID/_CID matching was broken and no longer matched IDs correctly.
8117ACPICA
8118BZ 793.
8119
8120Fixed a problem with AcpiReset where the reset would silently fail if the
8121register was one of the protected I/O ports. AcpiReset now bypasses the
8122port
8123validation mechanism. This may eventually be driven into the
8124AcpiRead/Write
8125interfaces.
8126
8127Fixed a regression related to the recent update of the AcpiRead/Write
8128interfaces. A sleep/suspend could fail if the optional PM2 Control
8129register
8130does not exist during an attempt to write the Bus Master Arbitration bit.
8131(However, some hosts already delete the code that writes this bit, and
8132the
8133code may in fact be obsolete at this date.) ACPICA BZ 799.
8134
8135Fixed a problem where AcpiTerminate could fault if inadvertently called
8136twice
8137in succession. ACPICA BZ 795.
8138
8139Example Code and Data Size: These are the sizes for the OS-independent
8140acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8141debug version of the code includes the debug output trace mechanism and
8142has a
8143much larger code and data size.
8144
8145  Previous Release:
8146    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8147    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8148  Current Release:
8149    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8150    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8151
81522) iASL Compiler/Disassembler and Tools:
8153
8154ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8155changes to existing tables. ACPICA BZ 775.
8156
8157----------------------------------------
815825 June 2009. Summary of changes for version 20090625:
8159
8160The ACPI 4.0 Specification was released on June 16 and is available at
8161www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8162continue for the next few releases.
8163
81641) ACPI CA Core Subsystem:
8165
8166ACPI 4.0: Implemented interpreter support for the IPMI operation region
8167address space. Includes support for bi-directional data buffers and an
8168IPMI
8169address space handler (to be installed by an IPMI device driver.) ACPICA
8170BZ
8171773. Lin Ming.
8172
8173ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8174Includes
8175support in both the header files and the disassembler.
8176
8177Completed a major update for the AcpiGetObjectInfo external interface.
8178Changes include:
8179 - Support for variable, unlimited length HID, UID, and CID strings.
8180 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8181etc.)
8182 - Call the _SxW power methods on behalf of a device object.
8183 - Determine if a device is a PCI root bridge.
8184 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8185These changes will require an update to all callers of this interface.
8186See
8187the updated ACPICA Programmer Reference for details. One new source file
8188has
8189been added - utilities/utids.c. ACPICA BZ 368, 780.
8190
8191Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8192transfers. The Value parameter has been extended from 32 bits to 64 bits
8193in
8194order to support new ACPI 4.0 tables. These changes will require an
8195update
8196to
8197all callers of these interfaces. See the ACPICA Programmer Reference for
8198details. ACPICA BZ 768.
8199
8200Fixed several problems with AcpiAttachData. The handler was not invoked
8201when
8202the host node was deleted. The data sub-object was not automatically
8203deleted
8204when the host node was deleted. The interface to the handler had an
8205unused
8206parameter, this was removed. ACPICA BZ 778.
8207
8208Enhanced the function that dumps ACPI table headers. All non-printable
8209characters in the string fields are now replaced with '?' (Signature,
8210OemId,
8211OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8212these fields are occasionally seen in the field. ACPICA BZ 788.
8213
8214Fixed a problem with predefined method repair code where the code that
8215attempts to repair/convert an object of incorrect type is only executed
8216on
8217the first time the predefined method is called. The mechanism that
8218disables
8219warnings on subsequent calls was interfering with the repair mechanism.
8220ACPICA BZ 781.
8221
8222Fixed a possible memory leak in the predefined validation/repair code
8223when
8224a
8225buffer is automatically converted to an expected string object.
8226
8227Removed obsolete 16-bit files from the distribution and from the current
8228git
8229tree head. ACPICA BZ 776.
8230
8231Example Code and Data Size: These are the sizes for the OS-independent
8232acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8233debug version of the code includes the debug output trace mechanism and
8234has a
8235much larger code and data size.
8236
8237  Previous Release:
8238    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8239    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8240  Current Release:
8241    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8242    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8243
82442) iASL Compiler/Disassembler and Tools:
8245
8246ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8247operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8248
8249ACPI 4.0: iASL - implemented compile-time validation support for all new
8250predefined names and control methods (31 total). ACPICA BZ 769.
8251
8252----------------------------------------
825321 May 2009. Summary of changes for version 20090521:
8254
82551) ACPI CA Core Subsystem:
8256
8257Disabled the preservation of the SCI enable bit in the PM1 control
8258register.
8259The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8260to
8261be
8262a "preserved" bit - "OSPM always preserves this bit position", section
82634.7.3.2.1. However, some machines fail if this bit is in fact preserved
8264because the bit needs to be explicitly set by the OS as a workaround. No
8265machines fail if the bit is not preserved. Therefore, ACPICA no longer
8266attempts to preserve this bit.
8267
8268Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8269incorrectly formed _PRT package could cause a fault. Added validation to
8270ensure that each package element is actually a sub-package.
8271
8272Implemented a new interface to install or override a single control
8273method,
8274AcpiInstallMethod. This interface is useful when debugging in order to
8275repair
8276an existing method or to install a missing method without having to
8277override
8278the entire ACPI table. See the ACPICA Programmer Reference for use and
8279examples. Lin Ming, Bob Moore.
8280
8281Fixed several reference count issues with the DdbHandle object that is
8282created from a Load or LoadTable operator. Prevent premature deletion of
8283the
8284object. Also, mark the object as invalid once the table has been
8285unloaded.
8286This is needed because the handle itself may not be deleted after the
8287table
8288unload, depending on whether it has been stored in a named object by the
8289caller. Lin Ming.
8290
8291Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8292mutexes of the same sync level are acquired but then not released in
8293strict
8294opposite order, the internally maintained Current Sync Level becomes
8295confused
8296and can cause subsequent execution errors. ACPICA BZ 471.
8297
8298Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8299specification has been changed to make the SyncLevel for mutex objects
8300more
8301useful. When releasing a mutex, the SyncLevel of the mutex must now be
8302the
8303same as the current sync level. This makes more sense than the previous
8304rule
8305(SyncLevel less than or equal). This change updates the code to match the
8306specification.
8307
8308Fixed a problem with the local version of the AcpiOsPurgeCache function.
8309The
8310(local) cache must be locked during all cache object deletions. Andrew
8311Baumann.
8312
8313Updated the Load operator to use operation region interfaces. This
8314replaces
8315direct memory mapping with region access calls. Now, all region accesses
8316go
8317through the installed region handler as they should.
8318
8319Simplified and optimized the NsGetNextNode function. Reduced parameter
8320count
8321and reduced code for this frequently used function.
8322
8323Example Code and Data Size: These are the sizes for the OS-independent
8324acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8325debug version of the code includes the debug output trace mechanism and
8326has a
8327much larger code and data size.
8328
8329  Previous Release:
8330    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8331    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8332  Current Release:
8333    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8334    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8335
83362) iASL Compiler/Disassembler and Tools:
8337
8338Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8339problems
8340with sub-table disassembly and handling invalid sub-tables. Attempt
8341recovery
8342after an invalid sub-table ID.
8343
8344----------------------------------------
834522 April 2009. Summary of changes for version 20090422:
8346
83471) ACPI CA Core Subsystem:
8348
8349Fixed a compatibility issue with the recently released I/O port
8350protection
8351mechanism. For windows compatibility, 1) On a port protection violation,
8352simply ignore the request and do not return an exception (allow the
8353control
8354method to continue execution.) 2) If only part of the request overlaps a
8355protected port, read/write the individual ports that are not protected.
8356Linux
8357BZ 13036. Lin Ming
8358
8359Enhanced the execution of the ASL/AML BreakPoint operator so that it
8360actually
8361breaks into the AML debugger if the debugger is present. This matches the
8362ACPI-defined behavior.
8363
8364Fixed several possible warnings related to the use of the configurable
8365ACPI_THREAD_ID. This type can now be configured as either an integer or a
8366pointer with no warnings. Also fixes several warnings in printf-like
8367statements for the 64-bit build when the type is configured as a pointer.
8368ACPICA BZ 766, 767.
8369
8370Fixed a number of possible warnings when compiling with gcc 4+ (depending
8371on
8372warning options.) Examples include printf formats, aliasing, unused
8373globals,
8374missing prototypes, missing switch default statements, use of non-ANSI
8375library functions, use of non-ANSI constructs. See generate/unix/Makefile
8376for
8377a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8378
8379Example Code and Data Size: These are the sizes for the OS-independent
8380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8381debug version of the code includes the debug output trace mechanism and
8382has a
8383much larger code and data size.
8384
8385  Previous Release:
8386    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8387    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8388  Current Release:
8389    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8390    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8391
83922) iASL Compiler/Disassembler and Tools:
8393
8394iASL: Fixed a generation warning from Bison 2.3 and fixed several
8395warnings
8396on
8397the 64-bit build.
8398
8399iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8400not
8401correctly digest Windows/DOS formatted files (with CR/LF).
8402
8403iASL: Added a new option for "quiet mode" (-va) that produces only the
8404compilation summary, not individual errors and warnings. Useful for large
8405batch compilations.
8406
8407AcpiExec: Implemented a new option (-z) to enable a forced
8408semaphore/mutex
8409timeout that can be used to detect hang conditions during execution of
8410AML
8411code (includes both internal semaphores and AML-defined mutexes and
8412events.)
8413
8414Added new makefiles for the generation of acpica in a generic unix-like
8415environment. These makefiles are intended to generate the acpica tools
8416and
8417utilities from the original acpica git source tree structure.
8418
8419Test Suites: Updated and cleaned up the documentation files. Updated the
8420copyrights to 2009, affecting all source files. Use the new version of
8421iASL
8422with quiet mode. Increased the number of available semaphores in the
8423Windows
8424OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8425added
8426an alternate implementation of the semaphore timeout to allow aslts to
8427execute fully on Cygwin.
8428
8429----------------------------------------
843020 March 2009. Summary of changes for version 20090320:
8431
84321) ACPI CA Core Subsystem:
8433
8434Fixed a possible race condition between AcpiWalkNamespace and dynamic
8435table
8436unloads. Added a reader/writer locking mechanism to allow multiple
8437concurrent
8438namespace walks (readers), but block a dynamic table unload until it can
8439gain
8440exclusive write access to the namespace. This fixes a problem where a
8441table
8442unload could (possibly catastrophically) delete the portion of the
8443namespace
8444that is currently being examined by a walk. Adds a new file, utlock.c,
8445that
8446implements the reader/writer lock mechanism. ACPICA BZ 749.
8447
8448Fixed a regression introduced in version 20090220 where a change to the
8449FADT
8450handling could cause the ACPICA subsystem to access non-existent I/O
8451ports.
8452
8453Modified the handling of FADT register and table (FACS/DSDT) addresses.
8454The
8455FADT can contain both 32-bit and 64-bit versions of these addresses.
8456Previously, the 64-bit versions were favored, meaning that if both 32 and
845764
8458versions were valid, but not equal, the 64-bit version was used. This was
8459found to cause some machines to fail. Now, in this case, the 32-bit
8460version
8461is used instead. This now matches the Windows behavior.
8462
8463Implemented a new mechanism to protect certain I/O ports. Provides
8464Microsoft
8465compatibility and protects the standard PC I/O ports from access via AML
8466code. Adds a new file, hwvalid.c
8467
8468Fixed a possible extraneous warning message from the FADT support. The
8469message warns of a 32/64 length mismatch between the legacy and GAS
8470definitions for a register.
8471
8472Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8473is
8474made obsolete by the port protection mechanism above. It was previously
8475used
8476to validate the entire address range of an operation region, which could
8477be
8478incorrect if the range included illegal ports, but fields within the
8479operation region did not actually access those ports. Validation is now
8480performed on a per-field basis instead of the entire region.
8481
8482Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8483Ignored bits must be "preserved" according to the ACPI spec. Usually,
8484this
8485means a read/modify/write when writing to the register. However, for
8486status
8487registers, writing a one means clear the event. Writing a zero means
8488preserve
8489the event (do not clear.) This behavior is clarified in the ACPI 4.0
8490spec,
8491and the ACPICA code now simply always writes a zero to the ignored bit.
8492
8493Modified the handling of ignored bits for the PM1 A/B Control Registers.
8494As
8495per the ACPI specification, for the control registers, preserve
8496(read/modify/write) all bits that are defined as either reserved or
8497ignored.
8498
8499Updated the handling of write-only bits in the PM1 A/B Control Registers.
8500When reading the register, zero the write-only bits as per the ACPI spec.
8501ACPICA BZ 443. Lin Ming.
8502
8503Removed "Linux" from the list of supported _OSI strings. Linux no longer
8504wants to reply true to this request. The Windows strings are the only
8505paths
8506through the AML that are tested and known to work properly.
8507
8508  Previous Release:
8509    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8510    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8511  Current Release:
8512    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8513    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8514
85152) iASL Compiler/Disassembler and Tools:
8516
8517Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8518and
8519aetables.c
8520
8521----------------------------------------
852220 February 2009. Summary of changes for version 20090220:
8523
85241) ACPI CA Core Subsystem:
8525
8526Optimized the ACPI register locking. Removed locking for reads from the
8527ACPI
8528bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8529is
8530not required when reading the single-bit registers. The
8531AcpiGetRegisterUnlocked function is no longer needed and has been
8532removed.
8533This will improve performance for reads on these registers. ACPICA BZ
8534760.
8535
8536Fixed the parameter validation for AcpiRead/Write. Now return
8537AE_BAD_PARAMETER if the input register pointer is null, and
8538AE_BAD_ADDRESS
8539if
8540the register has an address of zero. Previously, these cases simply
8541returned
8542AE_OK. For optional registers such as PM1B status/enable/control, the
8543caller
8544should check for a valid register address before calling. ACPICA BZ 748.
8545
8546Renamed the external ACPI bit register access functions. Renamed
8547AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8548functions. The new names are AcpiReadBitRegister and
8549AcpiWriteBitRegister.
8550Also, restructured the code for these functions by simplifying the code
8551path
8552and condensing duplicate code to reduce code size.
8553
8554Added new functions to transparently handle the possibly split PM1 A/B
8555registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8556functions
8557now handle the split registers for PM1 Status, Enable, and Control.
8558ACPICA
8559BZ
8560746.
8561
8562Added a function to handle the PM1 control registers,
8563AcpiHwWritePm1Control.
8564This function writes both of the PM1 control registers (A/B). These
8565registers
8566are different than the PM1 A/B status and enable registers in that
8567different
8568values can be written to the A/B registers. Most notably, the SLP_TYP
8569bits
8570can be different, as per the values returned from the _Sx predefined
8571methods.
8572
8573Removed an extra register write within AcpiHwClearAcpiStatus. This
8574function
8575was writing an optional PM1B status register twice. The existing call to
8576the
8577low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
8578A/B
8579register. ACPICA BZ 751.
8580
8581Split out the PM1 Status registers from the FADT. Added new globals for
8582these
8583registers (A/B), similar to the way the PM1 Enable registers are handled.
8584Instead of overloading the FADT Event Register blocks. This makes the
8585code
8586clearer and less prone to error.
8587
8588Fixed the warning message for when the platform contains too many ACPI
8589tables
8590for the default size of the global root table data structure. The
8591calculation
8592for the truncation value was incorrect.
8593
8594Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
8595obsolete macro, since it is now a simple reference to ->common.type.
8596There
8597were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8598
8599Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
8600TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
8601simply SLEEP_TYPE. ACPICA BZ 754.
8602
8603Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
8604function is only needed on 64-bit host operating systems and is thus not
8605included for 32-bit hosts.
8606
8607Debug output: print the input and result for invocations of the _OSI
8608reserved
8609control method via the ACPI_LV_INFO debug level. Also, reduced some of
8610the
8611verbosity of this debug level. Len Brown.
8612
8613Example Code and Data Size: These are the sizes for the OS-independent
8614acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8615debug version of the code includes the debug output trace mechanism and
8616has a
8617much larger code and data size.
8618
8619  Previous Release:
8620    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8621    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8622  Current Release:
8623    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8624    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8625
86262) iASL Compiler/Disassembler and Tools:
8627
8628Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
8629various legal performance profiles.
8630
8631----------------------------------------
863223 January 2009. Summary of changes for version 20090123:
8633
86341) ACPI CA Core Subsystem:
8635
8636Added the 2009 copyright to all module headers and signons. This affects
8637virtually every file in the ACPICA core subsystem, the iASL compiler, and
8638the tools/utilities.
8639
8640Implemented a change to allow the host to override any ACPI table,
8641including
8642dynamically loaded tables. Previously, only the DSDT could be replaced by
8643the
8644host. With this change, the AcpiOsTableOverride interface is called for
8645each
8646table found in the RSDT/XSDT during ACPICA initialization, and also
8647whenever
8648a table is dynamically loaded via the AML Load operator.
8649
8650Updated FADT flag definitions, especially the Boot Architecture flags.
8651
8652Debugger: For the Find command, automatically pad the input ACPI name
8653with
8654underscores if the name is shorter than 4 characters. This enables a
8655match
8656with the actual namespace entry which is itself padded with underscores.
8657
8658Example Code and Data Size: These are the sizes for the OS-independent
8659acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8660debug version of the code includes the debug output trace mechanism and
8661has a
8662much larger code and data size.
8663
8664  Previous Release:
8665    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8666    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8667  Current Release:
8668    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8669    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8670
86712) iASL Compiler/Disassembler and Tools:
8672
8673Fix build error under Bison-2.4.
8674
8675Dissasembler: Enhanced FADT support. Added decoding of the Boot
8676Architecture
8677flags. Now decode all flags, regardless of the FADT version. Flag output
8678includes the FADT version which first defined each flag.
8679
8680The iASL -g option now dumps the RSDT to a file (in addition to the FADT
8681and
8682DSDT). Windows only.
8683
8684----------------------------------------
868504 December 2008. Summary of changes for version 20081204:
8686
86871) ACPI CA Core Subsystem:
8688
8689The ACPICA Programmer Reference has been completely updated and revamped
8690for
8691this release. This includes updates to the external interfaces, OSL
8692interfaces, the overview sections, and the debugger reference.
8693
8694Several new ACPICA interfaces have been implemented and documented in the
8695programmer reference:
8696AcpiReset - Writes the reset value to the FADT-defined reset register.
8697AcpiDisableAllGpes - Disable all available GPEs.
8698AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8699AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8700AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8701AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8702AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8703
8704Most of the public ACPI hardware-related interfaces have been moved to a
8705new
8706file, components/hardware/hwxface.c
8707
8708Enhanced the FADT parsing and low-level ACPI register access: The ACPI
8709register lengths within the FADT are now used, and the low level ACPI
8710register access no longer hardcodes the ACPI register lengths. Given that
8711there may be some risk in actually trusting the FADT register lengths, a
8712run-
8713time option was added to fall back to the default hardcoded lengths if
8714the
8715FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
8716option is set to true for now, and a warning is issued if a suspicious
8717FADT
8718register length is overridden with the default value.
8719
8720Fixed a reference count issue in NsRepairObject. This problem was
8721introduced
8722in version 20081031 as part of a fix to repair Buffer objects within
8723Packages. Lin Ming.
8724
8725Added semaphore support to the Linux/Unix application OS-services layer
8726(OSL). ACPICA BZ 448. Lin Ming.
8727
8728Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
8729will
8730be implemented in the OSL, or will binary semaphores be used instead.
8731
8732Example Code and Data Size: These are the sizes for the OS-independent
8733acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8734debug version of the code includes the debug output trace mechanism and
8735has a
8736much larger code and data size.
8737
8738  Previous Release:
8739    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8740    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8741  Current Release:
8742    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8743    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8744
87452) iASL Compiler/Disassembler and Tools:
8746
8747iASL: Completed the '-e' option to include additional ACPI tables in
8748order
8749to
8750aid with disassembly and External statement generation. ACPICA BZ 742.
8751Lin
8752Ming.
8753
8754iASL: Removed the "named object in while loop" error. The compiler cannot
8755determine how many times a loop will execute. ACPICA BZ 730.
8756
8757Disassembler: Implemented support for FADT revision 2 (MS extension).
8758ACPICA
8759BZ 743.
8760
8761Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
8762MCFG).
8763
8764----------------------------------------
876531 October 2008. Summary of changes for version 20081031:
8766
87671) ACPI CA Core Subsystem:
8768
8769Restructured the ACPICA header files into public/private. acpi.h now
8770includes
8771only the "public" acpica headers. All other acpica headers are "private"
8772and
8773should not be included by acpica users. One new file, accommon.h is used
8774to
8775include the commonly used private headers for acpica code generation.
8776Future
8777plans include moving all private headers to a new subdirectory.
8778
8779Implemented an automatic Buffer->String return value conversion for
8780predefined ACPI methods. For these methods (such as _BIF), added
8781automatic
8782conversion for return objects that are required to be a String, but a
8783Buffer
8784was found instead. This can happen when reading string battery data from
8785an
8786operation region, because it used to be difficult to convert the data
8787from
8788buffer to string from within the ASL. Ensures that the host OS is
8789provided
8790with a valid null-terminated string. Linux BZ 11822.
8791
8792Updated the FACS waking vector interfaces. Split
8793AcpiSetFirmwareWakingVector
8794into two: one for the 32-bit vector, another for the 64-bit vector. This
8795is
8796required because the host OS must setup the wake much differently for
8797each
8798vector (real vs. protected mode, etc.) and the interface itself should
8799not
8800be
8801deciding which vector to use. Also, eliminated the
8802GetFirmwareWakingVector
8803interface, as it served no purpose (only the firmware reads the vector,
8804OS
8805only writes the vector.) ACPICA BZ 731.
8806
8807Implemented a mechanism to escape infinite AML While() loops. Added a
8808loop
8809counter to force exit from AML While loops if the count becomes too
8810large.
8811This can occur in poorly written AML when the hardware does not respond
8812within a while loop and the loop does not implement a timeout. The
8813maximum
8814loop count is configurable. A new exception code is returned when a loop
8815is
8816broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8817
8818Optimized the execution of AML While loops. Previously, a control state
8819object was allocated and freed for each execution of the loop. The
8820optimization is to simply reuse the control state for each iteration.
8821This
8822speeds up the raw loop execution time by about 5%.
8823
8824Enhanced the implicit return mechanism. For Windows compatibility, return
8825an
8826implicit integer of value zero for methods that contain no executable
8827code.
8828Such methods are seen in the field as stubs (presumably), and can cause
8829drivers to fail if they expect a return value. Lin Ming.
8830
8831Allow multiple backslashes as root prefixes in namepaths. In a fully
8832qualified namepath, allow multiple backslash prefixes. This can happen
8833(and
8834is seen in the field) because of the use of a double-backslash in strings
8835(since backslash is the escape character) causing confusion. ACPICA BZ
8836739
8837Lin Ming.
8838
8839Emit a warning if two different FACS or DSDT tables are discovered in the
8840FADT. Checks if there are two valid but different addresses for the FACS
8841and
8842DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
8843
8844Consolidated the method argument count validation code. Merged the code
8845that
8846validates control method argument counts into the predefined validation
8847module. Eliminates possible multiple warnings for incorrect argument
8848counts.
8849
8850Implemented ACPICA example code. Includes code for ACPICA initialization,
8851handler installation, and calling a control method. Available at
8852source/tools/examples.
8853
8854Added a global pointer for FACS table to simplify internal FACS access.
8855Use
8856the global pointer instead of using AcpiGetTableByIndex for each FACS
8857access.
8858This simplifies the code for the Global Lock and the Firmware Waking
8859Vector(s).
8860
8861Example Code and Data Size: These are the sizes for the OS-independent
8862acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8863debug version of the code includes the debug output trace mechanism and
8864has a
8865much larger code and data size.
8866
8867  Previous Release:
8868    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
8869    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
8870  Current Release:
8871    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8872    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8873
88742) iASL Compiler/Disassembler and Tools:
8875
8876iASL: Improved disassembly of external method calls. Added the -e option
8877to
8878allow the inclusion of additional ACPI tables to help with the
8879disassembly
8880of
8881method invocations and the generation of external declarations during the
8882disassembly. Certain external method invocations cannot be disassembled
8883properly without the actual declaration of the method. Use the -e option
8884to
8885include the table where the external method(s) are actually declared.
8886Most
8887useful for disassembling SSDTs that make method calls back to the master
8888DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
8889-d
8890-e dsdt.aml ssdt1.aml
8891
8892iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
8893problem where the use of an alias within a namepath would result in a not
8894found error or cause the compiler to fault. Also now allows forward
8895references from the Alias operator itself. ACPICA BZ 738.
8896
8897----------------------------------------
889826 September 2008. Summary of changes for version 20080926:
8899
89001) ACPI CA Core Subsystem:
8901
8902Designed and implemented a mechanism to validate predefined ACPI methods
8903and
8904objects. This code validates the predefined ACPI objects (objects whose
8905names
8906start with underscore) that appear in the namespace, at the time they are
8907evaluated. The argument count and the type of the returned object are
8908validated against the ACPI specification. The purpose of this validation
8909is
8910to detect problems with the BIOS-implemented predefined ACPI objects
8911before
8912the results are returned to the ACPI-related drivers. Future enhancements
8913may
8914include actual repair of incorrect return objects where possible. Two new
8915files are nspredef.c and acpredef.h.
8916
8917Fixed a fault in the AML parser if a memory allocation fails during the
8918Op
8919completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
8920
8921Fixed an issue with implicit return compatibility. This change improves
8922the
8923implicit return mechanism to be more compatible with the MS interpreter.
8924Lin
8925Ming, ACPICA BZ 349.
8926
8927Implemented support for zero-length buffer-to-string conversions. Allow
8928zero
8929length strings during interpreter buffer-to-string conversions. For
8930example,
8931during the ToDecimalString and ToHexString operators, as well as implicit
8932conversions. Fiodor Suietov, ACPICA BZ 585.
8933
8934Fixed two possible memory leaks in the error exit paths of
8935AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
8936are
8937similar in that they use a stack of state objects in order to eliminate
8938recursion. The stack must be fully unwound and deallocated if an error
8939occurs. Lin Ming. ACPICA BZ 383.
8940
8941Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
8942global
8943ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
8944Moore ACPICA BZ 442.
8945
8946Removed the obsolete version number in module headers. Removed the
8947"$Revision" number that appeared in each module header. This version
8948number
8949was useful under SourceSafe and CVS, but has no meaning under git. It is
8950not
8951only incorrect, it could also be misleading.
8952
8953Example Code and Data Size: These are the sizes for the OS-independent
8954acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8955debug version of the code includes the debug output trace mechanism and
8956has a
8957much larger code and data size.
8958
8959  Previous Release:
8960    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8961    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
8962  Current Release:
8963    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
8964    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
8965
8966----------------------------------------
896729 August 2008. Summary of changes for version 20080829:
8968
89691) ACPI CA Core Subsystem:
8970
8971Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
8972Reference. Changes include the elimination of cheating on the Object
8973field
8974for the DdbHandle subtype, addition of a reference class field to
8975differentiate the various reference types (instead of an AML opcode), and
8976the
8977cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
8978
8979Reduce an error to a warning for an incorrect method argument count.
8980Previously aborted with an error if too few arguments were passed to a
8981control method via the external ACPICA interface. Now issue a warning
8982instead
8983and continue. Handles the case where the method inadvertently declares
8984too
8985many arguments, but does not actually use the extra ones. Applies mainly
8986to
8987the predefined methods. Lin Ming. Linux BZ 11032.
8988
8989Disallow the evaluation of named object types with no intrinsic value.
8990Return
8991AE_TYPE for objects that have no value and therefore evaluation is
8992undefined:
8993Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
8994of
8995these types were allowed, but an exception would be generated at some
8996point
8997during the evaluation. Now, the error is generated up front.
8998
8999Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9000(nsnames.c). Fixes a leak in the error exit path.
9001
9002Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9003debug
9004levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9005ACPI_EXCEPTION
9006interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9007ACPI_LV_EVENTS.
9008
9009Removed obsolete and/or unused exception codes from the acexcep.h header.
9010There is the possibility that certain device drivers may be affected if
9011they
9012use any of these exceptions.
9013
9014The ACPICA documentation has been added to the public git source tree,
9015under
9016acpica/documents. Included are the ACPICA programmer reference, the iASL
9017compiler reference, and the changes.txt release logfile.
9018
9019Example Code and Data Size: These are the sizes for the OS-independent
9020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9021debug version of the code includes the debug output trace mechanism and
9022has a
9023much larger code and data size.
9024
9025  Previous Release:
9026    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9027    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9028  Current Release:
9029    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9030    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9031
90322) iASL Compiler/Disassembler and Tools:
9033
9034Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9035defines _SCP with 3 arguments. Previous versions defined it with only 1
9036argument. iASL now allows both definitions.
9037
9038iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9039zero-
9040length subtables when disassembling ACPI tables. Also fixed a couple of
9041errors where a full 16-bit table type field was not extracted from the
9042input
9043properly.
9044
9045acpisrc: Improve comment counting mechanism for generating source code
9046statistics. Count first and last lines of multi-line comments as
9047whitespace,
9048not comment lines. Handle Linux legal header in addition to standard
9049acpica
9050header.
9051
9052----------------------------------------
9053
905429 July 2008. Summary of changes for version 20080729:
9055
90561) ACPI CA Core Subsystem:
9057
9058Fix a possible deadlock in the GPE dispatch. Remove call to
9059AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9060attempt
9061to acquire the GPE lock but can deadlock since the GPE lock is already
9062held
9063at dispatch time. This code was introduced in version 20060831 as a
9064response
9065to Linux BZ 6881 and has since been removed from Linux.
9066
9067Add a function to dereference returned reference objects. Examines the
9068return
9069object from a call to AcpiEvaluateObject. Any Index or RefOf references
9070are
9071automatically dereferenced in an attempt to return something useful
9072(these
9073reference types cannot be converted into an external ACPI_OBJECT.)
9074Provides
9075MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9076
9077x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9078subtables for the MADT and one new subtable for the SRAT. Includes
9079disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9080x2APIC
9081Specification, June 2008.
9082
9083Additional error checking for pathname utilities. Add error check after
9084all
9085calls to AcpiNsGetPathnameLength. Add status return from
9086AcpiNsBuildExternalPath and check after all calls. Add parameter
9087validation
9088to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9089
9090Return status from the global init function AcpiUtGlobalInitialize. This
9091is
9092used by both the kernel subsystem and the utilities such as iASL
9093compiler.
9094The function could possibly fail when the caches are initialized. Yang
9095Yi.
9096
9097Add a function to decode reference object types to strings. Created for
9098improved error messages.
9099
9100Improve object conversion error messages. Better error messages during
9101object
9102conversion from internal to the external ACPI_OBJECT. Used for external
9103calls
9104to AcpiEvaluateObject.
9105
9106Example Code and Data Size: These are the sizes for the OS-independent
9107acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9108debug version of the code includes the debug output trace mechanism and
9109has a
9110much larger code and data size.
9111
9112  Previous Release:
9113    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9114    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9115  Current Release:
9116    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9117    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9118
91192) iASL Compiler/Disassembler and Tools:
9120
9121Debugger: fix a possible hang when evaluating non-methods. Fixes a
9122problem
9123introduced in version 20080701. If the object being evaluated (via
9124execute
9125command) is not a method, the debugger can hang while trying to obtain
9126non-
9127existent parameters.
9128
9129iASL: relax error for using reserved "_T_x" identifiers. These names can
9130appear in a disassembled ASL file if they were emitted by the original
9131compiler. Instead of issuing an error or warning and forcing the user to
9132manually change these names, issue a remark instead.
9133
9134iASL: error if named object created in while loop. Emit an error if any
9135named
9136object is created within a While loop. If allowed, this code will
9137generate
9138a
9139run-time error on the second iteration of the loop when an attempt is
9140made
9141to
9142create the same named object twice. ACPICA bugzilla 730.
9143
9144iASL: Support absolute pathnames for include files. Add support for
9145absolute
9146pathnames within the Include operator. previously, only relative
9147pathnames
9148were supported.
9149
9150iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9151Descriptor.
9152The ACPI spec requires one interrupt minimum. BZ 423
9153
9154iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9155Handles the case for the Interrupt Resource Descriptor where
9156the ResourceSource argument is omitted but ResourceSourceIndex
9157is present. Now leave room for the Index. BZ 426
9158
9159iASL: Prevent error message if CondRefOf target does not exist. Fixes
9160cases
9161where an error message is emitted if the target does not exist. BZ 516
9162
9163iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9164(get ACPI tables on Windows). This was apparently broken in version
916520070919.
9166
9167AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9168where
9169the EOF happens immediately after the last table in the input file. Print
9170completion message. Previously, no message was displayed in this case.
9171
9172----------------------------------------
917301 July 2008. Summary of changes for version 20080701:
9174
91750) Git source tree / acpica.org
9176
9177Fixed a problem where a git-clone from http would not transfer the entire
9178source tree.
9179
91801) ACPI CA Core Subsystem:
9181
9182Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9183enable bit. Now performs a read-change-write of the enable register
9184instead
9185of simply writing out the cached enable mask. This will prevent
9186inadvertent
9187enabling of GPEs if a rogue GPE is received during initialization (before
9188GPE
9189handlers are installed.)
9190
9191Implemented a copy for dynamically loaded tables. Previously, dynamically
9192loaded tables were simply mapped - but on some machines this memory is
9193corrupted after suspend. Now copy the table to a local buffer. For the
9194OpRegion case, added checksum verify. Use the table length from the table
9195header, not the region length. For the Buffer case, use the table length
9196also. Dennis Noordsij, Bob Moore. BZ 10734
9197
9198Fixed a problem where the same ACPI table could not be dynamically loaded
9199and
9200unloaded more than once. Without this change, a table cannot be loaded
9201again
9202once it has been loaded/unloaded one time. The current mechanism does not
9203unregister a table upon an unload. During a load, if the same table is
9204found,
9205this no longer returns an exception. BZ 722
9206
9207Fixed a problem where the wrong descriptor length was calculated for the
9208EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9209EndTag
9210are calculated as 12 bytes long, but the actual length in the internal
9211descriptor is 16 because of the round-up to 8 on the 64-bit build.
9212Reported
9213by Linn Crosetto. BZ 728
9214
9215Fixed a possible memory leak in the Unload operator. The DdbHandle
9216returned
9217by Load() did not have its reference count decremented during unload,
9218leading
9219to a memory leak. Lin Ming. BZ 727
9220
9221Fixed a possible memory leak when deleting thermal/processor objects. Any
9222associated notify handlers (and objects) were not being deleted. Fiodor
9223Suietov. BZ 506
9224
9225Fixed the ordering of the ASCII names in the global mutex table to match
9226the
9227actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9228only.
9229Vegard Nossum. BZ 726
9230
9231Enhanced the AcpiGetObjectInfo interface to return the number of required
9232arguments if the object is a control method. Added this call to the
9233debugger
9234so the proper number of default arguments are passed to a method. This
9235prevents a warning when executing methods from AcpiExec.
9236
9237Added a check for an invalid handle in AcpiGetObjectInfo. Return
9238AE_BAD_PARAMETER if input handle is invalid. BZ 474
9239
9240Fixed an extraneous warning from exconfig.c on the 64-bit build.
9241
9242Example Code and Data Size: These are the sizes for the OS-independent
9243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9244debug version of the code includes the debug output trace mechanism and
9245has a
9246much larger code and data size.
9247
9248  Previous Release:
9249    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9250    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9251  Current Release:
9252    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9253    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9254
92552) iASL Compiler/Disassembler and Tools:
9256
9257iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9258resource descriptor names.
9259
9260iASL: Detect invalid ASCII characters in input (windows version). Removed
9261the
9262"-CF" flag from the flex compile, enables correct detection of non-ASCII
9263characters in the input. BZ 441
9264
9265iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9266the
9267"result of operation not used" warning when the DDB handle returned from
9268LoadTable is not used. The warning is not needed. BZ 590
9269
9270AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9271method
9272to
9273pass address of table to the AML. Added option to disable OpRegion
9274simulation
9275to allow creation of an OpRegion with a real address that was passed to
9276_CFG.
9277All of this allows testing of the Load and Unload operators from
9278AcpiExec.
9279
9280Debugger: update tables command for unloaded tables. Handle unloaded
9281tables
9282and use the standard table header output routine.
9283
9284----------------------------------------
928509 June 2008. Summary of changes for version 20080609:
9286
92871) ACPI CA Core Subsystem:
9288
9289Implemented a workaround for reversed _PRT entries. A significant number
9290of
9291BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9292change dynamically detects and repairs this problem. Provides
9293compatibility
9294with MS ACPI. BZ 6859
9295
9296Simplified the internal ACPI hardware interfaces to eliminate the locking
9297flag parameter from Register Read/Write. Added a new external interface,
9298AcpiGetRegisterUnlocked.
9299
9300Fixed a problem where the invocation of a GPE control method could hang.
9301This
9302was a regression introduced in 20080514. The new method argument count
9303validation mechanism can enter an infinite loop when a GPE method is
9304dispatched. Problem fixed by removing the obsolete code that passed GPE
9305block
9306information to the notify handler via the control method parameter
9307pointer.
9308
9309Fixed a problem where the _SST execution status was incorrectly returned
9310to
9311the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9312in
931320080514. _SST is optional and a NOT_FOUND exception should never be
9314returned. BZ 716
9315
9316Fixed a problem where a deleted object could be accessed from within the
9317AML
9318parser. This was a regression introduced in version 20080123 as a fix for
9319the
9320Unload operator. Lin Ming. BZ 10669
9321
9322Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9323operands
9324and eliminated the use of a negative index in a loop. Operands are now
9325displayed in the correct order, not backwards. This also fixes a
9326regression
9327introduced in 20080514 on 64-bit systems where the elimination of
9328ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9329715
9330
9331Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9332exit
9333path did not delete a locally allocated structure.
9334
9335Updated definitions for the DMAR and SRAT tables to synchronize with the
9336current specifications. Includes disassembler support.
9337
9338Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9339loop termination value was used. Loop terminated on iteration early,
9340missing
9341one mutex. Linn Crosetto
9342
9343Example Code and Data Size: These are the sizes for the OS-independent
9344acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9345debug version of the code includes the debug output trace mechanism and
9346has a
9347much larger code and data size.
9348
9349  Previous Release:
9350    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9351    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9352  Current Release:
9353    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9354    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9355
93562) iASL Compiler/Disassembler and Tools:
9357
9358Disassembler: Implemented support for EisaId() within _CID objects. Now
9359disassemble integer _CID objects back to EisaId invocations, including
9360multiple integers within _CID packages. Includes single-step support for
9361debugger also.
9362
9363Disassembler: Added support for DMAR and SRAT table definition changes.
9364
9365----------------------------------------
936614 May 2008. Summary of changes for version 20080514:
9367
93681) ACPI CA Core Subsystem:
9369
9370Fixed a problem where GPEs were enabled too early during the ACPICA
9371initialization. This could lead to "handler not installed" errors on some
9372machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9373This
9374ensures that all operation regions and devices throughout the namespace
9375have
9376been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9377
9378Implemented a change to the enter sleep code. Moved execution of the _GTS
9379method to just before setting sleep enable bit. The execution was moved
9380from
9381AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9382immediately before the SLP_EN bit is set, as per the ACPI specification.
9383Luming Yu, BZ 1653.
9384
9385Implemented a fix to disable unknown GPEs (2nd version). Now always
9386disable
9387the GPE, even if ACPICA thinks that that it is already disabled. It is
9388possible that the AML or some other code has enabled the GPE unbeknownst
9389to
9390the ACPICA code.
9391
9392Fixed a problem with the Field operator where zero-length fields would
9393return
9394an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9395ASL
9396field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9397
9398Implemented a fix for the Load operator, now load the table at the
9399namespace
9400root. This reverts a change introduced in version 20071019. The table is
9401now
9402loaded at the namespace root even though this goes against the ACPI
9403specification. This provides compatibility with other ACPI
9404implementations.
9405The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9406Ming.
9407
9408Fixed a problem where ACPICA would not Load() tables with unusual
9409signatures.
9410Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9411acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9412Therefore, signature validation is worthless. Apparently MS ACPI accepts
9413such
9414signatures, ACPICA must be compatible. BZ 10454.
9415
9416Fixed a possible negative array index in AcpiUtValidateException. Added
9417NULL
9418fields to the exception string arrays to eliminate a -1 subtraction on
9419the
9420SubStatus field.
9421
9422Updated the debug tracking macros to reduce overall code and data size.
9423Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9424instead of pointers to static strings. Jan Beulich and Bob Moore.
9425
9426Implemented argument count checking in control method invocation via
9427AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9428too
9429many. This applies only to extern programmatic control method execution,
9430not
9431method-to-method calls within the AML. Lin Ming.
9432
9433Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9434no
9435longer needed, especially with the removal of 16-bit support. It was
9436replaced
9437mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9438bit
9439on
944032/64-bit platforms is required.
9441
9442Added the C const qualifier for appropriate string constants -- mostly
9443MODULE_NAME and printf format strings. Jan Beulich.
9444
9445Example Code and Data Size: These are the sizes for the OS-independent
9446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9447debug version of the code includes the debug output trace mechanism and
9448has a
9449much larger code and data size.
9450
9451  Previous Release:
9452    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9453    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9454  Current Release:
9455    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9456    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9457
94582) iASL Compiler/Disassembler and Tools:
9459
9460Implemented ACPI table revision ID validation in the disassembler. Zero
9461is
9462always invalid. For DSDTs, the ID controls the interpreter integer width.
94631
9464means 32-bit and this is unusual. 2 or greater is 64-bit.
9465
9466----------------------------------------
946721 March 2008. Summary of changes for version 20080321:
9468
94691) ACPI CA Core Subsystem:
9470
9471Implemented an additional change to the GPE support in order to suppress
9472spurious or stray GPEs. The AcpiEvDisableGpe function will now
9473permanently
9474disable incoming GPEs that are neither enabled nor disabled -- meaning
9475that
9476the GPE is unknown to the system. This should prevent future interrupt
9477floods
9478from that GPE. BZ 6217 (Zhang Rui)
9479
9480Fixed a problem where NULL package elements were not returned to the
9481AcpiEvaluateObject interface correctly. The element was simply ignored
9482instead of returning a NULL ACPI_OBJECT package element, potentially
9483causing
9484a buffer overflow and/or confusing the caller who expected a fixed number
9485of
9486elements. BZ 10132 (Lin Ming, Bob Moore)
9487
9488Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9489Dword,
9490Qword), Field, BankField, and IndexField operators when invoked from
9491inside
9492an executing control method. In this case, these operators created
9493namespace
9494nodes that were incorrectly left marked as permanent nodes instead of
9495temporary nodes. This could cause a problem if there is race condition
9496between an exiting control method and a running namespace walk. (Reported
9497by
9498Linn Crosetto)
9499
9500Fixed a problem where the CreateField and CreateXXXField operators would
9501incorrectly allow duplicate names (the name of the field) with no
9502exception
9503generated.
9504
9505Implemented several changes for Notify handling. Added support for new
9506Notify
9507values (ACPI 2.0+) and improved the Notify debug output. Notify on
9508PowerResource objects is no longer allowed, as per the ACPI
9509specification.
9510(Bob Moore, Zhang Rui)
9511
9512All Reference Objects returned via the AcpiEvaluateObject interface are
9513now
9514marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9515for
9516NULL objects - either NULL package elements or unresolved named
9517references.
9518
9519Fixed a problem where an extraneous debug message was produced for
9520package
9521objects (when debugging enabled). The message "Package List length larger
9522than NumElements count" is now produced in the correct case, and is now
9523an
9524error message rather than a debug message. Added a debug message for the
9525opposite case, where NumElements is larger than the Package List (the
9526package
9527will be padded out with NULL elements as per the ACPI spec.)
9528
9529Implemented several improvements for the output of the ASL "Debug" object
9530to
9531clarify and keep all data for a given object on one output line.
9532
9533Fixed two size calculation issues with the variable-length Start
9534Dependent
9535resource descriptor.
9536
9537Example Code and Data Size: These are the sizes for the OS-independent
9538acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9539debug version of the code includes the debug output trace mechanism and
9540has
9541a much larger code and data size.
9542
9543  Previous Release:
9544    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9545    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9546  Current Release:
9547    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9548    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9549
95502) iASL Compiler/Disassembler and Tools:
9551
9552Fixed a problem with the use of the Switch operator where execution of
9553the
9554containing method by multiple concurrent threads could cause an
9555AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9556actual Switch opcode, it must be simulated with local named temporary
9557variables and if/else pairs. The solution chosen was to mark any method
9558that
9559uses Switch as Serialized, thus preventing multiple thread entries. BZ
9560469.
9561
9562----------------------------------------
956313 February 2008. Summary of changes for version 20080213:
9564
95651) ACPI CA Core Subsystem:
9566
9567Implemented another MS compatibility design change for GPE/Notify
9568handling.
9569GPEs are now cleared/enabled asynchronously to allow all pending notifies
9570to
9571complete first. It is expected that the OSL will queue the enable request
9572behind all pending notify requests (may require changes to the local host
9573OSL
9574in AcpiOsExecute). Alexey Starikovskiy.
9575
9576Fixed a problem where buffer and package objects passed as arguments to a
9577control method via the external AcpiEvaluateObject interface could cause
9578an
9579AE_AML_INTERNAL exception depending on the order and type of operators
9580executed by the target control method.
9581
9582Fixed a problem where resource descriptor size optimization could cause a
9583problem when a _CRS resource template is passed to a _SRS method. The
9584_SRS
9585resource template must use the same descriptors (with the same size) as
9586returned from _CRS. This change affects the following resource
9587descriptors:
9588IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
95899487)
9590
9591Fixed a problem where a CopyObject to RegionField, BankField, and
9592IndexField
9593objects did not perform an implicit conversion as it should. These types
9594must
9595retain their initial type permanently as per the ACPI specification.
9596However,
9597a CopyObject to all other object types should not perform an implicit
9598conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9599
9600Fixed a problem with the AcpiGetDevices interface where the mechanism to
9601match device CIDs did not examine the entire list of available CIDs, but
9602instead aborted on the first non-matching CID. Andrew Patterson.
9603
9604Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
9605was
9606inadvertently changed to return a 16-bit value instead of a 32-bit value,
9607truncating the upper dword of a 64-bit value. This macro is only used to
9608display debug output, so no incorrect calculations were made. Also,
9609reimplemented the macro so that a 64-bit shift is not performed by
9610inefficient compilers.
9611
9612Added missing va_end statements that should correspond with each va_start
9613statement.
9614
9615Example Code and Data Size: These are the sizes for the OS-independent
9616acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9617debug version of the code includes the debug output trace mechanism and
9618has
9619a much larger code and data size.
9620
9621  Previous Release:
9622    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9623    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9624  Current Release:
9625    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9626    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9627
96282) iASL Compiler/Disassembler and Tools:
9629
9630Implemented full disassembler support for the following new ACPI tables:
9631BERT, EINJ, and ERST. Implemented partial disassembler support for the
9632complicated HEST table. These tables support the Windows Hardware Error
9633Architecture (WHEA).
9634
9635----------------------------------------
963623 January 2008. Summary of changes for version 20080123:
9637
96381) ACPI CA Core Subsystem:
9639
9640Added the 2008 copyright to all module headers and signons. This affects
9641virtually every file in the ACPICA core subsystem, the iASL compiler, and
9642the tools/utilities.
9643
9644Fixed a problem with the SizeOf operator when used with Package and
9645Buffer
9646objects. These objects have deferred execution for some arguments, and
9647the
9648execution is now completed before the SizeOf is executed. This problem
9649caused
9650unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
9651BZ
96529558
9653
9654Implemented an enhancement to the interpreter "slack mode". In the
9655absence
9656of
9657an explicit return or an implicitly returned object from the last
9658executed
9659opcode, a control method will now implicitly return an integer of value 0
9660for
9661Microsoft compatibility. (Lin Ming) BZ 392
9662
9663Fixed a problem with the Load operator where an exception was not
9664returned
9665in
9666the case where the table is already loaded. (Lin Ming) BZ 463
9667
9668Implemented support for the use of DDBHandles as an Indexed Reference, as
9669per
9670the ACPI spec. (Lin Ming) BZ 486
9671
9672Implemented support for UserTerm (Method invocation) for the Unload
9673operator
9674as per the ACPI spec. (Lin Ming) BZ 580
9675
9676Fixed a problem with the LoadTable operator where the OemId and
9677OemTableId
9678input strings could cause unexpected failures if they were shorter than
9679the
9680maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9681
9682Implemented support for UserTerm (Method invocation) for the Unload
9683operator
9684as per the ACPI spec. (Lin Ming) BZ 580
9685
9686Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
9687HEST,
9688IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9689
9690Example Code and Data Size: These are the sizes for the OS-independent
9691acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9692debug version of the code includes the debug output trace mechanism and
9693has
9694a much larger code and data size.
9695
9696  Previous Release:
9697    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9698    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9699  Current Release:
9700    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9701    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9702
97032) iASL Compiler/Disassembler and Tools:
9704
9705Implemented support in the disassembler for checksum validation on
9706incoming
9707binary DSDTs and SSDTs. If incorrect, a message is displayed within the
9708table
9709header dump at the start of the disassembly.
9710
9711Implemented additional debugging information in the namespace listing
9712file
9713created during compilation. In addition to the namespace hierarchy, the
9714full
9715pathname to each namespace object is displayed.
9716
9717Fixed a problem with the disassembler where invalid ACPI tables could
9718cause
9719faults or infinite loops.
9720
9721Fixed an unexpected parse error when using the optional "parameter types"
9722list in a control method declaration. (Lin Ming) BZ 397
9723
9724Fixed a problem where two External declarations with the same name did
9725not
9726cause an error (Lin Ming) BZ 509
9727
9728Implemented support for full TermArgs (adding Argx, Localx and method
9729invocation) for the ParameterData parameter to the LoadTable operator.
9730(Lin
9731Ming) BZ 583,587
9732
9733----------------------------------------
973419 December 2007. Summary of changes for version 20071219:
9735
97361) ACPI CA Core Subsystem:
9737
9738Implemented full support for deferred execution for the TermArg string
9739arguments for DataTableRegion. This enables forward references and full
9740operand resolution for the three string arguments. Similar to
9741OperationRegion
9742deferred argument execution.) Lin Ming. BZ 430
9743
9744Implemented full argument resolution support for the BankValue argument
9745to
9746BankField. Previously, only constants were supported, now any TermArg may
9747be
9748used. Lin Ming BZ 387, 393
9749
9750Fixed a problem with AcpiGetDevices where the search of a branch of the
9751device tree could be terminated prematurely. In accordance with the ACPI
9752specification, the search down the current branch is terminated if a
9753device
9754is both not present and not functional (instead of just not present.)
9755Yakui
9756Zhao.
9757
9758Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
9759if
9760the underlying AML code changed the GPE enable registers. Now, any
9761unknown
9762incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
9763disabled
9764instead of simply ignored. Rui Zhang.
9765
9766Fixed a problem with Index Fields where the Index register was
9767incorrectly
9768limited to a maximum of 32 bits. Now any size may be used.
9769
9770Fixed a couple memory leaks associated with "implicit return" objects
9771when
9772the AML Interpreter slack mode is enabled. Lin Ming BZ 349
9773
9774Example Code and Data Size: These are the sizes for the OS-independent
9775acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9776debug version of the code includes the debug output trace mechanism and
9777has
9778a much larger code and data size.
9779
9780  Previous Release:
9781    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9782    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9783  Current Release:
9784    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9785    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9786
9787----------------------------------------
978814 November 2007. Summary of changes for version 20071114:
9789
97901) ACPI CA Core Subsystem:
9791
9792Implemented event counters for each of the Fixed Events, the ACPI SCI
9793(interrupt) itself, and control methods executed. Named
9794AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
9795These
9796should be useful for debugging and statistics.
9797
9798Implemented a new external interface, AcpiGetStatistics, to retrieve the
9799contents of the various event counters. Returns the current values for
9800AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
9801AcpiMethodCount. The interface can be expanded in the future if new
9802counters
9803are added. Device drivers should use this interface rather than access
9804the
9805counters directly.
9806
9807Fixed a problem with the FromBCD and ToBCD operators. With some
9808compilers,
9809the ShortDivide function worked incorrectly, causing problems with the
9810BCD
9811functions with large input values. A truncation from 64-bit to 32-bit
9812inadvertently occurred. Internal BZ 435. Lin Ming
9813
9814Fixed a problem with Index references passed as method arguments.
9815References
9816passed as arguments to control methods were dereferenced immediately
9817(before
9818control was passed to the called method). The references are now
9819correctly
9820passed directly to the called method. BZ 5389. Lin Ming
9821
9822Fixed a problem with CopyObject used in conjunction with the Index
9823operator.
9824The reference was incorrectly dereferenced before the copy. The reference
9825is
9826now correctly copied. BZ 5391. Lin Ming
9827
9828Fixed a problem with Control Method references within Package objects.
9829These
9830references are now correctly generated. This completes the package
9831construction overhaul that began in version 20071019.
9832
9833Example Code and Data Size: These are the sizes for the OS-independent
9834acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9835debug version of the code includes the debug output trace mechanism and
9836has
9837a much larger code and data size.
9838
9839  Previous Release:
9840    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9841    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9842  Current Release:
9843    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9844    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9845
9846
98472) iASL Compiler/Disassembler and Tools:
9848
9849The AcpiExec utility now installs handlers for all of the predefined
9850Operation Region types. New types supported are: PCI_Config, CMOS, and
9851PCIBARTarget.
9852
9853Fixed a problem with the 64-bit version of AcpiExec where the extended
9854(64-
9855bit) address fields for the DSDT and FACS within the FADT were not being
9856used, causing truncation of the upper 32-bits of these addresses. Lin
9857Ming
9858and Bob Moore
9859
9860----------------------------------------
986119 October 2007. Summary of changes for version 20071019:
9862
98631) ACPI CA Core Subsystem:
9864
9865Fixed a problem with the Alias operator when the target of the alias is a
9866named ASL operator that opens a new scope -- Scope, Device,
9867PowerResource,
9868Processor, and ThermalZone. In these cases, any children of the original
9869operator could not be accessed via the alias, potentially causing
9870unexpected
9871AE_NOT_FOUND exceptions. (BZ 9067)
9872
9873Fixed a problem with the Package operator where all named references were
9874created as object references and left otherwise unresolved. According to
9875the
9876ACPI specification, a Package can only contain Data Objects or references
9877to
9878control methods. The implication is that named references to Data Objects
9879(Integer, Buffer, String, Package, BufferField, Field) should be resolved
9880immediately upon package creation. This is the approach taken with this
9881change. References to all other named objects (Methods, Devices, Scopes,
9882etc.) are all now properly created as reference objects. (BZ 5328)
9883
9884Reverted a change to Notify handling that was introduced in version
988520070508. This version changed the Notify handling from asynchronous to
9886fully synchronous (Device driver Notify handling with respect to the
9887Notify
9888ASL operator). It was found that this change caused more problems than it
9889solved and was removed by most users.
9890
9891Fixed a problem with the Increment and Decrement operators where the type
9892of
9893the target object could be unexpectedly and incorrectly changed. (BZ 353)
9894Lin Ming.
9895
9896Fixed a problem with the Load and LoadTable operators where the table
9897location within the namespace was ignored. Instead, the table was always
9898loaded into the root or current scope. Lin Ming.
9899
9900Fixed a problem with the Load operator when loading a table from a buffer
9901object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
9902
9903Fixed a problem with the Debug object where a store of a DdbHandle
9904reference
9905object to the Debug object could cause a fault.
9906
9907Added a table checksum verification for the Load operator, in the case
9908where
9909the load is from a buffer. (BZ 578).
9910
9911Implemented additional parameter validation for the LoadTable operator.
9912The
9913length of the input strings SignatureString, OemIdString, and OemTableId
9914are
9915now checked for maximum lengths. (BZ 582) Lin Ming.
9916
9917Example Code and Data Size: These are the sizes for the OS-independent
9918acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9919debug version of the code includes the debug output trace mechanism and
9920has
9921a much larger code and data size.
9922
9923  Previous Release:
9924    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
9925    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
9926  Current Release:
9927    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9928    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9929
9930
99312) iASL Compiler/Disassembler:
9932
9933Fixed a problem where if a single file was specified and the file did not
9934exist, no error message was emitted. (Introduced with wildcard support in
9935version 20070917.)
9936
9937----------------------------------------
993819 September 2007. Summary of changes for version 20070919:
9939
99401) ACPI CA Core Subsystem:
9941
9942Designed and implemented new external interfaces to install and remove
9943handlers for ACPI table-related events. Current events that are defined
9944are
9945LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
9946they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
9947AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
9948
9949Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
9950(acpi_serialized option on Linux) could cause some systems to hang during
9951initialization. (Bob Moore) BZ 8171
9952
9953Fixed a problem where objects of certain types (Device, ThermalZone,
9954Processor, PowerResource) can be not found if they are declared and
9955referenced from within the same control method (Lin Ming) BZ 341
9956
9957Example Code and Data Size: These are the sizes for the OS-independent
9958acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9959debug version of the code includes the debug output trace mechanism and
9960has
9961a much larger code and data size.
9962
9963  Previous Release:
9964    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
9965    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
9966  Current Release:
9967    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
9968    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
9969
9970
99712) iASL Compiler/Disassembler:
9972
9973Implemented support to allow multiple files to be compiled/disassembled
9974in
9975a
9976single invocation. This includes command line wildcard support for both
9977the
9978Windows and Unix versions of the compiler. This feature simplifies the
9979disassembly and compilation of multiple ACPI tables in a single
9980directory.
9981
9982----------------------------------------
998308 May 2007. Summary of changes for version 20070508:
9984
99851) ACPI CA Core Subsystem:
9986
9987Implemented a Microsoft compatibility design change for the handling of
9988the
9989Notify AML operator. Previously, notify handlers were dispatched and
9990executed completely asynchronously in a deferred thread. The new design
9991still executes the notify handlers in a different thread, but the
9992original
9993thread that executed the Notify() now waits at a synchronization point
9994for
9995the notify handler to complete. Some machines depend on a synchronous
9996Notify
9997operator in order to operate correctly.
9998
9999Implemented support to allow Package objects to be passed as method
10000arguments to the external AcpiEvaluateObject interface. Previously, this
10001would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10002implemented since there were no reserved control methods that required it
10003until recently.
10004
10005Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10006that
10007contained invalid non-zero values in reserved fields could cause later
10008failures because these fields have meaning in later revisions of the
10009FADT.
10010For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10011fields
10012are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10013
10014Fixed a problem where the Global Lock handle was not properly updated if
10015a
10016thread that acquired the Global Lock via executing AML code then
10017attempted
10018to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10019Joe
10020Liu.
10021
10022Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10023could be corrupted if the interrupt being removed was at the head of the
10024list. Reported by Linn Crosetto.
10025
10026Example Code and Data Size: These are the sizes for the OS-independent
10027acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10028debug version of the code includes the debug output trace mechanism and
10029has
10030a much larger code and data size.
10031
10032  Previous Release:
10033    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10034    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10035  Current Release:
10036    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10037    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10038
10039----------------------------------------
1004020 March 2007. Summary of changes for version 20070320:
10041
100421) ACPI CA Core Subsystem:
10043
10044Implemented a change to the order of interpretation and evaluation of AML
10045operand objects within the AML interpreter. The interpreter now evaluates
10046operands in the order that they appear in the AML stream (and the
10047corresponding ASL code), instead of in the reverse order (after the
10048entire
10049operand list has been parsed). The previous behavior caused several
10050subtle
10051incompatibilities with the Microsoft AML interpreter as well as being
10052somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10053
10054Implemented a change to the ACPI Global Lock support. All interfaces to
10055the
10056global lock now allow the same thread to acquire the lock multiple times.
10057This affects the AcpiAcquireGlobalLock external interface to the global
10058lock
10059as well as the internal use of the global lock to support AML fields -- a
10060control method that is holding the global lock can now simultaneously
10061access
10062AML fields that require global lock protection. Previously, in both
10063cases,
10064this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10065to
10066AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10067Controller. There is no change to the behavior of the AML Acquire
10068operator,
10069as this can already be used to acquire a mutex multiple times by the same
10070thread. BZ 8066. With assistance from Alexey Starikovskiy.
10071
10072Fixed a problem where invalid objects could be referenced in the AML
10073Interpreter after error conditions. During operand evaluation, ensure
10074that
10075the internal "Return Object" field is cleared on error and only valid
10076pointers are stored there. Caused occasional access to deleted objects
10077that
10078resulted in "large reference count" warning messages. Valery Podrezov.
10079
10080Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10081on
10082deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10083Podrezov.
10084
10085Fixed an internal problem with the handling of result objects on the
10086interpreter result stack. BZ 7872. Valery Podrezov.
10087
10088Removed obsolete code that handled the case where AML_NAME_OP is the
10089target
10090of a reference (Reference.Opcode). This code was no longer necessary. BZ
100917874. Valery Podrezov.
10092
10093Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10094was
10095a
10096remnant from the previously discontinued 16-bit support.
10097
10098Example Code and Data Size: These are the sizes for the OS-independent
10099acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10100debug version of the code includes the debug output trace mechanism and
10101has
10102a much larger code and data size.
10103
10104  Previous Release:
10105    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10106    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10107  Current Release:
10108    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10109    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10110
10111----------------------------------------
1011226 January 2007. Summary of changes for version 20070126:
10113
101141) ACPI CA Core Subsystem:
10115
10116Added the 2007 copyright to all module headers and signons. This affects
10117virtually every file in the ACPICA core subsystem, the iASL compiler, and
10118the utilities.
10119
10120Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10121during a table load. A bad pointer was passed in the case where the DSDT
10122is
10123overridden, causing a fault in this case.
10124
10125Example Code and Data Size: These are the sizes for the OS-independent
10126acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10127debug version of the code includes the debug output trace mechanism and
10128has
10129a much larger code and data size.
10130
10131  Previous Release:
10132    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10133    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10134  Current Release:
10135    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10136    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10137
10138----------------------------------------
1013915 December 2006. Summary of changes for version 20061215:
10140
101411) ACPI CA Core Subsystem:
10142
10143Support for 16-bit ACPICA has been completely removed since it is no
10144longer
10145necessary and it clutters the code. All 16-bit macros, types, and
10146conditional compiles have been removed, cleaning up and simplifying the
10147code
10148across the entire subsystem. DOS support is no longer needed since the
10149bootable Linux firmware kit is now available.
10150
10151The handler for the Global Lock is now removed during AcpiTerminate to
10152enable a clean subsystem restart, via the implementation of the
10153AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10154HP)
10155
10156Implemented enhancements to the multithreading support within the
10157debugger
10158to enable improved multithreading debugging and evaluation of the
10159subsystem.
10160(Valery Podrezov)
10161
10162Debugger: Enhanced the Statistics/Memory command to emit the total
10163(maximum)
10164memory used during the execution, as well as the maximum memory consumed
10165by
10166each of the various object types. (Valery Podrezov)
10167
10168Example Code and Data Size: These are the sizes for the OS-independent
10169acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10170debug version of the code includes the debug output trace mechanism and
10171has
10172a much larger code and data size.
10173
10174  Previous Release:
10175    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10176    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10177  Current Release:
10178    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10179    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10180
10181
101822) iASL Compiler/Disassembler and Tools:
10183
10184AcpiExec: Implemented a new option (-m) to display full memory use
10185statistics upon subsystem/program termination. (Valery Podrezov)
10186
10187----------------------------------------
1018809 November 2006. Summary of changes for version 20061109:
10189
101901) ACPI CA Core Subsystem:
10191
10192Optimized the Load ASL operator in the case where the source operand is
10193an
10194operation region. Simply map the operation region memory, instead of
10195performing a bytewise read. (Region must be of type SystemMemory, see
10196below.)
10197
10198Fixed the Load ASL operator for the case where the source operand is a
10199region field. A buffer object is also allowed as the source operand. BZ
10200480
10201
10202Fixed a problem where the Load ASL operator allowed the source operand to
10203be
10204an operation region of any type. It is now restricted to regions of type
10205SystemMemory, as per the ACPI specification. BZ 481
10206
10207Additional cleanup and optimizations for the new Table Manager code.
10208
10209AcpiEnable will now fail if all of the required ACPI tables are not
10210loaded
10211(FADT, FACS, DSDT). BZ 477
10212
10213Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10214this
10215header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10216manually optimized to be aligned and will not work if it is byte-packed.
10217
10218Example Code and Data Size: These are the sizes for the OS-independent
10219acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10220debug version of the code includes the debug output trace mechanism and
10221has
10222a much larger code and data size.
10223
10224  Previous Release:
10225    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10226    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10227  Current Release:
10228    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10229    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10230
10231
102322) iASL Compiler/Disassembler and Tools:
10233
10234Fixed a problem where the presence of the _OSI predefined control method
10235within complex expressions could cause an internal compiler error.
10236
10237AcpiExec: Implemented full region support for multiple address spaces.
10238SpaceId is now part of the REGION object. BZ 429
10239
10240----------------------------------------
1024111 October 2006. Summary of changes for version 20061011:
10242
102431) ACPI CA Core Subsystem:
10244
10245Completed an AML interpreter performance enhancement for control method
10246execution. Previously a 2-pass parse/execution, control methods are now
10247completely parsed and executed in a single pass. This improves overall
10248interpreter performance by ~25%, reduces code size, and reduces CPU stack
10249use. (Valery Podrezov + interpreter changes in version 20051202 that
10250eliminated namespace loading during the pass one parse.)
10251
10252Implemented _CID support for PCI Root Bridge detection. If the _HID does
10253not
10254match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10255now
10256obtained and also checked for an ID match.
10257
10258Implemented additional support for the PCI _ADR execution: upsearch until
10259a
10260device scope is found before executing _ADR. This allows PCI_Config
10261operation regions to be declared locally within control methods
10262underneath
10263PCI device objects.
10264
10265Fixed a problem with a possible race condition between threads executing
10266AcpiWalkNamespace and the AML interpreter. This condition was removed by
10267modifying AcpiWalkNamespace to (by default) ignore all temporary
10268namespace
10269entries created during any concurrent control method execution. An
10270additional namespace race condition is known to exist between
10271AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10272investigation.
10273
10274Restructured the AML ParseLoop function, breaking it into several
10275subfunctions in order to reduce CPU stack use and improve
10276maintainability.
10277(Mikhail Kouzmich)
10278
10279AcpiGetHandle: Fix for parameter validation to detect invalid
10280combinations
10281of prefix handle and pathname. BZ 478
10282
10283Example Code and Data Size: These are the sizes for the OS-independent
10284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10285debug version of the code includes the debug output trace mechanism and
10286has
10287a much larger code and data size.
10288
10289  Previous Release:
10290    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10291    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10292  Current Release:
10293    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10294    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10295
102962) iASL Compiler/Disassembler and Tools:
10297
10298Ported the -g option (get local ACPI tables) to the new ACPICA Table
10299Manager
10300to restore original behavior.
10301
10302----------------------------------------
1030327 September 2006. Summary of changes for version 20060927:
10304
103051) ACPI CA Core Subsystem:
10306
10307Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10308These functions now use a spinlock for mutual exclusion and the interrupt
10309level indication flag is not needed.
10310
10311Fixed a problem with the Global Lock where the lock could appear to be
10312obtained before it is actually obtained. The global lock semaphore was
10313inadvertently created with one unit instead of zero units. (BZ 464)
10314Fiodor
10315Suietov.
10316
10317Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10318during
10319a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10320
10321Example Code and Data Size: These are the sizes for the OS-independent
10322acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10323debug version of the code includes the debug output trace mechanism and
10324has
10325a much larger code and data size.
10326
10327  Previous Release:
10328    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10329    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10330  Current Release:
10331    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10332    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10333
10334
103352) iASL Compiler/Disassembler and Tools:
10336
10337Fixed a compilation problem with the pre-defined Resource Descriptor
10338field
10339names where an "object does not exist" error could be incorrectly
10340generated
10341if the parent ResourceTemplate pathname places the template within a
10342different namespace scope than the current scope. (BZ 7212)
10343
10344Fixed a problem where the compiler could hang after syntax errors
10345detected
10346in an ElseIf construct. (BZ 453)
10347
10348Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10349operator. An incorrect output filename was produced when this parameter
10350was
10351a null string (""). Now, the original input filename is used as the AML
10352output filename, with an ".aml" extension.
10353
10354Implemented a generic batch command mode for the AcpiExec utility
10355(execute
10356any AML debugger command) (Valery Podrezov).
10357
10358----------------------------------------
1035912 September 2006. Summary of changes for version 20060912:
10360
103611) ACPI CA Core Subsystem:
10362
10363Enhanced the implementation of the "serialized mode" of the interpreter
10364(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10365specified, instead of creating a serialization semaphore per control
10366method,
10367the interpreter lock is simply no longer released before a blocking
10368operation during control method execution. This effectively makes the AML
10369Interpreter single-threaded. The overhead of a semaphore per-method is
10370eliminated.
10371
10372Fixed a regression where an error was no longer emitted if a control
10373method
10374attempts to create 2 objects of the same name. This once again returns
10375AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10376that
10377will dynamically serialize the control method to possible prevent future
10378errors. (BZ 440)
10379
10380Integrated a fix for a problem with PCI Express HID detection in the PCI
10381Config Space setup procedure. (BZ 7145)
10382
10383Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10384AcpiHwInitialize function - the FADT registers are now validated when the
10385table is loaded.
10386
10387Added two new warnings during FADT verification - 1) if the FADT is
10388larger
10389than the largest known FADT version, and 2) if there is a mismatch
10390between
10391a
1039232-bit block address and the 64-bit X counterpart (when both are non-
10393zero.)
10394
10395Example Code and Data Size: These are the sizes for the OS-independent
10396acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10397debug version of the code includes the debug output trace mechanism and
10398has
10399a much larger code and data size.
10400
10401  Previous Release:
10402    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10403    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10404  Current Release:
10405    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10406    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10407
10408
104092) iASL Compiler/Disassembler and Tools:
10410
10411Fixed a problem with the implementation of the Switch() operator where
10412the
10413temporary variable was declared too close to the actual Switch, instead
10414of
10415at method level. This could cause a problem if the Switch() operator is
10416within a while loop, causing an error on the second iteration. (BZ 460)
10417
10418Disassembler - fix for error emitted for unknown type for target of scope
10419operator. Now, ignore it and continue.
10420
10421Disassembly of an FADT now verifies the input FADT and reports any errors
10422found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10423
10424Disassembly of raw data buffers with byte initialization data now
10425prefixes
10426each output line with the current buffer offset.
10427
10428Disassembly of ASF! table now includes all variable-length data fields at
10429the end of some of the subtables.
10430
10431The disassembler now emits a comment if a buffer appears to be a
10432ResourceTemplate, but cannot be disassembled as such because the EndTag
10433does
10434not appear at the very end of the buffer.
10435
10436AcpiExec - Added the "-t" command line option to enable the serialized
10437mode
10438of the AML interpreter.
10439
10440----------------------------------------
1044131 August 2006. Summary of changes for version 20060831:
10442
104431) ACPI CA Core Subsystem:
10444
10445Miscellaneous fixes for the Table Manager:
10446- Correctly initialize internal common FADT for all 64-bit "X" fields
10447- Fixed a couple table mapping issues during table load
10448- Fixed a couple alignment issues for IA64
10449- Initialize input array to zero in AcpiInitializeTables
10450- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10451AcpiGetTableByIndex
10452
10453Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10454now
10455immediately disabled to prevent the waking GPE from firing again and to
10456prevent other wake GPEs from interrupting the wake process.
10457
10458Added the AcpiGpeCount global that tracks the number of processed GPEs,
10459to
10460be used for debugging systems with a large number of ACPI interrupts.
10461
10462Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10463both the ACPICA headers and the disassembler.
10464
10465Example Code and Data Size: These are the sizes for the OS-independent
10466acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10467debug version of the code includes the debug output trace mechanism and
10468has
10469a much larger code and data size.
10470
10471  Previous Release:
10472    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10473    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10474  Current Release:
10475    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10476    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10477
10478
104792) iASL Compiler/Disassembler and Tools:
10480
10481Disassembler support for the DMAR ACPI table.
10482
10483----------------------------------------
1048423 August 2006. Summary of changes for version 20060823:
10485
104861) ACPI CA Core Subsystem:
10487
10488The Table Manager component has been completely redesigned and
10489reimplemented. The new design is much simpler, and reduces the overall
10490code
10491and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10492is
10493now possible to obtain the ACPI tables very early during kernel
10494initialization, even before dynamic memory management is initialized.
10495(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10496
10497Obsolete ACPICA interfaces:
10498
10499- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10500init
10501time).
10502- AcpiLoadTable: Not needed.
10503- AcpiUnloadTable: Not needed.
10504
10505New ACPICA interfaces:
10506
10507- AcpiInitializeTables: Must be called before the table manager can be
10508used.
10509- AcpiReallocateRootTable: Used to transfer the root table to dynamically
10510allocated memory after it becomes available.
10511- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10512tables
10513in the RSDT/XSDT.
10514
10515Other ACPICA changes:
10516
10517- AcpiGetTableHeader returns the actual mapped table header, not a copy.
10518Use
10519AcpiOsUnmapMemory to free this mapping.
10520- AcpiGetTable returns the actual mapped table. The mapping is managed
10521internally and must not be deleted by the caller. Use of this interface
10522causes no additional dynamic memory allocation.
10523- AcpiFindRootPointer: Support for physical addressing has been
10524eliminated,
10525it appeared to be unused.
10526- The interface to AcpiOsMapMemory has changed to be consistent with the
10527other allocation interfaces.
10528- The interface to AcpiOsGetRootPointer has changed to eliminate
10529unnecessary
10530parameters.
10531- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1053264-
10533bit platforms. Was previously 64 bits on all platforms.
10534- The interface to the ACPI Global Lock acquire/release macros have
10535changed
10536slightly since ACPICA no longer keeps a local copy of the FACS with a
10537constructed pointer to the actual global lock.
10538
10539Porting to the new table manager:
10540
10541- AcpiInitializeTables: Must be called once, and can be called anytime
10542during the OS initialization process. It allows the host to specify an
10543area
10544of memory to be used to store the internal version of the RSDT/XSDT (root
10545table). This allows the host to access ACPI tables before memory
10546management
10547is initialized and running.
10548- AcpiReallocateRootTable: Can be called after memory management is
10549running
10550to copy the root table to a dynamically allocated array, freeing up the
10551scratch memory specified in the call to AcpiInitializeTables.
10552- AcpiSubsystemInitialize: This existing interface is independent of the
10553Table Manager, and does not have to be called before the Table Manager
10554can
10555be used, it only must be called before the rest of ACPICA can be used.
10556- ACPI Tables: Some changes have been made to the names and structure of
10557the
10558actbl.h and actbl1.h header files and may require changes to existing
10559code.
10560For example, bitfields have been completely removed because of their lack
10561of
10562portability across C compilers.
10563- Update interfaces to the Global Lock acquire/release macros if local
10564versions are used. (see acwin.h)
10565
10566Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10567
10568New files: tbfind.c
10569
10570Example Code and Data Size: These are the sizes for the OS-independent
10571acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10572debug version of the code includes the debug output trace mechanism and
10573has
10574a much larger code and data size.
10575
10576  Previous Release:
10577    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10578    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10579  Current Release:
10580    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10581    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10582
10583
105842) iASL Compiler/Disassembler and Tools:
10585
10586No changes for this release.
10587
10588----------------------------------------
1058921 July 2006. Summary of changes for version 20060721:
10590
105911) ACPI CA Core Subsystem:
10592
10593The full source code for the ASL test suite used to validate the iASL
10594compiler and the ACPICA core subsystem is being released with the ACPICA
10595source for the first time. The source is contained in a separate package
10596and
10597consists of over 1100 files that exercise all ASL/AML operators. The
10598package
10599should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
10600Fiodor
10601Suietov)
10602
10603Completed a new design and implementation for support of the ACPI Global
10604Lock. On the OS side, the global lock is now treated as a standard AML
10605mutex. Previously, multiple OS threads could "acquire" the global lock
10606simultaneously. However, this could cause the BIOS to be starved out of
10607the
10608lock - especially in cases such as the Embedded Controller driver where
10609there is a tight coupling between the OS and the BIOS.
10610
10611Implemented an optimization for the ACPI Global Lock interrupt mechanism.
10612The Global Lock interrupt handler no longer queues the execution of a
10613separate thread to signal the global lock semaphore. Instead, the
10614semaphore
10615is signaled directly from the interrupt handler.
10616
10617Implemented support within the AML interpreter for package objects that
10618contain a larger AML length (package list length) than the package
10619element
10620count. In this case, the length of the package is truncated to match the
10621package element count. Some BIOS code apparently modifies the package
10622length
10623on the fly, and this change supports this behavior. Provides
10624compatibility
10625with the MS AML interpreter. (With assistance from Fiodor Suietov)
10626
10627Implemented a temporary fix for the BankValue parameter of a Bank Field
10628to
10629support all constant values, now including the Zero and One opcodes.
10630Evaluation of this parameter must eventually be converted to a full
10631TermArg
10632evaluation. A not-implemented error is now returned (temporarily) for
10633non-
10634constant values for this parameter.
10635
10636Fixed problem reports (Fiodor Suietov) integrated:
10637- Fix for premature object deletion after CopyObject on Operation Region
10638(BZ
10639350)
10640
10641Example Code and Data Size: These are the sizes for the OS-independent
10642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10643debug version of the code includes the debug output trace mechanism and
10644has
10645a much larger code and data size.
10646
10647  Previous Release:
10648    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
10649    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
10650  Current Release:
10651    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10652    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10653
10654
106552) iASL Compiler/Disassembler and Tools:
10656
10657No changes for this release.
10658
10659----------------------------------------
1066007 July 2006. Summary of changes for version 20060707:
10661
106621) ACPI CA Core Subsystem:
10663
10664Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
10665that do not allow the initialization of address pointers within packed
10666structures - even though the hardware itself may support misaligned
10667transfers. Some of the debug data structures are packed by default to
10668minimize size.
10669
10670Added an error message for the case where AcpiOsGetThreadId() returns
10671zero.
10672A non-zero value is required by the core ACPICA code to ensure the proper
10673operation of AML mutexes and recursive control methods.
10674
10675The DSDT is now the only ACPI table that determines whether the AML
10676interpreter is in 32-bit or 64-bit mode. Not really a functional change,
10677but
10678the hooks for per-table 32/64 switching have been removed from the code.
10679A
10680clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10681
10682Fixed a possible leak of an OwnerID in the error path of
10683AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
10684deletion to a single place in AcpiTbUninstallTable to correct possible
10685leaks
10686when using the AcpiTbDeleteTablesByType interface (with assistance from
10687Lance Ortiz.)
10688
10689Fixed a problem with Serialized control methods where the semaphore
10690associated with the method could be over-signaled after multiple method
10691invocations.
10692
10693Fixed two issues with the locking of the internal namespace data
10694structure.
10695Both the Unload() operator and AcpiUnloadTable interface now lock the
10696namespace during the namespace deletion associated with the table unload
10697(with assistance from Linn Crosetto.)
10698
10699Fixed problem reports (Valery Podrezov) integrated:
10700- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10701
10702Fixed problem reports (Fiodor Suietov) integrated:
10703- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
10704- On Address Space handler deletion, needless deactivation call (BZ 374)
10705- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
10706375)
10707- Possible memory leak, Notify sub-objects of Processor, Power,
10708ThermalZone
10709(BZ 376)
10710- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
10711- Minimum Length of RSDT should be validated (BZ 379)
10712- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
10713Handler (BZ (380)
10714- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
10715loaded
10716(BZ 381)
10717
10718Example Code and Data Size: These are the sizes for the OS-independent
10719acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10720debug version of the code includes the debug output trace mechanism and
10721has
10722a much larger code and data size.
10723
10724  Previous Release:
10725    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10726    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10727  Current Release:
10728    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10729    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10730
10731
107322) iASL Compiler/Disassembler and Tools:
10733
10734Fixed problem reports:
10735Compiler segfault when ASL contains a long (>1024) String declaration (BZ
10736436)
10737
10738----------------------------------------
1073923 June 2006. Summary of changes for version 20060623:
10740
107411) ACPI CA Core Subsystem:
10742
10743Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
10744allows the type to be customized to the host OS for improved efficiency
10745(since a spinlock is usually a very small object.)
10746
10747Implemented support for "ignored" bits in the ACPI registers. According
10748to
10749the ACPI specification, these bits should be preserved when writing the
10750registers via a read/modify/write cycle. There are 3 bits preserved in
10751this
10752manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
10753
10754Implemented the initial deployment of new OSL mutex interfaces. Since
10755some
10756host operating systems have separate mutex and semaphore objects, this
10757feature was requested. The base code now uses mutexes (and the new mutex
10758interfaces) wherever a binary semaphore was used previously. However, for
10759the current release, the mutex interfaces are defined as macros to map
10760them
10761to the existing semaphore interfaces. Therefore, no OSL changes are
10762required
10763at this time. (See acpiosxf.h)
10764
10765Fixed several problems with the support for the control method SyncLevel
10766parameter. The SyncLevel now works according to the ACPI specification
10767and
10768in concert with the Mutex SyncLevel parameter, since the current
10769SyncLevel
10770is a property of the executing thread. Mutual exclusion for control
10771methods
10772is now implemented with a mutex instead of a semaphore.
10773
10774Fixed three instances of the use of the C shift operator in the bitfield
10775support code (exfldio.c) to avoid the use of a shift value larger than
10776the
10777target data width. The behavior of C compilers is undefined in this case
10778and
10779can cause unpredictable results, and therefore the case must be detected
10780and
10781avoided. (Fiodor Suietov)
10782
10783Added an info message whenever an SSDT or OEM table is loaded dynamically
10784via the Load() or LoadTable() ASL operators. This should improve
10785debugging
10786capability since it will show exactly what tables have been loaded
10787(beyond
10788the tables present in the RSDT/XSDT.)
10789
10790Example Code and Data Size: These are the sizes for the OS-independent
10791acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10792debug version of the code includes the debug output trace mechanism and
10793has
10794a much larger code and data size.
10795
10796  Previous Release:
10797    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10798    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10799  Current Release:
10800    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10801    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10802
10803
108042) iASL Compiler/Disassembler and Tools:
10805
10806No changes for this release.
10807
10808----------------------------------------
1080908 June 2006. Summary of changes for version 20060608:
10810
108111) ACPI CA Core Subsystem:
10812
10813Converted the locking mutex used for the ACPI hardware to a spinlock.
10814This
10815change should eliminate all problems caused by attempting to acquire a
10816semaphore at interrupt level, and it means that all ACPICA external
10817interfaces that directly access the ACPI hardware can be safely called
10818from
10819interrupt level. OSL code that implements the semaphore interfaces should
10820be
10821able to eliminate any workarounds for being called at interrupt level.
10822
10823Fixed a regression introduced in 20060526 where the ACPI device
10824initialization could be prematurely aborted with an AE_NOT_FOUND if a
10825device
10826did not have an optional _INI method.
10827
10828Fixed an IndexField issue where a write to the Data Register should be
10829limited in size to the AccessSize (width) of the IndexField itself. (BZ
10830433,
10831Fiodor Suietov)
10832
10833Fixed problem reports (Valery Podrezov) integrated:
10834- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
10835
10836Fixed problem reports (Fiodor Suietov) integrated:
10837- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
10838
10839Removed four global mutexes that were obsolete and were no longer being
10840used.
10841
10842Example Code and Data Size: These are the sizes for the OS-independent
10843acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10844debug version of the code includes the debug output trace mechanism and
10845has
10846a much larger code and data size.
10847
10848  Previous Release:
10849    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10850    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10851  Current Release:
10852    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10853    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10854
10855
108562) iASL Compiler/Disassembler and Tools:
10857
10858Fixed a fault when using -g option (get tables from registry) on Windows
10859machines.
10860
10861Fixed problem reports integrated:
10862- Generate error if CreateField NumBits parameter is zero. (BZ 405)
10863- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
10864Suietov)
10865- Global table revision override (-r) is ignored (BZ 413)
10866
10867----------------------------------------
1086826 May 2006. Summary of changes for version 20060526:
10869
108701) ACPI CA Core Subsystem:
10871
10872Restructured, flattened, and simplified the internal interfaces for
10873namespace object evaluation - resulting in smaller code, less CPU stack
10874use,
10875and fewer interfaces. (With assistance from Mikhail Kouzmich)
10876
10877Fixed a problem with the CopyObject operator where the first parameter
10878was
10879not typed correctly for the parser, interpreter, compiler, and
10880disassembler.
10881Caused various errors and unexpected behavior.
10882
10883Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
10884produced incorrect results with some C compilers. Since the behavior of C
10885compilers when the shift value is larger than the datatype width is
10886apparently not well defined, the interpreter now detects this condition
10887and
10888simply returns zero as expected in all such cases. (BZ 395)
10889
10890Fixed problem reports (Valery Podrezov) integrated:
10891- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
10892- Allow interpreter to handle nested method declarations (BZ 5361)
10893
10894Fixed problem reports (Fiodor Suietov) integrated:
10895- AcpiTerminate doesn't free debug memory allocation list objects (BZ
10896355)
10897- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
10898356)
10899- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
10900- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
10901- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
10902- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
10903- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
10904- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
10905- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
10906365)
10907- Status of the Global Initialization Handler call not used (BZ 366)
10908- Incorrect object parameter to Global Initialization Handler (BZ 367)
10909
10910Example Code and Data Size: These are the sizes for the OS-independent
10911acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10912debug version of the code includes the debug output trace mechanism and
10913has
10914a much larger code and data size.
10915
10916  Previous Release:
10917    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
10918    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
10919  Current Release:
10920    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10921    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10922
10923
109242) iASL Compiler/Disassembler and Tools:
10925
10926Modified the parser to allow the names IO, DMA, and IRQ to be used as
10927namespace identifiers with no collision with existing resource descriptor
10928macro names. This provides compatibility with other ASL compilers and is
10929most useful for disassembly/recompilation of existing tables without
10930parse
10931errors. (With assistance from Thomas Renninger)
10932
10933Disassembler: fixed an incorrect disassembly problem with the
10934DataTableRegion and CopyObject operators. Fixed a possible fault during
10935disassembly of some Alias operators.
10936
10937----------------------------------------
1093812 May 2006. Summary of changes for version 20060512:
10939
109401) ACPI CA Core Subsystem:
10941
10942Replaced the AcpiOsQueueForExecution interface with a new interface named
10943AcpiOsExecute. The major difference is that the new interface does not
10944have
10945a Priority parameter, this appeared to be useless and has been replaced
10946by
10947a
10948Type parameter. The Type tells the host what type of execution is being
10949requested, such as global lock handler, notify handler, GPE handler, etc.
10950This allows the host to queue and execute the request as appropriate for
10951the
10952request type, possibly using different work queues and different
10953priorities
10954for the various request types. This enables fixes for multithreading
10955deadlock problems such as BZ #5534, and will require changes to all
10956existing
10957OS interface layers. (Alexey Starikovskiy and Bob Moore)
10958
10959Fixed a possible memory leak associated with the support for the so-
10960called
10961"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
10962Suietov)
10963
10964Fixed a problem with the Load() operator where a table load from an
10965operation region could overwrite an internal table buffer by up to 7
10966bytes
10967and cause alignment faults on IPF systems. (With assistance from Luming
10968Yu)
10969
10970Example Code and Data Size: These are the sizes for the OS-independent
10971acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10972debug version of the code includes the debug output trace mechanism and
10973has
10974a much larger code and data size.
10975
10976  Previous Release:
10977    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
10978    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
10979  Current Release:
10980    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
10981    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
10982
10983
10984
109852) iASL Compiler/Disassembler and Tools:
10986
10987Disassembler: Implemented support to cross reference the internal
10988namespace
10989and automatically generate ASL External() statements for symbols not
10990defined
10991within the current table being disassembled. This will simplify the
10992disassembly and recompilation of interdependent tables such as SSDTs
10993since
10994these statements will no longer have to be added manually.
10995
10996Disassembler: Implemented experimental support to automatically detect
10997invocations of external control methods and generate appropriate
10998External()
10999statements. This is problematic because the AML cannot be correctly
11000parsed
11001until the number of arguments for each control method is known.
11002Currently,
11003standalone method invocations and invocations as the source operand of a
11004Store() statement are supported.
11005
11006Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11007LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11008LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11009more readable and likely closer to the original ASL source.
11010
11011----------------------------------------
1101221 April 2006. Summary of changes for version 20060421:
11013
110141) ACPI CA Core Subsystem:
11015
11016Removed a device initialization optimization introduced in 20051216 where
11017the _STA method was not run unless an _INI was also present for the same
11018device. This optimization could cause problems because it could allow
11019_INI
11020methods to be run within a not-present device subtree. (If a not-present
11021device had no _INI, _STA would not be run, the not-present status would
11022not
11023be discovered, and the children of the device would be incorrectly
11024traversed.)
11025
11026Implemented a new _STA optimization where namespace subtrees that do not
11027contain _INI are identified and ignored during device initialization.
11028Selectively running _STA can significantly improve boot time on large
11029machines (with assistance from Len Brown.)
11030
11031Implemented support for the device initialization case where the returned
11032_STA flags indicate a device not-present but functioning. In this case,
11033_INI
11034is not run, but the device children are examined for presence, as per the
11035ACPI specification.
11036
11037Implemented an additional change to the IndexField support in order to
11038conform to MS behavior. The value written to the Index Register is not
11039simply a byte offset, it is a byte offset in units of the access width of
11040the parent Index Field. (Fiodor Suietov)
11041
11042Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11043interface is called during the creation of all AML operation regions, and
11044allows the host OS to exert control over what addresses it will allow the
11045AML code to access. Operation Regions whose addresses are disallowed will
11046cause a runtime exception when they are actually accessed (will not
11047affect
11048or abort table loading.) See oswinxf or osunixxf for an example
11049implementation.
11050
11051Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11052interface allows the host OS to match the various "optional"
11053interface/behavior strings for the _OSI predefined control method as
11054appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11055for an example implementation.
11056
11057Restructured and corrected various problems in the exception handling
11058code
11059paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11060(with assistance from Takayoshi Kochi.)
11061
11062Modified the Linux source converter to ignore quoted string literals
11063while
11064converting identifiers from mixed to lower case. This will correct
11065problems
11066with the disassembler and other areas where such strings must not be
11067modified.
11068
11069The ACPI_FUNCTION_* macros no longer require quotes around the function
11070name. This allows the Linux source converter to convert the names, now
11071that
11072the converter ignores quoted strings.
11073
11074Example Code and Data Size: These are the sizes for the OS-independent
11075acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11076debug version of the code includes the debug output trace mechanism and
11077has
11078a much larger code and data size.
11079
11080  Previous Release:
11081
11082    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11083    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11084  Current Release:
11085    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11086    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11087
11088
110892) iASL Compiler/Disassembler and Tools:
11090
11091Implemented 3 new warnings for iASL, and implemented multiple warning
11092levels
11093(w2 flag).
11094
110951) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11096not
11097WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11098check for the possible timeout, a warning is issued.
11099
111002) Useless operators: If an ASL operator does not specify an optional
11101target
11102operand and it also does not use the function return value from the
11103operator, a warning is issued since the operator effectively does
11104nothing.
11105
111063) Unreferenced objects: If a namespace object is created, but never
11107referenced, a warning is issued. This is a warning level 2 since there
11108are
11109cases where this is ok, such as when a secondary table is loaded that
11110uses
11111the unreferenced objects. Even so, care is taken to only flag objects
11112that
11113don't look like they will ever be used. For example, the reserved methods
11114(starting with an underscore) are usually not referenced because it is
11115expected that the OS will invoke them.
11116
11117----------------------------------------
1111831 March 2006. Summary of changes for version 20060331:
11119
111201) ACPI CA Core Subsystem:
11121
11122Implemented header file support for the following additional ACPI tables:
11123ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11124support,
11125all current and known ACPI tables are now defined in the ACPICA headers
11126and
11127are available for use by device drivers and other software.
11128
11129Implemented support to allow tables that contain ACPI names with invalid
11130characters to be loaded. Previously, this would cause the table load to
11131fail, but since there are several known cases of such tables on existing
11132machines, this change was made to enable ACPI support for them. Also,
11133this
11134matches the behavior of the Microsoft ACPI implementation.
11135
11136Fixed a couple regressions introduced during the memory optimization in
11137the
1113820060317 release. The namespace node definition required additional
11139reorganization and an internal datatype that had been changed to 8-bit
11140was
11141restored to 32-bit. (Valery Podrezov)
11142
11143Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11144could be passed through to AcpiOsReleaseObject which is unexpected. Such
11145null pointers are now trapped and ignored, matching the behavior of the
11146previous implementation before the deployment of AcpiOsReleaseObject.
11147(Valery Podrezov, Fiodor Suietov)
11148
11149Fixed a memory mapping leak during the deletion of a SystemMemory
11150operation
11151region where a cached memory mapping was not deleted. This became a
11152noticeable problem for operation regions that are defined within
11153frequently
11154used control methods. (Dana Meyers)
11155
11156Reorganized the ACPI table header files into two main files: one for the
11157ACPI tables consumed by the ACPICA core, and another for the
11158miscellaneous
11159ACPI tables that are consumed by the drivers and other software. The
11160various
11161FADT definitions were merged into one common section and three different
11162tables (ACPI 1.0, 1.0+, and 2.0)
11163
11164Example Code and Data Size: These are the sizes for the OS-independent
11165acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11166debug version of the code includes the debug output trace mechanism and
11167has
11168a much larger code and data size.
11169
11170  Previous Release:
11171    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11172    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11173  Current Release:
11174    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11175    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11176
11177
111782) iASL Compiler/Disassembler and Tools:
11179
11180Disassembler: Implemented support to decode and format all non-AML ACPI
11181tables (tables other than DSDTs and SSDTs.) This includes the new tables
11182added to the ACPICA headers, therefore all current and known ACPI tables
11183are
11184supported.
11185
11186Disassembler: The change to allow ACPI names with invalid characters also
11187enables the disassembly of such tables. Invalid characters within names
11188are
11189changed to '*' to make the name printable; the iASL compiler will still
11190generate an error for such names, however, since this is an invalid ACPI
11191character.
11192
11193Implemented an option for AcpiXtract (-a) to extract all tables found in
11194the
11195input file. The default invocation extracts only the DSDTs and SSDTs.
11196
11197Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11198makefile for the AcpiXtract utility.
11199
11200----------------------------------------
1120117 March 2006. Summary of changes for version 20060317:
11202
112031) ACPI CA Core Subsystem:
11204
11205Implemented the use of a cache object for all internal namespace nodes.
11206Since there are about 1000 static nodes in a typical system, this will
11207decrease memory use for cache implementations that minimize per-
11208allocation
11209overhead (such as a slab allocator.)
11210
11211Removed the reference count mechanism for internal namespace nodes, since
11212it
11213was deemed unnecessary. This reduces the size of each namespace node by
11214about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11215case,
11216and 32 bytes for the 64-bit case.
11217
11218Optimized several internal data structures to reduce object size on 64-
11219bit
11220platforms by packing data within the 64-bit alignment. This includes the
11221frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11222instances corresponding to the namespace objects.
11223
11224Added two new strings for the predefined _OSI method: "Windows 2001.1
11225SP1"
11226and "Windows 2006".
11227
11228Split the allocation tracking mechanism out to a separate file, from
11229utalloc.c to uttrack.c. This mechanism appears to be only useful for
11230application-level code. Kernels may wish to not include uttrack.c in
11231distributions.
11232
11233Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11234associated
11235code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11236macros.)
11237
11238Code and Data Size: These are the sizes for the acpica.lib produced by
11239the
11240Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11241ACPI
11242driver or OSPM code. The debug version of the code includes the debug
11243output
11244trace mechanism and has a much larger code and data size. Note that these
11245values will vary depending on the efficiency of the compiler and the
11246compiler options used during generation.
11247
11248  Previous Release:
11249    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11250    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11251  Current Release:
11252    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11253    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11254
11255
112562) iASL Compiler/Disassembler and Tools:
11257
11258Implemented an ANSI C version of the acpixtract utility. This version
11259will
11260automatically extract the DSDT and all SSDTs from the input acpidump text
11261file and dump the binary output to separate files. It can also display a
11262summary of the input file including the headers for each table found and
11263will extract any single ACPI table, with any signature. (See
11264source/tools/acpixtract)
11265
11266----------------------------------------
1126710 March 2006. Summary of changes for version 20060310:
11268
112691) ACPI CA Core Subsystem:
11270
11271Tagged all external interfaces to the subsystem with the new
11272ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11273assist
11274kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11275macro. The default definition is NULL.
11276
11277Added the ACPI_THREAD_ID type for the return value from
11278AcpiOsGetThreadId.
11279This allows the host to define this as necessary to simplify kernel
11280integration. The default definition is ACPI_NATIVE_UINT.
11281
11282Fixed two interpreter problems related to error processing, the deletion
11283of
11284objects, and placing invalid pointers onto the internal operator result
11285stack. BZ 6028, 6151 (Valery Podrezov)
11286
11287Increased the reference count threshold where a warning is emitted for
11288large
11289reference counts in order to eliminate unnecessary warnings on systems
11290with
11291large namespaces (especially 64-bit.) Increased the value from 0x400 to
112920x800.
11293
11294Due to universal disagreement as to the meaning of the 'c' in the
11295calloc()
11296function, the ACPI_MEM_CALLOCATE macro has been renamed to
11297ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11298ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11299ACPI_FREE.
11300
11301Code and Data Size: These are the sizes for the acpica.lib produced by
11302the
11303Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11304ACPI
11305driver or OSPM code. The debug version of the code includes the debug
11306output
11307trace mechanism and has a much larger code and data size. Note that these
11308values will vary depending on the efficiency of the compiler and the
11309compiler options used during generation.
11310
11311  Previous Release:
11312    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11313    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11314  Current Release:
11315    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11316    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11317
11318
113192) iASL Compiler/Disassembler:
11320
11321Disassembler: implemented support for symbolic resource descriptor
11322references. If a CreateXxxxField operator references a fixed offset
11323within
11324a
11325resource descriptor, a name is assigned to the descriptor and the offset
11326is
11327translated to the appropriate resource tag and pathname. The addition of
11328this support brings the disassembled code very close to the original ASL
11329source code and helps eliminate run-time errors when the disassembled
11330code
11331is modified (and recompiled) in such a way as to invalidate the original
11332fixed offsets.
11333
11334Implemented support for a Descriptor Name as the last parameter to the
11335ASL
11336Register() macro. This parameter was inadvertently left out of the ACPI
11337specification, and will be added for ACPI 3.0b.
11338
11339Fixed a problem where the use of the "_OSI" string (versus the full path
11340"\_OSI") caused an internal compiler error. ("No back ptr to op")
11341
11342Fixed a problem with the error message that occurs when an invalid string
11343is
11344used for a _HID object (such as one with an embedded asterisk:
11345"*PNP010A".)
11346The correct message is now displayed.
11347
11348----------------------------------------
1134917 February 2006. Summary of changes for version 20060217:
11350
113511) ACPI CA Core Subsystem:
11352
11353Implemented a change to the IndexField support to match the behavior of
11354the
11355Microsoft AML interpreter. The value written to the Index register is now
11356a
11357byte offset, no longer an index based upon the width of the Data
11358register.
11359This should fix IndexField problems seen on some machines where the Data
11360register is not exactly one byte wide. The ACPI specification will be
11361clarified on this point.
11362
11363Fixed a problem where several resource descriptor types could overrun the
11364internal descriptor buffer due to size miscalculation: VendorShort,
11365VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11366affect all platforms.
11367
11368Fixed a problem where individual resource descriptors were misaligned
11369within
11370the internal buffer, causing alignment faults on IA64 platforms.
11371
11372Code and Data Size: These are the sizes for the acpica.lib produced by
11373the
11374Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11375ACPI
11376driver or OSPM code. The debug version of the code includes the debug
11377output
11378trace mechanism and has a much larger code and data size. Note that these
11379values will vary depending on the efficiency of the compiler and the
11380compiler options used during generation.
11381
11382  Previous Release:
11383    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11384    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11385  Current Release:
11386    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11387    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11388
11389
113902) iASL Compiler/Disassembler:
11391
11392Implemented support for new reserved names: _WDG and _WED are Microsoft
11393extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11394defined method (Throttling Depth Limit.)
11395
11396Fixed a problem where a zero-length VendorShort or VendorLong resource
11397descriptor was incorrectly emitted as a descriptor of length one.
11398
11399----------------------------------------
1140010 February 2006. Summary of changes for version 20060210:
11401
114021) ACPI CA Core Subsystem:
11403
11404Removed a couple of extraneous ACPI_ERROR messages that appeared during
11405normal execution. These became apparent after the conversion from
11406ACPI_DEBUG_PRINT.
11407
11408Fixed a problem where the CreateField operator could hang if the BitIndex
11409or
11410NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11411
11412Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11413failed with an exception. This also fixes a couple of related RefOf and
11414DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11415
11416Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11417of
11418AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11419BZ
114205480)
11421
11422Implemented a memory cleanup at the end of the execution of each
11423iteration
11424of an AML While() loop, preventing the accumulation of outstanding
11425objects.
11426(Valery Podrezov, BZ 5427)
11427
11428Eliminated a chunk of duplicate code in the object resolution code.
11429(Valery
11430Podrezov, BZ 5336)
11431
11432Fixed several warnings during the 64-bit code generation.
11433
11434The AcpiSrc source code conversion tool now inserts one line of
11435whitespace
11436after an if() statement that is followed immediately by a comment,
11437improving
11438readability of the Linux code.
11439
11440Code and Data Size: The current and previous library sizes for the core
11441subsystem are shown below. These are the code and data sizes for the
11442acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11443These
11444values do not include any ACPI driver or OSPM code. The debug version of
11445the
11446code includes the debug output trace mechanism and has a much larger code
11447and data size. Note that these values will vary depending on the
11448efficiency
11449of the compiler and the compiler options used during generation.
11450
11451  Previous Release:
11452    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11453    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11454  Current Release:
11455    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11456    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11457
11458
114592) iASL Compiler/Disassembler:
11460
11461Fixed a problem with the disassembly of a BankField operator with a
11462complex
11463expression for the BankValue parameter.
11464
11465----------------------------------------
1146627 January 2006. Summary of changes for version 20060127:
11467
114681) ACPI CA Core Subsystem:
11469
11470Implemented support in the Resource Manager to allow unresolved
11471namestring
11472references within resource package objects for the _PRT method. This
11473support
11474is in addition to the previously implemented unresolved reference support
11475within the AML parser. If the interpreter slack mode is enabled, these
11476unresolved references will be passed through to the caller as a NULL
11477package
11478entry.
11479
11480Implemented and deployed new macros and functions for error and warning
11481messages across the subsystem. These macros are simpler and generate less
11482code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11483ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11484macros remain defined to allow ACPI drivers time to migrate to the new
11485macros.
11486
11487Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11488the
11489Acquire/Release Lock OSL interfaces.
11490
11491Fixed a problem where Alias ASL operators are sometimes not correctly
11492resolved, in both the interpreter and the iASL compiler.
11493
11494Fixed several problems with the implementation of the
11495ConcatenateResTemplate
11496ASL operator. As per the ACPI specification, zero length buffers are now
11497treated as a single EndTag. One-length buffers always cause a fatal
11498exception. Non-zero length buffers that do not end with a full 2-byte
11499EndTag
11500cause a fatal exception.
11501
11502Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11503interface. (With assistance from Thomas Renninger)
11504
11505Code and Data Size: The current and previous library sizes for the core
11506subsystem are shown below. These are the code and data sizes for the
11507acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11508These
11509values do not include any ACPI driver or OSPM code. The debug version of
11510the
11511code includes the debug output trace mechanism and has a much larger code
11512and data size. Note that these values will vary depending on the
11513efficiency
11514of the compiler and the compiler options used during generation.
11515
11516  Previous Release:
11517    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11518    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11519  Current Release:
11520    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11521    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11522
11523
115242) iASL Compiler/Disassembler:
11525
11526Fixed an internal error that was generated for any forward references to
11527ASL
11528Alias objects.
11529
11530----------------------------------------
1153113 January 2006. Summary of changes for version 20060113:
11532
115331) ACPI CA Core Subsystem:
11534
11535Added 2006 copyright to all module headers and signons. This affects
11536virtually every file in the ACPICA core subsystem, iASL compiler, and the
11537utilities.
11538
11539Enhanced the ACPICA error reporting in order to simplify user migration
11540to
11541the non-debug version of ACPICA. Replaced all instances of the
11542ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11543debug
11544levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11545respectively. This preserves all error and warning messages in the non-
11546debug
11547version of the ACPICA code (this has been referred to as the "debug lite"
11548option.) Over 200 cases were converted to create a total of over 380
11549error/warning messages across the ACPICA code. This increases the code
11550and
11551data size of the default non-debug version of the code somewhat (about
1155213K),
11553but all error/warning reporting may be disabled if desired (and code
11554eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11555configuration option. The size of the debug version of ACPICA remains
11556about
11557the same.
11558
11559Fixed a memory leak within the AML Debugger "Set" command. One object was
11560not properly deleted for every successful invocation of the command.
11561
11562Code and Data Size: The current and previous library sizes for the core
11563subsystem are shown below. These are the code and data sizes for the
11564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11565These
11566values do not include any ACPI driver or OSPM code. The debug version of
11567the
11568code includes the debug output trace mechanism and has a much larger code
11569and data size. Note that these values will vary depending on the
11570efficiency
11571of the compiler and the compiler options used during generation.
11572
11573  Previous Release:
11574    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11575    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11576  Current Release:
11577    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11578    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11579
11580
115812) iASL Compiler/Disassembler:
11582
11583The compiler now officially supports the ACPI 3.0a specification that was
11584released on December 30, 2005. (Specification is available at
11585www.acpi.info)
11586
11587----------------------------------------
1158816 December 2005. Summary of changes for version 20051216:
11589
115901) ACPI CA Core Subsystem:
11591
11592Implemented optional support to allow unresolved names within ASL Package
11593objects. A null object is inserted in the package when a named reference
11594cannot be located in the current namespace. Enabled via the interpreter
11595slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
11596machines
11597that contain such code.
11598
11599Implemented an optimization to the initialization sequence that can
11600improve
11601boot time. During ACPI device initialization, the _STA method is now run
11602if
11603and only if the _INI method exists. The _STA method is used to determine
11604if
11605the device is present; An _INI can only be run if _STA returns present,
11606but
11607it is a waste of time to run the _STA method if the _INI does not exist.
11608(Prototype and assistance from Dong Wei)
11609
11610Implemented use of the C99 uintptr_t for the pointer casting macros if it
11611is
11612available in the current compiler. Otherwise, the default (void *) cast
11613is
11614used as before.
11615
11616Fixed some possible memory leaks found within the execution path of the
11617Break, Continue, If, and CreateField operators. (Valery Podrezov)
11618
11619Fixed a problem introduced in the 20051202 release where an exception is
11620generated during method execution if a control method attempts to declare
11621another method.
11622
11623Moved resource descriptor string constants that are used by both the AML
11624disassembler and AML debugger to the common utilities directory so that
11625these components are independent.
11626
11627Implemented support in the AcpiExec utility (-e switch) to globally
11628ignore
11629exceptions during control method execution (method is not aborted.)
11630
11631Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
11632generation.
11633
11634Code and Data Size: The current and previous library sizes for the core
11635subsystem are shown below. These are the code and data sizes for the
11636acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11637These
11638values do not include any ACPI driver or OSPM code. The debug version of
11639the
11640code includes the debug output trace mechanism and has a much larger code
11641and data size. Note that these values will vary depending on the
11642efficiency
11643of the compiler and the compiler options used during generation.
11644
11645  Previous Release:
11646    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11647    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11648  Current Release:
11649    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11650    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11651
11652
116532) iASL Compiler/Disassembler:
11654
11655Fixed a problem where a CPU stack overflow fault could occur if a
11656recursive
11657method call was made from within a Return statement.
11658
11659----------------------------------------
1166002 December 2005. Summary of changes for version 20051202:
11661
116621) ACPI CA Core Subsystem:
11663
11664Modified the parsing of control methods to no longer create namespace
11665objects during the first pass of the parse. Objects are now created only
11666during the execute phase, at the moment the namespace creation operator
11667is
11668encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
11669This
11670should eliminate ALREADY_EXISTS exceptions seen on some machines where
11671reentrant control methods are protected by an AML mutex. The mutex will
11672now
11673correctly block multiple threads from attempting to create the same
11674object
11675more than once.
11676
11677Increased the number of available Owner Ids for namespace object tracking
11678from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
11679on
11680some machines with a large number of ACPI tables (either static or
11681dynamic).
11682
11683Fixed a problem with the AcpiExec utility where a fault could occur when
11684the
11685-b switch (batch mode) is used.
11686
11687Enhanced the namespace dump routine to output the owner ID for each
11688namespace object.
11689
11690Code and Data Size: The current and previous library sizes for the core
11691subsystem are shown below. These are the code and data sizes for the
11692acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11693These
11694values do not include any ACPI driver or OSPM code. The debug version of
11695the
11696code includes the debug output trace mechanism and has a much larger code
11697and data size. Note that these values will vary depending on the
11698efficiency
11699of the compiler and the compiler options used during generation.
11700
11701  Previous Release:
11702    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11703    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11704  Current Release:
11705    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11706    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11707
11708
117092) iASL Compiler/Disassembler:
11710
11711Fixed a parse error during compilation of certain Switch/Case constructs.
11712To
11713simplify the parse, the grammar now allows for multiple Default
11714statements
11715and this error is now detected and flagged during the analysis phase.
11716
11717Disassembler: The disassembly now includes the contents of the original
11718table header within a comment at the start of the file. This includes the
11719name and version of the original ASL compiler.
11720
11721----------------------------------------
1172217 November 2005. Summary of changes for version 20051117:
11723
117241) ACPI CA Core Subsystem:
11725
11726Fixed a problem in the AML parser where the method thread count could be
11727decremented below zero if any errors occurred during the method parse
11728phase.
11729This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
11730machines.
11731This also fixed a related regression with the mechanism that detects and
11732corrects methods that cannot properly handle reentrancy (related to the
11733deployment of the new OwnerId mechanism.)
11734
11735Eliminated the pre-parsing of control methods (to detect errors) during
11736table load. Related to the problem above, this was causing unwind issues
11737if
11738any errors occurred during the parse, and it seemed to be overkill. A
11739table
11740load should not be aborted if there are problems with any single control
11741method, thus rendering this feature rather pointless.
11742
11743Fixed a problem with the new table-driven resource manager where an
11744internal
11745buffer overflow could occur for small resource templates.
11746
11747Implemented a new external interface, AcpiGetVendorResource. This
11748interface
11749will find and return a vendor-defined resource descriptor within a _CRS
11750or
11751_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
11752Helgaas.
11753
11754Removed the length limit (200) on string objects as per the upcoming ACPI
117553.0A specification. This affects the following areas of the interpreter:
117561)
11757any implicit conversion of a Buffer to a String, 2) a String object
11758result
11759of the ASL Concatenate operator, 3) the String object result of the ASL
11760ToString operator.
11761
11762Fixed a problem in the Windows OS interface layer (OSL) where a
11763WAIT_FOREVER
11764on a semaphore object would incorrectly timeout. This allows the
11765multithreading features of the AcpiExec utility to work properly under
11766Windows.
11767
11768Updated the Linux makefiles for the iASL compiler and AcpiExec to include
11769the recently added file named "utresrc.c".
11770
11771Code and Data Size: The current and previous library sizes for the core
11772subsystem are shown below. These are the code and data sizes for the
11773acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11774These
11775values do not include any ACPI driver or OSPM code. The debug version of
11776the
11777code includes the debug output trace mechanism and has a much larger code
11778and data size. Note that these values will vary depending on the
11779efficiency
11780of the compiler and the compiler options used during generation.
11781
11782  Previous Release:
11783    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11784    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11785  Current Release:
11786    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11787    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11788
11789
117902) iASL Compiler/Disassembler:
11791
11792Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
11793specification. For the iASL compiler, this means that string literals
11794within
11795the source ASL can be of any length.
11796
11797Enhanced the listing output to dump the AML code for resource descriptors
11798immediately after the ASL code for each descriptor, instead of in a block
11799at
11800the end of the entire resource template.
11801
11802Enhanced the compiler debug output to dump the entire original parse tree
11803constructed during the parse phase, before any transforms are applied to
11804the
11805tree. The transformed tree is dumped also.
11806
11807----------------------------------------
1180802 November 2005. Summary of changes for version 20051102:
11809
118101) ACPI CA Core Subsystem:
11811
11812Modified the subsystem initialization sequence to improve GPE support.
11813The
11814GPE initialization has been split into two parts in order to defer
11815execution
11816of the _PRW methods (Power Resources for Wake) until after the hardware
11817is
11818fully initialized and the SCI handler is installed. This allows the _PRW
11819methods to access fields protected by the Global Lock. This will fix
11820systems
11821where a NO_GLOBAL_LOCK exception has been seen during initialization.
11822
11823Converted the ACPI internal object disassemble and display code within
11824the
11825AML debugger to fully table-driven operation, reducing code size and
11826increasing maintainability.
11827
11828Fixed a regression with the ConcatenateResTemplate() ASL operator
11829introduced
11830in the 20051021 release.
11831
11832Implemented support for "local" internal ACPI object types within the
11833debugger "Object" command and the AcpiWalkNamespace external interfaces.
11834These local types include RegionFields, BankFields, IndexFields, Alias,
11835and
11836reference objects.
11837
11838Moved common AML resource handling code into a new file, "utresrc.c".
11839This
11840code is shared by both the Resource Manager and the AML Debugger.
11841
11842Code and Data Size: The current and previous library sizes for the core
11843subsystem are shown below. These are the code and data sizes for the
11844acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11845These
11846values do not include any ACPI driver or OSPM code. The debug version of
11847the
11848code includes the debug output trace mechanism and has a much larger code
11849and data size. Note that these values will vary depending on the
11850efficiency
11851of the compiler and the compiler options used during generation.
11852
11853  Previous Release:
11854    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11855    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11856  Current Release:
11857    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11858    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11859
11860
118612) iASL Compiler/Disassembler:
11862
11863Fixed a problem with very large initializer lists (more than 4000
11864elements)
11865for both Buffer and Package objects where the parse stack could overflow.
11866
11867Enhanced the pre-compile source code scan for non-ASCII characters to
11868ignore
11869characters within comment fields. The scan is now always performed and is
11870no
11871longer optional, detecting invalid characters within a source file
11872immediately rather than during the parse phase or later.
11873
11874Enhanced the ASL grammar definition to force early reductions on all
11875list-
11876style grammar elements so that the overall parse stack usage is greatly
11877reduced. This should improve performance and reduce the possibility of
11878parse
11879stack overflow.
11880
11881Eliminated all reduce/reduce conflicts in the iASL parser generation.
11882Also,
11883with the addition of a %expected statement, the compiler generates from
11884source with no warnings.
11885
11886Fixed a possible segment fault in the disassembler if the input filename
11887does not contain a "dot" extension (Thomas Renninger).
11888
11889----------------------------------------
1189021 October 2005. Summary of changes for version 20051021:
11891
118921) ACPI CA Core Subsystem:
11893
11894Implemented support for the EM64T and other x86-64 processors. This
11895essentially entails recognizing that these processors support non-aligned
11896memory transfers. Previously, all 64-bit processors were assumed to lack
11897hardware support for non-aligned transfers.
11898
11899Completed conversion of the Resource Manager to nearly full table-driven
11900operation. Specifically, the resource conversion code (convert AML to
11901internal format and the reverse) and the debug code to dump internal
11902resource descriptors are fully table-driven, reducing code and data size
11903and
11904improving maintainability.
11905
11906The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
11907word
11908on 64-bit processors instead of a fixed 32-bit word. (With assistance
11909from
11910Alexey Starikovskiy)
11911
11912Implemented support within the resource conversion code for the Type-
11913Specific byte within the various ACPI 3.0 *WordSpace macros.
11914
11915Fixed some issues within the resource conversion code for the type-
11916specific
11917flags for both Memory and I/O address resource descriptors. For Memory,
11918implemented support for the MTP and TTP flags. For I/O, split the TRS and
11919TTP flags into two separate fields.
11920
11921Code and Data Size: The current and previous library sizes for the core
11922subsystem are shown below. These are the code and data sizes for the
11923acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11924These
11925values do not include any ACPI driver or OSPM code. The debug version of
11926the
11927code includes the debug output trace mechanism and has a much larger code
11928and data size. Note that these values will vary depending on the
11929efficiency
11930of the compiler and the compiler options used during generation.
11931
11932  Previous Release:
11933    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
11934    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
11935  Current Release:
11936    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11937    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11938
11939
11940
119412) iASL Compiler/Disassembler:
11942
11943Relaxed a compiler restriction that disallowed a ResourceIndex byte if
11944the
11945corresponding ResourceSource string was not also present in a resource
11946descriptor declaration. This restriction caused problems with existing
11947AML/ASL code that includes the Index byte without the string. When such
11948AML
11949was disassembled, it could not be compiled without modification. Further,
11950the modified code created a resource template with a different size than
11951the
11952original, breaking code that used fixed offsets into the resource
11953template
11954buffer.
11955
11956Removed a recent feature of the disassembler to ignore a lone
11957ResourceIndex
11958byte. This byte is now emitted if present so that the exact AML can be
11959reproduced when the disassembled code is recompiled.
11960
11961Improved comments and text alignment for the resource descriptor code
11962emitted by the disassembler.
11963
11964Implemented disassembler support for the ACPI 3.0 AccessSize field within
11965a
11966Register() resource descriptor.
11967
11968----------------------------------------
1196930 September 2005. Summary of changes for version 20050930:
11970
119711) ACPI CA Core Subsystem:
11972
11973Completed a major overhaul of the Resource Manager code - specifically,
11974optimizations in the area of the AML/internal resource conversion code.
11975The
11976code has been optimized to simplify and eliminate duplicated code, CPU
11977stack
11978use has been decreased by optimizing function parameters and local
11979variables, and naming conventions across the manager have been
11980standardized
11981for clarity and ease of maintenance (this includes function, parameter,
11982variable, and struct/typedef names.) The update may force changes in some
11983driver code, depending on how resources are handled by the host OS.
11984
11985All Resource Manager dispatch and information tables have been moved to a
11986single location for clarity and ease of maintenance. One new file was
11987created, named "rsinfo.c".
11988
11989The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
11990guarantee that the argument is not evaluated twice, making them less
11991prone
11992to macro side-effects. However, since there exists the possibility of
11993additional stack use if a particular compiler cannot optimize them (such
11994as
11995in the debug generation case), the original macros are optionally
11996available.
11997Note that some invocations of the return_VALUE macro may now cause size
11998mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
11999to
12000eliminate these. (From Randy Dunlap)
12001
12002Implemented a new mechanism to enable debug tracing for individual
12003control
12004methods. A new external interface, AcpiDebugTrace, is provided to enable
12005this mechanism. The intent is to allow the host OS to easily enable and
12006disable tracing for problematic control methods. This interface can be
12007easily exposed to a user or debugger interface if desired. See the file
12008psxface.c for details.
12009
12010AcpiUtCallocate will now return a valid pointer if a length of zero is
12011specified - a length of one is used and a warning is issued. This matches
12012the behavior of AcpiUtAllocate.
12013
12014Code and Data Size: The current and previous library sizes for the core
12015subsystem are shown below. These are the code and data sizes for the
12016acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12017These
12018values do not include any ACPI driver or OSPM code. The debug version of
12019the
12020code includes the debug output trace mechanism and has a much larger code
12021and data size. Note that these values will vary depending on the
12022efficiency
12023of the compiler and the compiler options used during generation.
12024
12025  Previous Release:
12026    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12027    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12028  Current Release:
12029    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12030    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12031
12032
120332) iASL Compiler/Disassembler:
12034
12035A remark is issued if the effective compile-time length of a package or
12036buffer is zero. Previously, this was a warning.
12037
12038----------------------------------------
1203916 September 2005. Summary of changes for version 20050916:
12040
120411) ACPI CA Core Subsystem:
12042
12043Fixed a problem within the Resource Manager where support for the Generic
12044Register descriptor was not fully implemented. This descriptor is now
12045fully
12046recognized, parsed, disassembled, and displayed.
12047
12048Completely restructured the Resource Manager code to utilize table-driven
12049dispatch and lookup, eliminating many of the large switch() statements.
12050This
12051reduces overall subsystem code size and code complexity. Affects the
12052resource parsing and construction, disassembly, and debug dump output.
12053
12054Cleaned up and restructured the debug dump output for all resource
12055descriptors. Improved readability of the output and reduced code size.
12056
12057Fixed a problem where changes to internal data structures caused the
12058optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12059
12060Code and Data Size: The current and previous library sizes for the core
12061subsystem are shown below. These are the code and data sizes for the
12062acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12063These
12064values do not include any ACPI driver or OSPM code. The debug version of
12065the
12066code includes the debug output trace mechanism and has a much larger code
12067and data size. Note that these values will vary depending on the
12068efficiency
12069of the compiler and the compiler options used during generation.
12070
12071  Previous Release:
12072    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12073    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12074  Current Release:
12075    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12076    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12077
12078
120792) iASL Compiler/Disassembler:
12080
12081Updated the disassembler to automatically insert an EndDependentFn()
12082macro
12083into the ASL stream if this macro is missing in the original AML code,
12084simplifying compilation of the resulting ASL module.
12085
12086Fixed a problem in the disassembler where a disassembled ResourceSource
12087string (within a large resource descriptor) was not surrounded by quotes
12088and
12089not followed by a comma, causing errors when the resulting ASL module was
12090compiled. Also, escape sequences within a ResourceSource string are now
12091handled correctly (especially "\\")
12092
12093----------------------------------------
1209402 September 2005. Summary of changes for version 20050902:
12095
120961) ACPI CA Core Subsystem:
12097
12098Fixed a problem with the internal Owner ID allocation and deallocation
12099mechanisms for control method execution and recursive method invocation.
12100This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12101messages seen on some systems. Recursive method invocation depth is
12102currently limited to 255. (Alexey Starikovskiy)
12103
12104Completely eliminated all vestiges of support for the "module-level
12105executable code" until this support is fully implemented and debugged.
12106This
12107should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12108some systems that invoke this support.
12109
12110Fixed a problem within the resource manager code where the transaction
12111flags
12112for a 64-bit address descriptor were handled incorrectly in the type-
12113specific flag byte.
12114
12115Consolidated duplicate code within the address descriptor resource
12116manager
12117code, reducing overall subsystem code size.
12118
12119Fixed a fault when using the AML debugger "disassemble" command to
12120disassemble individual control methods.
12121
12122Removed references to the "release_current" directory within the Unix
12123release package.
12124
12125Code and Data Size: The current and previous core subsystem library sizes
12126are shown below. These are the code and data sizes for the acpica.lib
12127produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12128include any ACPI driver or OSPM code. The debug version of the code
12129includes
12130the debug output trace mechanism and has a much larger code and data
12131size.
12132Note that these values will vary depending on the efficiency of the
12133compiler
12134and the compiler options used during generation.
12135
12136  Previous Release:
12137    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12138    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12139  Current Release:
12140    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12141    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12142
12143
121442) iASL Compiler/Disassembler:
12145
12146Implemented an error check for illegal duplicate values in the interrupt
12147and
12148dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12149Interrupt().
12150
12151Implemented error checking for the Irq() and IrqNoFlags() macros to
12152detect
12153too many values in the interrupt list (16 max) and invalid values in the
12154list (range 0 - 15)
12155
12156The maximum length string literal within an ASL file is now restricted to
12157200 characters as per the ACPI specification.
12158
12159Fixed a fault when using the -ln option (generate namespace listing).
12160
12161Implemented an error check to determine if a DescriptorName within a
12162resource descriptor has already been used within the current scope.
12163
12164----------------------------------------
1216515 August 2005.  Summary of changes for version 20050815:
12166
121671) ACPI CA Core Subsystem:
12168
12169Implemented a full bytewise compare to determine if a table load request
12170is
12171attempting to load a duplicate table. The compare is performed if the
12172table
12173signatures and table lengths match. This will allow different tables with
12174the same OEM Table ID and revision to be loaded - probably against the
12175ACPI
12176specification, but discovered in the field nonetheless.
12177
12178Added the changes.txt logfile to each of the zipped release packages.
12179
12180Code and Data Size: Current and previous core subsystem library sizes are
12181shown below. These are the code and data sizes for the acpica.lib
12182produced
12183by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12184any ACPI driver or OSPM code. The debug version of the code includes the
12185debug output trace mechanism and has a much larger code and data size.
12186Note
12187that these values will vary depending on the efficiency of the compiler
12188and
12189the compiler options used during generation.
12190
12191  Previous Release:
12192    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12193    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12194  Current Release:
12195    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12196    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12197
12198
121992) iASL Compiler/Disassembler:
12200
12201Fixed a problem where incorrect AML code could be generated for Package
12202objects if optimization is disabled (via the -oa switch).
12203
12204Fixed a problem with where incorrect AML code is generated for variable-
12205length packages when the package length is not specified and the number
12206of
12207initializer values is greater than 255.
12208
12209
12210----------------------------------------
1221129 July 2005.  Summary of changes for version 20050729:
12212
122131) ACPI CA Core Subsystem:
12214
12215Implemented support to ignore an attempt to install/load a particular
12216ACPI
12217table more than once. Apparently there exists BIOS code that repeatedly
12218attempts to load the same SSDT upon certain events. With assistance from
12219Venkatesh Pallipadi.
12220
12221Restructured the main interface to the AML parser in order to correctly
12222handle all exceptional conditions. This will prevent leakage of the
12223OwnerId
12224resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12225some
12226machines. With assistance from Alexey Starikovskiy.
12227
12228Support for "module level code" has been disabled in this version due to
12229a
12230number of issues that have appeared on various machines. The support can
12231be
12232enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12233compilation. When the issues are fully resolved, the code will be enabled
12234by
12235default again.
12236
12237Modified the internal functions for debug print support to define the
12238FunctionName parameter as a (const char *) for compatibility with
12239compiler
12240built-in macros such as __FUNCTION__, etc.
12241
12242Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12243
12244Implemented support to display an object count summary for the AML
12245Debugger
12246commands Object and Methods.
12247
12248Code and Data Size: Current and previous core subsystem library sizes are
12249shown below. These are the code and data sizes for the acpica.lib
12250produced
12251by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12252any ACPI driver or OSPM code. The debug version of the code includes the
12253debug output trace mechanism and has a much larger code and data size.
12254Note
12255that these values will vary depending on the efficiency of the compiler
12256and
12257the compiler options used during generation.
12258
12259  Previous Release:
12260    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12261    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12262  Current Release:
12263    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12264    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12265
12266
122672) iASL Compiler/Disassembler:
12268
12269Fixed a regression that appeared in the 20050708 version of the compiler
12270where an error message was inadvertently emitted for invocations of the
12271_OSI
12272reserved control method.
12273
12274----------------------------------------
1227508 July 2005.  Summary of changes for version 20050708:
12276
122771) ACPI CA Core Subsystem:
12278
12279The use of the CPU stack in the debug version of the subsystem has been
12280considerably reduced. Previously, a debug structure was declared in every
12281function that used the debug macros. This structure has been removed in
12282favor of declaring the individual elements as parameters to the debug
12283functions. This reduces the cumulative stack use during nested execution
12284of
12285ACPI function calls at the cost of a small increase in the code size of
12286the
12287debug version of the subsystem. With assistance from Alexey Starikovskiy
12288and
12289Len Brown.
12290
12291Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12292headers to define a macro that will return the current function name at
12293runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12294by
12295the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12296compiler-dependent header, the function name is saved on the CPU stack
12297(one
12298pointer per function.) This mechanism is used because apparently there
12299exists no standard ANSI-C defined macro that that returns the function
12300name.
12301
12302Redesigned and reimplemented the "Owner ID" mechanism used to track
12303namespace objects created/deleted by ACPI tables and control method
12304execution. A bitmap is now used to allocate and free the IDs, thus
12305solving
12306the wraparound problem present in the previous implementation. The size
12307of
12308the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12309Starikovskiy).
12310
12311Removed the UINT32_BIT and UINT16_BIT types that were used for the
12312bitfield
12313flag definitions within the headers for the predefined ACPI tables. These
12314have been replaced by UINT8_BIT in order to increase the code portability
12315of
12316the subsystem. If the use of UINT8 remains a problem, we may be forced to
12317eliminate bitfields entirely because of a lack of portability.
12318
12319Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12320This
12321is a frequently used function and this improvement increases the
12322performance
12323of the entire subsystem (Alexey Starikovskiy).
12324
12325Fixed several possible memory leaks and the inverse - premature object
12326deletion (Alexey Starikovskiy).
12327
12328Code and Data Size: Current and previous core subsystem library sizes are
12329shown below. These are the code and data sizes for the acpica.lib
12330produced
12331by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12332any ACPI driver or OSPM code. The debug version of the code includes the
12333debug output trace mechanism and has a much larger code and data size.
12334Note
12335that these values will vary depending on the efficiency of the compiler
12336and
12337the compiler options used during generation.
12338
12339  Previous Release:
12340    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12341    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12342  Current Release:
12343    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12344    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12345
12346----------------------------------------
1234724 June 2005.  Summary of changes for version 20050624:
12348
123491) ACPI CA Core Subsystem:
12350
12351Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12352the host-defined cache object. This allows the OSL implementation to
12353define
12354and type this object in any manner desired, simplifying the OSL
12355implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12356Linux, and should be defined in the OS-specific header file for other
12357operating systems as required.
12358
12359Changed the interface to AcpiOsAcquireObject to directly return the
12360requested object as the function return (instead of ACPI_STATUS.) This
12361change was made for performance reasons, since this is the purpose of the
12362interface in the first place. AcpiOsAcquireObject is now similar to the
12363AcpiOsAllocate interface.
12364
12365Implemented a new AML debugger command named Businfo. This command
12366displays
12367information about all devices that have an associate _PRT object. The
12368_ADR,
12369_HID, _UID, and _CID are displayed for these devices.
12370
12371Modified the initialization sequence in AcpiInitializeSubsystem to call
12372the
12373OSL interface AcpiOslInitialize first, before any local initialization.
12374This
12375change was required because the global initialization now calls OSL
12376interfaces.
12377
12378Enhanced the Dump command to display the entire contents of Package
12379objects
12380(including all sub-objects and their values.)
12381
12382Restructured the code base to split some files because of size and/or
12383because the code logically belonged in a separate file. New files are
12384listed
12385below. All makefiles and project files included in the ACPI CA release
12386have
12387been updated.
12388    utilities/utcache.c           /* Local cache interfaces */
12389    utilities/utmutex.c           /* Local mutex support */
12390    utilities/utstate.c           /* State object support */
12391    interpreter/parser/psloop.c   /* Main AML parse loop */
12392
12393Code and Data Size: Current and previous core subsystem library sizes are
12394shown below. These are the code and data sizes for the acpica.lib
12395produced
12396by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12397any ACPI driver or OSPM code. The debug version of the code includes the
12398debug output trace mechanism and has a much larger code and data size.
12399Note
12400that these values will vary depending on the efficiency of the compiler
12401and
12402the compiler options used during generation.
12403
12404  Previous Release:
12405    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12406    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12407  Current Release:
12408    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12409    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12410
12411
124122) iASL Compiler/Disassembler:
12413
12414Fixed a regression introduced in version 20050513 where the use of a
12415Package
12416object within a Case() statement caused a compile time exception. The
12417original behavior has been restored (a Match() operator is emitted.)
12418
12419----------------------------------------
1242017 June 2005.  Summary of changes for version 20050617:
12421
124221) ACPI CA Core Subsystem:
12423
12424Moved the object cache operations into the OS interface layer (OSL) to
12425allow
12426the host OS to handle these operations if desired (for example, the Linux
12427OSL will invoke the slab allocator). This support is optional; the
12428compile
12429time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12430cache
12431code in the ACPI CA core. The new OSL interfaces are shown below. See
12432utalloc.c for an example implementation, and acpiosxf.h for the exact
12433interface definitions. With assistance from Alexey Starikovskiy.
12434    AcpiOsCreateCache
12435    AcpiOsDeleteCache
12436    AcpiOsPurgeCache
12437    AcpiOsAcquireObject
12438    AcpiOsReleaseObject
12439
12440Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12441return
12442and restore a flags parameter. This fits better with many OS lock models.
12443Note: the current execution state (interrupt handler or not) is no longer
12444passed to these interfaces. If necessary, the OSL must determine this
12445state
12446by itself, a simple and fast operation. With assistance from Alexey
12447Starikovskiy.
12448
12449Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12450present if the revision of the RSDP was 2 or greater. According to the
12451ACPI
12452specification, the XSDT is optional in all cases, and the table manager
12453therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12454Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12455contain
12456only the RSDT.
12457
12458Fixed an interpreter problem with the Mid() operator in the case of an
12459input
12460string where the resulting output string is of zero length. It now
12461correctly
12462returns a valid, null terminated string object instead of a string object
12463with a null pointer.
12464
12465Fixed a problem with the control method argument handling to allow a
12466store
12467to an Arg object that already contains an object of type Device. The
12468Device
12469object is now correctly overwritten. Previously, an error was returned.
12470
12471
12472Enhanced the debugger Find command to emit object values in addition to
12473the
12474found object pathnames. The output format is the same as the dump
12475namespace
12476command.
12477
12478Enhanced the debugger Set command. It now has the ability to set the
12479value
12480of any Named integer object in the namespace (Previously, only method
12481locals
12482and args could be set.)
12483
12484Code and Data Size: Current and previous core subsystem library sizes are
12485shown below. These are the code and data sizes for the acpica.lib
12486produced
12487by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12488any ACPI driver or OSPM code. The debug version of the code includes the
12489debug output trace mechanism and has a much larger code and data size.
12490Note
12491that these values will vary depending on the efficiency of the compiler
12492and
12493the compiler options used during generation.
12494
12495  Previous Release:
12496    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12497    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12498  Current Release:
12499    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12500    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12501
12502
125032) iASL Compiler/Disassembler:
12504
12505Fixed a regression in the disassembler where if/else/while constructs
12506were
12507output incorrectly. This problem was introduced in the previous release
12508(20050526). This problem also affected the single-step disassembly in the
12509debugger.
12510
12511Fixed a problem where compiling the reserved _OSI method would randomly
12512(but
12513rarely) produce compile errors.
12514
12515Enhanced the disassembler to emit compilable code in the face of
12516incorrect
12517AML resource descriptors. If the optional ResourceSourceIndex is present,
12518but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12519disassembly. Otherwise, the resulting code cannot be compiled without
12520errors.
12521
12522----------------------------------------
1252326 May 2005.  Summary of changes for version 20050526:
12524
125251) ACPI CA Core Subsystem:
12526
12527Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12528the module level (not within a control method.) These opcodes are
12529executed
12530exactly once at the time the table is loaded. This type of code was legal
12531up
12532until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12533in
12534order to provide backwards compatibility with earlier BIOS
12535implementations.
12536This eliminates the "Encountered executable code at module level" warning
12537that was previously generated upon detection of such code.
12538
12539Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12540inadvertently be generated during the lookup of namespace objects in the
12541second pass parse of ACPI tables and control methods. It appears that
12542this
12543problem could occur during the resolution of forward references to
12544namespace
12545objects.
12546
12547Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12548corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12549allows the deadlock detection debug code to be compiled out in the normal
12550case, improving mutex performance (and overall subsystem performance)
12551considerably.
12552
12553Implemented a handful of miscellaneous fixes for possible memory leaks on
12554error conditions and error handling control paths. These fixes were
12555suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12556
12557Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12558(tbxfroot.c)
12559to prevent a fault in this error case.
12560
12561Code and Data Size: Current and previous core subsystem library sizes are
12562shown below. These are the code and data sizes for the acpica.lib
12563produced
12564by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12565any ACPI driver or OSPM code. The debug version of the code includes the
12566debug output trace mechanism and has a much larger code and data size.
12567Note
12568that these values will vary depending on the efficiency of the compiler
12569and
12570the compiler options used during generation.
12571
12572  Previous Release:
12573    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12574    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12575  Current Release:
12576    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12577    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12578
12579
125802) iASL Compiler/Disassembler:
12581
12582Implemented support to allow Type 1 and Type 2 ASL operators to appear at
12583the module level (not within a control method.) These operators will be
12584executed once at the time the table is loaded. This type of code was
12585legal
12586up until the release of ACPI 2.0B (2002) and is now supported by the iASL
12587compiler in order to provide backwards compatibility with earlier BIOS
12588ASL
12589code.
12590
12591The ACPI integer width (specified via the table revision ID or the -r
12592override, 32 or 64 bits) is now used internally during compile-time
12593constant
12594folding to ensure that constants are truncated to 32 bits if necessary.
12595Previously, the revision ID value was only emitted in the AML table
12596header.
12597
12598An error message is now generated for the Mutex and Method operators if
12599the
12600SyncLevel parameter is outside the legal range of 0 through 15.
12601
12602Fixed a problem with the Method operator ParameterTypes list handling
12603(ACPI
126043.0). Previously, more than 2 types or 2 arguments generated a syntax
12605error.
12606The actual underlying implementation of method argument typechecking is
12607still under development, however.
12608
12609----------------------------------------
1261013 May 2005.  Summary of changes for version 20050513:
12611
126121) ACPI CA Core Subsystem:
12613
12614Implemented support for PCI Express root bridges -- added support for
12615device
12616PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12617
12618The interpreter now automatically truncates incoming 64-bit constants to
1261932
12620bits if currently executing out of a 32-bit ACPI table (Revision < 2).
12621This
12622also affects the iASL compiler constant folding. (Note: as per below, the
12623iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12624
12625Fixed a problem where string and buffer objects with "static" pointers
12626(pointers to initialization data within an ACPI table) were not handled
12627consistently. The internal object copy operation now always copies the
12628data
12629to a newly allocated buffer, regardless of whether the source object is
12630static or not.
12631
12632Fixed a problem with the FromBCD operator where an implicit result
12633conversion was improperly performed while storing the result to the
12634target
12635operand. Since this is an "explicit conversion" operator, the implicit
12636conversion should never be performed on the output.
12637
12638Fixed a problem with the CopyObject operator where a copy to an existing
12639named object did not always completely overwrite the existing object
12640stored
12641at name. Specifically, a buffer-to-buffer copy did not delete the
12642existing
12643buffer.
12644
12645Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
12646and
12647structs for consistency.
12648
12649Code and Data Size: Current and previous core subsystem library sizes are
12650shown below. These are the code and data sizes for the acpica.lib
12651produced
12652by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12653any ACPI driver or OSPM code. The debug version of the code includes the
12654debug output trace mechanism and has a much larger code and data size.
12655Note
12656that these values will vary depending on the efficiency of the compiler
12657and
12658the compiler options used during generation.
12659
12660  Previous Release:
12661    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12662    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12663  Current Release: (Same sizes)
12664    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12665    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12666
12667
126682) iASL Compiler/Disassembler:
12669
12670The compiler now emits a warning if an attempt is made to generate a 64-
12671bit
12672integer constant from within a 32-bit ACPI table (Revision < 2). The
12673integer
12674is truncated to 32 bits.
12675
12676Fixed a problem with large package objects: if the static length of the
12677package is greater than 255, the "variable length package" opcode is
12678emitted. Previously, this caused an error. This requires an update to the
12679ACPI spec, since it currently (incorrectly) states that packages larger
12680than
12681255 elements are not allowed.
12682
12683The disassembler now correctly handles variable length packages and
12684packages
12685larger than 255 elements.
12686
12687----------------------------------------
1268808 April 2005.  Summary of changes for version 20050408:
12689
126901) ACPI CA Core Subsystem:
12691
12692Fixed three cases in the interpreter where an "index" argument to an ASL
12693function was still (internally) 32 bits instead of the required 64 bits.
12694This was the Index argument to the Index, Mid, and Match operators.
12695
12696The "strupr" function is now permanently local (AcpiUtStrupr), since this
12697is
12698not a POSIX-defined function and not present in most kernel-level C
12699libraries. All references to the C library strupr function have been
12700removed
12701from the headers.
12702
12703Completed the deployment of static functions/prototypes. All prototypes
12704with
12705the static attribute have been moved from the headers to the owning C
12706file.
12707
12708Implemented an extract option (-e) for the AcpiBin utility (AML binary
12709utility). This option allows the utility to extract individual ACPI
12710tables
12711from the output of AcpiDmp. It provides the same functionality of the
12712acpixtract.pl perl script without the worry of setting the correct perl
12713options. AcpiBin runs on Windows and has not yet been generated/validated
12714in
12715the Linux/Unix environment (but should be soon).
12716
12717Updated and fixed the table dump option for AcpiBin (-d). This option
12718converts a single ACPI table to a hex/ascii file, similar to the output
12719of
12720AcpiDmp.
12721
12722Code and Data Size: Current and previous core subsystem library sizes are
12723shown below. These are the code and data sizes for the acpica.lib
12724produced
12725by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12726any ACPI driver or OSPM code. The debug version of the code includes the
12727debug output trace mechanism and has a much larger code and data size.
12728Note
12729that these values will vary depending on the efficiency of the compiler
12730and
12731the compiler options used during generation.
12732
12733  Previous Release:
12734    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12735    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12736  Current Release:
12737    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12738    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12739
12740
127412) iASL Compiler/Disassembler:
12742
12743Disassembler fix: Added a check to ensure that the table length found in
12744the
12745ACPI table header within the input file is not longer than the actual
12746input
12747file size. This indicates some kind of file or table corruption.
12748
12749----------------------------------------
1275029 March 2005.  Summary of changes for version 20050329:
12751
127521) ACPI CA Core Subsystem:
12753
12754An error is now generated if an attempt is made to create a Buffer Field
12755of
12756length zero (A CreateField with a length operand of zero.)
12757
12758The interpreter now issues a warning whenever executable code at the
12759module
12760level is detected during ACPI table load. This will give some idea of the
12761prevalence of this type of code.
12762
12763Implemented support for references to named objects (other than control
12764methods) within package objects.
12765
12766Enhanced package object output for the debug object. Package objects are
12767now
12768completely dumped, showing all elements.
12769
12770Enhanced miscellaneous object output for the debug object. Any object can
12771now be written to the debug object (for example, a device object can be
12772written, and the type of the object will be displayed.)
12773
12774The "static" qualifier has been added to all local functions across both
12775the
12776core subsystem and the iASL compiler.
12777
12778The number of "long" lines (> 80 chars) within the source has been
12779significantly reduced, by about 1/3.
12780
12781Cleaned up all header files to ensure that all CA/iASL functions are
12782prototyped (even static functions) and the formatting is consistent.
12783
12784Two new header files have been added, acopcode.h and acnames.h.
12785
12786Removed several obsolete functions that were no longer used.
12787
12788Code and Data Size: Current and previous core subsystem library sizes are
12789shown below. These are the code and data sizes for the acpica.lib
12790produced
12791by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12792any ACPI driver or OSPM code. The debug version of the code includes the
12793debug output trace mechanism and has a much larger code and data size.
12794Note
12795that these values will vary depending on the efficiency of the compiler
12796and
12797the compiler options used during generation.
12798
12799  Previous Release:
12800    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12801    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12802  Current Release:
12803    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12804    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12805
12806
12807
128082) iASL Compiler/Disassembler:
12809
12810Fixed a problem with the resource descriptor generation/support. For the
12811ResourceSourceIndex and the ResourceSource fields, both must be present,
12812or
12813both must be not present - can't have one without the other.
12814
12815The compiler now returns non-zero from the main procedure if any errors
12816have
12817occurred during the compilation.
12818
12819
12820----------------------------------------
1282109 March 2005.  Summary of changes for version 20050309:
12822
128231) ACPI CA Core Subsystem:
12824
12825The string-to-buffer implicit conversion code has been modified again
12826after
12827a change to the ACPI specification.  In order to match the behavior of
12828the
12829other major ACPI implementation, the target buffer is no longer truncated
12830if
12831the source string is smaller than an existing target buffer. This change
12832requires an update to the ACPI spec, and should eliminate the recent
12833AE_AML_BUFFER_LIMIT issues.
12834
12835The "implicit return" support was rewritten to a new algorithm that
12836solves
12837the general case. Rather than attempt to determine when a method is about
12838to
12839exit, the result of every ASL operator is saved momentarily until the
12840very
12841next ASL operator is executed. Therefore, no matter how the method exits,
12842there will always be a saved implicit return value. This feature is only
12843enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
12844eliminate
12845AE_AML_NO_RETURN_VALUE errors when enabled.
12846
12847Implemented implicit conversion support for the predicate (operand) of
12848the
12849If, Else, and While operators. String and Buffer arguments are
12850automatically
12851converted to Integers.
12852
12853Changed the string-to-integer conversion behavior to match the new ACPI
12854errata: "If no integer object exists, a new integer is created. The ASCII
12855string is interpreted as a hexadecimal constant. Each string character is
12856interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
12857with the first character as the most significant digit, and ending with
12858the
12859first non-hexadecimal character or end-of-string." This means that the
12860first
12861non-hex character terminates the conversion and this is the code that was
12862changed.
12863
12864Fixed a problem where the ObjectType operator would fail (fault) when
12865used
12866on an Index of a Package which pointed to a null package element. The
12867operator now properly returns zero (Uninitialized) in this case.
12868
12869Fixed a problem where the While operator used excessive memory by not
12870properly popping the result stack during execution. There was no memory
12871leak
12872after execution, however. (Code provided by Valery Podrezov.)
12873
12874Fixed a problem where references to control methods within Package
12875objects
12876caused the method to be invoked, instead of producing a reference object
12877pointing to the method.
12878
12879Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
12880to
12881improve performance and reduce code size. (Code provided by Alexey
12882Starikovskiy.)
12883
12884Code and Data Size: Current and previous core subsystem library sizes are
12885shown below. These are the code and data sizes for the acpica.lib
12886produced
12887by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12888any ACPI driver or OSPM code. The debug version of the code includes the
12889debug output trace mechanism and has a much larger code and data size.
12890Note
12891that these values will vary depending on the efficiency of the compiler
12892and
12893the compiler options used during generation.
12894
12895  Previous Release:
12896    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12897    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
12898  Current Release:
12899    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12900    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12901
12902
129032) iASL Compiler/Disassembler:
12904
12905Fixed a problem with the Return operator with no arguments. Since the AML
12906grammar for the byte encoding requires an operand for the Return opcode,
12907the
12908compiler now emits a Return(Zero) for this case.  An ACPI specification
12909update has been written for this case.
12910
12911For tables other than the DSDT, namepath optimization is automatically
12912disabled. This is because SSDTs can be loaded anywhere in the namespace,
12913the
12914compiler has no knowledge of where, and thus cannot optimize namepaths.
12915
12916Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
12917inadvertently omitted from the ACPI specification, and will require an
12918update to the spec.
12919
12920The source file scan for ASCII characters is now optional (-a). This
12921change
12922was made because some vendors place non-ascii characters within comments.
12923However, the scan is simply a brute-force byte compare to ensure all
12924characters in the file are in the range 0x00 to 0x7F.
12925
12926Fixed a problem with the CondRefOf operator where the compiler was
12927inappropriately checking for the existence of the target. Since the point
12928of
12929the operator is to check for the existence of the target at run-time, the
12930compiler no longer checks for the target existence.
12931
12932Fixed a problem where errors generated from the internal AML interpreter
12933during constant folding were not handled properly, causing a fault.
12934
12935Fixed a problem with overly aggressive range checking for the Stall
12936operator. The valid range (max 255) is now only checked if the operand is
12937of
12938type Integer. All other operand types cannot be statically checked.
12939
12940Fixed a problem where control method references within the RefOf,
12941DeRefOf,
12942and ObjectType operators were not treated properly. They are now treated
12943as
12944actual references, not method invocations.
12945
12946Fixed and enhanced the "list namespace" option (-ln). This option was
12947broken
12948a number of releases ago.
12949
12950Improved error handling for the Field, IndexField, and BankField
12951operators.
12952The compiler now cleanly reports and recovers from errors in the field
12953component (FieldUnit) list.
12954
12955Fixed a disassembler problem where the optional ResourceDescriptor fields
12956TRS and TTP were not always handled correctly.
12957
12958Disassembler - Comments in output now use "//" instead of "/*"
12959
12960----------------------------------------
1296128 February 2005.  Summary of changes for version 20050228:
12962
129631) ACPI CA Core Subsystem:
12964
12965Fixed a problem where the result of an Index() operator (an object
12966reference) must increment the reference count on the target object for
12967the
12968life of the object reference.
12969
12970Implemented AML Interpreter and Debugger support for the new ACPI 3.0
12971Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
12972WordSpace
12973resource descriptors.
12974
12975Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
12976Space Descriptor" string, indicating interpreter support for the
12977descriptors
12978above.
12979
12980Implemented header support for the new ACPI 3.0 FADT flag bits.
12981
12982Implemented header support for the new ACPI 3.0 PCI Express bits for the
12983PM1
12984status/enable registers.
12985
12986Updated header support for the MADT processor local Apic struct and MADT
12987platform interrupt source struct for new ACPI 3.0 fields.
12988
12989Implemented header support for the SRAT and SLIT ACPI tables.
12990
12991Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
12992flag
12993at runtime.
12994
12995Code and Data Size: Current and previous core subsystem library sizes are
12996shown below. These are the code and data sizes for the acpica.lib
12997produced
12998by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12999any ACPI driver or OSPM code. The debug version of the code includes the
13000debug output trace mechanism and has a much larger code and data size.
13001Note
13002that these values will vary depending on the efficiency of the compiler
13003and
13004the compiler options used during generation.
13005
13006  Previous Release:
13007    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13008    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13009  Current Release:
13010    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13011    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13012
13013
130142) iASL Compiler/Disassembler:
13015
13016Fixed a problem with the internal 64-bit String-to-integer conversion
13017with
13018strings less than two characters long.
13019
13020Fixed a problem with constant folding where the result of the Index()
13021operator can not be considered a constant. This means that Index() cannot
13022be
13023a type3 opcode and this will require an update to the ACPI specification.
13024
13025Disassembler: Implemented support for the TTP, MTP, and TRS resource
13026descriptor fields. These fields were inadvertently ignored and not output
13027in
13028the disassembly of the resource descriptor.
13029
13030
13031 ----------------------------------------
1303211 February 2005.  Summary of changes for version 20050211:
13033
130341) ACPI CA Core Subsystem:
13035
13036Implemented ACPI 3.0 support for implicit conversion within the Match()
13037operator. MatchObjects can now be of type integer, buffer, or string
13038instead
13039of just type integer.  Package elements are implicitly converted to the
13040type
13041of the MatchObject. This change aligns the behavior of Match() with the
13042behavior of the other logical operators (LLess(), etc.) It also requires
13043an
13044errata change to the ACPI specification as this support was intended for
13045ACPI 3.0, but was inadvertently omitted.
13046
13047Fixed a problem with the internal implicit "to buffer" conversion.
13048Strings
13049that are converted to buffers will cause buffer truncation if the string
13050is
13051smaller than the target buffer. Integers that are converted to buffers
13052will
13053not cause buffer truncation, only zero extension (both as per the ACPI
13054spec.) The problem was introduced when code was added to truncate the
13055buffer, but this should not be performed in all cases, only the string
13056case.
13057
13058Fixed a problem with the Buffer and Package operators where the
13059interpreter
13060would get confused if two such operators were used as operands to an ASL
13061operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13062stack was not being popped after the execution of these operators,
13063resulting
13064in an AE_NO_RETURN_VALUE exception.
13065
13066Fixed a problem with constructs of the form Store(Index(...),...). The
13067reference object returned from Index was inadvertently resolved to an
13068actual
13069value. This problem was introduced in version 20050114 when the behavior
13070of
13071Store() was modified to restrict the object types that can be used as the
13072source operand (to match the ACPI specification.)
13073
13074Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13075
13076Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13077
13078Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13079
13080Code and Data Size: Current and previous core subsystem library sizes are
13081shown below. These are the code and data sizes for the acpica.lib
13082produced
13083by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13084any ACPI driver or OSPM code. The debug version of the code includes the
13085debug output trace mechanism and has a much larger code and data size.
13086Note
13087that these values will vary depending on the efficiency of the compiler
13088and
13089the compiler options used during generation.
13090
13091  Previous Release:
13092    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13093    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13094  Current Release:
13095    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13096    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13097
13098
130992) iASL Compiler/Disassembler:
13100
13101Fixed a code generation problem in the constant folding optimization code
13102where incorrect code was generated if a constant was reduced to a buffer
13103object (i.e., a reduced type 5 opcode.)
13104
13105Fixed a typechecking problem for the ToBuffer operator. Caused by an
13106incorrect return type in the internal opcode information table.
13107
13108----------------------------------------
1310925 January 2005.  Summary of changes for version 20050125:
13110
131111) ACPI CA Core Subsystem:
13112
13113Fixed a recently introduced problem with the Global Lock where the
13114underlying semaphore was not created.  This problem was introduced in
13115version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13116Acquire() operation on _GL.
13117
13118The local object cache is now optional, and is disabled by default. Both
13119AcpiExec and the iASL compiler enable the cache because they run in user
13120mode and this enhances their performance. #define
13121ACPI_ENABLE_OBJECT_CACHE
13122to enable the local cache.
13123
13124Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13125the
13126optional "implicit return" support where an error was returned if no
13127return
13128object was expected, but one was implicitly returned. AE_OK is now
13129returned
13130in this case and the implicitly returned object is deleted.
13131AcpiUtEvaluateObject is only occasionally used, and only to execute
13132reserved
13133methods such as _STA and _INI where the return type is known up front.
13134
13135Fixed a few issues with the internal convert-to-integer code. It now
13136returns
13137an error if an attempt is made to convert a null string, a string of only
13138blanks/tabs, or a zero-length buffer. This affects both implicit
13139conversion
13140and explicit conversion via the ToInteger() operator.
13141
13142The internal debug code in AcpiUtAcquireMutex has been commented out. It
13143is
13144not needed for normal operation and should increase the performance of
13145the
13146entire subsystem. The code remains in case it is needed for debug
13147purposes
13148again.
13149
13150The AcpiExec source and makefile are included in the Unix/Linux package
13151for
13152the first time.
13153
13154Code and Data Size: Current and previous core subsystem library sizes are
13155shown below. These are the code and data sizes for the acpica.lib
13156produced
13157by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13158any ACPI driver or OSPM code. The debug version of the code includes the
13159debug output trace mechanism and has a much larger code and data size.
13160Note
13161that these values will vary depending on the efficiency of the compiler
13162and
13163the compiler options used during generation.
13164
13165  Previous Release:
13166    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13167    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13168  Current Release:
13169    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13170    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13171
131722) iASL Compiler/Disassembler:
13173
13174Switch/Case support: A warning is now issued if the type of the Switch
13175value
13176cannot be determined at compile time. For example, Switch(Arg0) will
13177generate the warning, and the type is assumed to be an integer. As per
13178the
13179ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13180the
13181warning.
13182
13183Switch/Case support: Implemented support for buffer and string objects as
13184the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13185buffers and strings.
13186
13187Switch/Case support: The emitted code for the LEqual() comparisons now
13188uses
13189the switch value as the first operand, not the second. The case value is
13190now
13191the second operand, and this allows the case value to be implicitly
13192converted to the type of the switch value, not the other way around.
13193
13194Switch/Case support: Temporary variables are now emitted immediately
13195within
13196the control method, not at the global level. This means that there are
13197now
1319836 temps available per-method, not 36 temps per-module as was the case
13199with
13200the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13201
13202----------------------------------------
1320314 January 2005.  Summary of changes for version 20050114:
13204
13205Added 2005 copyright to all module headers.  This affects every module in
13206the core subsystem, iASL compiler, and the utilities.
13207
132081) ACPI CA Core Subsystem:
13209
13210Fixed an issue with the String-to-Buffer conversion code where the string
13211null terminator was not included in the buffer after conversion, but
13212there
13213is existing ASL that assumes the string null terminator is included. This
13214is
13215the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13216introduced in the previous version when the code was updated to correctly
13217set the converted buffer size as per the ACPI specification. The ACPI
13218spec
13219is ambiguous and will be updated to specify that the null terminator must
13220be
13221included in the converted buffer. This also affects the ToBuffer() ASL
13222operator.
13223
13224Fixed a problem with the Mid() ASL/AML operator where it did not work
13225correctly on Buffer objects. Newly created sub-buffers were not being
13226marked
13227as initialized.
13228
13229
13230Fixed a problem in AcpiTbFindTable where incorrect string compares were
13231performed on the OemId and OemTableId table header fields.  These fields
13232are
13233not null terminated, so strncmp is now used instead of strcmp.
13234
13235Implemented a restriction on the Store() ASL/AML operator to align the
13236behavior with the ACPI specification.  Previously, any object could be
13237used
13238as the source operand.  Now, the only objects that may be used are
13239Integers,
13240Buffers, Strings, Packages, Object References, and DDB Handles.  If
13241necessary, the original behavior can be restored by enabling the
13242EnableInterpreterSlack flag.
13243
13244Enhanced the optional "implicit return" support to allow an implicit
13245return
13246value from methods that are invoked externally via the AcpiEvaluateObject
13247interface.  This enables implicit returns from the _STA and _INI methods,
13248for example.
13249
13250Changed the Revision() ASL/AML operator to return the current version of
13251the
13252AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13253returned
13254the supported ACPI version (This is the function of the _REV method).
13255
13256Updated the _REV predefined method to return the currently supported
13257version
13258of ACPI, now 3.
13259
13260Implemented batch mode option for the AcpiExec utility (-b).
13261
13262Code and Data Size: Current and previous core subsystem library sizes are
13263shown below. These are the code and data sizes for the acpica.lib
13264produced
13265by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13266any ACPI driver or OSPM code. The debug version of the code includes the
13267debug output trace mechanism and has a much larger code and data size.
13268Note
13269that these values will vary depending on the efficiency of the compiler
13270and
13271the compiler options used during generation.
13272
13273  Previous Release:
13274    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13275    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13276  Current Release:
13277    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13278    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13279
13280----------------------------------------
1328110 December 2004.  Summary of changes for version 20041210:
13282
13283ACPI 3.0 support is nearing completion in both the iASL compiler and the
13284ACPI CA core subsystem.
13285
132861) ACPI CA Core Subsystem:
13287
13288Fixed a problem in the ToDecimalString operator where the resulting
13289string
13290length was incorrectly calculated. The length is now calculated exactly,
13291eliminating incorrect AE_STRING_LIMIT exceptions.
13292
13293Fixed a problem in the ToHexString operator to allow a maximum 200
13294character
13295string to be produced.
13296
13297Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13298copy
13299routine where the length of the resulting buffer was not truncated to the
13300new size (if the target buffer already existed).
13301
13302Code and Data Size: Current and previous core subsystem library sizes are
13303shown below. These are the code and data sizes for the acpica.lib
13304produced
13305by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13306any ACPI driver or OSPM code. The debug version of the code includes the
13307debug output trace mechanism and has a much larger code and data size.
13308Note
13309that these values will vary depending on the efficiency of the compiler
13310and
13311the compiler options used during generation.
13312
13313  Previous Release:
13314    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13315    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13316  Current Release:
13317    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13318    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13319
13320
133212) iASL Compiler/Disassembler:
13322
13323Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13324ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13325Includes support in the disassembler.
13326
13327Implemented support for the new (ACPI 3.0) parameter to the Register
13328macro,
13329AccessSize.
13330
13331Fixed a problem where the _HE resource name for the Interrupt macro was
13332referencing bit 0 instead of bit 1.
13333
13334Implemented check for maximum 255 interrupts in the Interrupt macro.
13335
13336Fixed a problem with the predefined resource descriptor names where
13337incorrect AML code was generated if the offset within the resource buffer
13338was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
13339but did not update the surrounding package lengths.
13340
13341Changes to the Dma macro:  All channels within the channel list must be
13342in
13343the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
13344optional (default is BusMaster).
13345
13346Implemented check for maximum 7 data bytes for the VendorShort macro.
13347
13348The ReadWrite parameter is now optional for the Memory32 and similar
13349macros.
13350
13351----------------------------------------
1335203 December 2004.  Summary of changes for version 20041203:
13353
133541) ACPI CA Core Subsystem:
13355
13356The low-level field insertion/extraction code (exfldio) has been
13357completely
13358rewritten to eliminate unnecessary complexity, bugs, and boundary
13359conditions.
13360
13361Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13362ToDecimalString
13363operators where the input operand could be inadvertently deleted if no
13364conversion was necessary (e.g., if the input to ToInteger was an Integer
13365object.)
13366
13367Fixed a problem with the ToDecimalString and ToHexString where an
13368incorrect
13369exception code was returned if the resulting string would be > 200 chars.
13370AE_STRING_LIMIT is now returned.
13371
13372Fixed a problem with the Concatenate operator where AE_OK was always
13373returned, even if the operation failed.
13374
13375Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13376semaphores to be allocated.
13377
13378Code and Data Size: Current and previous core subsystem library sizes are
13379shown below. These are the code and data sizes for the acpica.lib
13380produced
13381by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13382any ACPI driver or OSPM code. The debug version of the code includes the
13383debug output trace mechanism and has a much larger code and data size.
13384Note
13385that these values will vary depending on the efficiency of the compiler
13386and
13387the compiler options used during generation.
13388
13389  Previous Release:
13390    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13391    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13392  Current Release:
13393    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13394    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13395
13396
133972) iASL Compiler/Disassembler:
13398
13399Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
13400recently introduced in 20041119.
13401
13402Fixed a problem with the ToUUID macro where the upper nybble of each
13403buffer
13404byte was inadvertently set to zero.
13405
13406----------------------------------------
1340719 November 2004.  Summary of changes for version 20041119:
13408
134091) ACPI CA Core Subsystem:
13410
13411Fixed a problem in the internal ConvertToInteger routine where new
13412integers
13413were not truncated to 32 bits for 32-bit ACPI tables. This routine
13414converts
13415buffers and strings to integers.
13416
13417Implemented support to store a value to an Index() on a String object.
13418This
13419is an ACPI 2.0 feature that had not yet been implemented.
13420
13421Implemented new behavior for storing objects to individual package
13422elements
13423(via the Index() operator). The previous behavior was to invoke the
13424implicit
13425conversion rules if an object was already present at the index.  The new
13426behavior is to simply delete any existing object and directly store the
13427new
13428object. Although the ACPI specification seems unclear on this subject,
13429other
13430ACPI implementations behave in this manner.  (This is the root of the
13431AE_BAD_HEX_CONSTANT issue.)
13432
13433Modified the RSDP memory scan mechanism to support the extended checksum
13434for
13435ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13436RSDP signature is found with a valid checksum.
13437
13438Code and Data Size: Current and previous core subsystem library sizes are
13439shown below. These are the code and data sizes for the acpica.lib
13440produced
13441by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13442any ACPI driver or OSPM code. The debug version of the code includes the
13443debug output trace mechanism and has a much larger code and data size.
13444Note
13445that these values will vary depending on the efficiency of the compiler
13446and
13447the compiler options used during generation.
13448
13449  Previous Release:
13450    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13451    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13452  Current Release:
13453    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13454    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13455
13456
134572) iASL Compiler/Disassembler:
13458
13459Fixed a missing semicolon in the aslcompiler.y file.
13460
13461----------------------------------------
1346205 November 2004.  Summary of changes for version 20041105:
13463
134641) ACPI CA Core Subsystem:
13465
13466Implemented support for FADT revision 2.  This was an interim table
13467(between
13468ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13469
13470Implemented optional support to allow uninitialized LocalX and ArgX
13471variables in a control method.  The variables are initialized to an
13472Integer
13473object with a value of zero.  This support is enabled by setting the
13474AcpiGbl_EnableInterpreterSlack flag to TRUE.
13475
13476Implemented support for Integer objects for the SizeOf operator.  Either
134774
13478or 8 is returned, depending on the current integer size (32-bit or 64-
13479bit,
13480depending on the parent table revision).
13481
13482Fixed a problem in the implementation of the SizeOf and ObjectType
13483operators
13484where the operand was resolved to a value too early, causing incorrect
13485return values for some objects.
13486
13487Fixed some possible memory leaks during exceptional conditions.
13488
13489Code and Data Size: Current and previous core subsystem library sizes are
13490shown below. These are the code and data sizes for the acpica.lib
13491produced
13492by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13493any ACPI driver or OSPM code. The debug version of the code includes the
13494debug output trace mechanism and has a much larger code and data size.
13495Note
13496that these values will vary depending on the efficiency of the compiler
13497and
13498the compiler options used during generation.
13499
13500  Previous Release:
13501    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13502    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13503  Current Release:
13504    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13505    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13506
13507
135082) iASL Compiler/Disassembler:
13509
13510Implemented support for all ACPI 3.0 reserved names and methods.
13511
13512Implemented all ACPI 3.0 grammar elements in the front-end, including
13513support for semicolons.
13514
13515Implemented the ACPI 3.0 Function() and ToUUID() macros
13516
13517Fixed a problem in the disassembler where a Scope() operator would not be
13518emitted properly if the target of the scope was in another table.
13519
13520----------------------------------------
1352115 October 2004.  Summary of changes for version 20041015:
13522
13523Note:  ACPI CA is currently undergoing an in-depth and complete formal
13524evaluation to test/verify the following areas. Other suggestions are
13525welcome. This will result in an increase in the frequency of releases and
13526the number of bug fixes in the next few months.
13527  - Functional tests for all ASL/AML operators
13528  - All implicit/explicit type conversions
13529  - Bit fields and operation regions
13530  - 64-bit math support and 32-bit-only "truncated" math support
13531  - Exceptional conditions, both compiler and interpreter
13532  - Dynamic object deletion and memory leaks
13533  - ACPI 3.0 support when implemented
13534  - External interfaces to the ACPI subsystem
13535
13536
135371) ACPI CA Core Subsystem:
13538
13539Fixed two alignment issues on 64-bit platforms - within debug statements
13540in
13541AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13542Address
13543field within the non-aligned ACPI generic address structure.
13544
13545Fixed a problem in the Increment and Decrement operators where incorrect
13546operand resolution could result in the inadvertent modification of the
13547original integer when the integer is passed into another method as an
13548argument and the arg is then incremented/decremented.
13549
13550Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13551bit
13552BCD number were truncated during conversion.
13553
13554Fixed a problem in the ToDecimal operator where the length of the
13555resulting
13556string could be set incorrectly too long if the input operand was a
13557Buffer
13558object.
13559
13560Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13561(0)
13562within a buffer would prematurely terminate a compare between buffer
13563objects.
13564
13565Added a check for string overflow (>200 characters as per the ACPI
13566specification) during the Concatenate operator with two string operands.
13567
13568Code and Data Size: Current and previous core subsystem library sizes are
13569shown below. These are the code and data sizes for the acpica.lib
13570produced
13571by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13572any ACPI driver or OSPM code. The debug version of the code includes the
13573debug output trace mechanism and has a much larger code and data size.
13574Note
13575that these values will vary depending on the efficiency of the compiler
13576and
13577the compiler options used during generation.
13578
13579  Previous Release:
13580    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13581    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13582  Current Release:
13583    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13584    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13585
13586
13587
135882) iASL Compiler/Disassembler:
13589
13590Allow the use of the ObjectType operator on uninitialized Locals and Args
13591(returns 0 as per the ACPI specification).
13592
13593Fixed a problem where the compiler would fault if there was a syntax
13594error
13595in the FieldName of all of the various CreateXXXField operators.
13596
13597Disallow the use of lower case letters within the EISAID macro, as per
13598the
13599ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
13600Where
13601U is an uppercase letter and N is a hex digit.
13602
13603
13604----------------------------------------
1360506 October 2004.  Summary of changes for version 20041006:
13606
136071) ACPI CA Core Subsystem:
13608
13609Implemented support for the ACPI 3.0 Timer operator. This ASL function
13610implements a 64-bit timer with 100 nanosecond granularity.
13611
13612Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
13613implement the ACPI 3.0 Timer operator.  This allows the host OS to
13614implement
13615the timer with the best clock available. Also, it keeps the core
13616subsystem
13617out of the clock handling business, since the host OS (usually) performs
13618this function.
13619
13620Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
13621functions use a 64-bit address which is part of the packed ACPI Generic
13622Address Structure. Since the structure is non-aligned, the alignment
13623macros
13624are now used to extract the address to a local variable before use.
13625
13626Fixed a problem where the ToInteger operator assumed all input strings
13627were
13628hexadecimal. The operator now handles both decimal strings and hex
13629strings
13630(prefixed with "0x").
13631
13632Fixed a problem where the string length in the string object created as a
13633result of the internal ConvertToString procedure could be incorrect. This
13634potentially affected all implicit conversions and also the
13635ToDecimalString
13636and ToHexString operators.
13637
13638Fixed two problems in the ToString operator. If the length parameter was
13639zero, an incorrect string object was created and the value of the input
13640length parameter was inadvertently changed from zero to Ones.
13641
13642Fixed a problem where the optional ResourceSource string in the
13643ExtendedIRQ
13644resource macro was ignored.
13645
13646Simplified the interfaces to the internal division functions, reducing
13647code
13648size and complexity.
13649
13650Code and Data Size: Current and previous core subsystem library sizes are
13651shown below. These are the code and data sizes for the acpica.lib
13652produced
13653by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13654any ACPI driver or OSPM code. The debug version of the code includes the
13655debug output trace mechanism and has a much larger code and data size.
13656Note
13657that these values will vary depending on the efficiency of the compiler
13658and
13659the compiler options used during generation.
13660
13661  Previous Release:
13662    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13663    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13664  Current Release:
13665    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13666    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13667
13668
136692) iASL Compiler/Disassembler:
13670
13671Implemented support for the ACPI 3.0 Timer operator.
13672
13673Fixed a problem where the Default() operator was inadvertently ignored in
13674a
13675Switch/Case block.  This was a problem in the translation of the Switch
13676statement to If...Else pairs.
13677
13678Added support to allow a standalone Return operator, with no parentheses
13679(or
13680operands).
13681
13682Fixed a problem with code generation for the ElseIf operator where the
13683translated Else...If parse tree was improperly constructed leading to the
13684loss of some code.
13685
13686----------------------------------------
1368722 September 2004.  Summary of changes for version 20040922:
13688
136891) ACPI CA Core Subsystem:
13690
13691Fixed a problem with the implementation of the LNot() operator where
13692"Ones"
13693was not returned for the TRUE case. Changed the code to return Ones
13694instead
13695of (!Arg) which was usually 1. This change affects iASL constant folding
13696for
13697this operator also.
13698
13699Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
13700not
13701initialized properly -- Now zero the entire buffer in this case where the
13702buffer already exists.
13703
13704Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
13705Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
13706related code considerably. This will require changes/updates to all OS
13707interface layers (OSLs.)
13708
13709Implemented a new external interface, AcpiInstallExceptionHandler, to
13710allow
13711a system exception handler to be installed. This handler is invoked upon
13712any
13713run-time exception that occurs during control method execution.
13714
13715Added support for the DSDT in AcpiTbFindTable. This allows the
13716DataTableRegion() operator to access the local copy of the DSDT.
13717
13718Code and Data Size: Current and previous core subsystem library sizes are
13719shown below. These are the code and data sizes for the acpica.lib
13720produced
13721by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13722any ACPI driver or OSPM code. The debug version of the code includes the
13723debug output trace mechanism and has a much larger code and data size.
13724Note
13725that these values will vary depending on the efficiency of the compiler
13726and
13727the compiler options used during generation.
13728
13729  Previous Release:
13730    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13731    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13732  Current Release:
13733    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13734    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13735
13736
137372) iASL Compiler/Disassembler:
13738
13739Fixed a problem with constant folding and the LNot operator. LNot was
13740returning 1 in the TRUE case, not Ones as per the ACPI specification.
13741This
13742could result in the generation of an incorrect folded/reduced constant.
13743
13744End-Of-File is now allowed within a "//"-style comment.  A parse error no
13745longer occurs if such a comment is at the very end of the input ASL
13746source
13747file.
13748
13749Implemented the "-r" option to override the Revision in the table header.
13750The initial use of this option will be to simplify the evaluation of the
13751AML
13752interpreter by allowing a single ASL source module to be compiled for
13753either
1375432-bit or 64-bit integers.
13755
13756
13757----------------------------------------
1375827 August 2004.  Summary of changes for version 20040827:
13759
137601) ACPI CA Core Subsystem:
13761
13762- Implemented support for implicit object conversion in the non-numeric
13763logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
13764and
13765LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
13766the second operand is implicitly converted on the fly to match the type
13767of
13768the first operand.  For example:
13769
13770    LEqual (Source1, Source2)
13771
13772Source1 and Source2 must each evaluate to an integer, a string, or a
13773buffer.
13774The data type of Source1 dictates the required type of Source2. Source2
13775is
13776implicitly converted if necessary to match the type of Source1.
13777
13778- Updated and corrected the behavior of the string conversion support.
13779The
13780rules concerning conversion of buffers to strings (according to the ACPI
13781specification) are as follows:
13782
13783ToDecimalString - explicit byte-wise conversion of buffer to string of
13784decimal values (0-255) separated by commas. ToHexString - explicit byte-
13785wise
13786conversion of buffer to string of hex values (0-FF) separated by commas.
13787ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
13788byte
13789copy with no transform except NULL terminated. Any other implicit buffer-
13790to-
13791string conversion - byte-wise conversion of buffer to string of hex
13792values
13793(0-FF) separated by spaces.
13794
13795- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13796
13797- Fixed a problem in AcpiNsGetPathnameLength where the returned length
13798was
13799one byte too short in the case of a node in the root scope.  This could
13800cause a fault during debug output.
13801
13802- Code and Data Size: Current and previous core subsystem library sizes
13803are
13804shown below.  These are the code and data sizes for the acpica.lib
13805produced
13806by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13807any ACPI driver or OSPM code.  The debug version of the code includes the
13808debug output trace mechanism and has a much larger code and data size.
13809Note
13810that these values will vary depending on the efficiency of the compiler
13811and
13812the compiler options used during generation.
13813
13814  Previous Release:
13815    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13816    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13817  Current Release:
13818    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13819    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13820
13821
138222) iASL Compiler/Disassembler:
13823
13824- Fixed a Linux generation error.
13825
13826
13827----------------------------------------
1382816 August 2004.  Summary of changes for version 20040816:
13829
138301) ACPI CA Core Subsystem:
13831
13832Designed and implemented support within the AML interpreter for the so-
13833called "implicit return".  This support returns the result of the last
13834ASL
13835operation within a control method, in the absence of an explicit Return()
13836operator.  A few machines depend on this behavior, even though it is not
13837explicitly supported by the ASL language.  It is optional support that
13838can
13839be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
13840
13841Removed support for the PCI_Config address space from the internal low
13842level
13843hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
13844support was not used internally, and would not work correctly anyway
13845because
13846the PCI bus number and segment number were not supported.  There are
13847separate interfaces for PCI configuration space access because of the
13848unique
13849interface.
13850
13851Code and Data Size: Current and previous core subsystem library sizes are
13852shown below.  These are the code and data sizes for the acpica.lib
13853produced
13854by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13855any ACPI driver or OSPM code.  The debug version of the code includes the
13856debug output trace mechanism and has a much larger code and data size.
13857Note
13858that these values will vary depending on the efficiency of the compiler
13859and
13860the compiler options used during generation.
13861
13862  Previous Release:
13863    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13864    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13865  Current Release:
13866    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13867    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13868
13869
138702) iASL Compiler/Disassembler:
13871
13872Fixed a problem where constants in ASL expressions at the root level (not
13873within a control method) could be inadvertently truncated during code
13874generation.  This problem was introduced in the 20040715 release.
13875
13876
13877----------------------------------------
1387815 July 2004.  Summary of changes for version 20040715:
13879
138801) ACPI CA Core Subsystem:
13881
13882Restructured the internal HW GPE interfaces to pass/track the current
13883state
13884of interrupts (enabled/disabled) in order to avoid possible deadlock and
13885increase flexibility of the interfaces.
13886
13887Implemented a "lexicographical compare" for String and Buffer objects
13888within
13889the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
13890-
13891as per further clarification to the ACPI specification.  Behavior is
13892similar
13893to C library "strcmp".
13894
13895Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
13896external function.  In the 32-bit non-debug case, the stack use has been
13897reduced from 168 bytes to 32 bytes.
13898
13899Deployed a new run-time configuration flag,
13900AcpiGbl_EnableInterpreterSlack,
13901whose purpose is to allow the AML interpreter to forgive certain bad AML
13902constructs.  Default setting is FALSE.
13903
13904Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
13905IO
13906support code.  If enabled, it allows field access to go beyond the end of
13907a
13908region definition if the field is within the region length rounded up to
13909the
13910next access width boundary (a common coding error.)
13911
13912Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
13913ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
13914these
13915symbols are lowercase by the latest version of the AcpiSrc tool.
13916
13917The prototypes for the PCI interfaces in acpiosxf.h have been updated to
13918rename "Register" to simply "Reg" to prevent certain compilers from
13919complaining.
13920
13921Code and Data Size: Current and previous core subsystem library sizes are
13922shown below.  These are the code and data sizes for the acpica.lib
13923produced
13924by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13925any ACPI driver or OSPM code.  The debug version of the code includes the
13926debug output trace mechanism and has a much larger code and data size.
13927Note
13928that these values will vary depending on the efficiency of the compiler
13929and
13930the compiler options used during generation.
13931
13932  Previous Release:
13933    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13934    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
13935  Current Release:
13936    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13937    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13938
13939
139402) iASL Compiler/Disassembler:
13941
13942Implemented full support for Package objects within the Case() operator.
13943Note: The Break() operator is currently not supported within Case blocks
13944(TermLists) as there is some question about backward compatibility with
13945ACPI
139461.0 interpreters.
13947
13948
13949Fixed a problem where complex terms were not supported properly within
13950the
13951Switch() operator.
13952
13953Eliminated extraneous warning for compiler-emitted reserved names of the
13954form "_T_x".  (Used in Switch/Case operators.)
13955
13956Eliminated optimization messages for "_T_x" objects and small constants
13957within the DefinitionBlock operator.
13958
13959
13960----------------------------------------
1396115 June 2004.  Summary of changes for version 20040615:
13962
139631) ACPI CA Core Subsystem:
13964
13965Implemented support for Buffer and String objects (as per ACPI 2.0) for
13966the
13967following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
13968LLessEqual.
13969
13970All directory names in the entire source package are lower case, as they
13971were in earlier releases.
13972
13973Implemented "Disassemble" command in the AML debugger that will
13974disassemble
13975a single control method.
13976
13977Code and Data Size: Current and previous core subsystem library sizes are
13978shown below.  These are the code and data sizes for the acpica.lib
13979produced
13980by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13981any ACPI driver or OSPM code.  The debug version of the code includes the
13982debug output trace mechanism and has a much larger code and data size.
13983Note
13984that these values will vary depending on the efficiency of the compiler
13985and
13986the compiler options used during generation.
13987
13988  Previous Release:
13989    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
13990    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
13991
13992  Current Release:
13993    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13994    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
13995
13996
139972) iASL Compiler/Disassembler:
13998
13999Implemented support for Buffer and String objects (as per ACPI 2.0) for
14000the
14001following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14002LLessEqual.
14003
14004All directory names in the entire source package are lower case, as they
14005were in earlier releases.
14006
14007Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14008not found.
14009
14010Fixed an issue with the Windows version of the compiler where later
14011versions
14012of Windows place the FADT in the registry under the name "FADT" and not
14013"FACP" as earlier versions did.  This applies when using the -g or -
14014d<nofilename> options.  The compiler now looks for both strings as
14015necessary.
14016
14017Fixed a problem with compiler namepath optimization where a namepath
14018within
14019the Scope() operator could not be optimized if the namepath was a subpath
14020of
14021the current scope path.
14022
14023----------------------------------------
1402427 May 2004.  Summary of changes for version 20040527:
14025
140261) ACPI CA Core Subsystem:
14027
14028Completed a new design and implementation for EBDA (Extended BIOS Data
14029Area)
14030support in the RSDP scan code.  The original code improperly scanned for
14031the
14032EBDA by simply scanning from memory location 0 to 0x400.  The correct
14033method
14034is to first obtain the EBDA pointer from within the BIOS data area, then
14035scan 1K of memory starting at the EBDA pointer.  There appear to be few
14036if
14037any machines that place the RSDP in the EBDA, however.
14038
14039Integrated a fix for a possible fault during evaluation of BufferField
14040arguments.  Obsolete code that was causing the problem was removed.
14041
14042Found and fixed a problem in the Field Support Code where data could be
14043corrupted on a bit field read that starts on an aligned boundary but does
14044not end on an aligned boundary.  Merged the read/write "datum length"
14045calculation code into a common procedure.
14046
14047Rolled in a couple of changes to the FreeBSD-specific header.
14048
14049
14050Code and Data Size: Current and previous core subsystem library sizes are
14051shown below.  These are the code and data sizes for the acpica.lib
14052produced
14053by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14054any ACPI driver or OSPM code.  The debug version of the code includes the
14055debug output trace mechanism and has a much larger code and data size.
14056Note
14057that these values will vary depending on the efficiency of the compiler
14058and
14059the compiler options used during generation.
14060
14061  Previous Release:
14062    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14063    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14064  Current Release:
14065    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14066    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14067
14068
140692) iASL Compiler/Disassembler:
14070
14071Fixed a generation warning produced by some overly-verbose compilers for
14072a
1407364-bit constant.
14074
14075----------------------------------------
1407614 May 2004.  Summary of changes for version 20040514:
14077
140781) ACPI CA Core Subsystem:
14079
14080Fixed a problem where hardware GPE enable bits sometimes not set properly
14081during and after GPE method execution.  Result of 04/27 changes.
14082
14083Removed extra "clear all GPEs" when sleeping/waking.
14084
14085Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14086AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14087to
14088the new AcpiEv* calls as appropriate.
14089
14090ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14091is
14092now "Microsoft Windows NT" for maximum compatibility.  However this can
14093be
14094changed by modifying the acconfig.h file.
14095
14096Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14097traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14098
14099Run _INI methods on ThermalZone objects.  This is against the ACPI
14100specification, but there is apparently ASL code in the field that has
14101these
14102_INI methods, and apparently "other" AML interpreters execute them.
14103
14104Performed a full 16/32/64 bit lint that resulted in some small changes.
14105
14106Added a sleep simulation command to the AML debugger to test sleep code.
14107
14108Code and Data Size: Current and previous core subsystem library sizes are
14109shown below.  These are the code and data sizes for the acpica.lib
14110produced
14111by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14112any ACPI driver or OSPM code.  The debug version of the code includes the
14113debug output trace mechanism and has a much larger code and data size.
14114Note
14115that these values will vary depending on the efficiency of the compiler
14116and
14117the compiler options used during generation.
14118
14119  Previous Release:
14120    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14121    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14122  Current Release:
14123    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14124    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14125
14126----------------------------------------
1412727 April 2004.  Summary of changes for version 20040427:
14128
141291) ACPI CA Core Subsystem:
14130
14131Completed a major overhaul of the GPE handling within ACPI CA.  There are
14132now three types of GPEs:  wake-only, runtime-only, and combination
14133wake/run.
14134The only GPEs allowed to be combination wake/run are for button-style
14135devices such as a control-method power button, control-method sleep
14136button,
14137or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14138not
14139referenced by any _PRW methods are marked for "runtime" and hardware
14140enabled.  Any GPE that is referenced by a _PRW method is marked for
14141"wake"
14142(and disabled at runtime).  However, at sleep time, only those GPEs that
14143have been specifically enabled for wake via the AcpiEnableGpe interface
14144will
14145actually be hardware enabled.
14146
14147A new external interface has been added, AcpiSetGpeType(), that is meant
14148to
14149be used by device drivers to force a GPE to a particular type.  It will
14150be
14151especially useful for the drivers for the button devices mentioned above.
14152
14153Completed restructuring of the ACPI CA initialization sequence so that
14154default operation region handlers are installed before GPEs are
14155initialized
14156and the _PRW methods are executed.  This will prevent errors when the
14157_PRW
14158methods attempt to access system memory or I/O space.
14159
14160GPE enable/disable no longer reads the GPE enable register.  We now keep
14161the
14162enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14163thus no longer depend on the hardware to maintain these bits.
14164
14165Always clear the wake status and fixed/GPE status bits before sleep, even
14166for state S5.
14167
14168Improved the AML debugger output for displaying the GPE blocks and their
14169current status.
14170
14171Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14172where
14173x = 0,1,2,3,4.
14174
14175Fixed a problem where the physical address was incorrectly calculated
14176when
14177the Load() operator was used to directly load from an Operation Region
14178(vs.
14179loading from a Field object.)  Also added check for minimum table length
14180for
14181this case.
14182
14183Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14184mutex release.
14185
14186Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14187consistency with the other fields returned.
14188
14189Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14190structure for each GPE in the system, so the size of this structure is
14191important.
14192
14193CPU stack requirement reduction:  Cleaned up the method execution and
14194object
14195evaluation paths so that now a parameter structure is passed, instead of
14196copying the various method parameters over and over again.
14197
14198In evregion.c:  Correctly exit and reenter the interpreter region if and
14199only if dispatching an operation region request to a user-installed
14200handler.
14201Do not exit/reenter when dispatching to a default handler (e.g., default
14202system memory or I/O handlers)
14203
14204
14205Notes for updating drivers for the new GPE support.  The following
14206changes
14207must be made to ACPI-related device drivers that are attached to one or
14208more
14209GPEs: (This information will be added to the ACPI CA Programmer
14210Reference.)
14211
142121) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14213must
14214explicitly call AcpiEnableGpe.
142152) There is a new interface called AcpiSetGpeType. This should be called
14216before enabling the GPE.  Also, this interface will automatically disable
14217the GPE if it is currently enabled.
142183) AcpiEnableGpe no longer supports a GPE type flag.
14219
14220Specific drivers that must be changed:
142211) EC driver:
14222    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14223AeGpeHandler, NULL);
14224    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14225    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14226
142272) Button Drivers (Power, Lid, Sleep):
14228Run _PRW method under parent device
14229If _PRW exists: /* This is a control-method button */
14230    Extract GPE number and possibly GpeDevice
14231    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14232    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14233
14234For all other devices that have _PRWs, we automatically set the GPE type
14235to
14236ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14237This
14238must be done on a selective basis, usually requiring some kind of user
14239app
14240to allow the user to pick the wake devices.
14241
14242
14243Code and Data Size: Current and previous core subsystem library sizes are
14244shown below.  These are the code and data sizes for the acpica.lib
14245produced
14246by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14247any ACPI driver or OSPM code.  The debug version of the code includes the
14248debug output trace mechanism and has a much larger code and data size.
14249Note
14250that these values will vary depending on the efficiency of the compiler
14251and
14252the compiler options used during generation.
14253
14254  Previous Release:
14255    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14256    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14257  Current Release:
14258
14259    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14260    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14261
14262
14263
14264----------------------------------------
1426502 April 2004.  Summary of changes for version 20040402:
14266
142671) ACPI CA Core Subsystem:
14268
14269Fixed an interpreter problem where an indirect store through an ArgX
14270parameter was incorrectly applying the "implicit conversion rules" during
14271the store.  From the ACPI specification: "If the target is a method local
14272or
14273argument (LocalX or ArgX), no conversion is performed and the result is
14274stored directly to the target".  The new behavior is to disable implicit
14275conversion during ALL stores to an ArgX.
14276
14277Changed the behavior of the _PRW method scan to ignore any and all errors
14278returned by a given _PRW.  This prevents the scan from aborting from the
14279failure of any single _PRW.
14280
14281Moved the runtime configuration parameters from the global init procedure
14282to
14283static variables in acglobal.h.  This will allow the host to override the
14284default values easily.
14285
14286Code and Data Size: Current and previous core subsystem library sizes are
14287shown below.  These are the code and data sizes for the acpica.lib
14288produced
14289by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14290any ACPI driver or OSPM code.  The debug version of the code includes the
14291debug output trace mechanism and has a much larger code and data size.
14292Note
14293that these values will vary depending on the efficiency of the compiler
14294and
14295the compiler options used during generation.
14296
14297  Previous Release:
14298    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14299    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14300  Current Release:
14301    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14302    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14303
14304
143052) iASL Compiler/Disassembler:
14306
14307iASL now fully disassembles SSDTs.  However, External() statements are
14308not
14309generated automatically for unresolved symbols at this time.  This is a
14310planned feature for future implementation.
14311
14312Fixed a scoping problem in the disassembler that occurs when the type of
14313the
14314target of a Scope() operator is overridden.  This problem caused an
14315incorrectly nested internal namespace to be constructed.
14316
14317Any warnings or errors that are emitted during disassembly are now
14318commented
14319out automatically so that the resulting file can be recompiled without
14320any
14321hand editing.
14322
14323----------------------------------------
1432426 March 2004.  Summary of changes for version 20040326:
14325
143261) ACPI CA Core Subsystem:
14327
14328Implemented support for "wake" GPEs via interaction between GPEs and the
14329_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
14330identified as a WAKE GPE and by default will no longer be enabled at
14331runtime.  Previously, we were blindly enabling all GPEs with a
14332corresponding
14333_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14334We
14335believe this has been the cause of thousands of "spurious" GPEs on some
14336systems.
14337
14338This new GPE behavior is can be reverted to the original behavior (enable
14339ALL GPEs at runtime) via a runtime flag.
14340
14341Fixed a problem where aliased control methods could not access objects
14342properly.  The proper scope within the namespace was not initialized
14343(transferred to the target of the aliased method) before executing the
14344target method.
14345
14346Fixed a potential race condition on internal object deletion on the
14347return
14348object in AcpiEvaluateObject.
14349
14350Integrated a fix for resource descriptors where both _MEM and _MTP were
14351being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
14352wide, 0x0F instead of 0x03.)
14353
14354Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14355preventing
14356a
14357fault in some cases.
14358
14359Updated Notify() values for debug statements in evmisc.c
14360
14361Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14362
14363Code and Data Size: Current and previous core subsystem library sizes are
14364shown below.  These are the code and data sizes for the acpica.lib
14365produced
14366by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14367any ACPI driver or OSPM code.  The debug version of the code includes the
14368debug output trace mechanism and has a much larger code and data size.
14369Note
14370that these values will vary depending on the efficiency of the compiler
14371and
14372the compiler options used during generation.
14373
14374  Previous Release:
14375
14376    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14377    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14378  Current Release:
14379    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14380    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14381
14382----------------------------------------
1438311 March 2004.  Summary of changes for version 20040311:
14384
143851) ACPI CA Core Subsystem:
14386
14387Fixed a problem where errors occurring during the parse phase of control
14388method execution did not abort cleanly.  For example, objects created and
14389installed in the namespace were not deleted.  This caused all subsequent
14390invocations of the method to return the AE_ALREADY_EXISTS exception.
14391
14392Implemented a mechanism to force a control method to "Serialized"
14393execution
14394if the method attempts to create namespace objects. (The root of the
14395AE_ALREADY_EXISTS problem.)
14396
14397Implemented support for the predefined _OSI "internal" control method.
14398Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14399and
14400"Windows 2001.1", and can be easily upgraded for new strings as
14401necessary.
14402This feature will allow "other" operating systems to execute the fully
14403tested, "Windows" code path through the ASL code
14404
14405Global Lock Support:  Now allows multiple acquires and releases with any
14406internal thread.  Removed concept of "owning thread" for this special
14407mutex.
14408
14409Fixed two functions that were inappropriately declaring large objects on
14410the
14411CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
14412during
14413method execution considerably.
14414
14415Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14416S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14417
14418Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14419defined on the machine.
14420
14421Implemented two runtime options:  One to force all control method
14422execution
14423to "Serialized" to mimic Windows behavior, another to disable _OSI
14424support
14425if it causes problems on a given machine.
14426
14427Code and Data Size: Current and previous core subsystem library sizes are
14428shown below.  These are the code and data sizes for the acpica.lib
14429produced
14430by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14431any ACPI driver or OSPM code.  The debug version of the code includes the
14432debug output trace mechanism and has a much larger code and data size.
14433Note
14434that these values will vary depending on the efficiency of the compiler
14435and
14436the compiler options used during generation.
14437
14438  Previous Release:
14439    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14440    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14441  Current Release:
14442    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14443    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14444
144452) iASL Compiler/Disassembler:
14446
14447Fixed an array size problem for FreeBSD that would cause the compiler to
14448fault.
14449
14450----------------------------------------
1445120 February 2004.  Summary of changes for version 20040220:
14452
14453
144541) ACPI CA Core Subsystem:
14455
14456Implemented execution of _SxD methods for Device objects in the
14457GetObjectInfo interface.
14458
14459Fixed calls to _SST method to pass the correct arguments.
14460
14461Added a call to _SST on wake to restore to "working" state.
14462
14463Check for End-Of-Buffer failure case in the WalkResources interface.
14464
14465Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14466structures to the beginning of the file.
14467
14468After wake, clear GPE status register(s) before enabling GPEs.
14469
14470After wake, clear/enable power button.  (Perhaps we should clear/enable
14471all
14472fixed events upon wake.)
14473
14474Fixed a couple of possible memory leaks in the Namespace manager.
14475
14476Integrated latest acnetbsd.h file.
14477
14478----------------------------------------
1447911 February 2004.  Summary of changes for version 20040211:
14480
14481
144821) ACPI CA Core Subsystem:
14483
14484Completed investigation and implementation of the call-by-reference
14485mechanism for control method arguments.
14486
14487Fixed a problem where a store of an object into an indexed package could
14488fail if the store occurs within a different method than the method that
14489created the package.
14490
14491Fixed a problem where the ToDecimal operator could return incorrect
14492results.
14493
14494Fixed a problem where the CopyObject operator could fail on some of the
14495more
14496obscure objects (e.g., Reference objects.)
14497
14498Improved the output of the Debug object to display buffer, package, and
14499index objects.
14500
14501Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14502return
14503the expected result.
14504
14505Added permanent ACPI_REPORT_ERROR macros for all instances of the
14506ACPI_AML_INTERNAL exception.
14507
14508Integrated latest version of acfreebsd.h
14509
14510----------------------------------------
1451116 January 2004.  Summary of changes for version 20040116:
14512
14513The purpose of this release is primarily to update the copyright years in
14514each module, thus causing a huge number of diffs.  There are a few small
14515functional changes, however.
14516
145171) ACPI CA Core Subsystem:
14518
14519Improved error messages when there is a problem finding one or more of
14520the
14521required base ACPI tables
14522
14523Reintroduced the definition of APIC_HEADER in actbl.h
14524
14525Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14526
14527Removed extraneous reference to NewObj in dsmthdat.c
14528
145292) iASL compiler
14530
14531Fixed a problem introduced in December that disabled the correct
14532disassembly
14533of Resource Templates
14534
14535
14536----------------------------------------
1453703 December 2003.  Summary of changes for version 20031203:
14538
145391) ACPI CA Core Subsystem:
14540
14541Changed the initialization of Operation Regions during subsystem
14542init to perform two entire walks of the ACPI namespace; The first
14543to initialize the regions themselves, the second to execute the
14544_REG methods.  This fixed some interdependencies across _REG
14545methods found on some machines.
14546
14547Fixed a problem where a Store(Local0, Local1) could simply update
14548the object reference count, and not create a new copy of the
14549object if the Local1 is uninitialized.
14550
14551Implemented support for the _SST reserved method during sleep
14552transitions.
14553
14554Implemented support to clear the SLP_TYP and SLP_EN bits when
14555waking up, this is apparently required by some machines.
14556
14557When sleeping, clear the wake status only if SleepState is not S5.
14558
14559Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14560pointer arithmetic advanced a string pointer too far.
14561
14562Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14563could be returned if the requested table has not been loaded.
14564
14565Within the support for IRQ resources, restructured the handling of
14566the active and edge/level bits.
14567
14568Fixed a few problems in AcpiPsxExecute() where memory could be
14569leaked under certain error conditions.
14570
14571Improved error messages for the cases where the ACPI mode could
14572not be entered.
14573
14574Code and Data Size: Current and previous core subsystem library
14575sizes are shown below.  These are the code and data sizes for the
14576acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14577these values do not include any ACPI driver or OSPM code.  The
14578debug version of the code includes the debug output trace
14579mechanism and has a much larger code and data size.  Note that
14580these values will vary depending on the efficiency of the compiler
14581and the compiler options used during generation.
14582
14583  Previous Release (20031029):
14584    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14585    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14586  Current Release:
14587    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14588    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14589
145902) iASL Compiler/Disassembler:
14591
14592Implemented a fix for the iASL disassembler where a bad index was
14593generated.  This was most noticeable on 64-bit platforms
14594
14595
14596----------------------------------------
1459729 October 2003.  Summary of changes for version 20031029:
14598
145991) ACPI CA Core Subsystem:
14600
14601
14602Fixed a problem where a level-triggered GPE with an associated
14603_Lxx control method was incorrectly cleared twice.
14604
14605Fixed a problem with the Field support code where an access can
14606occur beyond the end-of-region if the field is non-aligned but
14607extends to the very end of the parent region (resulted in an
14608AE_AML_REGION_LIMIT exception.)
14609
14610Fixed a problem with ACPI Fixed Events where an RT Clock handler
14611would not get invoked on an RTC event.  The RTC event bitmasks for
14612the PM1 registers were not being initialized properly.
14613
14614Implemented support for executing _STA and _INI methods for
14615Processor objects.  Although this is currently not part of the
14616ACPI specification, there is existing ASL code that depends on the
14617init-time execution of these methods.
14618
14619Implemented and deployed a GetDescriptorName function to decode
14620the various types of internal descriptors.  Guards against null
14621descriptors during debug output also.
14622
14623Implemented and deployed a GetNodeName function to extract the 4-
14624character namespace node name.  This function simplifies the debug
14625and error output, as well as guarding against null pointers during
14626output.
14627
14628Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14629simplify the debug and error output of 64-bit integers.  This
14630macro replaces the HIDWORD and LODWORD macros for dumping these
14631integers.
14632
14633Updated the implementation of the Stall() operator to only call
14634AcpiOsStall(), and also return an error if the operand is larger
14635than 255.  This preserves the required behavior of not
14636relinquishing the processor, as would happen if AcpiOsSleep() was
14637called for "long stalls".
14638
14639Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
14640initialized are now treated as NOOPs.
14641
14642Cleaned up a handful of warnings during 64-bit generation.
14643
14644Fixed a reported error where and incorrect GPE number was passed
14645to the GPE dispatch handler.  This value is only used for error
14646output, however.  Used this opportunity to clean up and streamline
14647the GPE dispatch code.
14648
14649Code and Data Size: Current and previous core subsystem library
14650sizes are shown below.  These are the code and data sizes for the
14651acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14652these values do not include any ACPI driver or OSPM code.  The
14653
14654debug version of the code includes the debug output trace
14655mechanism and has a much larger code and data size.  Note that
14656these values will vary depending on the efficiency of the compiler
14657and the compiler options used during generation.
14658
14659  Previous Release (20031002):
14660    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14661    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14662  Current Release:
14663    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14664    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14665
14666
146672) iASL Compiler/Disassembler:
14668
14669Updated the iASL compiler to return an error if the operand to the
14670Stall() operator is larger than 255.
14671
14672
14673----------------------------------------
1467402 October 2003.  Summary of changes for version 20031002:
14675
14676
146771) ACPI CA Core Subsystem:
14678
14679Fixed a problem with Index Fields where the index was not
14680incremented for fields that require multiple writes to the
14681index/data registers (Fields that are wider than the data
14682register.)
14683
14684Fixed a problem with all Field objects where a write could go
14685beyond the end-of-field if the field was larger than the access
14686granularity and therefore required multiple writes to complete the
14687request.  An extra write beyond the end of the field could happen
14688inadvertently.
14689
14690Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14691would incorrectly be returned if the width of the Data Register
14692was larger than the specified field access width.
14693
14694Completed fixes for LoadTable() and Unload() and verified their
14695operation.  Implemented full support for the "DdbHandle" object
14696throughout the ACPI CA subsystem.
14697
14698Implemented full support for the MADT and ECDT tables in the ACPI
14699CA header files.  Even though these tables are not directly
14700consumed by ACPI CA, the header definitions are useful for ACPI
14701device drivers.
14702
14703Integrated resource descriptor fixes posted to the Linux ACPI
14704list.  This included checks for minimum descriptor length, and
14705support for trailing NULL strings within descriptors that have
14706optional string elements.
14707
14708Code and Data Size: Current and previous core subsystem library
14709sizes are shown below.  These are the code and data sizes for the
14710acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14711these values do not include any ACPI driver or OSPM code.  The
14712debug version of the code includes the debug output trace
14713mechanism and has a much larger code and data size.  Note that
14714these values will vary depending on the efficiency of the compiler
14715and the compiler options used during generation.
14716
14717  Previous Release (20030918):
14718    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14719    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14720  Current Release:
14721    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14722    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14723
14724
147252) iASL Compiler:
14726
14727Implemented detection of non-ASCII characters within the input
14728source ASL file.  This catches attempts to compile binary (AML)
14729files early in the compile, with an informative error message.
14730
14731Fixed a problem where the disassembler would fault if the output
14732filename could not be generated or if the output file could not be
14733opened.
14734
14735----------------------------------------
1473618 September 2003.  Summary of changes for version 20030918:
14737
14738
147391) ACPI CA Core Subsystem:
14740
14741Found and fixed a longstanding problem with the late execution of
14742the various deferred AML opcodes (such as Operation Regions,
14743Buffer Fields, Buffers, and Packages).  If the name string
14744specified for the name of the new object placed the object in a
14745scope other than the current scope, the initialization/execution
14746of the opcode failed.  The solution to this problem was to
14747implement a mechanism where the late execution of such opcodes
14748does not attempt to lookup/create the name a second time in an
14749incorrect scope.  This fixes the "region size computed
14750incorrectly" problem.
14751
14752Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
14753Global Lock AE_BAD_PARAMETER error.
14754
14755Fixed several 64-bit issues with prototypes, casting and data
14756types.
14757
14758Removed duplicate prototype from acdisasm.h
14759
14760Fixed an issue involving EC Operation Region Detach (Shaohua Li)
14761
14762Code and Data Size: Current and previous core subsystem library
14763sizes are shown below.  These are the code and data sizes for the
14764acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14765these values do not include any ACPI driver or OSPM code.  The
14766debug version of the code includes the debug output trace
14767mechanism and has a much larger code and data size.  Note that
14768these values will vary depending on the efficiency of the compiler
14769and the compiler options used during generation.
14770
14771  Previous Release:
14772
14773    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14774    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14775  Current Release:
14776    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14777    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14778
14779
147802) Linux:
14781
14782Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14783correct sleep time in seconds.
14784
14785----------------------------------------
1478614 July 2003.  Summary of changes for version 20030619:
14787
147881) ACPI CA Core Subsystem:
14789
14790Parse SSDTs in order discovered, as opposed to reverse order
14791(Hrvoje Habjanic)
14792
14793Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14794Klausner,
14795   Nate Lawson)
14796
14797
147982) Linux:
14799
14800Dynamically allocate SDT list (suggested by Andi Kleen)
14801
14802proc function return value cleanups (Andi Kleen)
14803
14804Correctly handle NMI watchdog during long stalls (Andrew Morton)
14805
14806Make it so acpismp=force works (reported by Andrew Morton)
14807
14808
14809----------------------------------------
1481019 June 2003.  Summary of changes for version 20030619:
14811
148121) ACPI CA Core Subsystem:
14813
14814Fix To/FromBCD, eliminating the need for an arch-specific #define.
14815
14816Do not acquire a semaphore in the S5 shutdown path.
14817
14818Fix ex_digits_needed for 0. (Takayoshi Kochi)
14819
14820Fix sleep/stall code reversal. (Andi Kleen)
14821
14822Revert a change having to do with control method calling
14823semantics.
14824
148252) Linux:
14826
14827acpiphp update (Takayoshi Kochi)
14828
14829Export acpi_disabled for sonypi (Stelian Pop)
14830
14831Mention acpismp=force in config help
14832
14833Re-add acpitable.c and acpismp=force. This improves backwards
14834
14835compatibility and also cleans up the code to a significant degree.
14836
14837Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
14838
14839----------------------------------------
1484022 May 2003.  Summary of changes for version 20030522:
14841
148421) ACPI CA Core Subsystem:
14843
14844Found and fixed a reported problem where an AE_NOT_FOUND error
14845occurred occasionally during _BST evaluation.  This turned out to
14846be an Owner ID allocation issue where a called method did not get
14847a new ID assigned to it.  Eventually, (after 64k calls), the Owner
14848ID UINT16 would wraparound so that the ID would be the same as the
14849caller's and the called method would delete the caller's
14850namespace.
14851
14852Implemented extended error reporting for control methods that are
14853aborted due to a run-time exception.  Output includes the exact
14854AML instruction that caused the method abort, a dump of the method
14855locals and arguments at the time of the abort, and a trace of all
14856nested control method calls.
14857
14858Modified the interpreter to allow the creation of buffers of zero
14859length from the AML code. Implemented new code to ensure that no
14860attempt is made to actually allocate a memory buffer (of length
14861zero) - instead, a simple buffer object with a NULL buffer pointer
14862and length zero is created.  A warning is no longer issued when
14863the AML attempts to create a zero-length buffer.
14864
14865Implemented a workaround for the "leading asterisk issue" in
14866_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
14867asterisk is automatically removed if present in any HID, UID, or
14868CID strings.  The iASL compiler will still flag this asterisk as
14869an error, however.
14870
14871Implemented full support for _CID methods that return a package of
14872multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
14873now additionally returns a device _CID list if present.  This
14874required a change to the external interface in order to pass an
14875ACPI_BUFFER object as a parameter since the _CID list is of
14876variable length.
14877
14878Fixed a problem with the new AE_SAME_HANDLER exception where
14879handler initialization code did not know about this exception.
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 (20030509):
14891    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
14892    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
14893  Current Release:
14894    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14895    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14896
14897
148982) Linux:
14899
14900Fixed a bug in which we would reinitialize the ACPI interrupt
14901after it was already working, thus disabling all ACPI and the IRQs
14902for any other device sharing the interrupt. (Thanks to Stian
14903Jordet)
14904
14905Toshiba driver update (John Belmonte)
14906
14907Return only 0 or 1 for our interrupt handler status (Andrew
14908Morton)
14909
14910
149113) iASL Compiler:
14912
14913Fixed a reported problem where multiple (nested) ElseIf()
14914statements were not handled correctly by the compiler, resulting
14915in incorrect warnings and incorrect AML code.  This was a problem
14916in both the ASL parser and the code generator.
14917
14918
149194) Documentation:
14920
14921Added changes to existing interfaces, new exception codes, and new
14922text concerning reference count object management versus garbage
14923collection.
14924
14925----------------------------------------
1492609 May 2003.  Summary of changes for version 20030509.
14927
14928
149291) ACPI CA Core Subsystem:
14930
14931Changed the subsystem initialization sequence to hold off
14932installation of address space handlers until the hardware has been
14933initialized and the system has entered ACPI mode.  This is because
14934the installation of space handlers can cause _REG methods to be
14935run.  Previously, the _REG methods could potentially be run before
14936ACPI mode was enabled.
14937
14938Fixed some memory leak issues related to address space handler and
14939notify handler installation.  There were some problems with the
14940reference count mechanism caused by the fact that the handler
14941objects are shared across several namespace objects.
14942
14943Fixed a reported problem where reference counts within the
14944namespace were not properly updated when named objects created by
14945method execution were deleted.
14946
14947Fixed a reported problem where multiple SSDTs caused a deletion
14948issue during subsystem termination.  Restructured the table data
14949structures to simplify the linked lists and the related code.
14950
14951Fixed a problem where the table ID associated with secondary
14952tables (SSDTs) was not being propagated into the namespace objects
14953created by those tables.  This would only present a problem for
14954tables that are unloaded at run-time, however.
14955
14956Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
14957type as the length parameter (instead of UINT32).
14958
14959Solved a long-standing problem where an ALREADY_EXISTS error
14960appears on various systems.  This problem could happen when there
14961are multiple PCI_Config operation regions under a single PCI root
14962bus.  This doesn't happen very frequently, but there are some
14963systems that do this in the ASL.
14964
14965Fixed a reported problem where the internal DeleteNode function
14966was incorrectly handling the case where a namespace node was the
14967first in the parent's child list, and had additional peers (not
14968the only child, but first in the list of children.)
14969
14970Code and Data Size: Current core subsystem library sizes are shown
14971below.  These are the code and data sizes for the acpica.lib
14972produced by the Microsoft Visual C++ 6.0 compiler, and these
14973values do not include any ACPI driver or OSPM code.  The debug
14974version of the code includes the debug output trace mechanism and
14975has a much larger code and data size.  Note that these values will
14976vary depending on the efficiency of the compiler and the compiler
14977options used during generation.
14978
14979  Previous Release
14980    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
14981    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
14982  Current Release:
14983    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
14984    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
14985
14986
149872) Linux:
14988
14989Allow ":" in OS override string (Ducrot Bruno)
14990
14991Kobject fix (Greg KH)
14992
14993
149943 iASL Compiler/Disassembler:
14995
14996Fixed a problem in the generation of the C source code files (AML
14997is emitted in C source statements for BIOS inclusion) where the
14998Ascii dump that appears within a C comment at the end of each line
14999could cause a compile time error if the AML sequence happens to
15000have an open comment or close comment sequence embedded.
15001
15002
15003----------------------------------------
1500424 April 2003.  Summary of changes for version 20030424.
15005
15006
150071) ACPI CA Core Subsystem:
15008
15009Support for big-endian systems has been implemented.  Most of the
15010support has been invisibly added behind big-endian versions of the
15011ACPI_MOVE_* macros.
15012
15013Fixed a problem in AcpiHwDisableGpeBlock() and
15014AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15015low level hardware write routine.  The offset parameter was
15016actually eliminated from the low level read/write routines because
15017they had become obsolete.
15018
15019Fixed a problem where a handler object was deleted twice during
15020the removal of a fixed event handler.
15021
15022
150232) Linux:
15024
15025A fix for SMP systems with link devices was contributed by
15026
15027Compaq's Dan Zink.
15028
15029(2.5) Return whether we handled the interrupt in our IRQ handler.
15030(Linux ISRs no longer return void, so we can propagate the handler
15031return value from the ACPI CA core back to the OS.)
15032
15033
15034
150353) Documentation:
15036
15037The ACPI CA Programmer Reference has been updated to reflect new
15038interfaces and changes to existing interfaces.
15039
15040----------------------------------------
1504128 March 2003.  Summary of changes for version 20030328.
15042
150431) ACPI CA Core Subsystem:
15044
15045The GPE Block Device support has been completed.  New interfaces
15046are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15047interfaces (enable, disable, clear, getstatus) have been split
15048into separate interfaces for Fixed Events and General Purpose
15049Events (GPEs) in order to support GPE Block Devices properly.
15050
15051Fixed a problem where the error message "Failed to acquire
15052semaphore" would appear during operations on the embedded
15053controller (EC).
15054
15055Code and Data Size: Current core subsystem library sizes are shown
15056below.  These are the code and data sizes for the acpica.lib
15057produced by the Microsoft Visual C++ 6.0 compiler, and these
15058values do not include any ACPI driver or OSPM code.  The debug
15059version of the code includes the debug output trace mechanism and
15060has a much larger code and data size.  Note that these values will
15061vary depending on the efficiency of the compiler and the compiler
15062options used during generation.
15063
15064  Previous Release
15065    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15066    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15067  Current Release:
15068    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15069    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15070
15071
15072----------------------------------------
1507328 February 2003.  Summary of changes for version 20030228.
15074
15075
150761) ACPI CA Core Subsystem:
15077
15078The GPE handling and dispatch code has been completely overhauled
15079in preparation for support of GPE Block Devices (ID ACPI0006).
15080This affects internal data structures and code only; there should
15081be no differences visible externally.  One new file has been
15082added, evgpeblk.c
15083
15084The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15085fields that are used to determine the GPE block lengths.  The
15086REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15087structures are ignored.  This is per the ACPI specification but it
15088isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15089(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15090
15091In the SCI interrupt handler, removed the read of the PM1_CONTROL
15092register to look at the SCI_EN bit.  On some machines, this read
15093causes an SMI event and greatly slows down SCI events.  (This may
15094in fact be the cause of slow battery status response on some
15095systems.)
15096
15097Fixed a problem where a store of a NULL string to a package object
15098could cause the premature deletion of the object.  This was seen
15099during execution of the battery _BIF method on some systems,
15100resulting in no battery data being returned.
15101
15102Added AcpiWalkResources interface to simplify parsing of resource
15103lists.
15104
15105Code and Data Size: Current core subsystem library sizes are shown
15106below.  These are the code and data sizes for the acpica.lib
15107produced by the Microsoft Visual C++ 6.0 compiler, and these
15108values do not include any ACPI driver or OSPM code.  The debug
15109version of the code includes the debug output trace mechanism and
15110has a much larger code and data size.  Note that these values will
15111vary depending on the efficiency of the compiler and the compiler
15112options used during generation.
15113
15114  Previous Release
15115    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15116    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15117  Current Release:
15118    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15119    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15120
15121
151222) Linux
15123
15124S3 fixes (Ole Rohne)
15125
15126Update ACPI PHP driver with to use new acpi_walk_resource API
15127(Bjorn Helgaas)
15128
15129Add S4BIOS support (Pavel Machek)
15130
15131Map in entire table before performing checksum (John Stultz)
15132
15133Expand the mem= cmdline to allow the specification of reserved and
15134ACPI DATA blocks (Pavel Machek)
15135
15136Never use ACPI on VISWS
15137
15138Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15139
15140Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15141causing us to think that some systems support C2 when they really
15142don't.
15143
15144Do not count processor objects for non-present CPUs (Thanks to
15145Dominik Brodowski)
15146
15147
151483) iASL Compiler:
15149
15150Fixed a problem where ASL include files could not be found and
15151opened.
15152
15153Added support for the _PDC reserved name.
15154
15155
15156----------------------------------------
1515722 January 2003.  Summary of changes for version 20030122.
15158
15159
151601) ACPI CA Core Subsystem:
15161
15162Added a check for constructs of the form:  Store (Local0, Local0)
15163where Local0 is not initialized.  Apparently, some BIOS
15164programmers believe that this is a NOOP.  Since this store doesn't
15165do anything anyway, the new prototype behavior will ignore this
15166error.  This is a case where we can relax the strict checking in
15167the interpreter in the name of compatibility.
15168
15169
151702) Linux
15171
15172The AcpiSrc Source Conversion Utility has been released with the
15173Linux package for the first time.  This is the utility that is
15174used to convert the ACPI CA base source code to the Linux version.
15175
15176(Both) Handle P_BLK lengths shorter than 6 more gracefully
15177
15178(Both) Move more headers to include/acpi, and delete an unused
15179header.
15180
15181(Both) Move drivers/acpi/include directory to include/acpi
15182
15183(Both) Boot functions don't use cmdline, so don't pass it around
15184
15185(Both) Remove include of unused header (Adrian Bunk)
15186
15187(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15188the
15189former now also includes the latter, acpiphp.h only needs the one,
15190now.
15191
15192(2.5) Make it possible to select method of bios restoring after S3
15193resume. [=> no more ugly ifdefs] (Pavel Machek)
15194
15195(2.5) Make proc write interfaces work (Pavel Machek)
15196
15197(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15198
15199(2.5) Break out ACPI Perf code into its own module, under cpufreq
15200(Dominik Brodowski)
15201
15202(2.4) S4BIOS support (Ducrot Bruno)
15203
15204(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15205Visinoni)
15206
15207
152083) iASL Compiler:
15209
15210Added support to disassemble SSDT and PSDTs.
15211
15212Implemented support to obtain SSDTs from the Windows registry if
15213available.
15214
15215
15216----------------------------------------
1521709 January 2003.  Summary of changes for version 20030109.
15218
152191) ACPI CA Core Subsystem:
15220
15221Changed the behavior of the internal Buffer-to-String conversion
15222function.  The current ACPI specification states that the contents
15223of the buffer are "converted to a string of two-character
15224hexadecimal numbers, each separated by a space".  Unfortunately,
15225this definition is not backwards compatible with existing ACPI 1.0
15226implementations (although the behavior was not defined in the ACPI
152271.0 specification).  The new behavior simply copies data from the
15228buffer to the string until a null character is found or the end of
15229the buffer is reached.  The new String object is always null
15230terminated.  This problem was seen during the generation of _BIF
15231battery data where incorrect strings were returned for battery
15232type, etc.  This will also require an errata to the ACPI
15233specification.
15234
15235Renamed all instances of NATIVE_UINT and NATIVE_INT to
15236ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15237
15238Copyright in all module headers (both Linux and non-Linux) has be
15239updated to 2003.
15240
15241Code and Data Size: Current core subsystem library sizes are shown
15242below.  These are the code and data sizes for the acpica.lib
15243produced by the Microsoft Visual C++ 6.0 compiler, and these
15244values do not include any ACPI driver or OSPM code.  The debug
15245version of the code includes the debug output trace mechanism and
15246has a much larger code and data size.  Note that these values will
15247vary depending on the efficiency of the compiler and the compiler
15248options used during generation.
15249
15250  Previous Release
15251    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15252    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15253  Current Release:
15254    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15255    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15256
15257
152582) Linux
15259
15260Fixed an oops on module insertion/removal (Matthew Tippett)
15261
15262(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15263
15264(2.5) Replace pr_debug (Randy Dunlap)
15265
15266(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15267
15268(Both) Eliminate spawning of thread from timer callback, in favor
15269of schedule_work()
15270
15271(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15272
15273(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15274
15275(Both) Add missing statics to button.c (Pavel Machek)
15276
15277Several changes have been made to the source code translation
15278utility that generates the Linux Code in order to make the code
15279more "Linux-like":
15280
15281All typedefs on structs and unions have been removed in keeping
15282with the Linux coding style.
15283
15284Removed the non-Linux SourceSafe module revision number from each
15285module header.
15286
15287Completed major overhaul of symbols to be lowercase for linux.
15288Doubled the number of symbols that are lowercase.
15289
15290Fixed a problem where identifiers within procedure headers and
15291within quotes were not fully lower cased (they were left with a
15292starting capital.)
15293
15294Some C macros whose only purpose is to allow the generation of 16-
15295bit code are now completely removed in the Linux code, increasing
15296readability and maintainability.
15297
15298----------------------------------------
15299
1530012 December 2002.  Summary of changes for version 20021212.
15301
15302
153031) ACPI CA Core Subsystem:
15304
15305Fixed a problem where the creation of a zero-length AML Buffer
15306would cause a fault.
15307
15308Fixed a problem where a Buffer object that pointed to a static AML
15309buffer (in an ACPI table) could inadvertently be deleted, causing
15310memory corruption.
15311
15312Fixed a problem where a user buffer (passed in to the external
15313ACPI CA interfaces) could be overwritten if the buffer was too
15314small to complete the operation, causing memory corruption.
15315
15316Fixed a problem in the Buffer-to-String conversion code where a
15317string of length one was always returned, regardless of the size
15318of the input Buffer object.
15319
15320Removed the NATIVE_CHAR data type across the entire source due to
15321lack of need and lack of consistent use.
15322
15323Code and Data Size: Current core subsystem library sizes are shown
15324below.  These are the code and data sizes for the acpica.lib
15325produced by the Microsoft Visual C++ 6.0 compiler, and these
15326values do not include any ACPI driver or OSPM code.  The debug
15327version of the code includes the debug output trace mechanism and
15328has a much larger code and data size.  Note that these values will
15329vary depending on the efficiency of the compiler and the compiler
15330options used during generation.
15331
15332  Previous Release
15333    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15334    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15335  Current Release:
15336    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15337    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15338
15339
15340----------------------------------------
1534105 December 2002.  Summary of changes for version 20021205.
15342
153431) ACPI CA Core Subsystem:
15344
15345Fixed a problem where a store to a String or Buffer object could
15346cause corruption of the DSDT if the object type being stored was
15347the same as the target object type and the length of the object
15348being stored was equal to or smaller than the original (existing)
15349target object.  This was seen to cause corruption of battery _BIF
15350buffers if the _BIF method modified the buffer on the fly.
15351
15352Fixed a problem where an internal error was generated if a control
15353method invocation was used in an OperationRegion, Buffer, or
15354Package declaration.  This was caused by the deferred parsing of
15355the control method and thus the deferred creation of the internal
15356method object.  The solution to this problem was to create the
15357internal method object at the moment the method is encountered in
15358the first pass - so that subsequent references to the method will
15359able to obtain the required parameter count and thus properly
15360parse the method invocation.  This problem presented itself as an
15361AE_AML_INTERNAL during the pass 1 parse phase during table load.
15362
15363Fixed a problem where the internal String object copy routine did
15364not always allocate sufficient memory for the target String object
15365and caused memory corruption.  This problem was seen to cause
15366"Allocation already present in list!" errors as memory allocation
15367became corrupted.
15368
15369Implemented a new function for the evaluation of namespace objects
15370that allows the specification of the allowable return object
15371types.  This simplifies a lot of code that checks for a return
15372object of one or more specific objects returned from the
15373evaluation (such as _STA, etc.)  This may become and external
15374function if it would be useful to ACPI-related drivers.
15375
15376Completed another round of prefixing #defines with "ACPI_" for
15377clarity.
15378
15379Completed additional code restructuring to allow more modular
15380linking for iASL compiler and AcpiExec.  Several files were split
15381creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15382
15383Implemented an abort mechanism to terminate an executing control
15384method via the AML debugger.  This feature is useful for debugging
15385control methods that depend (wait) for specific hardware
15386responses.
15387
15388Code and Data Size: Current core subsystem library sizes are shown
15389below.  These are the code and data sizes for the acpica.lib
15390produced by the Microsoft Visual C++ 6.0 compiler, and these
15391values do not include any ACPI driver or OSPM code.  The debug
15392version of the code includes the debug output trace mechanism and
15393has a much larger code and data size.  Note that these values will
15394vary depending on the efficiency of the compiler and the compiler
15395options used during generation.
15396
15397  Previous Release
15398    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15399    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15400  Current Release:
15401    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15402    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15403
15404
154052) iASL Compiler/Disassembler
15406
15407Fixed a compiler code generation problem for "Interrupt" Resource
15408Descriptors.  If specified in the ASL, the optional "Resource
15409Source Index" and "Resource Source" fields were not inserted into
15410the correct location within the AML resource descriptor, creating
15411an invalid descriptor.
15412
15413Fixed a disassembler problem for "Interrupt" resource descriptors.
15414The optional "Resource Source Index" and "Resource Source" fields
15415were ignored.
15416
15417
15418----------------------------------------
1541922 November 2002.  Summary of changes for version 20021122.
15420
15421
154221) ACPI CA Core Subsystem:
15423
15424Fixed a reported problem where an object stored to a Method Local
15425or Arg was not copied to a new object during the store - the
15426object pointer was simply copied to the Local/Arg.  This caused
15427all subsequent operations on the Local/Arg to also affect the
15428original source of the store operation.
15429
15430Fixed a problem where a store operation to a Method Local or Arg
15431was not completed properly if the Local/Arg contained a reference
15432(from RefOf) to a named field.  The general-purpose store-to-
15433namespace-node code is now used so that this case is handled
15434automatically.
15435
15436Fixed a problem where the internal object copy routine would cause
15437a protection fault if the object being copied was a Package and
15438contained either 1) a NULL package element or 2) a nested sub-
15439package.
15440
15441Fixed a problem with the GPE initialization that resulted from an
15442ambiguity in the ACPI specification.  One section of the
15443specification states that both the address and length of the GPE
15444block must be zero if the block is not supported.  Another section
15445implies that only the address need be zero if the block is not
15446supported.  The code has been changed so that both the address and
15447the length must be non-zero to indicate a valid GPE block (i.e.,
15448if either the address or the length is zero, the GPE block is
15449invalid.)
15450
15451Code and Data Size: Current core subsystem library sizes are shown
15452below.  These are the code and data sizes for the acpica.lib
15453produced by the Microsoft Visual C++ 6.0 compiler, and these
15454values do not include any ACPI driver or OSPM code.  The debug
15455version of the code includes the debug output trace mechanism and
15456has a much larger code and data size.  Note that these values will
15457vary depending on the efficiency of the compiler and the compiler
15458options used during generation.
15459
15460  Previous Release
15461    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15462    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15463  Current Release:
15464    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15465    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15466
15467
154682) Linux
15469
15470Cleaned up EC driver. Exported an external EC read/write
15471interface. By going through this, other drivers (most notably
15472sonypi) will be able to serialize access to the EC.
15473
15474
154753) iASL Compiler/Disassembler
15476
15477Implemented support to optionally generate include files for both
15478ASM and C (the -i switch).  This simplifies BIOS development by
15479automatically creating include files that contain external
15480declarations for the symbols that are created within the
15481
15482(optionally generated) ASM and C AML source files.
15483
15484
15485----------------------------------------
1548615 November 2002.  Summary of changes for version 20021115.
15487
154881) ACPI CA Core Subsystem:
15489
15490Fixed a memory leak problem where an error during resolution of
15491
15492method arguments during a method invocation from another method
15493failed to cleanup properly by deleting all successfully resolved
15494argument objects.
15495
15496Fixed a problem where the target of the Index() operator was not
15497correctly constructed if the source object was a package.  This
15498problem has not been detected because the use of a target operand
15499with Index() is very rare.
15500
15501Fixed a problem with the Index() operator where an attempt was
15502made to delete the operand objects twice.
15503
15504Fixed a problem where an attempt was made to delete an operand
15505twice during execution of the CondRefOf() operator if the target
15506did not exist.
15507
15508Implemented the first of perhaps several internal create object
15509functions that create and initialize a specific object type.  This
15510consolidates duplicated code wherever the object is created, thus
15511shrinking the size of the subsystem.
15512
15513Implemented improved debug/error messages for errors that occur
15514during nested method invocations.  All executing method pathnames
15515are displayed (with the error) as the call stack is unwound - thus
15516simplifying debug.
15517
15518Fixed a problem introduced in the 10/02 release that caused
15519premature deletion of a buffer object if a buffer was used as an
15520ASL operand where an integer operand is required (Thus causing an
15521implicit object conversion from Buffer to Integer.)  The change in
15522the 10/02 release was attempting to fix a memory leak (albeit
15523incorrectly.)
15524
15525Code and Data Size: Current core subsystem library sizes are shown
15526below.  These are the code and data sizes for the acpica.lib
15527produced by the Microsoft Visual C++ 6.0 compiler, and these
15528values do not include any ACPI driver or OSPM code.  The debug
15529version of the code includes the debug output trace mechanism and
15530has a much larger code and data size.  Note that these values will
15531vary depending on the efficiency of the compiler and the compiler
15532options used during generation.
15533
15534  Previous Release
15535    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15536    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15537  Current Release:
15538    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15539    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15540
15541
155422) Linux
15543
15544Changed the implementation of the ACPI semaphores to use down()
15545instead of down_interruptable().  It is important that the
15546execution of ACPI control methods not be interrupted by signals.
15547Methods must run to completion, or the system may be left in an
15548unknown/unstable state.
15549
15550Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15551(Shawn Starr)
15552
15553
155543) iASL Compiler/Disassembler
15555
15556
15557Changed the default location of output files.  All output files
15558are now placed in the current directory by default instead of in
15559the directory of the source file.  This change may affect some
15560existing makefiles, but it brings the behavior of the compiler in
15561line with other similar tools.  The location of the output files
15562can be overridden with the -p command line switch.
15563
15564
15565----------------------------------------
1556611 November 2002.  Summary of changes for version 20021111.
15567
15568
155690) ACPI Specification 2.0B is released and is now available at:
15570http://www.acpi.info/index.html
15571
15572
155731) ACPI CA Core Subsystem:
15574
15575Implemented support for the ACPI 2.0 SMBus Operation Regions.
15576This includes the early detection and handoff of the request to
15577the SMBus region handler (avoiding all of the complex field
15578support code), and support for the bidirectional return packet
15579from an SMBus write operation.  This paves the way for the
15580development of SMBus drivers in each host operating system.
15581
15582Fixed a problem where the semaphore WAIT_FOREVER constant was
15583defined as 32 bits, but must be 16 bits according to the ACPI
15584specification.  This had the side effect of causing ASL
15585Mutex/Event timeouts even though the ASL code requested a wait
15586forever.  Changed all internal references to the ACPI timeout
15587parameter to 16 bits to prevent future problems.  Changed the name
15588of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15589
15590Code and Data Size: Current core subsystem library sizes are shown
15591below.  These are the code and data sizes for the acpica.lib
15592produced by the Microsoft Visual C++ 6.0 compiler, and these
15593values do not include any ACPI driver or OSPM code.  The debug
15594version of the code includes the debug output trace mechanism and
15595has a much larger code and data size.  Note that these values will
15596vary depending on the efficiency of the compiler and the compiler
15597options used during generation.
15598
15599  Previous Release
15600    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15601    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15602  Current Release:
15603    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15604    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15605
15606
156072) Linux
15608
15609Module loading/unloading fixes (John Cagle)
15610
15611
156123) iASL Compiler/Disassembler
15613
15614Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15615
15616Implemented support for the disassembly of all SMBus protocol
15617keywords (SMBQuick, SMBWord, etc.)
15618
15619----------------------------------------
1562001 November 2002.  Summary of changes for version 20021101.
15621
15622
156231) ACPI CA Core Subsystem:
15624
15625Fixed a problem where platforms that have a GPE1 block but no GPE0
15626block were not handled correctly.  This resulted in a "GPE
15627overlap" error message.  GPE0 is no longer required.
15628
15629Removed code added in the previous release that inserted nodes
15630into the namespace in alphabetical order.  This caused some side-
15631effects on various machines.  The root cause of the problem is
15632still under investigation since in theory, the internal ordering
15633of the namespace nodes should not matter.
15634
15635
15636Enhanced error reporting for the case where a named object is not
15637found during control method execution.  The full ACPI namepath
15638(name reference) of the object that was not found is displayed in
15639this case.
15640
15641Note: as a result of the overhaul of the namespace object types in
15642the previous release, the namespace nodes for the predefined
15643scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
15644instead of ACPI_TYPE_ANY.  This simplifies the namespace
15645management code but may affect code that walks the namespace tree
15646looking for specific object types.
15647
15648Code and Data Size: Current core subsystem library sizes are shown
15649below.  These are the code and data sizes for the acpica.lib
15650produced by the Microsoft Visual C++ 6.0 compiler, and these
15651values do not include any ACPI driver or OSPM code.  The debug
15652version of the code includes the debug output trace mechanism and
15653has a much larger code and data size.  Note that these values will
15654vary depending on the efficiency of the compiler and the compiler
15655options used during generation.
15656
15657  Previous Release
15658    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15659    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15660  Current Release:
15661    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15662    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15663
15664
156652) Linux
15666
15667Fixed a problem introduced in the previous release where the
15668Processor and Thermal objects were not recognized and installed in
15669/proc.  This was related to the scope type change described above.
15670
15671
156723) iASL Compiler/Disassembler
15673
15674Implemented the -g option to get all of the required ACPI tables
15675from the registry and save them to files (Windows version of the
15676compiler only.)  The required tables are the FADT, FACS, and DSDT.
15677
15678Added ACPI table checksum validation during table disassembly in
15679order to catch corrupted tables.
15680
15681
15682----------------------------------------
1568322 October 2002.  Summary of changes for version 20021022.
15684
156851) ACPI CA Core Subsystem:
15686
15687Implemented a restriction on the Scope operator that the target
15688must already exist in the namespace at the time the operator is
15689encountered (during table load or method execution).  In other
15690words, forward references are not allowed and Scope() cannot
15691create a new object. This changes the previous behavior where the
15692interpreter would create the name if not found.  This new behavior
15693correctly enables the search-to-root algorithm during namespace
15694lookup of the target name.  Because of this upsearch, this fixes
15695the known Compaq _SB_.OKEC problem and makes both the AML
15696interpreter and iASL compiler compatible with other ACPI
15697implementations.
15698
15699Completed a major overhaul of the internal ACPI object types for
15700the ACPI Namespace and the associated operand objects.  Many of
15701these types had become obsolete with the introduction of the two-
15702pass namespace load.  This cleanup simplifies the code and makes
15703the entire namespace load mechanism much clearer and easier to
15704understand.
15705
15706Improved debug output for tracking scope opening/closing to help
15707diagnose scoping issues.  The old scope name as well as the new
15708scope name are displayed.  Also improved error messages for
15709problems with ASL Mutex objects and error messages for GPE
15710problems.
15711
15712Cleaned up the namespace dump code, removed obsolete code.
15713
15714All string output (for all namespace/object dumps) now uses the
15715common ACPI string output procedure which handles escapes properly
15716and does not emit non-printable characters.
15717
15718Fixed some issues with constants in the 64-bit version of the
15719local C library (utclib.c)
15720
15721
157222) Linux
15723
15724EC Driver:  No longer attempts to acquire the Global Lock at
15725interrupt level.
15726
15727
157283) iASL Compiler/Disassembler
15729
15730Implemented ACPI 2.0B grammar change that disallows all Type 1 and
157312 opcodes outside of a control method.  This means that the
15732"executable" operators (versus the "namespace" operators) cannot
15733be used at the table level; they can only be used within a control
15734method.
15735
15736Implemented the restriction on the Scope() operator where the
15737target must already exist in the namespace at the time the
15738operator is encountered (during ASL compilation). In other words,
15739forward references are not allowed and Scope() cannot create a new
15740object.  This makes the iASL compiler compatible with other ACPI
15741implementations and makes the Scope() implementation adhere to the
15742ACPI specification.
15743
15744Fixed a problem where namepath optimization for the Alias operator
15745was optimizing the wrong path (of the two namepaths.)  This caused
15746a "Missing alias link" error message.
15747
15748Fixed a problem where an "unknown reserved name" warning could be
15749incorrectly generated for names like "_SB" when the trailing
15750underscore is not used in the original ASL.
15751
15752Fixed a problem where the reserved name check did not handle
15753NamePaths with multiple NameSegs correctly.  The first nameseg of
15754the NamePath was examined instead of the last NameSeg.
15755
15756
15757----------------------------------------
15758
1575902 October 2002.  Summary of changes for this release.
15760
15761
157621) ACPI CA Core Subsystem version 20021002:
15763
15764Fixed a problem where a store/copy of a string to an existing
15765string did not always set the string length properly in the String
15766object.
15767
15768Fixed a reported problem with the ToString operator where the
15769behavior was identical to the ToHexString operator instead of just
15770simply converting a raw buffer to a string data type.
15771
15772Fixed a problem where CopyObject and the other "explicit"
15773conversion operators were not updating the internal namespace node
15774type as part of the store operation.
15775
15776Fixed a memory leak during implicit source operand conversion
15777where the original object was not deleted if it was converted to a
15778new object of a different type.
15779
15780Enhanced error messages for all problems associated with namespace
15781lookups.  Common procedure generates and prints the lookup name as
15782well as the formatted status.
15783
15784Completed implementation of a new design for the Alias support
15785within the namespace.  The existing design did not handle the case
15786where a new object was assigned to one of the two names due to the
15787use of an explicit conversion operator, resulting in the two names
15788pointing to two different objects.  The new design simply points
15789the Alias name to the original name node - not to the object.
15790This results in a level of indirection that must be handled in the
15791name resolution mechanism.
15792
15793Code and Data Size: Current core subsystem library sizes are shown
15794below.  These are the code and data sizes for the acpica.lib
15795produced by the Microsoft Visual C++ 6.0 compiler, and these
15796values do not include any ACPI driver or OSPM code.  The debug
15797version of the code includes the debug output trace mechanism and
15798has a larger code and data size.  Note that these values will vary
15799depending on the efficiency of the compiler and the compiler
15800options used during generation.
15801
15802  Previous Release
15803    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15804    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
15805  Current Release:
15806    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15807    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15808
15809
158102) Linux
15811
15812Initialize thermal driver's timer before it is used. (Knut
15813Neumann)
15814
15815Allow handling negative celsius values. (Kochi Takayoshi)
15816
15817Fix thermal management and make trip points. R/W (Pavel Machek)
15818
15819Fix /proc/acpi/sleep. (P. Christeas)
15820
15821IA64 fixes. (David Mosberger)
15822
15823Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15824
15825Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15826Brodowski)
15827
15828
158293) iASL Compiler/Disassembler
15830
15831Clarified some warning/error messages.
15832
15833
15834----------------------------------------
1583518 September 2002.  Summary of changes for this release.
15836
15837
158381) ACPI CA Core Subsystem version 20020918:
15839
15840Fixed a reported problem with reference chaining (via the Index()
15841and RefOf() operators) in the ObjectType() and SizeOf() operators.
15842The definition of these operators includes the dereferencing of
15843all chained references to return information on the base object.
15844
15845Fixed a problem with stores to indexed package elements - the
15846existing code would not complete the store if an "implicit
15847conversion" was not performed.  In other words, if the existing
15848object (package element) was to be replaced completely, the code
15849didn't handle this case.
15850
15851Relaxed typechecking on the ASL "Scope" operator to allow the
15852target name to refer to an object of type Integer, String, or
15853Buffer, in addition to the scoping object types (Device,
15854predefined Scopes, Processor, PowerResource, and ThermalZone.)
15855This allows existing AML code that has workarounds for a bug in
15856Windows to function properly.  A warning is issued, however.  This
15857affects both the AML interpreter and the iASL compiler. Below is
15858an example of this type of ASL code:
15859
15860      Name(DEB,0x00)
15861      Scope(DEB)
15862      {
15863
15864Fixed some reported problems with 64-bit integer support in the
15865local implementation of C library functions (clib.c)
15866
15867
158682) Linux
15869
15870Use ACPI fix map region instead of IOAPIC region, since it is
15871undefined in non-SMP.
15872
15873Ensure that the SCI has the proper polarity and trigger, even on
15874systems that do not have an interrupt override entry in the MADT.
15875
158762.5 big driver reorganization (Pat Mochel)
15877
15878Use early table mapping code from acpitable.c (Andi Kleen)
15879
15880New blacklist entries (Andi Kleen)
15881
15882Blacklist improvements. Split blacklist code out into a separate
15883file. Move checking the blacklist to very early. Previously, we
15884would use ACPI tables, and then halfway through init, check the
15885blacklist -- too late. Now, it's early enough to completely fall-
15886back to non-ACPI.
15887
15888
158893) iASL Compiler/Disassembler version 20020918:
15890
15891Fixed a problem where the typechecking code didn't know that an
15892alias could point to a method.  In other words, aliases were not
15893being dereferenced during typechecking.
15894
15895
15896----------------------------------------
1589729 August 2002.  Summary of changes for this release.
15898
158991) ACPI CA Core Subsystem Version 20020829:
15900
15901If the target of a Scope() operator already exists, it must be an
15902object type that actually opens a scope -- such as a Device,
15903Method, Scope, etc.  This is a fatal runtime error.  Similar error
15904check has been added to the iASL compiler also.
15905
15906Tightened up the namespace load to disallow multiple names in the
15907same scope.  This previously was allowed if both objects were of
15908the same type.  (i.e., a lookup was the same as entering a new
15909name).
15910
15911
159122) Linux
15913
15914Ensure that the ACPI interrupt has the proper trigger and
15915polarity.
15916
15917local_irq_disable is extraneous. (Matthew Wilcox)
15918
15919Make "acpi=off" actually do what it says, and not use the ACPI
15920interpreter *or* the tables.
15921
15922Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
15923Takayoshi)
15924
15925
159263) iASL Compiler/Disassembler  Version 20020829:
15927
15928Implemented namepath optimization for name declarations.  For
15929example, a declaration like "Method (\_SB_.ABCD)" would get
15930optimized to "Method (ABCD)" if the declaration is within the
15931\_SB_ scope.  This optimization is in addition to the named
15932reference path optimization first released in the previous
15933version. This would seem to complete all possible optimizations
15934for namepaths within the ASL/AML.
15935
15936If the target of a Scope() operator already exists, it must be an
15937object type that actually opens a scope -- such as a Device,
15938Method, Scope, etc.
15939
15940Implemented a check and warning for unreachable code in the same
15941block below a Return() statement.
15942
15943Fixed a problem where the listing file was not generated if the
15944compiler aborted if the maximum error count was exceeded (200).
15945
15946Fixed a problem where the typechecking of method return values was
15947broken.  This includes the check for a return value when the
15948method is invoked as a TermArg (a return value is expected.)
15949
15950Fixed a reported problem where EOF conditions during a quoted
15951string or comment caused a fault.
15952
15953
15954----------------------------------------
1595515 August 2002.  Summary of changes for this release.
15956
159571) ACPI CA Core Subsystem Version 20020815:
15958
15959Fixed a reported problem where a Store to a method argument that
15960contains a reference did not perform the indirect store correctly.
15961This problem was created during the conversion to the new
15962reference object model - the indirect store to a method argument
15963code was not updated to reflect the new model.
15964
15965Reworked the ACPI mode change code to better conform to ACPI 2.0,
15966handle corner cases, and improve code legibility (Kochi Takayoshi)
15967
15968Fixed a problem with the pathname parsing for the carat (^)
15969prefix.  The heavy use of the carat operator by the new namepath
15970optimization in the iASL compiler uncovered a problem with the AML
15971interpreter handling of this prefix.  In the case where one or
15972more carats precede a single nameseg, the nameseg was treated as
15973standalone and the search rule (to root) was inadvertently
15974applied.  This could cause both the iASL compiler and the
15975interpreter to find the wrong object or to miss the error that
15976should occur if the object does not exist at that exact pathname.
15977
15978Found and fixed the problem where the HP Pavilion DSDT would not
15979load.  This was a relatively minor tweak to the table loading code
15980(a problem caused by the unexpected encounter with a method
15981invocation not within a control method), but it does not solve the
15982overall issue of the execution of AML code at the table level.
15983This investigation is still ongoing.
15984
15985Code and Data Size: Current core subsystem library sizes are shown
15986below.  These are the code and data sizes for the acpica.lib
15987produced by the Microsoft Visual C++ 6.0 compiler, and these
15988values do not include any ACPI driver or OSPM code.  The debug
15989version of the code includes the debug output trace mechanism and
15990has a larger code and data size.  Note that these values will vary
15991depending on the efficiency of the compiler and the compiler
15992options used during generation.
15993
15994  Previous Release
15995    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
15996    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
15997  Current Release:
15998    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15999    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16000
16001
160022) Linux
16003
16004Remove redundant slab.h include (Brad Hards)
16005
16006Fix several bugs in thermal.c (Herbert Nachtnebel)
16007
16008Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16009
16010Change acpi_system_suspend to use updated irq functions (Pavel
16011Machek)
16012
16013Export acpi_get_firmware_table (Matthew Wilcox)
16014
16015Use proper root proc entry for ACPI (Kochi Takayoshi)
16016
16017Fix early-boot table parsing (Bjorn Helgaas)
16018
16019
160203) iASL Compiler/Disassembler
16021
16022Reworked the compiler options to make them more consistent and to
16023use two-letter options where appropriate.  We were running out of
16024sensible letters.   This may break some makefiles, so check the
16025current options list by invoking the compiler with no parameters.
16026
16027Completed the design and implementation of the ASL namepath
16028optimization option for the compiler.  This option optimizes all
16029references to named objects to the shortest possible path.  The
16030first attempt tries to utilize a single nameseg (4 characters) and
16031the "search-to-root" algorithm used by the interpreter.  If that
16032cannot be used (because either the name is not in the search path
16033or there is a conflict with another object with the same name),
16034the pathname is optimized using the carat prefix (usually a
16035shorter string than specifying the entire path from the root.)
16036
16037Implemented support to obtain the DSDT from the Windows registry
16038(when the disassembly option is specified with no input file).
16039Added this code as the implementation for AcpiOsTableOverride in
16040the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16041utility) to scan memory for the DSDT to the AcpiOsTableOverride
16042function in the DOS OSL to make the disassembler truly OS
16043independent.
16044
16045Implemented a new option to disassemble and compile in one step.
16046When used without an input filename, this option will grab the
16047DSDT from the local machine, disassemble it, and compile it in one
16048step.
16049
16050Added a warning message for invalid escapes (a backslash followed
16051by any character other than the allowable escapes).  This catches
16052the quoted string error "\_SB_" (which should be "\\_SB_" ).
16053
16054Also, there are numerous instances in the ACPI specification where
16055this error occurs.
16056
16057Added a compiler option to disable all optimizations.  This is
16058basically the "compatibility mode" because by using this option,
16059the AML code will come out exactly the same as other ASL
16060compilers.
16061
16062Added error messages for incorrectly ordered dependent resource
16063functions.  This includes: missing EndDependentFn macro at end of
16064dependent resource list, nested dependent function macros (both
16065start and end), and missing StartDependentFn macro.  These are
16066common errors that should be caught at compile time.
16067
16068Implemented _OSI support for the disassembler and compiler.  _OSI
16069must be included in the namespace for proper disassembly (because
16070the disassembler must know the number of arguments.)
16071
16072Added an "optimization" message type that is optional (off by
16073default).  This message is used for all optimizations - including
16074constant folding, integer optimization, and namepath optimization.
16075
16076----------------------------------------
1607725 July 2002.  Summary of changes for this release.
16078
16079
160801) ACPI CA Core Subsystem Version 20020725:
16081
16082The AML Disassembler has been enhanced to produce compilable ASL
16083code and has been integrated into the iASL compiler (see below) as
16084well as the single-step disassembly for the AML debugger and the
16085disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16086resource templates and macros are fully supported.  The
16087disassembler has been tested on over 30 different AML files,
16088producing identical AML when the resulting disassembled ASL file
16089is recompiled with the same ASL compiler.
16090
16091Modified the Resource Manager to allow zero interrupts and zero
16092dma channels during the GetCurrentResources call.  This was
16093causing problems on some platforms.
16094
16095Added the AcpiOsRedirectOutput interface to the OSL to simplify
16096output redirection for the AcpiOsPrintf and AcpiOsVprintf
16097interfaces.
16098
16099Code and Data Size: Current core subsystem library sizes are shown
16100below.  These are the code and data sizes for the acpica.lib
16101produced by the Microsoft Visual C++ 6.0 compiler, and these
16102values do not include any ACPI driver or OSPM code.  The debug
16103version of the code includes the debug output trace mechanism and
16104has a larger code and data size.  Note that these values will vary
16105depending on the efficiency of the compiler and the compiler
16106options used during generation.
16107
16108  Previous Release
16109    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16110    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16111  Current Release:
16112    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16113    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16114
16115
161162) Linux
16117
16118Fixed a panic in the EC driver (Dominik Brodowski)
16119
16120Implemented checksum of the R/XSDT itself during Linux table scan
16121(Richard Schaal)
16122
16123
161243) iASL compiler
16125
16126The AML disassembler is integrated into the compiler.  The "-d"
16127option invokes the disassembler  to completely disassemble an
16128input AML file, producing as output a text ASL file with the
16129extension ".dsl" (to avoid name collisions with existing .asl
16130source files.)  A future enhancement will allow the disassembler
16131to obtain the BIOS DSDT from the registry under Windows.
16132
16133Fixed a problem with the VendorShort and VendorLong resource
16134descriptors where an invalid AML sequence was created.
16135
16136Implemented a fix for BufferData term in the ASL parser.  It was
16137inadvertently defined twice, allowing invalid syntax to pass and
16138causing reduction conflicts.
16139
16140Fixed a problem where the Ones opcode could get converted to a
16141value of zero if "Ones" was used where a byte, word or dword value
16142was expected.  The 64-bit value is now truncated to the correct
16143size with the correct value.
16144
16145
16146
16147----------------------------------------
1614802 July 2002.  Summary of changes for this release.
16149
16150
161511) ACPI CA Core Subsystem Version 20020702:
16152
16153The Table Manager code has been restructured to add several new
16154features.  Tables that are not required by the core subsystem
16155(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16156validated in any way and are returned from AcpiGetFirmwareTable if
16157requested.  The AcpiOsTableOverride interface is now called for
16158each table that is loaded by the subsystem in order to allow the
16159host to override any table it chooses.  Previously, only the DSDT
16160could be overridden.  Added one new files, tbrsdt.c and
16161tbgetall.c.
16162
16163Fixed a problem with the conversion of internal package objects to
16164external objects (when a package is returned from a control
16165method.)  The return buffer length was set to zero instead of the
16166proper length of the package object.
16167
16168Fixed a reported problem with the use of the RefOf and DeRefOf
16169operators when passing reference arguments to control methods.  A
16170new type of Reference object is used internally for references
16171produced by the RefOf operator.
16172
16173Added additional error messages in the Resource Manager to explain
16174AE_BAD_DATA errors when they occur during resource parsing.
16175
16176Split the AcpiEnableSubsystem into two primitives to enable a
16177finer granularity initialization sequence.  These two calls should
16178be called in this order: AcpiEnableSubsystem (flags),
16179AcpiInitializeObjects (flags).  The flags parameter remains the
16180same.
16181
16182
161832) Linux
16184
16185Updated the ACPI utilities module to understand the new style of
16186fully resolved package objects that are now returned from the core
16187subsystem.  This eliminates errors of the form:
16188
16189    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16190    acpi_utils-0430 [145] acpi_evaluate_reference:
16191        Invalid element in package (not a device reference)
16192
16193The method evaluation utility uses the new buffer allocation
16194scheme instead of calling AcpiEvaluate Object twice.
16195
16196Added support for ECDT. This allows the use of the Embedded
16197
16198Controller before the namespace has been fully initialized, which
16199is necessary for ACPI 2.0 support, and for some laptops to
16200initialize properly. (Laptops using ECDT are still rare, so only
16201limited testing was performed of the added functionality.)
16202
16203Fixed memory leaks in the EC driver.
16204
16205Eliminated a brittle code structure in acpi_bus_init().
16206
16207Eliminated the acpi_evaluate() helper function in utils.c. It is
16208no longer needed since acpi_evaluate_object can optionally
16209allocate memory for the return object.
16210
16211Implemented fix for keyboard hang when getting battery readings on
16212some systems (Stephen White)
16213
16214PCI IRQ routing update (Dominik Brodowski)
16215
16216Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16217support
16218
16219----------------------------------------
1622011 June 2002.  Summary of changes for this release.
16221
16222
162231) ACPI CA Core Subsystem Version 20020611:
16224
16225Fixed a reported problem where constants such as Zero and One
16226appearing within _PRT packages were not handled correctly within
16227the resource manager code.  Originally reported against the ASL
16228compiler because the code generator now optimizes integers to
16229their minimal AML representation (i.e. AML constants if possible.)
16230The _PRT code now handles all AML constant opcodes correctly
16231(Zero, One, Ones, Revision).
16232
16233Fixed a problem with the Concatenate operator in the AML
16234interpreter where a buffer result object was incorrectly marked as
16235not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16236
16237All package sub-objects are now fully resolved before they are
16238returned from the external ACPI interfaces.  This means that name
16239strings are resolved to object handles, and constant operators
16240(Zero, One, Ones, Revision) are resolved to Integers.
16241
16242Implemented immediate resolution of the AML Constant opcodes
16243(Zero, One, Ones, Revision) to Integer objects upon detection
16244within the AML stream. This has simplified and reduced the
16245generated code size of the subsystem by eliminating about 10
16246switch statements for these constants (which previously were
16247contained in Reference objects.)  The complicating issues are that
16248the Zero opcode is used as a "placeholder" for unspecified
16249optional target operands and stores to constants are defined to be
16250no-ops.
16251
16252Code and Data Size: Current core subsystem library sizes are shown
16253below. These are the code and data sizes for the acpica.lib
16254produced by the Microsoft Visual C++ 6.0 compiler, and these
16255values do not include any ACPI driver or OSPM code.  The debug
16256version of the code includes the debug output trace mechanism and
16257has a larger code and data size.  Note that these values will vary
16258depending on the efficiency of the compiler and the compiler
16259options used during generation.
16260
16261  Previous Release
16262    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16263    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16264  Current Release:
16265    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16266    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16267
16268
162692) Linux
16270
16271
16272Added preliminary support for obtaining _TRA data for PCI root
16273bridges (Bjorn Helgaas).
16274
16275
162763) iASL Compiler Version X2046:
16277
16278Fixed a problem where the "_DDN" reserved name was defined to be a
16279control method with one argument.  There are no arguments, and
16280_DDN does not have to be a control method.
16281
16282Fixed a problem with the Linux version of the compiler where the
16283source lines printed with error messages were the wrong lines.
16284This turned out to be the "LF versus CR/LF" difference between
16285Windows and Unix.  This appears to be the longstanding issue
16286concerning listing output and error messages.
16287
16288Fixed a problem with the Linux version of compiler where opcode
16289names within error messages were wrong.  This was caused by a
16290slight difference in the output of the Flex tool on Linux versus
16291Windows.
16292
16293Fixed a problem with the Linux compiler where the hex output files
16294contained some garbage data caused by an internal buffer overrun.
16295
16296
16297----------------------------------------
1629817 May 2002.  Summary of changes for this release.
16299
16300
163011) ACPI CA Core Subsystem Version 20020517:
16302
16303Implemented a workaround to an BIOS bug discovered on the HP
16304OmniBook where the FADT revision number and the table size are
16305inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16306behavior is to fallback to using only the ACPI 1.0 fields of the
16307FADT if the table is too small to be a ACPI 2.0 table as claimed
16308by the revision number.  Although this is a BIOS bug, this is a
16309case where the workaround is simple enough and with no side
16310effects, so it seemed prudent to add it.  A warning message is
16311issued, however.
16312
16313Implemented minimum size checks for the fixed-length ACPI tables -
16314- the FADT and FACS, as well as consistency checks between the
16315revision number and the table size.
16316
16317Fixed a reported problem in the table override support where the
16318new table pointer was incorrectly treated as a physical address
16319instead of a logical address.
16320
16321Eliminated the use of the AE_AML_ERROR exception and replaced it
16322with more descriptive codes.
16323
16324Fixed a problem where an exception would occur if an ASL Field was
16325defined with no named Field Units underneath it (used by some
16326index fields).
16327
16328Code and Data Size: Current core subsystem library sizes are shown
16329below.  These are the code and data sizes for the acpica.lib
16330produced by the Microsoft Visual C++ 6.0 compiler, and these
16331values do not include any ACPI driver or OSPM code.  The debug
16332version of the code includes the debug output trace mechanism and
16333has a larger code and data size.  Note that these values will vary
16334depending on the efficiency of the compiler and the compiler
16335options used during generation.
16336
16337  Previous Release
16338    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16339    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16340  Current Release:
16341    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16342    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16343
16344
16345
163462) Linux
16347
16348Much work done on ACPI init (MADT and PCI IRQ routing support).
16349(Paul D. and Dominik Brodowski)
16350
16351Fix PCI IRQ-related panic on boot (Sam Revitch)
16352
16353Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16354
16355Fix "MHz" typo (Dominik Brodowski)
16356
16357Fix RTC year 2000 issue (Dominik Brodowski)
16358
16359Preclude multiple button proc entries (Eric Brunet)
16360
16361Moved arch-specific code out of include/platform/aclinux.h
16362
163633) iASL Compiler Version X2044:
16364
16365Implemented error checking for the string used in the EISAID macro
16366(Usually used in the definition of the _HID object.)  The code now
16367strictly enforces the PnP format - exactly 7 characters, 3
16368uppercase letters and 4 hex digits.
16369
16370If a raw string is used in the definition of the _HID object
16371(instead of the EISAID macro), the string must contain all
16372alphanumeric characters (e.g., "*PNP0011" is not allowed because
16373of the asterisk.)
16374
16375Implemented checking for invalid use of ACPI reserved names for
16376most of the name creation operators (Name, Device, Event, Mutex,
16377OperationRegion, PowerResource, Processor, and ThermalZone.)
16378Previously, this check was only performed for control methods.
16379
16380Implemented an additional check on the Name operator to emit an
16381error if a reserved name that must be implemented in ASL as a
16382control method is used.  We know that a reserved name must be a
16383method if it is defined with input arguments.
16384
16385The warning emitted when a namespace object reference is not found
16386during the cross reference phase has been changed into an error.
16387The "External" directive should be used for names defined in other
16388modules.
16389
16390
163914) Tools and Utilities
16392
16393The 16-bit tools (adump16 and aexec16) have been regenerated and
16394tested.
16395
16396Fixed a problem with the output of both acpidump and adump16 where
16397the indentation of closing parentheses and brackets was not
16398
16399aligned properly with the parent block.
16400
16401
16402----------------------------------------
1640303 May 2002.  Summary of changes for this release.
16404
16405
164061) ACPI CA Core Subsystem Version 20020503:
16407
16408Added support a new OSL interface that allows the host operating
16409
16410system software to override the DSDT found in the firmware -
16411AcpiOsTableOverride.  With this interface, the OSL can examine the
16412version of the firmware DSDT and replace it with a different one
16413if desired.
16414
16415Added new external interfaces for accessing ACPI registers from
16416device drivers and other system software - AcpiGetRegister and
16417AcpiSetRegister.  This was simply an externalization of the
16418existing AcpiHwBitRegister interfaces.
16419
16420Fixed a regression introduced in the previous build where the
16421ASL/AML CreateField operator always returned an error,
16422"destination must be a NS Node".
16423
16424Extended the maximum time (before failure) to successfully enable
16425ACPI mode to 3 seconds.
16426
16427Code and Data Size: Current core subsystem library sizes are shown
16428below.  These are the code and data sizes for the acpica.lib
16429produced by the Microsoft Visual C++ 6.0 compiler, and these
16430values do not include any ACPI driver or OSPM code.  The debug
16431version of the code includes the debug output trace mechanism and
16432has a larger code and data size.  Note that these values will vary
16433depending on the efficiency of the compiler and the compiler
16434options used during generation.
16435
16436  Previous Release
16437    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16438    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16439  Current Release:
16440    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16441    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16442
16443
164442) Linux
16445
16446Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16447free. While 3 out of 4 of our in-house systems work fine, the last
16448one still hangs when testing the LAPIC timer.
16449
16450Renamed many files in 2.5 kernel release to omit "acpi_" from the
16451name.
16452
16453Added warning on boot for Presario 711FR.
16454
16455Sleep improvements (Pavel Machek)
16456
16457ACPI can now be built without CONFIG_PCI enabled.
16458
16459IA64: Fixed memory map functions (JI Lee)
16460
16461
164623) iASL Compiler Version X2043:
16463
16464Added support to allow the compiler to be integrated into the MS
16465VC++ development environment for one-button compilation of single
16466files or entire projects -- with error-to-source-line mapping.
16467
16468Implemented support for compile-time constant folding for the
16469Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16470specification.  This allows the ASL writer to use expressions
16471instead of Integer/Buffer/String constants in terms that must
16472evaluate to constants at compile time and will also simplify the
16473emitted AML in any such sub-expressions that can be folded
16474(evaluated at compile-time.)  This increases the size of the
16475compiler significantly because a portion of the ACPI CA AML
16476interpreter is included within the compiler in order to pre-
16477evaluate constant expressions.
16478
16479
16480Fixed a problem with the "Unicode" ASL macro that caused the
16481compiler to fault.  (This macro is used in conjunction with the
16482_STR reserved name.)
16483
16484Implemented an AML opcode optimization to use the Zero, One, and
16485Ones opcodes where possible to further reduce the size of integer
16486constants and thus reduce the overall size of the generated AML
16487code.
16488
16489Implemented error checking for new reserved terms for ACPI version
164902.0A.
16491
16492Implemented the -qr option to display the current list of ACPI
16493reserved names known to the compiler.
16494
16495Implemented the -qc option to display the current list of ASL
16496operators that are allowed within constant expressions and can
16497therefore be folded at compile time if the operands are constants.
16498
16499
165004) Documentation
16501
16502Updated the Programmer's Reference for new interfaces, data types,
16503and memory allocation model options.
16504
16505Updated the iASL Compiler User Reference to apply new format and
16506add information about new features and options.
16507
16508----------------------------------------
1650919 April 2002.  Summary of changes for this release.
16510
165111) ACPI CA Core Subsystem Version 20020419:
16512
16513The source code base for the Core Subsystem has been completely
16514cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16515versions.  The Lint option files used are included in the
16516/acpi/generate/lint directory.
16517
16518Implemented enhanced status/error checking across the entire
16519Hardware manager subsystem.  Any hardware errors (reported from
16520the OSL) are now bubbled up and will abort a running control
16521method.
16522
16523
16524Fixed a problem where the per-ACPI-table integer width (32 or 64)
16525was stored only with control method nodes, causing a fault when
16526non-control method code was executed during table loading.  The
16527solution implemented uses a global variable to indicate table
16528width across the entire ACPI subsystem.  Therefore, ACPI CA does
16529not support mixed integer widths across different ACPI tables
16530(DSDT, SSDT).
16531
16532Fixed a problem where NULL extended fields (X fields) in an ACPI
165332.0 ACPI FADT caused the table load to fail.  Although the
16534existing ACPI specification is a bit fuzzy on this topic, the new
16535behavior is to fall back on a ACPI 1.0 field if the corresponding
16536ACPI 2.0 X field is zero (even though the table revision indicates
16537a full ACPI 2.0 table.)  The ACPI specification will be updated to
16538clarify this issue.
16539
16540Fixed a problem with the SystemMemory operation region handler
16541where memory was always accessed byte-wise even if the AML-
16542specified access width was larger than a byte.  This caused
16543problems on systems with memory-mapped I/O.  Memory is now
16544accessed with the width specified.  On systems that do not support
16545non-aligned transfers, a check is made to guarantee proper address
16546alignment before proceeding in order to avoid an AML-caused
16547alignment fault within the kernel.
16548
16549
16550Fixed a problem with the ExtendedIrq resource where only one byte
16551of the 4-byte Irq field was extracted.
16552
16553Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
16554function was out of date and required a rewrite.
16555
16556Code and Data Size: Current core subsystem library sizes are shown
16557below.  These are the code and data sizes for the acpica.lib
16558produced by the Microsoft Visual C++ 6.0 compiler, and these
16559values do not include any ACPI driver or OSPM code.  The debug
16560version of the code includes the debug output trace mechanism and
16561has a larger code and data size.  Note that these values will vary
16562depending on the efficiency of the compiler and the compiler
16563options used during generation.
16564
16565  Previous Release
16566    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16567    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16568  Current Release:
16569    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16570    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16571
16572
165732) Linux
16574
16575PCI IRQ routing fixes (Dominik Brodowski)
16576
16577
165783) iASL Compiler Version X2042:
16579
16580Implemented an additional compile-time error check for a field
16581unit whose size + minimum access width would cause a run-time
16582access beyond the end-of-region.  Previously, only the field size
16583itself was checked.
16584
16585The Core subsystem and iASL compiler now share a common parse
16586object in preparation for compile-time evaluation of the type
165873/4/5 ASL operators.
16588
16589
16590----------------------------------------
16591Summary of changes for this release: 03_29_02
16592
165931) ACPI CA Core Subsystem Version 20020329:
16594
16595Implemented support for late evaluation of TermArg operands to
16596Buffer and Package objects.  This allows complex expressions to be
16597used in the declarations of these object types.
16598
16599Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
166001.0, if the field was larger than 32 bits, it was returned as a
16601buffer - otherwise it was returned as an integer.  In ACPI 2.0,
16602the field is returned as a buffer only if the field is larger than
1660364 bits.  The TableRevision is now considered when making this
16604conversion to avoid incompatibility with existing ASL code.
16605
16606Implemented logical addressing for AcpiOsGetRootPointer.  This
16607allows an RSDP with either a logical or physical address.  With
16608this support, the host OS can now override all ACPI tables with
16609one logical RSDP.  Includes implementation of  "typed" pointer
16610support to allow a common data type for both physical and logical
16611pointers internally.  This required a change to the
16612AcpiOsGetRootPointer interface.
16613
16614Implemented the use of ACPI 2.0 Generic Address Structures for all
16615GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
16616mapped I/O for these ACPI features.
16617
16618Initialization now ignores not only non-required tables (All
16619tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16620not validate the table headers of unrecognized tables.
16621
16622Fixed a problem where a notify handler could only be
16623installed/removed on an object of type Device.  All "notify"
16624
16625objects are now supported -- Devices, Processor, Power, and
16626Thermal.
16627
16628Removed most verbosity from the ACPI_DB_INFO debug level.  Only
16629critical information is returned when this debug level is enabled.
16630
16631Code and Data Size: Current core subsystem library sizes are shown
16632below.  These are the code and data sizes for the acpica.lib
16633produced by the Microsoft Visual C++ 6.0 compiler, and these
16634values do not include any ACPI driver or OSPM code.  The debug
16635version of the code includes the debug output trace mechanism and
16636has a larger code and data size.  Note that these values will vary
16637depending on the efficiency of the compiler and the compiler
16638options used during generation.
16639
16640  Previous Release
16641    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16642    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16643  Current Release:
16644    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16645    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16646
16647
166482) Linux:
16649
16650The processor driver (acpi_processor.c) now fully supports ACPI
166512.0-based processor performance control (e.g. Intel(R)
16652SpeedStep(TM) technology) Note that older laptops that only have
16653the Intel "applet" interface are not supported through this.  The
16654'limit' and 'performance' interface (/proc) are fully functional.
16655[Note that basic policy for controlling performance state
16656transitions will be included in the next version of ospmd.]  The
16657idle handler was modified to more aggressively use C2, and PIIX4
16658errata handling underwent a complete overhaul (big thanks to
16659Dominik Brodowski).
16660
16661Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
16662based devices in the ACPI namespace are now dynamically bound
16663(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
16664This allows, among other things, ACPI to resolve bus numbers for
16665subordinate PCI bridges.
16666
16667Enhanced PCI IRQ routing to get the proper bus number for _PRT
16668entries defined underneath PCI bridges.
16669
16670Added IBM 600E to bad bios list due to invalid _ADR value for
16671PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
16672
16673In the process of adding full MADT support (e.g. IOAPIC) for IA32
16674(acpi.c, mpparse.c) -- stay tuned.
16675
16676Added back visual differentiation between fixed-feature and
16677control-method buttons in dmesg.  Buttons are also subtyped (e.g.
16678button/power/PWRF) to simplify button identification.
16679
16680We no longer use -Wno-unused when compiling debug. Please ignore
16681any "_THIS_MODULE defined but not used" messages.
16682
16683Can now shut down the system using "magic sysrq" key.
16684
16685
166863) iASL Compiler version 2041:
16687
16688Fixed a problem where conversion errors for hex/octal/decimal
16689constants were not reported.
16690
16691Implemented a fix for the General Register template Address field.
16692This field was 8 bits when it should be 64.
16693
16694Fixed a problem where errors/warnings were no longer being emitted
16695within the listing output file.
16696
16697Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16698exactly 4 characters, alphanumeric only.
16699
16700
16701
16702
16703----------------------------------------
16704Summary of changes for this release: 03_08_02
16705
16706
167071) ACPI CA Core Subsystem Version 20020308:
16708
16709Fixed a problem with AML Fields where the use of the "AccessAny"
16710keyword could cause an interpreter error due to attempting to read
16711or write beyond the end of the parent Operation Region.
16712
16713Fixed a problem in the SystemMemory Operation Region handler where
16714an attempt was made to map memory beyond the end of the region.
16715This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16716errors on some Linux systems.
16717
16718Fixed a problem where the interpreter/namespace "search to root"
16719algorithm was not functioning for some object types.  Relaxed the
16720internal restriction on the search to allow upsearches for all
16721external object types as well as most internal types.
16722
16723
167242) Linux:
16725
16726We now use safe_halt() macro versus individual calls to sti | hlt.
16727
16728Writing to the processor limit interface should now work. "echo 1"
16729will increase the limit, 2 will decrease, and 0 will reset to the
16730
16731default.
16732
16733
167343) ASL compiler:
16735
16736Fixed segfault on Linux version.
16737
16738
16739----------------------------------------
16740Summary of changes for this release: 02_25_02
16741
167421) ACPI CA Core Subsystem:
16743
16744
16745Fixed a problem where the GPE bit masks were not initialized
16746properly, causing erratic GPE behavior.
16747
16748Implemented limited support for multiple calling conventions.  The
16749code can be generated with either the VPL (variable parameter
16750list, or "C") convention, or the FPL (fixed parameter list, or
16751"Pascal") convention.  The core subsystem is about 3.4% smaller
16752when generated with FPL.
16753
16754
167552) Linux
16756
16757Re-add some /proc/acpi/event functionality that was lost during
16758the rewrite
16759
16760Resolved issue with /proc events for fixed-feature buttons showing
16761up as the system device.
16762
16763Fixed checks on C2/C3 latencies to be inclusive of maximum values.
16764
16765Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
16766
16767Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
16768
16769Fixed limit interface & usage to fix bugs with passive cooling
16770hysterisis.
16771
16772Restructured PRT support.
16773
16774
16775----------------------------------------
16776Summary of changes for this label: 02_14_02
16777
16778
167791) ACPI CA Core Subsystem:
16780
16781Implemented support in AcpiLoadTable to allow loading of FACS and
16782FADT tables.
16783
16784Support for the now-obsolete interim 0.71 64-bit ACPI tables has
16785been removed.  All 64-bit platforms should be migrated to the ACPI
167862.0 tables.  The actbl71.h header has been removed from the source
16787tree.
16788
16789All C macros defined within the subsystem have been prefixed with
16790"ACPI_" to avoid collision with other system include files.
16791
16792Removed the return value for the two AcpiOsPrint interfaces, since
16793it is never used and causes lint warnings for ignoring the return
16794value.
16795
16796Added error checking to all internal mutex acquire and release
16797calls.  Although a failure from one of these interfaces is
16798probably a fatal system error, these checks will cause the
16799immediate abort of the currently executing method or interface.
16800
16801Fixed a problem where the AcpiSetCurrentResources interface could
16802fault.  This was a side effect of the deployment of the new memory
16803allocation model.
16804
16805Fixed a couple of problems with the Global Lock support introduced
16806in the last major build.  The "common" (1.0/2.0) internal FACS was
16807being overwritten with the FACS signature and clobbering the
16808Global Lock pointer.  Also, the actual firmware FACS was being
16809unmapped after construction of the "common" FACS, preventing
16810access to the actual Global Lock field within it.  The "common"
16811internal FACS is no longer installed as an actual ACPI table; it
16812is used simply as a global.
16813
16814Code and Data Size: Current core subsystem library sizes are shown
16815below.  These are the code and data sizes for the acpica.lib
16816produced by the Microsoft Visual C++ 6.0 compiler, and these
16817values do not include any ACPI driver or OSPM code.  The debug
16818version of the code includes the debug output trace mechanism and
16819has a larger code and data size.  Note that these values will vary
16820depending on the efficiency of the compiler and the compiler
16821options used during generation.
16822
16823  Previous Release (02_07_01)
16824    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16825    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16826  Current Release:
16827    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16828    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16829
16830
168312) Linux
16832
16833Updated Linux-specific code for core macro and OSL interface
16834changes described above.
16835
16836Improved /proc/acpi/event. It now can be opened only once and has
16837proper poll functionality.
16838
16839Fixed and restructured power management (acpi_bus).
16840
16841Only create /proc "view by type" when devices of that class exist.
16842
16843Fixed "charging/discharging" bug (and others) in acpi_battery.
16844
16845Improved thermal zone code.
16846
16847
168483) ASL Compiler, version X2039:
16849
16850
16851Implemented the new compiler restriction on ASL String hex/octal
16852escapes to non-null, ASCII values.  An error results if an invalid
16853value is used.  (This will require an ACPI 2.0 specification
16854change.)
16855
16856AML object labels that are output to the optional C and ASM source
16857are now prefixed with both the ACPI table signature and table ID
16858to help guarantee uniqueness within a large BIOS project.
16859
16860
16861----------------------------------------
16862Summary of changes for this label: 02_01_02
16863
168641) ACPI CA Core Subsystem:
16865
16866ACPI 2.0 support is complete in the entire Core Subsystem and the
16867ASL compiler. All new ACPI 2.0 operators are implemented and all
16868other changes for ACPI 2.0 support are complete.  With
16869simultaneous code and data optimizations throughout the subsystem,
16870ACPI 2.0 support has been implemented with almost no additional
16871cost in terms of code and data size.
16872
16873Implemented a new mechanism for allocation of return buffers.  If
16874the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
16875be allocated on behalf of the caller.  Consolidated all return
16876buffer validation and allocation to a common procedure.  Return
16877buffers will be allocated via the primary OSL allocation interface
16878since it appears that a separate pool is not needed by most users.
16879If a separate pool is required for these buffers, the caller can
16880still use the original mechanism and pre-allocate the buffer(s).
16881
16882Implemented support for string operands within the DerefOf
16883operator.
16884
16885Restructured the Hardware and Event managers to be table driven,
16886simplifying the source code and reducing the amount of generated
16887code.
16888
16889Split the common read/write low-level ACPI register bitfield
16890procedure into a separate read and write, simplifying the code
16891considerably.
16892
16893Obsoleted the AcpiOsCallocate OSL interface.  This interface was
16894used only a handful of times and didn't have enough critical mass
16895for a separate interface.  Replaced with a common calloc procedure
16896in the core.
16897
16898Fixed a reported problem with the GPE number mapping mechanism
16899that allows GPE1 numbers to be non-contiguous with GPE0.
16900Reorganized the GPE information and shrunk a large array that was
16901originally large enough to hold info for all possible GPEs (256)
16902to simply large enough to hold all GPEs up to the largest GPE
16903number on the machine.
16904
16905Fixed a reported problem with resource structure alignment on 64-
16906bit platforms.
16907
16908Changed the AcpiEnableEvent and AcpiDisableEvent external
16909interfaces to not require any flags for the common case of
16910enabling/disabling a GPE.
16911
16912Implemented support to allow a "Notify" on a Processor object.
16913
16914Most TBDs in comments within the source code have been resolved
16915and eliminated.
16916
16917
16918Fixed a problem in the interpreter where a standalone parent
16919prefix (^) was not handled correctly in the interpreter and
16920debugger.
16921
16922Removed obsolete and unnecessary GPE save/restore code.
16923
16924Implemented Field support in the ASL Load operator.  This allows a
16925table to be loaded from a named field, in addition to loading a
16926table directly from an Operation Region.
16927
16928Implemented timeout and handle support in the external Global Lock
16929interfaces.
16930
16931Fixed a problem in the AcpiDump utility where pathnames were no
16932longer being generated correctly during the dump of named objects.
16933
16934Modified the AML debugger to give a full display of if/while
16935predicates instead of just one AML opcode at a time.  (The
16936predicate can have several nested ASL statements.)  The old method
16937was confusing during single stepping.
16938
16939Code and Data Size: Current core subsystem library sizes are shown
16940below. These are the code and data sizes for the acpica.lib
16941produced by the Microsoft Visual C++ 6.0 compiler, and these
16942values do not include any ACPI driver or OSPM code.  The debug
16943version of the code includes the debug output trace mechanism and
16944has a larger code and data size.  Note that these values will vary
16945depending on the efficiency of the compiler and the compiler
16946options used during generation.
16947
16948  Previous Release (12_18_01)
16949     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
16950     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
16951   Current Release:
16952     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16953     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16954
169552) Linux
16956
16957 Implemented fix for PIIX reverse throttling errata (Processor
16958driver)
16959
16960Added new Limit interface (Processor and Thermal drivers)
16961
16962New thermal policy (Thermal driver)
16963
16964Many updates to /proc
16965
16966Battery "low" event support (Battery driver)
16967
16968Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
16969
16970IA32 - IA64 initialization unification, no longer experimental
16971
16972Menuconfig options redesigned
16973
169743) ASL Compiler, version X2037:
16975
16976Implemented several new output features to simplify integration of
16977AML code into  firmware: 1) Output the AML in C source code with
16978labels for each named ASL object.  The    original ASL source code
16979is interleaved as C comments. 2) Output the AML in ASM source code
16980with labels and interleaved ASL    source. 3) Output the AML in
16981raw hex table form, in either C or ASM.
16982
16983Implemented support for optional string parameters to the
16984LoadTable operator.
16985
16986Completed support for embedded escape sequences within string
16987literals.  The compiler now supports all single character escapes
16988as well as the Octal and Hex escapes.  Note: the insertion of a
16989null byte into a string literal (via the hex/octal escape) causes
16990the string to be immediately terminated.  A warning is issued.
16991
16992Fixed a problem where incorrect AML was generated for the case
16993where an ASL namepath consists of a single parent prefix (
16994
16995) with no trailing name segments.
16996
16997The compiler has been successfully generated with a 64-bit C
16998compiler.
16999
17000
17001
17002
17003----------------------------------------
17004Summary of changes for this label: 12_18_01
17005
170061) Linux
17007
17008Enhanced blacklist with reason and severity fields. Any table's
17009signature may now be used to identify a blacklisted system.
17010
17011Call _PIC control method to inform the firmware which interrupt
17012model the OS is using. Turn on any disabled link devices.
17013
17014Cleaned up busmgr /proc error handling (Andreas Dilger)
17015
17016 2) ACPI CA Core Subsystem:
17017
17018Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17019while loop)
17020
17021Completed implementation of the ACPI 2.0 "Continue",
17022"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17023operators.  All new ACPI 2.0 operators are now implemented in both
17024the ASL compiler and the AML interpreter.  The only remaining ACPI
170252.0 task is support for the String data type in the DerefOf
17026operator.  Fixed a problem with AcquireMutex where the status code
17027was lost if the caller had to actually wait for the mutex.
17028
17029Increased the maximum ASL Field size from 64K bits to 4G bits.
17030
17031Completed implementation of the external Global Lock interfaces --
17032AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17033Handler parameters were added.
17034
17035Completed another pass at removing warnings and issues when
17036compiling with 64-bit compilers.  The code now compiles cleanly
17037with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17038add and subtract (diff) macros have changed considerably.
17039
17040
17041Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1704264-bit platforms, 32-bits on all others.  This type is used
17043wherever memory allocation and/or the C sizeof() operator is used,
17044and affects the OSL memory allocation interfaces AcpiOsAllocate
17045and AcpiOsCallocate.
17046
17047Implemented sticky user breakpoints in the AML debugger.
17048
17049Code and Data Size: Current core subsystem library sizes are shown
17050below. These are the code and data sizes for the acpica.lib
17051produced by the Microsoft Visual C++ 6.0 compiler, and these
17052values do not include any ACPI driver or OSPM code.  The debug
17053version of the code includes the debug output trace mechanism and
17054has a larger code and data size. Note that these values will vary
17055depending on the efficiency of the compiler and the compiler
17056options used during generation.
17057
17058  Previous Release (12_05_01)
17059     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17060     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17061   Current Release:
17062     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17063     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17064
17065 3) ASL Compiler, version X2034:
17066
17067Now checks for (and generates an error if detected) the use of a
17068Break or Continue statement without an enclosing While statement.
17069
17070
17071Successfully generated the compiler with the Intel 64-bit C
17072compiler.
17073
17074 ----------------------------------------
17075Summary of changes for this label: 12_05_01
17076
17077 1) ACPI CA Core Subsystem:
17078
17079The ACPI 2.0 CopyObject operator is fully implemented.  This
17080operator creates a new copy of an object (and is also used to
17081bypass the "implicit conversion" mechanism of the Store operator.)
17082
17083The ACPI 2.0 semantics for the SizeOf operator are fully
17084implemented.  The change is that performing a SizeOf on a
17085reference object causes an automatic dereference of the object to
17086tha actual value before the size is evaluated. This behavior was
17087undefined in ACPI 1.0.
17088
17089The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17090have been implemented.  The interrupt polarity and mode are now
17091independently set.
17092
17093Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17094appearing in Package objects were not properly converted to
17095integers when the internal Package was converted to an external
17096object (via the AcpiEvaluateObject interface.)
17097
17098Fixed a problem with the namespace object deletion mechanism for
17099objects created by control methods.  There were two parts to this
17100problem: 1) Objects created during the initialization phase method
17101parse were not being deleted, and 2) The object owner ID mechanism
17102to track objects was broken.
17103
17104Fixed a problem where the use of the ASL Scope operator within a
17105control method would result in an invalid opcode exception.
17106
17107Fixed a problem introduced in the previous label where the buffer
17108length required for the _PRT structure was not being returned
17109correctly.
17110
17111Code and Data Size: Current core subsystem library sizes are shown
17112below. These are the code and data sizes for the acpica.lib
17113produced by the Microsoft Visual C++ 6.0 compiler, and these
17114values do not include any ACPI driver or OSPM code.  The debug
17115version of the code includes the debug output trace mechanism and
17116has a larger code and data size.  Note that these values will vary
17117depending on the efficiency of the compiler and the compiler
17118options used during generation.
17119
17120  Previous Release (11_20_01)
17121     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17122     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17123
17124  Current Release:
17125     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17126     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17127
17128 2) Linux:
17129
17130Updated all files to apply cleanly against 2.4.16.
17131
17132Added basic PCI Interrupt Routing Table (PRT) support for IA32
17133(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17134version supports both static and dynamic PRT entries, but dynamic
17135entries are treated as if they were static (not yet
17136reconfigurable).  Architecture- specific code to use this data is
17137absent on IA32 but should be available shortly.
17138
17139Changed the initialization sequence to start the ACPI interpreter
17140(acpi_init) prior to initialization of the PCI driver (pci_init)
17141in init/main.c.  This ordering is required to support PRT and
17142facilitate other (future) enhancement.  A side effect is that the
17143ACPI bus driver and certain device drivers can no longer be loaded
17144as modules.
17145
17146Modified the 'make menuconfig' options to allow PCI Interrupt
17147Routing support to be included without the ACPI Bus and other
17148device drivers.
17149
17150 3) ASL Compiler, version X2033:
17151
17152Fixed some issues with the use of the new CopyObject and
17153DataTableRegion operators.  Both are fully functional.
17154
17155 ----------------------------------------
17156Summary of changes for this label: 11_20_01
17157
17158 20 November 2001.  Summary of changes for this release.
17159
17160 1) ACPI CA Core Subsystem:
17161
17162Updated Index support to match ACPI 2.0 semantics.  Storing a
17163Integer, String, or Buffer to an Index of a Buffer will store only
17164the least-significant byte of the source to the Indexed buffer
17165byte.  Multiple writes are not performed.
17166
17167Fixed a problem where the access type used in an AccessAs ASL
17168operator was not recorded correctly into the field object.
17169
17170Fixed a problem where ASL Event objects were created in a
17171signalled state. Events are now created in an unsignalled state.
17172
17173The internal object cache is now purged after table loading and
17174initialization to reduce the use of dynamic kernel memory -- on
17175the assumption that object use is greatest during the parse phase
17176of the entire table (versus the run-time use of individual control
17177methods.)
17178
17179ACPI 2.0 variable-length packages are now fully operational.
17180
17181Code and Data Size: Code and Data optimizations have permitted new
17182feature development with an actual reduction in the library size.
17183Current core subsystem library sizes are shown below.  These are
17184the code and data sizes for the acpica.lib produced by the
17185Microsoft Visual C++ 6.0 compiler, and these values do not include
17186any ACPI driver or OSPM code.  The debug version of the code
17187includes the debug output trace mechanism and has a larger code
17188and data size.  Note that these values will vary depending on the
17189efficiency of the compiler and the compiler options used during
17190generation.
17191
17192  Previous Release (11_09_01):
17193     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17194     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17195
17196  Current Release:
17197     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17198     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17199
17200 2) Linux:
17201
17202Enhanced the ACPI boot-time initialization code to allow the use
17203of Local APIC tables for processor enumeration on IA-32, and to
17204pave the way for a fully MPS-free boot (on SMP systems) in the
17205near future.  This functionality replaces
17206arch/i386/kernel/acpitables.c, which was introduced in an earlier
172072.4.15-preX release.  To enable this feature you must add
17208"acpi_boot=on" to the kernel command line -- see the help entry
17209for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17210the works...
17211
17212Restructured the configuration options to allow boot-time table
17213parsing support without inclusion of the ACPI Interpreter (and
17214other) code.
17215
17216NOTE: This release does not include fixes for the reported events,
17217power-down, and thermal passive cooling issues (coming soon).
17218
17219 3) ASL Compiler:
17220
17221Added additional typechecking for Fields within restricted access
17222Operation Regions.  All fields within EC and CMOS regions must be
17223declared with ByteAcc. All fields within SMBus regions must be
17224declared with the BufferAcc access type.
17225
17226Fixed a problem where the listing file output of control methods
17227no longer interleaved the actual AML code with the ASL source
17228code.
17229
17230
17231
17232
17233----------------------------------------
17234Summary of changes for this label: 11_09_01
17235
172361) ACPI CA Core Subsystem:
17237
17238Implemented ACPI 2.0-defined support for writes to fields with a
17239Buffer, String, or Integer source operand that is smaller than the
17240target field. In these cases, the source operand is zero-extended
17241to fill the target field.
17242
17243Fixed a problem where a Field starting bit offset (within the
17244parent operation region) was calculated incorrectly if the
17245
17246alignment of the field differed from the access width.  This
17247affected CreateWordField, CreateDwordField, CreateQwordField, and
17248possibly other fields that use the "AccessAny" keyword.
17249
17250Fixed a problem introduced in the 11_02_01 release where indirect
17251stores through method arguments did not operate correctly.
17252
172532) Linux:
17254
17255Implemented boot-time ACPI table parsing support
17256(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17257facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17258legacy BIOS interfaces (e.g. MPS) for the configuration of system
17259processors, memory, and interrupts during setup_arch().  Note that
17260this patch does not include the required architecture-specific
17261changes required to apply this information -- subsequent patches
17262will be posted for both IA32 and IA64 to achieve this.
17263
17264Added low-level sleep support for IA32 platforms, courtesy of Pat
17265Mochel. This allows IA32 systems to transition to/from various
17266sleeping states (e.g. S1, S3), although the lack of a centralized
17267driver model and power-manageable drivers will prevent its
17268(successful) use on most systems.
17269
17270Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17271submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17272tables" option, etc.
17273
17274Increased the default timeout for the EC driver from 1ms to 10ms
17275(1000 cycles of 10us) to try to address AE_TIME errors during EC
17276transactions.
17277
17278 ----------------------------------------
17279Summary of changes for this label: 11_02_01
17280
172811) ACPI CA Core Subsystem:
17282
17283ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17284(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17285implemented.
17286
17287OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17288changes to support ACPI 2.0 Qword field access.  Read/Write
17289PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17290accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17291the value parameter for the address space handler interface is now
17292an ACPI_INTEGER.  OSL implementations of these interfaces must now
17293handle the case where the Width parameter is 64.
17294
17295Index Fields: Fixed a problem where unaligned bit assembly and
17296disassembly for IndexFields was not supported correctly.
17297
17298Index and Bank Fields:  Nested Index and Bank Fields are now
17299supported. During field access, a check is performed to ensure
17300that the value written to an Index or Bank register is not out of
17301the range of the register.  The Index (or Bank) register is
17302written before each access to the field data. Future support will
17303include allowing individual IndexFields to be wider than the
17304DataRegister width.
17305
17306Fields: Fixed a problem where the AML interpreter was incorrectly
17307attempting to write beyond the end of a Field/OpRegion.  This was
17308a boundary case that occurred when a DWORD field was written to a
17309BYTE access OpRegion, forcing multiple writes and causing the
17310interpreter to write one datum too many.
17311
17312Fields: Fixed a problem with Field/OpRegion access where the
17313starting bit address of a field was incorrectly calculated if the
17314current access type was wider than a byte (WordAcc, DwordAcc, or
17315QwordAcc).
17316
17317Fields: Fixed a problem where forward references to individual
17318FieldUnits (individual Field names within a Field definition) were
17319not resolved during the AML table load.
17320
17321Fields: Fixed a problem where forward references from a Field
17322definition to the parent Operation Region definition were not
17323resolved during the AML table load.
17324
17325Fields: Duplicate FieldUnit names within a scope are now detected
17326during AML table load.
17327
17328Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17329returned an incorrect name for the root node.
17330
17331Code and Data Size: Code and Data optimizations have permitted new
17332feature development with an actual reduction in the library size.
17333Current core subsystem library sizes are shown below.  These are
17334the code and data sizes for the acpica.lib produced by the
17335Microsoft Visual C++ 6.0 compiler, and these values do not include
17336any ACPI driver or OSPM code.  The debug version of the code
17337includes the debug output trace mechanism and has a larger code
17338and data size.  Note that these values will vary depending on the
17339efficiency of the compiler and the compiler options used during
17340generation.
17341
17342  Previous Release (10_18_01):
17343     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17344     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17345
17346  Current Release:
17347     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17348     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17349
17350 2) Linux:
17351
17352Improved /proc processor output (Pavel Machek) Re-added
17353MODULE_LICENSE("GPL") to all modules.
17354
17355 3) ASL Compiler version X2030:
17356
17357Duplicate FieldUnit names within a scope are now detected and
17358flagged as errors.
17359
17360 4) Documentation:
17361
17362Programmer Reference updated to reflect OSL and address space
17363handler interface changes described above.
17364
17365----------------------------------------
17366Summary of changes for this label: 10_18_01
17367
17368ACPI CA Core Subsystem:
17369
17370Fixed a problem with the internal object reference count mechanism
17371that occasionally caused premature object deletion. This resolves
17372all of the outstanding problem reports where an object is deleted
17373in the middle of an interpreter evaluation.  Although this problem
17374only showed up in rather obscure cases, the solution to the
17375problem involved an adjustment of all reference counts involving
17376objects attached to namespace nodes.
17377
17378Fixed a problem with Field support in the interpreter where
17379writing to an aligned field whose length is an exact multiple (2
17380or greater) of the field access granularity would cause an attempt
17381to write beyond the end of the field.
17382
17383The top level AML opcode execution functions within the
17384interpreter have been renamed with a more meaningful and
17385consistent naming convention.  The modules exmonad.c and
17386exdyadic.c were eliminated.  New modules are exoparg1.c,
17387exoparg2.c, exoparg3.c, and exoparg6.c.
17388
17389Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17390
17391Fixed a problem where the AML debugger was causing some internal
17392objects to not be deleted during subsystem termination.
17393
17394Fixed a problem with the external AcpiEvaluateObject interface
17395where the subsystem would fault if the named object to be
17396evaluated referred to a constant such as Zero, Ones, etc.
17397
17398Fixed a problem with IndexFields and BankFields where the
17399subsystem would fault if the index, data, or bank registers were
17400not defined in the same scope as the field itself.
17401
17402Added printf format string checking for compilers that support
17403this feature.  Corrected more than 50 instances of issues with
17404format specifiers within invocations of ACPI_DEBUG_PRINT
17405throughout the core subsystem code.
17406
17407The ASL "Revision" operator now returns the ACPI support level
17408implemented in the core - the value "2" since the ACPI 2.0 support
17409is more than 50% implemented.
17410
17411Enhanced the output of the AML debugger "dump namespace" command
17412to output in a more human-readable form.
17413
17414Current core subsystem library code sizes are shown below.  These
17415
17416are the code and data sizes for the acpica.lib produced by the
17417Microsoft Visual C++ 6.0 compiler, and these values do not include
17418any ACPI driver or OSPM code.  The debug version of the code
17419includes the full debug trace mechanism -- leading to a much
17420
17421larger code and data size.  Note that these values will vary
17422depending on the efficiency of the compiler and the compiler
17423options used during generation.
17424
17425     Previous Label (09_20_01):
17426     Non-Debug Version:    65K Code,     5K Data,     70K Total
17427     Debug Version:       138K Code,    58K Data,    196K Total
17428
17429     This Label:
17430
17431     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17432     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17433
17434Linux:
17435
17436Implemented a "Bad BIOS Blacklist" to track machines that have
17437known ASL/AML problems.
17438
17439Enhanced the /proc interface for the thermal zone driver and added
17440support for _HOT (the critical suspend trip point).  The 'info'
17441file now includes threshold/policy information, and allows setting
17442of _SCP (cooling preference) and _TZP (polling frequency) values
17443to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17444frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17445preference to the passive/quiet mode (if supported by the ASL).
17446
17447Implemented a workaround for a gcc bug that resuted in an OOPs
17448when loading the control method battery driver.
17449
17450 ----------------------------------------
17451Summary of changes for this label: 09_20_01
17452
17453 ACPI CA Core Subsystem:
17454
17455The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17456modified to allow individual GPE levels to be flagged as wake-
17457enabled (i.e., these GPEs are to remain enabled when the platform
17458sleeps.)
17459
17460The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17461support wake-enabled GPEs.  This means that upon entering the
17462sleep state, all GPEs that are not wake-enabled are disabled.
17463When leaving the sleep state, these GPEs are re-enabled.
17464
17465A local double-precision divide/modulo module has been added to
17466enhance portability to OS kernels where a 64-bit math library is
17467not available.  The new module is "utmath.c".
17468
17469Several optimizations have been made to reduce the use of CPU
17470stack.  Originally over 2K, the maximum stack usage is now below
174712K at 1860  bytes (1.82k)
17472
17473Fixed a problem with the AcpiGetFirmwareTable interface where the
17474root table pointer was not mapped into a logical address properly.
17475
17476Fixed a problem where a NULL pointer was being dereferenced in the
17477interpreter code for the ASL Notify operator.
17478
17479Fixed a problem where the use of the ASL Revision operator
17480returned an error. This operator now returns the current version
17481of the ACPI CA core subsystem.
17482
17483Fixed a problem where objects passed as control method parameters
17484to AcpiEvaluateObject were always deleted at method termination.
17485However, these objects may end up being stored into the namespace
17486by the called method.  The object reference count mechanism was
17487applied to these objects instead of a force delete.
17488
17489Fixed a problem where static strings or buffers (contained in the
17490AML code) that are declared as package elements within the ASL
17491code could cause a fault because the interpreter would attempt to
17492delete them.  These objects are now marked with the "static
17493object" flag to prevent any attempt to delete them.
17494
17495Implemented an interpreter optimization to use operands directly
17496from the state object instead of extracting the operands to local
17497variables.  This reduces stack use and code size, and improves
17498performance.
17499
17500The module exxface.c was eliminated as it was an unnecessary extra
17501layer of code.
17502
17503Current core subsystem library code sizes are shown below.  These
17504are the code and data sizes for the acpica.lib produced by the
17505Microsoft Visual C++ 6.0 compiler, and these values do not include
17506any ACPI driver or OSPM code.  The debug version of the code
17507includes the full debug trace mechanism -- leading to a much
17508larger code and data size.  Note that these values will vary
17509depending on the efficiency of the compiler and the compiler
17510options used during generation.
17511
17512  Non-Debug Version:  65K Code,   5K Data,   70K Total
17513(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
17514Total  (Previously 195K)
17515
17516Linux:
17517
17518Support for ACPI 2.0 64-bit integers has been added.   All ACPI
17519Integer objects are now 64 bits wide
17520
17521All Acpi data types and structures are now in lower case.  Only
17522Acpi macros are upper case for differentiation.
17523
17524 Documentation:
17525
17526Changes to the external interfaces as described above.
17527
17528 ----------------------------------------
17529Summary of changes for this label: 08_31_01
17530
17531 ACPI CA Core Subsystem:
17532
17533A bug with interpreter implementation of the ASL Divide operator
17534was found and fixed.  The implicit function return value (not the
17535explicit store operands) was returning the remainder instead of
17536the quotient.  This was a longstanding bug and it fixes several
17537known outstanding issues on various platforms.
17538
17539The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17540been further optimized for size.  There are 700 invocations of the
17541DEBUG_PRINT macro alone, so each optimization reduces the size of
17542the debug version of the subsystem significantly.
17543
17544A stack trace mechanism has been implemented.  The maximum stack
17545usage is about 2K on 32-bit platforms.  The debugger command "stat
17546stack" will display the current maximum stack usage.
17547
17548All public symbols and global variables within the subsystem are
17549now prefixed with the string "Acpi".  This keeps all of the
17550symbols grouped together in a kernel map, and avoids conflicts
17551with other kernel subsystems.
17552
17553Most of the internal fixed lookup tables have been moved into the
17554code segment via the const operator.
17555
17556Several enhancements have been made to the interpreter to both
17557reduce the code size and improve performance.
17558
17559Current core subsystem library code sizes are shown below.  These
17560are the code and data sizes for the acpica.lib produced by the
17561Microsoft Visual C++ 6.0 compiler, and these values do not include
17562any ACPI driver or OSPM code.  The debug version of the code
17563includes the full debug trace mechanism which contains over 700
17564invocations of the DEBUG_PRINT macro, 500 function entry macro
17565invocations, and over 900 function exit macro invocations --
17566leading to a much larger code and data size.  Note that these
17567values will vary depending on the efficiency of the compiler and
17568the compiler options used during generation.
17569
17570        Non-Debug Version:  64K Code,   5K Data,   69K Total
17571Debug Version:     137K Code,  58K Data,  195K Total
17572
17573 Linux:
17574
17575Implemented wbinvd() macro, pending a kernel-wide definition.
17576
17577Fixed /proc/acpi/event to handle poll() and short reads.
17578
17579 ASL Compiler, version X2026:
17580
17581Fixed a problem introduced in the previous label where the AML
17582
17583code emitted for package objects produced packages with zero
17584length.
17585
17586 ----------------------------------------
17587Summary of changes for this label: 08_16_01
17588
17589ACPI CA Core Subsystem:
17590
17591The following ACPI 2.0 ASL operators have been implemented in the
17592AML interpreter (These are already supported by the Intel ASL
17593compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
17594ToBuffer.  Support for 64-bit AML constants is implemented in the
17595AML parser, debugger, and disassembler.
17596
17597The internal memory tracking mechanism (leak detection code) has
17598been upgraded to reduce the memory overhead (a separate tracking
17599block is no longer allocated for each memory allocation), and now
17600supports all of the internal object caches.
17601
17602The data structures and code for the internal object caches have
17603been coelesced and optimized so that there is a single cache and
17604memory list data structure and a single group of functions that
17605implement generic cache management.  This has reduced the code
17606size in both the debug and release versions of the subsystem.
17607
17608The DEBUG_PRINT macro(s) have been optimized for size and replaced
17609by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
17610different, because it generates a single call to an internal
17611function.  This results in a savings of about 90 bytes per
17612invocation, resulting in an overall code and data savings of about
1761316% in the debug version of the subsystem.
17614
17615 Linux:
17616
17617Fixed C3 disk corruption problems and re-enabled C3 on supporting
17618machines.
17619
17620Integrated low-level sleep code by Patrick Mochel.
17621
17622Further tweaked source code Linuxization.
17623
17624Other minor fixes.
17625
17626 ASL Compiler:
17627
17628Support for ACPI 2.0 variable length packages is fixed/completed.
17629
17630Fixed a problem where the optional length parameter for the ACPI
176312.0 ToString operator.
17632
17633Fixed multiple extraneous error messages when a syntax error is
17634detected within the declaration line of a control method.
17635
17636 ----------------------------------------
17637Summary of changes for this label: 07_17_01
17638
17639ACPI CA Core Subsystem:
17640
17641Added a new interface named AcpiGetFirmwareTable to obtain any
17642ACPI table via the ACPI signature.  The interface can be called at
17643any time during kernel initialization, even before the kernel
17644virtual memory manager is initialized and paging is enabled.  This
17645allows kernel subsystems to obtain ACPI tables very early, even
17646before the ACPI CA subsystem is initialized.
17647
17648Fixed a problem where Fields defined with the AnyAcc attribute
17649could be resolved to the incorrect address under the following
17650conditions: 1) the field width is larger than 8 bits and 2) the
17651parent operation region is not defined on a DWORD boundary.
17652
17653Fixed a problem where the interpreter is not being locked during
17654namespace initialization (during execution of the _INI control
17655methods), causing an error when an attempt is made to release it
17656later.
17657
17658ACPI 2.0 support in the AML Interpreter has begun and will be
17659ongoing throughout the rest of this year.  In this label, The Mod
17660operator is implemented.
17661
17662Added a new data type to contain full PCI addresses named
17663ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
17664and Function values.
17665
17666 Linux:
17667
17668Enhanced the Linux version of the source code to change most
17669capitalized ACPI type names to lowercase. For example, all
17670instances of ACPI_STATUS are changed to acpi_status.  This will
17671result in a large diff, but the change is strictly cosmetic and
17672aligns the CA code closer to the Linux coding standard.
17673
17674OSL Interfaces:
17675
17676The interfaces to the PCI configuration space have been changed to
17677add the PCI Segment number and to split the single 32-bit combined
17678DeviceFunction field into two 16-bit fields.  This was
17679accomplished by moving the four values that define an address in
17680PCI configuration space (segment, bus, device, and function) to
17681the new ACPI_PCI_ID structure.
17682
17683The changes to the PCI configuration space interfaces led to a
17684reexamination of the complete set of address space access
17685interfaces for PCI, I/O, and Memory.  The previously existing 18
17686interfaces have proven difficult to maintain (any small change
17687must be propagated across at least 6 interfaces) and do not easily
17688allow for future expansion to 64 bits if necessary.  Also, on some
17689systems, it would not be appropriate to demultiplex the access
17690width (8, 16, 32,or 64) before calling the OSL if the
17691corresponding native OS interfaces contain a similar access width
17692parameter.  For these reasons, the 18 address space interfaces
17693have been replaced by these 6 new ones:
17694
17695AcpiOsReadPciConfiguration
17696AcpiOsWritePciConfiguration
17697AcpiOsReadMemory
17698AcpiOsWriteMemory
17699AcpiOsReadPort
17700AcpiOsWritePort
17701
17702Added a new interface named AcpiOsGetRootPointer to allow the OSL
17703to perform the platform and/or OS-specific actions necessary to
17704obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
17705interface will simply call down to the CA core to perform the low-
17706memory search for the table.  On IA-64, the RSDP is obtained from
17707EFI.  Migrating this interface to the OSL allows the CA core to
17708
17709remain OS and platform independent.
17710
17711Added a new interface named AcpiOsSignal to provide a generic
17712"function code and pointer" interface for various miscellaneous
17713signals and notifications that must be made to the host OS.   The
17714first such signals are intended to support the ASL Fatal and
17715Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
17716interface has been obsoleted.
17717
17718The definition of the AcpiFormatException interface has been
17719changed to simplify its use.  The caller no longer must supply a
17720buffer to the call; A pointer to a const string is now returned
17721directly.  This allows the call to be easily used in printf
17722statements, etc. since the caller does not have to manage a local
17723buffer.
17724
17725
17726 ASL Compiler, Version X2025:
17727
17728The ACPI 2.0 Switch/Case/Default operators have been implemented
17729and are fully functional.  They will work with all ACPI 1.0
17730interpreters, since the operators are simply translated to If/Else
17731pairs.
17732
17733The ACPI 2.0 ElseIf operator is implemented and will also work
17734with 1.0 interpreters, for the same reason.
17735
17736Implemented support for ACPI 2.0 variable-length packages.  These
17737packages have a separate opcode, and their size is determined by
17738the interpreter at run-time.
17739
17740Documentation The ACPI CA Programmer Reference has been updated to
17741reflect the new interfaces and changes to existing interfaces.
17742
17743 ------------------------------------------
17744Summary of changes for this label: 06_15_01
17745
17746 ACPI CA Core Subsystem:
17747
17748Fixed a problem where a DWORD-accessed field within a Buffer
17749object would get its byte address inadvertently rounded down to
17750the nearest DWORD.  Buffers are always Byte-accessible.
17751
17752 ASL Compiler, version X2024:
17753
17754Fixed a problem where the Switch() operator would either fault or
17755hang the compiler.  Note however, that the AML code for this ACPI
177562.0 operator is not yet implemented.
17757
17758Compiler uses the new AcpiOsGetTimer interface to obtain compile
17759timings.
17760
17761Implementation of the CreateField operator automatically converts
17762a reference to a named field within a resource descriptor from a
17763byte offset to a bit offset if required.
17764
17765Added some missing named fields from the resource descriptor
17766support. These are the names that are automatically created by the
17767compiler to reference fields within a descriptor.  They are only
17768valid at compile time and are not passed through to the AML
17769interpreter.
17770
17771Resource descriptor named fields are now typed as Integers and
17772subject to compile-time typechecking when used in expressions.
17773
17774 ------------------------------------------
17775Summary of changes for this label: 05_18_01
17776
17777 ACPI CA Core Subsystem:
17778
17779Fixed a couple of problems in the Field support code where bits
17780from adjacent fields could be returned along with the proper field
17781bits. Restructured the field support code to improve performance,
17782readability and maintainability.
17783
17784New DEBUG_PRINTP macro automatically inserts the procedure name
17785into the output, saving hundreds of copies of procedure name
17786strings within the source, shrinking the memory footprint of the
17787debug version of the core subsystem.
17788
17789 Source Code Structure:
17790
17791The source code directory tree was restructured to reflect the
17792current organization of the component architecture.  Some files
17793and directories have been moved and/or renamed.
17794
17795 Linux:
17796
17797Fixed leaking kacpidpc processes.
17798
17799Fixed queueing event data even when /proc/acpi/event is not
17800opened.
17801
17802 ASL Compiler, version X2020:
17803
17804Memory allocation performance enhancement - over 24X compile time
17805improvement on large ASL files.  Parse nodes and namestring
17806buffers are now allocated from a large internal compiler buffer.
17807
17808The temporary .SRC file is deleted unless the "-s" option is
17809specified
17810
17811The "-d" debug output option now sends all output to the .DBG file
17812instead of the console.
17813
17814"External" second parameter is now optional
17815
17816"ElseIf" syntax now properly allows the predicate
17817
17818Last operand to "Load" now recognized as a Target operand
17819
17820Debug object can now be used anywhere as a normal object.
17821
17822ResourceTemplate now returns an object of type BUFFER
17823
17824EISAID now returns an object of type INTEGER
17825
17826"Index" now works with a STRING operand
17827
17828"LoadTable" now accepts optional parameters
17829
17830"ToString" length parameter is now optional
17831
17832"Interrupt (ResourceType," parse error fixed.
17833
17834"Register" with a user-defined region space parse error fixed
17835
17836Escaped backslash at the end of a string ("\\") scan/parse error
17837fixed
17838
17839"Revision" is now an object of type INTEGER.
17840
17841
17842
17843------------------------------------------
17844Summary of changes for this label: 05_02_01
17845
17846Linux:
17847
17848/proc/acpi/event now blocks properly.
17849
17850Removed /proc/sys/acpi. You can still dump your DSDT from
17851/proc/acpi/dsdt.
17852
17853 ACPI CA Core Subsystem:
17854
17855Fixed a problem introduced in the previous label where some of the
17856"small" resource descriptor types were not recognized.
17857
17858Improved error messages for the case where an ASL Field is outside
17859the range of the parent operation region.
17860
17861 ASL Compiler, version X2018:
17862
17863
17864Added error detection for ASL Fields that extend beyond the length
17865of the parent operation region (only if the length of the region
17866is known at compile time.)  This includes fields that have a
17867minimum access width that is smaller than the parent region, and
17868individual field units that are partially or entirely beyond the
17869extent of the parent.
17870
17871
17872
17873------------------------------------------
17874Summary of changes for this label: 04_27_01
17875
17876 ACPI CA Core Subsystem:
17877
17878Fixed a problem where the namespace mutex could be released at the
17879wrong time during execution of AcpiRemoveAddressSpaceHandler.
17880
17881Added optional thread ID output for debug traces, to simplify
17882debugging of multiple threads.  Added context switch notification
17883when the debug code realizes that a different thread is now
17884executing ACPI code.
17885
17886Some additional external data types have been prefixed with the
17887string "ACPI_" for consistency.  This may effect existing code.
17888The data types affected are the external callback typedefs - e.g.,
17889
17890WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
17891
17892 Linux:
17893
17894Fixed an issue with the OSL semaphore implementation where a
17895thread was waking up with an error from receiving a SIGCHLD
17896signal.
17897
17898Linux version of ACPI CA now uses the system C library for string
17899manipulation routines instead of a local implementation.
17900
17901Cleaned up comments and removed TBDs.
17902
17903 ASL Compiler, version X2017:
17904
17905Enhanced error detection and reporting for all file I/O
17906operations.
17907
17908 Documentation:
17909
17910Programmer Reference updated to version 1.06.
17911
17912
17913
17914------------------------------------------
17915Summary of changes for this label: 04_13_01
17916
17917 ACPI CA Core Subsystem:
17918
17919Restructured support for BufferFields and RegionFields.
17920BankFields support is now fully operational.  All known 32-bit
17921limitations on field sizes have been removed.  Both BufferFields
17922and (Operation) RegionFields are now supported by the same field
17923management code.
17924
17925Resource support now supports QWORD address and IO resources. The
1792616/32/64 bit address structures and the Extended IRQ structure
17927have been changed to properly handle Source Resource strings.
17928
17929A ThreadId of -1 is now used to indicate a "mutex not acquired"
17930condition internally and must never be returned by AcpiOsThreadId.
17931This reserved value was changed from 0 since Unix systems allow a
17932thread ID of 0.
17933
17934Linux:
17935
17936Driver code reorganized to enhance portability
17937
17938Added a kernel configuration option to control ACPI_DEBUG
17939
17940Fixed the EC driver to honor _GLK.
17941
17942ASL Compiler, version X2016:
17943
17944Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
17945address space was set to 0, not 0x7f as it should be.
17946
17947 ------------------------------------------
17948Summary of changes for this label: 03_13_01
17949
17950 ACPI CA Core Subsystem:
17951
17952During ACPI initialization, the _SB_._INI method is now run if
17953present.
17954
17955Notify handler fix - notifies are deferred until the parent method
17956completes execution.  This fixes the "mutex already acquired"
17957issue seen occasionally.
17958
17959Part of the "implicit conversion" rules in ACPI 2.0 have been
17960found to cause compatibility problems with existing ASL/AML.  The
17961convert "result-to-target-type" implementation has been removed
17962for stores to method Args and Locals.  Source operand conversion
17963is still fully implemented.  Possible changes to ACPI 2.0
17964specification pending.
17965
17966Fix to AcpiRsCalculatePciRoutingTableLength to return correct
17967length.
17968
17969Fix for compiler warnings for 64-bit compiles.
17970
17971 Linux:
17972
17973/proc output aligned for easier parsing.
17974
17975Release-version compile problem fixed.
17976
17977New kernel configuration options documented in Configure.help.
17978
17979IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
17980context" message.
17981
17982 OSPM:
17983
17984Power resource driver integrated with bus manager.
17985
17986Fixed kernel fault during active cooling for thermal zones.
17987
17988Source Code:
17989
17990The source code tree has been restructured.
17991
17992
17993
17994------------------------------------------
17995Summary of changes for this label: 03_02_01
17996
17997 Linux OS Services Layer (OSL):
17998
17999Major revision of all Linux-specific code.
18000
18001Modularized all ACPI-specific drivers.
18002
18003Added new thermal zone and power resource drivers.
18004
18005Revamped /proc interface (new functionality is under /proc/acpi).
18006
18007New kernel configuration options.
18008
18009 Linux known issues:
18010
18011New kernel configuration options not documented in Configure.help
18012yet.
18013
18014
18015Module dependencies not currently implemented. If used, they
18016should be loaded in this order: busmgr, power, ec, system,
18017processor, battery, ac_adapter, button, thermal.
18018
18019Modules will not load if CONFIG_MODVERSION is set.
18020
18021IBM 600E - entering S5 may reboot instead of shutting down.
18022
18023IBM 600E - Sleep button may generate "Invalid <NULL> context"
18024message.
18025
18026Some systems may fail with "execution mutex already acquired"
18027message.
18028
18029 ACPI CA Core Subsystem:
18030
18031Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18032for the  deadlock detection code. Defined to return a non-zero, 32-
18033bit thread ID for the currently executing thread.  May be a non-
18034zero constant integer on single-thread systems.
18035
18036Implemented deadlock detection for internal subsystem mutexes.  We
18037may add conditional compilation for this code (debug only) later.
18038
18039ASL/AML Mutex object semantics are now fully supported.  This
18040includes multiple acquires/releases by owner and support for the
18041
18042Mutex SyncLevel parameter.
18043
18044A new "Force Release" mechanism automatically frees all ASL
18045Mutexes that have been acquired but not released when a thread
18046exits the interpreter.  This forces conformance to the ACPI spec
18047("All mutexes must be released when an invocation exits") and
18048prevents deadlocked ASL threads.  This mechanism can be expanded
18049(later) to monitor other resource acquisitions if OEM ASL code
18050continues to misbehave (which it will).
18051
18052Several new ACPI exception codes have been added for the Mutex
18053support.
18054
18055Recursive method calls are now allowed and supported (the ACPI
18056spec does in fact allow recursive method calls.)  The number of
18057recursive calls is subject to the restrictions imposed by the
18058SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18059parameter.
18060
18061Implemented support for the SyncLevel parameter for control
18062methods (ACPI 2.0 feature)
18063
18064Fixed a deadlock problem when multiple threads attempted to use
18065the interpreter.
18066
18067Fixed a problem where the string length of a String package
18068element was not always set in a package returned from
18069AcpiEvaluateObject.
18070
18071Fixed a problem where the length of a String package element was
18072not always included in the length of the overall package returned
18073from AcpiEvaluateObject.
18074
18075Added external interfaces (Acpi*) to the ACPI debug memory
18076manager.  This manager keeps a list of all outstanding
18077allocations, and can therefore detect memory leaks and attempts to
18078free memory blocks more than once. Useful for code such as the
18079power manager, etc.  May not be appropriate for device drivers.
18080Performance with the debug code enabled is slow.
18081
18082The ACPI Global Lock is now an optional hardware element.
18083
18084 ASL Compiler Version X2015:
18085
18086Integrated changes to allow the compiler to be generated on
18087multiple platforms.
18088
18089Linux makefile added to generate the compiler on Linux
18090
18091 Source Code:
18092
18093All platform-specific headers have been moved to their own
18094subdirectory, Include/Platform.
18095
18096New source file added, Interpreter/ammutex.c
18097
18098New header file, Include/acstruct.h
18099
18100 Documentation:
18101
18102The programmer reference has been updated for the following new
18103interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18104
18105 ------------------------------------------
18106Summary of changes for this label: 02_08_01
18107
18108Core ACPI CA Subsystem: Fixed a problem where an error was
18109incorrectly returned if the return resource buffer was larger than
18110the actual data (in the resource interfaces).
18111
18112References to named objects within packages are resolved to the
18113
18114full pathname string before packages are returned directly (via
18115the AcpiEvaluateObject interface) or indirectly via the resource
18116interfaces.
18117
18118Linux OS Services Layer (OSL):
18119
18120Improved /proc battery interface.
18121
18122
18123Added C-state debugging output and other miscellaneous fixes.
18124
18125ASL Compiler Version X2014:
18126
18127All defined method arguments can now be used as local variables,
18128including the ones that are not actually passed in as parameters.
18129The compiler tracks initialization of the arguments and issues an
18130exception if they are used without prior assignment (just like
18131locals).
18132
18133The -o option now specifies a filename prefix that is used for all
18134output files, including the AML output file.  Otherwise, the
18135default behavior is as follows:  1) the AML goes to the file
18136specified in the DSDT.  2) all other output files use the input
18137source filename as the base.
18138
18139 ------------------------------------------
18140Summary of changes for this label: 01_25_01
18141
18142Core ACPI CA Subsystem: Restructured the implementation of object
18143store support within the  interpreter.  This includes support for
18144the Store operator as well  as any ASL operators that include a
18145target operand.
18146
18147Partially implemented support for Implicit Result-to-Target
18148conversion. This is when a result object is converted on the fly
18149to the type of  an existing target object.  Completion of this
18150support is pending  further analysis of the ACPI specification
18151concerning this matter.
18152
18153CPU-specific code has been removed from the subsystem (hardware
18154directory).
18155
18156New Power Management Timer functions added
18157
18158Linux OS Services Layer (OSL): Moved system state transition code
18159to the core, fixed it, and modified  Linux OSL accordingly.
18160
18161Fixed C2 and C3 latency calculations.
18162
18163
18164We no longer use the compilation date for the version message on
18165initialization, but retrieve the version from AcpiGetSystemInfo().
18166
18167Incorporated for fix Sony VAIO machines.
18168
18169Documentation:  The Programmer Reference has been updated and
18170reformatted.
18171
18172
18173ASL Compiler:  Version X2013: Fixed a problem where the line
18174numbering and error reporting could get out  of sync in the
18175presence of multiple include files.
18176
18177 ------------------------------------------
18178Summary of changes for this label: 01_15_01
18179
18180Core ACPI CA Subsystem:
18181
18182Implemented support for type conversions in the execution of the
18183ASL  Concatenate operator (The second operand is converted to
18184match the type  of the first operand before concatenation.)
18185
18186Support for implicit source operand conversion is partially
18187implemented.   The ASL source operand types Integer, Buffer, and
18188String are freely  interchangeable for most ASL operators and are
18189converted by the interpreter  on the fly as required.  Implicit
18190Target operand conversion (where the  result is converted to the
18191target type before storing) is not yet implemented.
18192
18193Support for 32-bit and 64-bit BCD integers is implemented.
18194
18195Problem fixed where a field read on an aligned field could cause a
18196read  past the end of the field.
18197
18198New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18199does not return a value, but the caller expects one.  (The ASL
18200compiler flags this as a warning.)
18201
18202ASL Compiler:
18203
18204Version X2011:
182051. Static typechecking of all operands is implemented. This
18206prevents the use of invalid objects (such as using a Package where
18207an Integer is required) at compile time instead of at interpreter
18208run-time.
182092. The ASL source line is printed with ALL errors and warnings.
182103. Bug fix for source EOF without final linefeed.
182114. Debug option is split into a parse trace and a namespace trace.
182125. Namespace output option (-n) includes initial values for
18213integers and strings.
182146. Parse-only option added for quick syntax checking.
182157. Compiler checks for duplicate ACPI name declarations
18216
18217Version X2012:
182181. Relaxed typechecking to allow interchangeability between
18219strings, integers, and buffers.  These types are now converted by
18220the interpreter at runtime.
182212. Compiler reports time taken by each internal subsystem in the
18222debug         output file.
18223
18224
18225 ------------------------------------------
18226Summary of changes for this label: 12_14_00
18227
18228ASL Compiler:
18229
18230This is the first official release of the compiler. Since the
18231compiler requires elements of the Core Subsystem, this label
18232synchronizes everything.
18233
18234------------------------------------------
18235Summary of changes for this label: 12_08_00
18236
18237
18238Fixed a problem where named references within the ASL definition
18239of both OperationRegions and CreateXXXFields did not work
18240properly.  The symptom was an AE_AML_OPERAND_TYPE during
18241initialization of the region/field. This is similar (but not
18242related internally) to the problem that was fixed in the last
18243label.
18244
18245Implemented both 32-bit and 64-bit support for the BCD ASL
18246functions ToBCD and FromBCD.
18247
18248Updated all legal headers to include "2000" in the copyright
18249years.
18250
18251 ------------------------------------------
18252Summary of changes for this label: 12_01_00
18253
18254Fixed a problem where method invocations within the ASL definition
18255of both OperationRegions and CreateXXXFields did not work
18256properly.  The symptom was an AE_AML_OPERAND_TYPE during
18257initialization of the region/field:
18258
18259  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18260[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18261(0x3005)
18262
18263Fixed a problem where operators with more than one nested
18264subexpression would fail.  The symptoms were varied, by mostly
18265AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18266problem that has gone unnoticed until now.
18267
18268  Subtract (Add (1,2), Multiply (3,4))
18269
18270Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18271previous build (The prefix part of a relative path was handled
18272incorrectly).
18273
18274Fixed a problem where Operation Region initialization failed if
18275the operation region name was a "namepath" instead of a simple
18276"nameseg". Symptom was an AE_NO_OPERAND error.
18277
18278Fixed a problem where an assignment to a local variable via the
18279indirect RefOf mechanism only worked for the first such
18280assignment.  Subsequent assignments were ignored.
18281
18282 ------------------------------------------
18283Summary of changes for this label: 11_15_00
18284
18285ACPI 2.0 table support with backwards support for ACPI 1.0 and the
182860.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18287the AML  interpreter does NOT have support for the new 2.0 ASL
18288grammar terms at this time.
18289
18290All ACPI hardware access is via the GAS structures in the ACPI 2.0
18291FADT.
18292
18293All physical memory addresses across all platforms are now 64 bits
18294wide. Logical address width remains dependent on the platform
18295(i.e., "void *").
18296
18297AcpiOsMapMemory interface changed to a 64-bit physical address.
18298
18299The AML interpreter integer size is now 64 bits, as per the ACPI
183002.0 specification.
18301
18302For backwards compatibility with ACPI 1.0, ACPI tables with a
18303revision number less than 2 use 32-bit integers only.
18304
18305Fixed a problem where the evaluation of OpRegion operands did not
18306always resolve them to numbers properly.
18307
18308------------------------------------------
18309Summary of changes for this label: 10_20_00
18310
18311Fix for CBN_._STA issue.  This fix will allow correct access to
18312CBN_ OpRegions when the _STA returns 0x8.
18313
18314Support to convert ACPI constants (Ones, Zeros, One) to actual
18315values before a package object is returned
18316
18317Fix for method call as predicate to if/while construct causing
18318incorrect if/while behavior
18319
18320Fix for Else block package lengths sometimes calculated wrong (if
18321block > 63 bytes)
18322
18323Fix for Processor object length field, was always zero
18324
18325Table load abort if FACP sanity check fails
18326
18327Fix for problem with Scope(name) if name already exists
18328
18329Warning emitted if a named object referenced cannot be found
18330(resolved) during method execution.
18331
18332
18333
18334
18335
18336------------------------------------------
18337Summary of changes for this label: 9_29_00
18338
18339New table initialization interfaces: AcpiInitializeSubsystem no
18340longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18341necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18342>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18343AcpiLoadTables
18344
18345Note: These interface changes require changes to all existing OSDs
18346
18347The PCI_Config default address space handler is always installed
18348at the root namespace object.
18349
18350-------------------------------------------
18351Summary of changes for this label: 09_15_00
18352
18353The new initialization architecture is implemented.  New
18354interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18355AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18356
18357(Namespace is automatically loaded when a table is loaded)
18358
18359The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1836052 bytes to 32 bytes.  There is usually one of these for every
18361namespace object, so the memory savings is significant.
18362
18363Implemented just-in-time evaluation of the CreateField operators.
18364
18365Bug fixes for IA-64 support have been integrated.
18366
18367Additional code review comments have been implemented
18368
18369The so-called "third pass parse" has been replaced by a final walk
18370through the namespace to initialize all operation regions (address
18371spaces) and fields that have not yet been initialized during the
18372execution of the various _INI and REG methods.
18373
18374New file - namespace/nsinit.c
18375
18376-------------------------------------------
18377Summary of changes for this label: 09_01_00
18378
18379Namespace manager data structures have been reworked to change the
18380primary  object from a table to a single object.  This has
18381resulted in dynamic memory  savings of 3X within the namespace and
183822X overall in the ACPI CA subsystem.
18383
18384Fixed problem where the call to AcpiEvFindPciRootBuses was
18385inadvertently left  commented out.
18386
18387Reduced the warning count when generating the source with the GCC
18388compiler.
18389
18390Revision numbers added to each module header showing the
18391SourceSafe version of the file.  Please refer to this version
18392number when giving us feedback or comments on individual modules.
18393
18394The main object types within the subsystem have been renamed to
18395clarify their  purpose:
18396
18397ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18398ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18399ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18400
18401NOTE: no changes to the initialization sequence are included in
18402this label.
18403
18404-------------------------------------------
18405Summary of changes for this label: 08_23_00
18406
18407Fixed problem where TerminateControlMethod was being called
18408multiple times per  method
18409
18410Fixed debugger problem where single stepping caused a semaphore to
18411be  oversignalled
18412
18413Improved performance through additional parse object caching -
18414added  ACPI_EXTENDED_OP type
18415
18416-------------------------------------------
18417Summary of changes for this label: 08_10_00
18418
18419Parser/Interpreter integration:  Eliminated the creation of
18420complete parse trees  for ACPI tables and control methods.
18421Instead, parse subtrees are created and  then deleted as soon as
18422they are processed (Either entered into the namespace or  executed
18423by the interpreter).  This reduces the use of dynamic kernel
18424memory  significantly. (about 10X)
18425
18426Exception codes broken into classes and renumbered.  Be sure to
18427recompile all  code that includes acexcep.h.  Hopefully we won't
18428have to renumber the codes  again now that they are split into
18429classes (environment, programmer, AML code,  ACPI table, and
18430internal).
18431
18432Fixed some additional alignment issues in the Resource Manager
18433subcomponent
18434
18435Implemented semaphore tracking in the AcpiExec utility, and fixed
18436several places  where mutexes/semaphores were being unlocked
18437without a corresponding lock  operation.  There are no known
18438semaphore or mutex "leaks" at this time.
18439
18440Fixed the case where an ASL Return operator is used to return an
18441unnamed  package.
18442
18443-------------------------------------------
18444Summary of changes for this label: 07_28_00
18445
18446Fixed a problem with the way addresses were calculated in
18447AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
18448manifested itself when a Field was  created with WordAccess or
18449DwordAccess, but the field unit defined within the  Field was less
18450
18451than a Word or Dword.
18452
18453Fixed a problem in AmlDumpOperands() module's loop to pull
18454operands off of the  operand stack to display information. The
18455problem manifested itself as a TLB  error on 64-bit systems when
18456accessing an operand stack with two or more  operands.
18457
18458Fixed a problem with the PCI configuration space handlers where
18459context was  getting confused between accesses. This required a
18460change to the generic address  space handler and address space
18461setup definitions. Handlers now get both a  global handler context
18462(this is the one passed in by the user when executing
18463AcpiInstallAddressSpaceHandler() and a specific region context
18464that is unique to  each region (For example, the _ADR, _SEG and
18465_BBN values associated with a  specific region). The generic
18466function definitions have changed to the  following:
18467
18468typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18469UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18470*HandlerContext, // This used to be void *Context void
18471*RegionContext); // This is an additional parameter
18472
18473typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18474RegionHandle, UINT32 Function, void *HandlerContext,  void
18475**RegionContext); // This used to be **ReturnContext
18476
18477-------------------------------------------
18478Summary of changes for this label: 07_21_00
18479
18480Major file consolidation and rename.  All files within the
18481interpreter have been  renamed as well as most header files.  This
18482was done to prevent collisions with  existing files in the host
18483OSs -- filenames such as "config.h" and "global.h"  seem to be
18484quite common.  The VC project files have been updated.  All
18485makefiles  will require modification.
18486
18487The parser/interpreter integration continues in Phase 5 with the
18488implementation  of a complete 2-pass parse (the AML is parsed
18489twice) for each table;  This  avoids the construction of a huge
18490parse tree and therefore reduces the amount of  dynamic memory
18491required by the subsystem.  Greater use of the parse object cache
18492means that performance is unaffected.
18493
18494Many comments from the two code reviews have been rolled in.
18495
18496The 64-bit alignment support is complete.
18497
18498-------------------------------------------
18499Summary of changes for this label: 06_30_00
18500
18501With a nod and a tip of the hat to the technology of yesteryear,
18502we've added  support in the source code for 80 column output
18503devices.  The code is now mostly  constrained to 80 columns or
18504less to support environments and editors that 1)  cannot display
18505or print more than 80 characters on a single line, and 2) cannot
18506disable line wrapping.
18507
18508A major restructuring of the namespace data structure has been
18509completed.  The  result is 1) cleaner and more
18510understandable/maintainable code, and 2) a  significant reduction
18511in the dynamic memory requirement for each named ACPI  object
18512(almost half).
18513
18514-------------------------------------------
18515Summary of changes for this label: 06_23_00
18516
18517Linux support has been added.  In order to obtain approval to get
18518the ACPI CA  subsystem into the Linux kernel, we've had to make
18519quite a few changes to the  base subsystem that will affect all
18520users (all the changes are generic and OS- independent).  The
18521effects of these global changes have been somewhat far  reaching.
18522Files have been merged and/or renamed and interfaces have been
18523renamed.   The major changes are described below.
18524
18525Osd* interfaces renamed to AcpiOs* to eliminate namespace
18526pollution/confusion  within our target kernels.  All OSD
18527interfaces must be modified to match the new  naming convention.
18528
18529Files merged across the subsystem.  A number of the smaller source
18530and header  files have been merged to reduce the file count and
18531increase the density of the  existing files.  There are too many
18532to list here.  In general, makefiles that  call out individual
18533files will require rebuilding.
18534
18535Interpreter files renamed.  All interpreter files now have the
18536prefix am*  instead of ie* and is*.
18537
18538Header files renamed:  The acapi.h file is now acpixf.h.  The
18539acpiosd.h file is  now acpiosxf.h.  We are removing references to
18540the acronym "API" since it is  somewhat windowsy. The new name is
18541"external interface" or xface or xf in the  filenames.j
18542
18543
18544All manifest constants have been forced to upper case (some were
18545mixed case.)   Also, the string "ACPI_" has been prepended to many
18546(not all) of the constants,  typedefs, and structs.
18547
18548The globals "DebugLevel" and "DebugLayer" have been renamed
18549"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
18550
18551All other globals within the subsystem are now prefixed with
18552"AcpiGbl_" Internal procedures within the subsystem are now
18553prefixed with "Acpi" (with only  a few exceptions).  The original
18554two-letter abbreviation for the subcomponent  remains after "Acpi"
18555- for example, CmCallocate became AcpiCmCallocate.
18556
18557Added a source code translation/conversion utility.  Used to
18558generate the Linux  source code, it can be modified to generate
18559other types of source as well. Can  also be used to cleanup
18560existing source by removing extraneous spaces and blank  lines.
18561Found in tools/acpisrc/*
18562
18563OsdUnMapMemory was renamed to OsdUnmapMemory and then
18564AcpiOsUnmapMemory.  (UnMap  became Unmap).
18565
18566A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18567When set to  one, this indicates that the caller wants to use the
18568
18569semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
18570both types.  However, implementers of this  call may want to use
18571different OS primitives depending on the type of semaphore
18572requested.  For example, some operating systems provide separate
18573
18574"mutex" and  "semaphore" interfaces - where the mutex interface is
18575much faster because it  doesn't have all the overhead of a full
18576semaphore implementation.
18577
18578Fixed a deadlock problem where a method that accesses the PCI
18579address space can  block forever if it is the first access to the
18580space.
18581
18582-------------------------------------------
18583Summary of changes for this label: 06_02_00
18584
18585Support for environments that cannot handle unaligned data
18586accesses (e.g.  firmware and OS environments devoid of alignment
18587handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
18588been added (via configurable macros) in  these three areas: -
18589Transfer of data from the raw AML byte stream is done via byte
18590moves instead of    word/dword/qword moves. - External objects are
18591aligned within the user buffer, including package   elements (sub-
18592objects). - Conversion of name strings to UINT32 Acpi Names is now
18593done byte-wise.
18594
18595The Store operator was modified to mimic Microsoft's
18596implementation when storing  to a Buffer Field.
18597
18598Added a check of the BM_STS bit before entering C3.
18599
18600The methods subdirectory has been obsoleted and removed.  A new
18601file, cmeval.c  subsumes the functionality.
18602
18603A 16-bit (DOS) version of AcpiExec has been developed.  The
18604makefile is under  the acpiexec directory.
18605