xref: /netbsd-src/sys/external/bsd/acpica/dist/changes.txt (revision 33881f779a77dce6440bdc44610d94de75bebefe)
1----------------------------------------
213 December 2019. Summary of changes for version 20191213:
3
4
51) ACPICA kernel-resident subsystem:
6
7Return a Buffer object for all fields created via the CreateField operator. Previously, an Integer would be returned if the size of the field was less than or equal to the current size of an Integer. Although this goes against the ACPI specification, it provides compatibility with other ACPI implementations. Also updated the ASLTS test suite to reflect this new behavior.
8
92) iASL Compiler/Disassembler and ACPICA tools:
10
11iASL: Implemented detection of (and throw an error for) duplicate values for Case statements within a single Switch statement. Duplicate Integers, Strings, and Buffers are supported.
12
13iASL: Fix error logging issue during multiple file compilation -- Switch to the correct input file during error node creation.
14
15iASL: For duplicate named object creation, now emit an error instead of a warning - since this will cause a runtime error.
16
17AcpiSrc: Add unix line-ending support for non-Windows builds.
18
19iASL: Add an error condition for an attempt to create a NameString with > 255 NameSegs (the max allowable via the AML definition).
20
21
22----------------------------------------
2318 October 2019. Summary of changes for version 20191018:
24
25
261) ACPICA kernel-resident subsystem:
27
28Debugger: added a new command: ?Fields [address space ID]?. This command
29dumps the contents of all field units that are defined within the
30namespace with a particular address space ID.
31
32Modified the external interface AcpiLoadTable() to return a table index.
33This table index can be used for unloading a table for debugging.
34    ACPI_STATUS
35    AcpiLoadTable (
36        ACPI_TABLE_HEADER       *Table,
37        UINT32                  *TableIndex))
38
39Implemented a new external interface: AcpiUnloadTable() This new function
40takes a table index as an argument and unloads the table. Useful for
41debugging only.
42    ACPI_STATUS
43    AcpiUnloadTable (
44        UINT32                  TableIndex))
45
46Ported the AcpiNames utility to use the new table initialization
47sequence. The utility was broken before this change. Also, it was
48required to include most of the AML interpreter into the utility in order
49to process table initialization (module-level code execution.)
50
51Update for results from running Clang V8.0.1. This fixes all "dead
52assignment" warnings. There are still several "Dereference of NULL
53pointer" warnings, but these have been found to be false positive
54warnings.
55
56
572) iASL Compiler/Disassembler and ACPICA tools:
58
59iASL: numerous table compiler changes to ensure that the usage of
60yacc/bison syntax is POSIX-compliant.
61
62iASL/disassembler: several simple bug fixes in the data table
63disassembler.
64
65Acpiexec: expanded the initialization file (the -fi option) to initialize
66strings, buffers, packages, and field units.
67
68
69----------------------------------------
7016 August 2019. Summary of changes for version 20190816:
71
72This release is available at https://acpica.org/downloads
73
74
751) ACPICA kernel-resident subsystem:
76
77Modified the OwnerId mechanism to allow for more Owner Ids. The previous
78limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
79exceptions on machines with a large number of initialization threads,
80many CPU cores and nested initialization control methods.
81
82Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
83checking if the given GPE (as represented by a GPE device handle and a
84GPE number) is currently active and dispatching it (if that's the case)
85outside of interrupt context.
86
87Table load: exit the interpreter before initializing objects within the
88new table This prevents re-acquiring the interpreter lock when loading
89tables
90
91Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
92uk Kim
93
94Macros: removed pointer math on a null pointer. Causes warnings on some
95compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
96instead of using arithmetic.
97
98Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
99across all "printf-like" internal functions. Also, cleanup all calls to
100such functions (both in 32-bit mode and 64-bit mode) now that they are
101analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
102
103
1042) iASL Compiler/Disassembler and ACPICA tools:
105
106iASL: implemented a new data table compiler flex/bison front-end. This
107change is internal and is not intended to result in changes to the
108compiled code. This new compiler front-end can be invoked using the -tp
109option for now, until the old mechanism is removed.
110
111ASLTS: Implemented a new data table compiler test suite. This test suite
112generates all table templates and compile/disassemble/re-compile/binary-
113compare each file.
114
115iASL: return -1 if AML files were not generated due to compiler errors
116
117iASL: added a warning on use of the now-legacy ASL Processor () keyword.
118
119iASL: added an error on _UID object declaration that returns a String
120within a Processor () declaration. A _UID for a processor must be an
121Integer.
122
123iASL: added a null terminator to name strings that consist only of
124multiple parent prefixes (^)
125
126iASL: added support to compile both ASL and data table files in a single
127command.
128
129Updated the tool generation project files that were recently migrated to
130MSVC 2017 to eliminate all new warnings. The new project files appear in
131the directory \acpica\generate\msvc2017. This change effectively
132deprecates the older project files in \acpica\generate\msvc9.
133
134
135----------------------------------------
13603 July 2019. Summary of changes for version 20190703:
137
138
1391) ACPICA kernel-resident subsystem:
140
141Remove legacy module-level support code. There were still some remnants
142of the legacy module-level code executions. Since we no longer support
143this option, this is essentially dead code and has been removed from the
144ACPICA source.
145
146iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
147scope. If these named objects are declared outside the root scope, they
148will not be invoked by any host Operating System.
149
150Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
151one) can be enabled in two situations. First, the GPEs with existing _Lxx
152and _Exx methods are enabled implicitly by ACPICA during system
153initialization.  Second, the GPEs without these methods (like GPEs listed
154by _PRW objects for wakeup devices) need to be enabled directly by the
155code that is going to use them (e.g. ACPI power management or device
156drivers).
157
158In the former case, if the status of a given GPE is set to start with,
159its handler method (either _Lxx or _Exx) needs to be invoked to take care
160of the events (possibly) signaled before the GPE was enabled. In the
161latter case, however, the first caller of AcpiEnableGpe() for a given GPE
162should not be expected to care about any events that might be signaled
163through it earlier.  In that case, it is better to clear the status of
164the GPE before enabling it, to prevent stale events from triggering
165unwanted actions (like spurious system resume, for example).
166
167For this reason, modify AcpiEvAddGpeReference() to take an additional
168boolean argument indicating whether or not the GPE status needs to be
169cleared when its reference counter changes from zero to one and make
170AcpiEnableGpe() pass TRUE to it through that new argument.
171
172
1732) iASL Compiler/Disassembler and ACPICA tools:
174
175The tool generation process has been migrated to MSVC 2017, and all
176project files have been upgraded. The new project files appear in the
177directory \acpica\generate\msvc2017. This change effectively deprecates
178the older project files in \acpica\generate\msvc9.
179
180iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
181scope. If these named objects are declared outside the root scope, they
182will not be invoked by any host Operating System
183
184----------------------------------------
18509 May 2019. Summary of changes for version 20190509:
186
187
1881) ACPICA kernel-resident subsystem:
189
190Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
191them") that causes problems with Thunderbolt controllers to occur if a
192dock device is connected at init time (the xhci_hcd and thunderbolt
193modules crash which prevents peripherals connected through them from
194working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
195Dispatch active GPEs at init time") to get undone, so the problem
196addressed by commit ecc1165b8b74 appears again as a result of it.
197
198
1992) iASL Compiler/Disassembler and ACPICA tools:
200
201Reverted iASL: Additional forward reference detection. This change
202reverts forward reference detection for field declarations. The feature
203unintentionally emitted AML bytecode with incorrect package lengths for
204some ASL code related to Fields and OperationRegions. This malformed AML
205can cause systems to crash
206during boot. The malformed AML bytecode is emitted in iASL version
20720190329 and 20190405.
208
209iASL: improve forward reference detection. This change improves forward
210reference detection for named objects inside of scopes. If a parse object
211has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
212a named object that is declared later in the AML bytecode. This is
213allowed if the reference is inside of a method and the declaration is
214outside of a method like so:
215
216DefinitionBlock(...)
217{
218    Method (TEST)
219    {
220        Return (NUM0)
221    }
222    Name (NUM0,0)
223}
224
225However, if the declaration and reference are both in the same method or
226outside any methods, this is a forward reference and should be marked as
227an error because it would result in runtime errors.
228
229DefinitionBlock(...)
230{
231    Name (BUFF, Buffer (NUM0) {}) // Forward reference
232    Name (NUM0, 0x0)
233
234    Method (TEST)
235    {
236        Local0 = NUM1
237        Name (NUM1, 0x1) // Forward reference
238        return (Local0)
239    }
240}
241
242iASL: Implemented additional buffer overflow analysis for BufferField
243declarations. Check if a buffer index argument to a create buffer field
244operation is beyond the end of the target buffer.
245
246This affects these AML operators:
247
248   AML_CREATE_FIELD_OP
249   AML_CREATE_BIT_FIELD_OP
250   AML_CREATE_BYTE_FIELD_OP
251   AML_CREATE_WORD_FIELD_OP
252   AML_CREATE_DWORD_FIELD_OP
253   AML_CREATE_QWORD_FIELD_OP
254
255 There are three conditions that must be satisfied in order to allow this
256validation at compile time:
257
258   1) The length of the target buffer must be an integer constant
259   2) The index specified in the create* must be an integer constant
260   3) For CreateField, the bit length argument must be non-zero.
261
262Example:
263    Name (BUF1, Buffer() {1,2})
264    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
265
266dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
267Error    6165 -                           ^ Buffer index beyond end of
268target buffer
269
270
271----------------------------------------
27205 April 2019. Summary of changes for version 20190405:
273
274
2751) ACPICA kernel-resident subsystem:
276
277Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
278unconditionally clearing ACPI IRQs during suspend/resume") was added
279earlier to stop clearing of event status bits unconditionally on suspend
280and resume paths. Though this change fixed an issue on suspend path, it
281introduced regressions on several resume paths. In the case of S0ix,
282events are enabled as part of device suspend path. If status bits for the
283events are set when they are enabled, it could result in premature wake
284from S0ix. If status is cleared for any event that is being enabled so
285that any stale events are cleared out. In case of S0ix, events are
286enabled as part of device suspend path. If status bits for the events are
287set when they are enabled, it could result in premature wake from S0ix.
288
289This change ensures that status is cleared for any event that is being
290enabled so that any stale events are cleared out.
291
292
2932) iASL Compiler/Disassembler and ACPICA tools:
294
295iASL: Implemented an enhanced multiple file compilation that combines
296named objects from all input files to a single namespace. With this
297feature, any unresolved external declarations as well as duplicate named
298object declarations can be detected during compilation rather than
299generating errors much later at runtime. The following commands are
300examples that utilize this feature:
301    iasl dsdt.asl ssdt.asl
302    iasl dsdt.asl ssdt1.asl ssdt2.asl
303    iasl dsdt.asl ssdt*.asl
304
305----------------------------------------
30629 March 2019. Summary of changes for version 20190329:
307
308
3091) ACPICA kernel-resident subsystem:
310
311Namespace support: Remove the address nodes from global list after method
312termination. The global address list contains pointers to namespace nodes
313that represent Operation Regions. This change properly removes Operation
314Region namespace nodes that are declared dynamically during method
315execution.
316
317Linux: Use a different debug default than ACPICA. There was a divergence
318between Linux and the ACPICA codebases. In order to resolve this
319divergence, Linux now declares its own debug default in aclinux.h
320
321Renamed some internal macros to improve code understanding and
322maintenance. The macros below all operate on single 4-character ACPI
323NameSegs, not generic strings (old -> new):
324    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
325    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
326    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
327
328Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
329table.
330
331Test suite: Update makefiles, add PCC operation region support
332
333
3342) iASL Compiler/Disassembler and Tools:
335
336iASL: Implemented additional illegal forward reference detection. Now
337detect and emit an error upon detection of a forward reference from a
338Field to an Operation Region. This will fail at runtime if allowed to
339pass the compiler.
340
341AcpiExec: Add an address list check for dynamic Operation Regions. This
342feature performs a sanity test for each node the global address list.
343This is done in order to ensure that all dynamic operation regions are
344properly removed from the global address list and no dangling pointers
345are left behind.
346
347Disassembler: Improved generation of resource pathnames. This change
348improves the code that generates resource descriptor and resource tag
349pathnames. The original code used a bunch of str* C library functions
350that caused warnings on some compilers.
351
352iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
353function can overwrite buffers if the calling code is not very careful.
354In the case of generating a module/table header, use of memmove is a
355better implementation.
356
357
3583) Status of new features that have not been completed at this time:
359
360iASL: Implementing an enhanced multiple file compilation into a single
361namespace feature (Status): This feature will be released soon, and
362allows multiple ASL files to be compiled into the same single namespace.
363By doing so, any unresolved external declarations as well as duplicate
364named object declarations can be detected during compilation (rather than
365later during runtime). The following commands are examples that utilize
366this feature:
367    iasl dsdt.asl ssdt.asl
368    iasl dsdt.asl ssdt1.asl ssdt2.asl
369    iasl dsdt.asl ssdt*.asl
370
371ASL tutorial status: Feedback is being gathered internally and the
372current plan is to publish this tutorial on the ACPICA website after a
373final review by a tech writer.
374
375----------------------------------------
37615 February 2019. Summary of changes for version 20190215:
377
378
3790) Support for ACPI specification version 6.3:
380
381Add PCC operation region support for the AML interpreter. This adds PCC
382operation region support in the AML interpreter and a default handler for
383acpiexec. The change also renames the PCC region address space keyword to
384PlatformCommChannel.
385
386Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
387These methods provide OSPM with health information and device boot
388status.
389
390PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
391defines if the trigger needs to be invoked by OSPM before or at the end
392of kernel crash dump processing/handling operation.
393
394SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
395is used for describing devices such as heterogeneous processors,
396accelerators, GPUs, and IO devices with integrated compute or DMA
397engines.
398
399MADT: Add support for statistical profiling in GICC. Statistical
400profiling extension (SPE) is an architecture-specific feature for ARM.
401
402MADT: Add online capable flag. If this bit is set, system hardware
403supports enabling this processor during OS runtime.
404
405New Error Disconnect Recover Notification value. There are a number of
406scenarios where system Firmware in collaboration with hardware may
407disconnect one or more devices from the rest of the system for purposes
408of error containment. Firmware can use this new notification value to
409alert OSPM of such a removal.
410
411PPTT: New additional fields in Processor Structure Flags. These flags
412provide more information about processor topology.
413
414NFIT/Disassembler: Change a field name from "Address Range" to "Region
415Type".
416
417HMAT updates: make several existing fields to be reserved as well as
418rename subtable 0 to "memory proximity domain attributes".
419
420GTDT: Add support for new GTDT Revision 3. This revision adds information
421for the EL2 timer.
422
423iASL: Update the HMAT example template for new fields.
424
425iASL: Add support for the new revision of the GTDT (Rev 3).
426
427
4281) ACPICA kernel-resident subsystem:
429
430AML Parser: fix the main AML parse loop to correctly skip erroneous
431extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
432byte extended opcodes. If an error occurs during an AML table load, the
433AML parser will continue loading the table by skipping the offending
434opcode. This implements a "load table at any cost" philosophy.
435
436
4372) iASL Compiler/Disassembler and Tools:
438
439iASL: Add checks for illegal object references, such as a reference
440outside of method to an object within a method. Such an object is only
441temporary.
442
443iASL: Emit error for creation of a zero-length operation region. Such a
444region is rather pointless. If encountered, a runtime error is also
445implemented in the interpeter.
446
447Debugger: Fix a possible fault with the "test objects" command.
448
449iASL: Makefile: support parent directory filenames containing embedded
450spaces.
451
452iASL: Update the TPM2 template to revision 4.
453
454iASL: Add the ability to report specific warnings or remarks as errors.
455
456Disassembler: Disassemble OEMx tables as actual AML byte code.
457Previously, these tables were treated as "unknown table".
458
459iASL: Add definition and disassembly for TPM2 revision 3.
460
461iASL: Add support for TPM2 rev 3 compilation.
462
463
464----------------------------------------
46508 January 2019. Summary of changes for version 20190108:
466
467
4681) ACPICA kernel-resident subsystem:
469
470Updated all copyrights to 2019. This affects all source code modules.
471
472
4732) iASL Compiler/Disassembler and Tools:
474
475ASL test suite (ASLTS): Updated all copyrights to 2019.
476
477Tools: Updated all signon copyrights to 2019.
478
479AcpiExec: Added a new option to dump extra information concerning any
480memory leaks detected by the internal object/cache tracking mechanism. -
481va
482
483iASL: Updated the table template for the TPM2 table to the newest version
484of the table (Revision 4)
485
486
487----------------------------------------
48813 December 2018. Summary of changes for version 20181213:
489
490
4911) ACPICA Kernel-resident Subsystem:
492
493Fixed some buffer length issues with the GenericSerialBus, related to two
494of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
495which are rarely seen in the field. For these, the LEN field of the ASL
496buffer is now ignored. Hans de Goede
497
498Implemented a new object evaluation trace mechanism for control methods
499and data objects. This includes nested control methods. It is
500particularly useful for examining the ACPI execution during system
501initialization since the output is relatively terse. The flag below
502enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
503   #define ACPI_LV_EVALUATION          0x00080000
504
505Examples:
506   Enter evaluation       :  _SB.PCI0._INI (Method)
507   Exit evaluation        :  _SB.PCI0._INI
508   Enter evaluation       :  _OSI (Method)
509   Exit evaluation        :  _OSI
510   Enter evaluation       :  _SB.PCI0.TEST (Method)
511   Nested method call     :     _SB.PCI0.NST1
512   Exit nested method     :     _SB.PCI0.NST1
513   Exit evaluation        :  _SB.PCI0.TEST
514
515Added two recently-defined _OSI strings. See
516https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
517osi.
518   "Windows 2018"
519   "Windows 2018.2"
520
521Update for buffer-to-string conversions via the ToHexString ASL operator.
522A "0x" is now prepended to each of the hex values in the output string.
523This provides compatibility with other ACPI implementations. The ACPI
524specification is somewhat vague on this issue.
525   Example output string after conversion:
526"0x01,0x02,0x03,0x04,0x05,0x06"
527
528Return a run-time error for TermArg expressions within individual package
529elements. Although this is technically supported by the ASL grammar,
530other ACPI implementations do not support this either. Also, this fixes a
531fault if this type of construct is ever encountered (it never has been).
532
533
5342) iASL Compiler/Disassembler and Tools:
535
536iASL: Implemented a new compile option (-ww) that will promote individual
537warnings and remarks to errors. This is intended to enhance the firmware
538build process.
539
540AcpiExec: Implemented a new command-line option (-eo) to support the new
541object evaluation trace mechanism described above.
542
543Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
544instead of a "unknown table" message.
545
546AcpiHelp: Improved support for the "special" predefined names such as
547_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
548used for "xx" and "x".
549
550----------------------------------------
55131 October 2018. Summary of changes for version 20181031:
552
553
554An Operation Region regression was fixed by properly adding address
555ranges to a global list during initialization. This allows OS to
556accurately check for overlapping regions between native devices (such as
557PCI) and Operation regions as well as checking for region conflicts
558between two Operation Regions.
559
560Added support for the 2-byte extended opcodes in the code/feature that
561attempts to continue parsing during the table load phase. Skip parsing
562Device declarations (and other extended opcodes) when an error occurs
563during parsing. Previously, only single-byte opcodes were supported.
564
565Cleanup: Simplified the module-level code support by eliminating a
566useless global variable (AcpiGbl_GroupModuleLeveCode).
567
568
5692) iASL Compiler/Disassembler and Tools:
570
571iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
572could cause a fault in the preprocessor. This was an inadvertent side-
573effect from moving more allocations/frees to the local cache/memory
574mechanism.
575
576iASL: Enhanced error detection by validating that all NameSeg elements
577within a NamePatch actually exist. The previous behavior was spotty at
578best, and such errors could be improperly ignored at compiler time (never
579at runtime, however. There are two new error messages, as shown in the
580examples below:
581
582dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
583Error    6161 -                              ^ One or more objects within
584the Pathname do not exist (TTTT.BXXX)
585
586dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
587Error    6160 -        One or more prefix Scopes do not exist ^
588(BBBB.CBF1)
589
590iASL: Disassembler/table-compiler: Added support for the static data
591table TPM2 revision 3 (an older version of TPM2). The support has been
592added for the compiler and the disassembler.
593
594Fixed compilation of DOS format data table file on Unix/Linux systems.
595iASL now properly detects line continuations (\) for DOS format data
596table definition language files on when executing on Unix/Linux.
597
598----------------------------------------
59903 October 2018. Summary of changes for version 20181003:
600
601
6022) iASL Compiler/Disassembler and Tools:
603
604Fixed a regression introduced in version 20180927 that could cause the
605compiler to fault, especially with NamePaths containing one or more
606carats (^). Such as: ^^_SB_PCI0
607
608Added a new remark for the Sleep() operator when the sleep time operand
609is larger than one second. This is a very long time for the ASL/BIOS code
610and may not be what was intended by the ASL writer.
611
612----------------------------------------
61327 September 2018. Summary of changes for version 20180927:
614
615
6161) ACPICA kernel-resident subsystem:
617
618Updated the GPE support to clear the status of all ACPI events when
619entering any/all sleep states in order to avoid premature wakeups. In
620theory, this may cause some wakeup events to be missed, but the
621likelihood of this is small. This change restores the original behavior
622of the ACPICA code in order to fix a regression seen from the previous
623"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
624This regression could cause some systems to incorrectly wake immediately.
625
626Updated the execution of the _REG methods during initialization and
627namespace loading to bring the behavior into closer conformance to the
628ACPI specification and other ACPI implementations:
629
630From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
631    "Control methods must assume all operation regions are inaccessible
632until the _REG(RegionSpace, 1) method is executed"
633
634    "The exceptions to this rule are:
6351.  OSPM must guarantee that the following operation regions are always
636accessible:
637    SystemIO operation regions.
638    SystemMemory operation regions when accessing memory returned by the
639System Address Map reporting interfaces."
640
641Since the state of both the SystemIO and SystemMemory address spaces are
642defined by the specification to never change, this ACPICA change ensures
643that now _REG is never called on them. This solves some problems seen in
644the field and provides compatibility with other ACPI implementations. An
645update to the upcoming new version of the ACPI specification will help
646clarify this behavior.
647
648Updated the implementation of support for the Generic Serial Bus. For the
649"bidirectional" protocols, the internal implementation now automatically
650creates a return data buffer of the maximum size (255). This handles the
651worst-case for data that is returned from the serial bus handler, and
652fixes some problems seen in the field. This new buffer is directly
653returned to the ASL. As such, there is no true "bidirectional" buffer,
654which matches the ACPI specification. This is the reason for the "double
655store" seen in the example ASL code in the specification, shown below:
656
657Word Process Call (AttribProcessCall):
658    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
659    Field(TOP1, BufferAcc, NoLock, Preserve)
660    {
661        FLD1, 8, // Virtual register at command value 1.
662    }
663
664    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
665                             // as BUFF
666    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
667
668    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
669    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
670transaction
671                           // This is the "double store". The write to
672                           // FLD1 returns a new buffer, which is stored
673                           // back into BUFF with the second Store.
674
675
6762) iASL Compiler/Disassembler and Tools:
677
678iASL: Implemented detection of extraneous/redundant uses of the Offset()
679operator within a Field Unit list. A remark is now issued for these. For
680example, the first two of the Offset() operators below are extraneous.
681Because both the compiler and the interpreter track the offsets
682automatically, these Offsets simply refer to the current offset and are
683unnecessary. Note, when optimization is enabled, the iASL compiler will
684in fact remove the redundant Offset operators and will not emit any AML
685code for them.
686
687    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
688    Field (OPR1)
689    {
690        Offset (0),     // Never needed
691        FLD1, 32,
692        Offset (4),     // Redundant, offset is already 4 (bytes)
693        FLD2, 8,
694        Offset (64),    // OK use of Offset.
695        FLD3, 16,
696    }
697dsdt.asl     14:         Offset (0),
698Remark   2158 -                 ^ Unnecessary/redundant use of Offset
699operator
700
701dsdt.asl     16:         Offset (4),
702Remark   2158 -                 ^ Unnecessary/redundant use of Offset
703operator
704
705----------------------------------------
70610 August 2018. Summary of changes for version 20180810:
707
708
7091) ACPICA kernel-resident subsystem:
710
711Initial ACPI table loading: Attempt to continue loading ACPI tables
712regardless of malformed AML. Since migrating table initialization to the
713new module-level code support, the AML interpreter rejected tables upon
714any ACPI error encountered during table load. This is a problem because
715non-serious ACPI errors during table load do not necessarily mean that
716the entire definition block (DSDT or SSDT) is invalid. This change
717improves the table loading by ignoring some types of errors that can be
718generated by incorrect AML. This can range from object type errors, scope
719errors, and index errors.
720
721Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
722during suspend/resume. The status of ACPI events is no longer cleared
723when entering the ACPI S5 system state (power off) which caused some
724systems to power up immediately after turning off power in certain
725situations. This was a functional regression. It was fixed by clearing
726the status of all ACPI events again when entering S5 (for system-wide
727suspend or hibernation the clearing of the status of all events is not
728desirable, as it might cause the kernel to miss wakeup events sometimes).
729Rafael Wysocki.
730
731
7322) iASL Compiler/Disassembler and Tools:
733
734AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
735elements listed in the initialization file were previously initialized
736after the table load and before executing module-level code blocks.
737Recent changes in the module-level code support means that the table load
738becomes a large control method execution. If fields are used within
739module-level code and we are executing with the -fi option, the
740initialization values were used to initialize the namespace object(s)
741only after the table was finished loading. This change Provides an early
742initialization of objects specified in the initialization file so that
743field unit values are populated during the table load (not after the
744load).
745
746AcpiExec: Fixed a small memory leak regression that could result in
747warnings during exit of the utility. These warnings were similar to
748these:
749    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
750    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
751
752----------------------------------------
75329 June 2018. Summary of changes for version 20180629:
754
755
7561) iASL Compiler/Disassembler and Tools:
757
758iASL: Fixed a regression related to the use of the ASL External
759statement. Error checking for the use of the External() statement has
760been relaxed. Previously, a restriction on the use of External meant that
761the referenced named object was required to be defined in a different
762table (an SSDT). Thus it would be an error to declare an object as an
763external and then define the same named object in the same table. For
764example:
765    DefinitionBlock (...)
766    {
767        External (DEV1)
768        Device (DEV1){...} // This was an error
769    }
770However, this behavior has caused regressions in some existing ASL code,
771because there is code that depends on named objects and externals (with
772the same name) being declared in the same table. This change will allow
773the ASL code above to compile without errors or warnings.
774
775iASL: Implemented ASL language extensions for four operators to make some
776of their arguments optional instead of required:
777    1) Field (RegionName, AccessType, LockRule, UpdateRule)
778    2) BankField (RegionName, BankName, BankValue,
779                AccessType, LockRule, UpdateRule)
780    3) IndexField (IndexName, DataName,
781                AccessType, LockRule, UpdateRule)
782For the Field operators above, the AccessType, LockRule, and UpdateRule
783are now optional arguments. The default values are:
784        AccessType: AnyAcc
785        LockRule:   NoLock
786        UpdateRule: Preserve
787    4) Mutex (MutexName, SyncLevel)
788For this operator, the SyncLevel argument is now optional. This argument
789is rarely used in any meaningful way by ASL code, and thus it makes sense
790to make it optional. The default value is:
791        SyncLevel:  0
792
793iASL: Attempted use of the ASL Unload() operator now results in the
794following warning:
795    "Unload is not supported by all operating systems"
796This is in fact very true, and the Unload operator may be completely
797deprecated in the near future.
798
799AcpiExec: Fixed a regression for the -fi option (Namespace initialization
800file. Recent changes in the ACPICA module-level code support altered the
801table load/initialization sequence . This means that the table load has
802become a large method execution of the table itself. If Operation Region
803Fields are used within any module-level code and the -fi option was
804specified, the initialization values were populated only after the table
805had completely finished loading (and thus the module-level code had
806already been executed). This change moves the initialization of objects
807listed in the initialization file to before the table is executed as a
808method. Field unit values are now initialized before the table execution
809is performed.
810
811----------------------------------------
81231 May 2018. Summary of changes for version 20180531:
813
814
8151) ACPICA kernel-resident Subsystem:
816
817Implemented additional support to help ensure that a DSDT or SSDT is
818fully loaded even if errors are incurred during the load. The majority of
819the problems that are seen is the failure of individual AML operators
820that occur during execution of any module-level code (MLC) existing in
821the table. This support adds a mechanism to abort the current ASL
822statement (AML opcode), emit an error message, and to simply move on to
823the next opcode -- instead of aborting the entire table load. This is
824different than the execution of a control method where the entire method
825is aborted upon any error. The goal is to perform a very "best effort" to
826load the ACPI tables. The most common MLC errors that have been seen in
827the field are direct references to unresolved ASL/AML symbols (referenced
828directly without the use of the CondRefOf operator to validate the
829symbol). This new ACPICA behavior is now compatible with other ACPI
830implementations.
831
832Interpreter: The Unload AML operator is no longer supported for the
833reasons below. An AE_NOT_IMPLEMENTED exception is returned.
8341) A correct implementation on at least some hosts may not be possible.
8352) Other ACPI implementations do not correctly/fully support it.
8363) It requires host device driver support which is not known to exist.
837    (To properly support namespace unload out from underneath.)
8384) This AML operator has never been seen in the field.
839
840Parser: Added a debug option to dump AML parse sub-trees as they are
841being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
842ACPI_DB_PARSE_TREES.
843
844Debugger: Reduced the verbosity for errors incurred during table load and
845module-level code execution.
846
847Completed an investigation into adding a namespace node "owner list"
848instead of the current "owner ID" associated with namespace nodes. This
849list would link together all nodes that are owned by an individual
850control method. The purpose would be to enhance control method execution
851by speeding up cleanup during method exit (all namespace nodes created by
852a method are deleted upon method termination.) Currently, the entire
853namespace must be searched for matching owner IDs if (and only if) the
854method creates named objects outside of the local scope. However, by far
855the most common case is that methods create objects locally, not outside
856the method scope. There is already an ACPICA optimization in place that
857only searches the entire namespace in the rare case of a method creating
858objects elsewhere in the namespace. Therefore, it is felt that the
859overhead of adding an additional pointer to each namespace node to
860implement the owner list makes this feature unnecessary.
861
862
8632) iASL Compiler/Disassembler and Tools:
864
865iASL, Disassembler, and Template generator: Implemented support for
866Revision D of the IORT table. Adds a new subtable that is used to specify
867SMMUv3 PMCGs. rmurphy-arm.
868
869Disassembler: Restored correct table header validation for the "special"
870ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
871table header and must be special-cased. This was a regression that has
872been present for apparently a long time.
873
874AcpiExec: Reduced verbosity of the local exception handler implemented
875within acpiexec. This handler is invoked by ACPICA upon any exceptions
876generated during control method execution. A new option was added: -vh
877restores the original verbosity level if desired.
878
879AcpiExec: Changed the default base from decimal to hex for the -x option
880(set debug level). This simplifies the use of this option and matches the
881behavior of the corresponding iASL -x option.
882
883AcpiExec: Restored a force-exit on multiple control-c (sigint)
884interrupts. This allows program termination even if other issues cause
885the control-c to fail.
886
887ASL test suite (ASLTS): Added tests for the recently implemented package
888element resolution mechanism that allows forward references to named
889objects from individual package elements (this mechanism provides
890compatibility with other ACPI implementations.)
891
892
893----------------------------------------
8948 May 2018. Summary of changes for version 20180508:
895
896
8971) ACPICA kernel-resident subsystem:
898
899Completed the new (recently deployed) package resolution mechanism for
900the Load and LoadTable ASL/AML operators. This fixes a regression that
901was introduced in version 20180209 that could result in an
902AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
903(SSDT) that contains package objects.
904
905
9062) iASL Compiler/Disassembler and Tools:
907
908AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
9091 MB. This change allows for table offsets within the acpidump file to be
910up to 8 characters. These changes are backwards compatible with existing
911acpidump files.
912
913
914----------------------------------------
91527 April 2018. Summary of changes for version 20180427:
916
917
9181) ACPICA kernel-resident subsystem:
919
920Debugger: Added support for Package objects in the "Test Objects"
921command. This command walks the entire namespace and evaluates all named
922data objects (Integers, Strings, Buffers, and now Packages).
923
924Improved error messages for the namespace root node. Originally, the root
925was referred to by the confusing string "\___". This has been replaced by
926"Namespace Root" for clarification.
927
928Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
929Ian King <colin.king@canonical.com>.
930
931
9322) iASL Compiler/Disassembler and Tools:
933
934iASL: Implemented support to detect and flag illegal forward references.
935For compatibility with other ACPI implementations, these references are
936now illegal at the root level of the DSDT or SSDTs. Forward references
937have always been illegal within control methods. This change should not
938affect existing ASL/AML code because of the fact that these references
939have always been illegal in the other ACPI implementation.
940
941iASL: Added error messages for the case where a table OEM ID and OEM
942TABLE ID strings are longer than the ACPI-defined length. Previously,
943these strings were simply silently truncated.
944
945iASL: Enhanced the -tc option (which creates an AML hex file in C,
946suitable for import into a firmware project):
947  1) Create a unique name for the table, to simplify use of multiple
948SSDTs.
949  2) Add a protection #ifdef in the file, similar to a .h header file.
950With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
951evan.lloyd@arm.com
952
953AcpiExec: Added a new option, -df, to disable the local fault handler.
954This is useful during debugging, where it may be desired to drop into a
955debugger on a fault.
956
957----------------------------------------
95813 March 2018. Summary of changes for version 20180313:
959
960
9611) ACPICA kernel-resident subsystem:
962
963Implemented various improvements to the GPE support:
964
9651) Dispatch all active GPEs at initialization time so that no GPEs are
966lost.
9672) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
968before devices are enumerated.
9693) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
970IRQs are not lost.
9714) Add parallel GPE handling to eliminate the possibility of dispatching
972the same GPE twice.
9735) Dispatch any pending GPEs after enabling for the first time.
974
975AcpiGetObjectInfo - removed support for the _STA method. This was causing
976problems on some platforms.
977
978Added a new _OSI string, "Windows 2017.2".
979
980Cleaned up and simplified the module-level code support. These changes
981are in preparation for the eventual removal of the legacy MLC support
982(deferred execution), replaced by the new MLC architecture which executes
983the MLC as a table is loaded (DSDT/SSDTs).
984
985Changed a compile-time option to a runtime option. Changes the option to
986ignore ACPI table load-time package resolution errors into a runtime
987option. Used only for platforms that generate many AE_NOT_FOUND errors
988during boot. AcpiGbl_IgnorePackageResolutionErrors.
989
990Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
991ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
992compilation errors from unused variables (seen with some compilers).
993
994
9952) iASL Compiler/Disassembler and Tools:
996
997ASLTS: parallelized execution in order to achieve an (approximately) 2X
998performance increase.
999
1000ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1001error reporting.
1002
1003----------------------------------------
100409 February 2018. Summary of changes for version 20180209:
1005
1006
10071) ACPICA kernel-resident subsystem:
1008
1009Completed the final integration of the recent changes to Package Object
1010handling and the module-level AML code support. This allows forward
1011references from individual package elements when the package object is
1012declared from within module-level code blocks. Provides compatibility
1013with other ACPI implementations.
1014
1015The new architecture for the AML module-level code has been completed and
1016is now the default for the ACPICA code. This new architecture executes
1017the module-level code in-line as the ACPI table is loaded/parsed instead
1018of the previous architecture which deferred this code until after the
1019table was fully loaded. This solves some ASL code ordering issues and
1020provides compatibility with other ACPI implementations. At this time,
1021there is an option to fallback to the earlier architecture, but this
1022support is deprecated and is planned to be completely removed later this
1023year.
1024
1025Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1026resolution of named reference elements within Package objects. Although
1027this is potentially a serious problem, it can generate a lot of
1028noise/errors on platforms whose firmware carries around a bunch of unused
1029Package objects. To disable these errors, define
1030ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1031errors are always reported for ACPICA applications such as AcpiExec.
1032
1033Fixed a regression related to the explicit type-conversion AML operators
1034(ToXXXX). The regression was introduced early in 2017 but was not seen
1035until recently because these operators are not fully supported by other
1036ACPI implementations and are thus rarely used by firmware developers. The
1037operators are defined by the ACPI specification to not implement the
1038"implicit result object conversion". The regression incorrectly
1039introduced this object conversion for the following explicit conversion
1040operators:
1041    ToInteger
1042    ToString
1043    ToBuffer
1044    ToDecimalString
1045    ToHexString
1046    ToBCD
1047    FromBCD
1048
1049
10502) iASL Compiler/Disassembler and Tools:
1051
1052iASL: Fixed a problem with the compiler constant folding feature as
1053related to the ToXXXX explicit conversion operators. These operators do
1054not support the "implicit result object conversion" by definition. Thus,
1055ASL expressions that use these operators cannot be folded to a simple
1056Store operator because Store implements the implicit conversion. This
1057change uses the CopyObject operator for the ToXXXX operator folding
1058instead. CopyObject is defined to not implement implicit result
1059conversions and is thus appropriate for folding the ToXXXX operators.
1060
1061iASL: Changed the severity of an error condition to a simple warning for
1062the case where a symbol is declared both locally and as an external
1063symbol. This accommodates existing ASL code.
1064
1065AcpiExec: The -ep option to enable the new architecture for module-level
1066code has been removed. It is replaced by the -dp option which instead has
1067the opposite effect: it disables the new architecture (the default) and
1068enables the legacy architecture. When the legacy code is removed in the
1069future, the -dp option will be removed also.
1070
1071----------------------------------------
107205 January 2018. Summary of changes for version 20180105:
1073
1074
10751) ACPICA kernel-resident subsystem:
1076
1077Updated all copyrights to 2018. This affects all source code modules.
1078
1079Fixed a possible build error caused by an unresolved reference to the
1080AcpiUtSafeStrncpy function.
1081
1082Removed NULL pointer arithmetic in the various pointer manipulation
1083macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1084This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1085
1086Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1087Mittal.
1088
1089
10902) iASL Compiler/Disassembler and Tools:
1091
1092ASLTS: Updated all copyrights to 2018.
1093
1094Tools: Updated all signon copyrights to 2018.
1095
1096AcpiXtract: Fixed a regression related to ACPI table signatures where the
1097signature was truncated to 3 characters (instead of 4).
1098
1099AcpiExec: Restore the original terminal mode after the use of the -v and
1100-vd options.
1101
1102ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1103
1104----------------------------------------
110514 December 2017. Summary of changes for version 20171214:
1106
1107
11081) ACPICA kernel-resident subsystem:
1109
1110Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1111interface where the optional "pathname" argument had inadvertently become
1112a required argument returning an error if omitted (NULL pointer
1113argument).
1114
1115Fixed two possible memory leaks related to the recently developed "late
1116resolution" of reference objects within ASL Package Object definitions.
1117
1118Added two recently defined _OSI strings: "Windows 2016" and "Windows
11192017". Mario Limonciello.
1120
1121Implemented and deployed a safer version of the C library function
1122strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1123creation of unterminated strings as a possible result of a standard
1124strncpy.
1125
1126Cleaned up and restructured the global variable file (acglobal.h). There
1127are many changes, but no functional changes.
1128
1129
11302) iASL Compiler/Disassembler and Tools:
1131
1132iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1133optional OemData field at the end of the table was incorrectly required
1134for proper compilation. It is now correctly an optional field.
1135
1136ASLTS: The entire suite was converted from standard ASL to the ASL+
1137language, using the ASL-to-ASL+ converter which is integrated into the
1138iASL compiler. A binary compare of all output files has verified the
1139correctness of the conversion.
1140
1141iASL: Fixed the source code build for platforms where "char" is unsigned.
1142This affected the iASL lexer only. Jung-uk Kim.
1143
1144----------------------------------------
114510 November 2017. Summary of changes for version 20171110:
1146
1147
11481) ACPICA kernel-resident subsystem:
1149
1150This release implements full support for ACPI 6.2A:
1151    NFIT - Added a new subtable, "Platform Capabilities Structure"
1152No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1153errata release of the specification.
1154
1155Other ACPI table changes:
1156    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1157    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1158Linton
1159
1160Utilities: Modified the string/integer conversion functions to use
1161internal 64-bit divide support instead of a native divide. On 32-bit
1162platforms, a 64-bit divide typically requires a library function which
1163may not be present in the build (kernel or otherwise).
1164
1165Implemented a targeted error message for timeouts returned from the
1166Embedded Controller device driver. This is seen frequently enough to
1167special-case an AE_TIME returned from an EC operation region access:
1168    "Timeout from EC hardware or EC device driver"
1169
1170Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1171runtime error messages have the identical prefix.
1172
1173
11742) iASL Compiler/Disassembler and Tools:
1175
1176AcpiXtract: Fixed a problem with table header detection within the
1177acpidump file. Processing a table could be ended early if a 0x40 (@)
1178appears in the original binary table, resulting in the @ symbol appearing
1179in the decoded ASCII field at the end of the acpidump text line. The
1180symbol caused acpixtract to incorrectly think it had reached the end of
1181the current table and the beginning of a new table.
1182
1183AcpiXtract: Added an option (-f) to ignore some errors during table
1184extraction. This initial implementation ignores non-ASCII and non-
1185printable characters found in the acpidump text file.
1186
1187TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1188for ASLTS. This feature is used to track memory allocations from
1189different memory caches within the ACPICA code. At the end of an ASLTS
1190run, these memory statistics are recorded and stored in a log file.
1191
1192Debugger (user-space version): Implemented a simple "Background" command.
1193Creates a new thread to execute a control method in the background, while
1194control returns to the debugger prompt to allow additional commands.
1195    Syntax: Background <Namepath> [Arguments]
1196
1197----------------------------------------
119829 September 2017. Summary of changes for version 20170929:
1199
1200
12011) ACPICA kernel-resident subsystem:
1202
1203Redesigned and implemented an improved ASL While() loop timeout
1204mechanism. This mechanism is used to prevent infinite loops in the kernel
1205AML interpreter caused by either non-responsive hardware or incorrect AML
1206code. The new implementation uses AcpiOsGetTimer instead of a simple
1207maximum loop count, and is thus more accurate and constant across
1208different machines. The default timeout is currently 30 seconds, but this
1209may be adjusted later.
1210
1211Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1212better reflect the new implementation of the loop timeout mechanism.
1213
1214Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1215and to fix an off-by-one error. Jung-uk Kim.
1216
1217Fixed an EFI build problem by updating the makefiles to for a new file
1218that was added, utstrsuppt.c
1219
1220
12212) iASL Compiler/Disassembler and Tools:
1222
1223Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1224includes support in the table disassembler, compiler, and template
1225generator.
1226
1227iASL: Added an exception for an illegal type of recursive method
1228invocation. If a method creates named objects, the first recursive call
1229will fail at runtime. This change adds an error detection at compile time
1230to catch the problem up front. Note: Marking such a method as
1231"serialized" will not help with this problem, because the same thread can
1232acquire the method mutex more than once. Example compiler and runtime
1233output:
1234
1235    Method (MTH1)
1236    {
1237        Name (INT1, 1)
1238        MTH1 ()
1239    }
1240
1241    dsdt.asl     22: MTH1 ()
1242    Error    6152 -  ^ Illegal recursive call to method
1243                       that creates named objects (MTH1)
1244
1245Previous runtime exception:
1246    ACPI Error: [INT1] Namespace lookup failure,
1247    AE_ALREADY_EXISTS (20170831/dswload2-465)
1248
1249iASL: Updated support for External() opcodes to improve namespace
1250management and error detection. These changes are related to issues seen
1251with multiple-segment namespace pathnames within External declarations,
1252such as below:
1253
1254    External(\_SB.PCI0.GFX0, DeviceObj)
1255    External(\_SB.PCI0.GFX0.ALSI)
1256
1257iASL: Implemented support for multi-line error/warning messages. This
1258enables more detailed and helpful error messages as below, from the
1259initial deployment for the duplicate names error:
1260
1261    DSDT.iiii   1692:       Device(PEG2) {
1262    Error    6074 -                  ^ Name already exists in scope
1263(PEG2)
1264
1265        Original name creation/declaration below:
1266        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1267
1268AcpiXtract: Added additional flexibility to support differing input hex
1269dump formats. Specifically, hex dumps that contain partial disassembly
1270and/or comments within the ACPI table data definition. There exist some
1271dump utilities seen in the field that create this type of hex dump (such
1272as Simics). For example:
1273
1274    DSDT @ 0xdfffd0c0 (10999 bytes)
1275        Signature DSDT
1276        Length 10999
1277        Revision 1
1278        Checksum 0xf3 (Ok)
1279        OEM_ID BXPC
1280        OEM_table_id BXDSDT
1281        OEM_revision 1
1282        Creator_id 1280593481
1283        Creator_revision 537399345
1284      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1285      ...
1286      2af0: 5f 4c 30 46 00 a4 01
1287
1288Test suite: Miscellaneous changes/fixes:
1289    More cleanup and simplification of makefiles
1290    Continue compilation of test cases after a compile failure
1291    Do not perform binary compare unless both files actually exist
1292
1293iASL: Performed some code/module restructuring. Moved all memory
1294allocation functions to new modules. Two new files, aslallocate.c and
1295aslcache.c
1296
1297----------------------------------------
129831 August 2017. Summary of changes for version 20170831:
1299
1300
13011) ACPICA kernel-resident subsystem:
1302
1303Implemented internal support for full 64-bit addresses that appear in all
1304Generic Address Structure (GAS) structures. Previously, only the lower 32
1305bits were used. Affects the use of GAS structures in the FADT and other
1306tables, as well as the GAS structures passed to the AcpiRead and
1307AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1308
1309Added header support for the PDTT ACPI table (Processor Debug Trigger
1310Table). Full support in the iASL Data Table Compiler and disassembler is
1311forthcoming.
1312
1313
13142) iASL Compiler/Disassembler and Tools:
1315
1316iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1317Properties Topology Table) where a flag bit was specified in the wrong
1318bit position ("Line Size Valid", bit 6).
1319
1320iASL: Implemented support for Octal integer constants as defined by the
1321ASL language grammar, per the ACPI specification. Any integer constant
1322that starts with a zero is an octal constant. For example,
1323    Store (037777, Local0) /* Octal constant */
1324    Store (0x3FFF, Local0) /* Hex equivalent */
1325    Store (16383,  Local0) /* Decimal equivalent */
1326
1327iASL: Improved overflow detection for 64-bit string conversions during
1328compilation of integer constants. "Overflow" in this case means a string
1329that represents an integer that is too large to fit into a 64-bit value.
1330Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1331the low-order 32 bits with a warning, as previously implemented. Several
1332new exceptions are defined that indicate a 64-bit overflow, as well as
1333the base (radix) that was used during the attempted conversion. Examples:
1334    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1335    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1336    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1337
1338iASL: Added a warning for the case where a ResourceTemplate is declared
1339with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1340this case, the resulting template is created with a single END_TAG
1341descriptor, which is essentially useless.
1342
1343iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1344include compilation error codes as well.
1345
1346----------------------------------------
134728 July 2017. Summary of changes for version 20170728:
1348
1349
13501) ACPICA kernel-resident subsystem:
1351
1352Fixed a regression seen with small resource descriptors that could cause
1353an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1354
1355AML interpreter: Implemented a new feature that allows forward references
1356from individual named references within package objects that are
1357contained within blocks of "module-level code". This provides
1358compatibility with other ACPI implementations and supports existing
1359firmware that depends on this feature. Example:
1360
1361    Name (ABCD, 1)
1362    If (ABCD)                       /* An If() at module-level */
1363    {
1364        Name (PKG1, Package()
1365        {
1366            INT1                    /* Forward reference to object INT1
1367*/
1368        })
1369        Name (INT1, 0x1234)
1370    }
1371
1372AML Interpreter: Fixed a problem with the Alias() operator where aliases
1373to some ASL objects were not handled properly. Objects affected are:
1374Mutex, Event, and OperationRegion.
1375
1376AML Debugger: Enhanced to properly handle AML Alias objects. These
1377objects have one level of indirection which was not fully supported by
1378the debugger.
1379
1380Table Manager: Added support to detect and ignore duplicate SSDTs within
1381the XSDT/RSDT. This error in the XSDT has been seen in the field.
1382
1383EFI and EDK2 support:
1384    Enabled /WX flag for MSVC builds
1385    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1386    Added local support for 64-bit multiply and shift operations
1387    Added support to compile acpidump.efi on Windows
1388    Added OSL function stubs for interfaces not used under EFI
1389
1390Added additional support for the _DMA predefined name. _DMA returns a
1391buffer containing a resource template. This change add support within the
1392resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1393resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1394
1395
13962) iASL Compiler/Disassembler and Tools:
1397
1398iASL: Fixed a problem where the internal input line buffer(s) could
1399overflow if there are very long lines in the input ASL source code file.
1400Implemented buffer management that automatically increases the size of
1401the buffers as necessary.
1402
1403iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1404errors. If the specified exception is not raised during compilation, the
1405compiler emits an error. This is intended to support the ASL test suite,
1406but may be useful in other contexts.
1407
1408iASL: Implemented a new predefined macro, __METHOD__, which returns a
1409string containing the name of the current control method that is being
1410compiled.
1411
1412iASL: Implemented debugger and table compiler support for the SDEI ACPI
1413table (Software Delegated Exception Interface). James Morse
1414<james.morse@arm.com>
1415
1416Unix/Linux makefiles: Added an option to disable compile optimizations.
1417The disable occurs when the NOOPT flag is set to TRUE.
1418theracermaster@gmail.com
1419
1420Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1421when there are different tables for 32-bit versus 64-bit.
1422
1423Enhanced error reporting for the ASL test suite (ASLTS) by removing
1424unnecessary/verbose text, and emit the actual line number where an error
1425has occurred. These changes are intended to improve the usefulness of the
1426test suite.
1427
1428----------------------------------------
142929 June 2017. Summary of changes for version 20170629:
1430
1431
14321) ACPICA kernel-resident subsystem:
1433
1434Tables: Implemented a deferred ACPI table verification. This is useful
1435for operating systems where the tables cannot be verified in the early
1436initialization stage due to early memory mapping limitations on some
1437architectures. Lv Zheng.
1438
1439Tables: Removed the signature validation for dynamically loaded tables.
1440Provides compatibility with other ACPI implementations. Previously, only
1441SSDT tables were allowed, as per the ACPI specification. Now, any table
1442signature can be used via the Load() operator. Lv Zheng.
1443
1444Tables: Fixed several mutex issues that could cause errors during table
1445acquisition. Lv Zheng.
1446
1447Tables: Fixed a problem where an ACPI warning could be generated if a
1448null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1449
1450Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1451AcpiPutTable interfaces. This applies to the "late stage" table loading
1452when the use of AcpiPutTable is no longer required (since the system
1453memory manager is fully running and available). Lv Zheng.
1454
1455Fixed/Reverted a regression during processing of resource descriptors
1456that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1457exception in this case.
1458
1459Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1460I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1461
1462Interpreter: Fixed a possible fault if an Alias operator with an invalid
1463or duplicate target is encountered during Alias creation in
1464AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1465
1466Added an option to use designated initializers for function pointers.
1467Kees Cook <keescook@google.com>
1468
1469
14702) iASL Compiler/Disassembler and Tools:
1471
1472iASL: Allow compilation of External declarations with target pathnames
1473that refer to existing named objects within the table. Erik Schmauss.
1474
1475iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1476FieldUnit name also is declared via External in the same table. Erik
1477Schmauss.
1478
1479iASL: Allow existing scope names within pathnames used in External
1480statements. For example:
1481    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1482    Device (ABCD)
1483
1484iASL: IORT ACPI table: Implemented changes required to decode the new
1485Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1486compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1487
1488Disassembler: Don't abort disassembly on errors from External()
1489statements. Erik Schmauss.
1490
1491Disassembler: fixed a possible fault when one of the Create*Field
1492operators references a Resource Template. ACPICA Bugzilla 1396.
1493
1494iASL: In the source code, resolved some naming inconsistences across the
1495parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1496Adds a new file, aslparseop.c
1497
1498----------------------------------------
149931 May 2017. Summary of changes for version 20170531:
1500
1501
15020) ACPI 6.2 support:
1503
1504The ACPI specification version 6.2 has been released and is available at
1505http://uefi.org/specifications
1506
1507This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1508are summarized below.
1509
1510New ACPI tables (Table Compiler/Disassembler/Templates):
1511    HMAT (Heterogeneous Memory Attributes Table)
1512    WSMT (Windows SMM Security Mitigation Table)
1513    PPTT (Processor Properties Topology Table)
1514
1515New subtables for existing ACPI tables:
1516    HEST (New subtable, Arch-deferred machine check)
1517    SRAT (New subtable, Arch-specific affinity structure)
1518    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1519
1520Simple updates for existing ACPI tables:
1521    BGRT (two new flag bits)
1522    HEST (New bit defined for several subtables, GHES_ASSIST)
1523
1524New Resource Descriptors and Resource macros (Compiler/Disassembler):
1525    PinConfig()
1526    PinFunction()
1527    PinGroup()
1528    PinGroupConfig()
1529    PinGroupFunction()
1530    New type for hardware error notification (section 18.3.2.9)
1531
1532New predefined names/methods (Compiler/Interpreter):
1533    _HMA (Heterogeneous Memory Attributes)
1534    _LSI (Label Storage Information)
1535    _LSR (Label Storage Read)
1536    _LSW (Label Storage Write)
1537
1538ASL grammar/macro changes (Compiler):
1539    For() ASL macro, implemented with the AML while operator
1540    Extensions to Concatenate operator
1541    Support for multiple definition blocks in same ASL file
1542    Clarification for Buffer operator
1543    Allow executable AML code underneath all scopes (Devices, etc.)
1544    Clarification/change for the _OSI return value
1545    ASL grammar update for reference operators
1546    Allow a zero-length string for AML filename in DefinitionBlock
1547
1548Miscellaneous:
1549    New device object notification value
1550    Remove a notify value (0x0C) for graceful shutdown
1551    New UUIDs for processor/cache properties and
1552        physical package property
1553    New _HID, ACPI0014 (Wireless Power Calibration Device)
1554
1555
15561) ACPICA kernel-resident subsystem:
1557
1558Added support to disable ACPI events on hardware-reduced platforms.
1559Eliminates error messages of the form "Could not enable fixed event". Lv
1560Zheng
1561
1562Fixed a problem using Device/Thermal objects with the ObjectType and
1563DerefOf ASL operators. This support had not been fully/properly
1564implemented.
1565
1566Fixed a problem where if a Buffer object containing a resource template
1567was longer than the actual resource template, an error was generated --
1568even though the AML is legal. This case has been seen in the field.
1569
1570Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1571The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1572
1573Added header file changes for the TPM2 ACPI table. Update to new version
1574of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1575
1576Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1577These interfaces are intended to be used only in conjunction with the
1578predefined _DLM method (Device Lock Method). "This object appears in a
1579device scope when AML access to the device must be synchronized with the
1580OS environment".
1581
1582Example Code and Data Size: These are the sizes for the OS-independent
1583acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1584debug version of the code includes the debug output trace mechanism and
1585has a much larger code and data size.
1586
1587  Current Release:
1588    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1589    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
1590  Previous Release:
1591    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1592    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1593
1594
15952) iASL Compiler/Disassembler and Tools:
1596
1597iASL: Fixed a problem where an External() declaration could not refer to
1598a Field Unit. Erik Schmauss.
1599
1600Disassembler: Improved support for the Switch/Case operators. This
1601feature will disassemble AML code back to the original Switch operators
1602when possible, instead of an If..Else sequence. David Box
1603
1604iASL and disassembler: Improved the handling of multiple extraneous
1605parentheses for both ASL input and disassembled ASL output.
1606
1607Improved the behavior of the iASL compiler and disassembler to detect
1608improper use of external declarations
1609
1610Disassembler: Now aborts immediately upon detection of an unknown AML
1611opcode. The AML parser has no real way to recover from this, and can
1612result in the creation of an ill-formed parse tree that causes errors
1613later during the disassembly.
1614
1615All tools: Fixed a problem where the Unix application OSL did not handle
1616control-c correctly. For example, a control-c could incorrectly wake the
1617debugger.
1618
1619AcpiExec: Improved the Control-C handling and added a handler for
1620segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1621environments.
1622
1623Reduced the verbosity of the generic unix makefiles. Previously, each
1624compilation displayed the full set of compiler options. This has been
1625eliminated as the options are easily inspected within the makefiles. Each
1626compilation now results in a single line of output.
1627
1628----------------------------------------
162903 March 2017. Summary of changes for version 20170303:
1630
1631
16320) ACPICA licensing:
1633
1634The licensing information at the start of each source code module has
1635been updated. In addition to the Intel license, the dual GPLv2/BSD
1636license has been added for completeness. Now, a single version of the
1637source code should be suitable for all ACPICA customers. This is the
1638major change for this release since it affects all source code modules.
1639
1640
16411) ACPICA kernel-resident subsystem:
1642
1643Fixed two issues with the common asltypes.h header that could cause
1644problems in some environments: (Kim Jung-uk)
1645    Removed typedef for YY_BUFFER_STATE ?
1646       Fixes an error with earlier versions of Flex.
1647    Removed use of FILE typedef (which is only defined in stdio.h)
1648
1649
16502) iASL Compiler/Disassembler and Tools:
1651
1652Disassembler: fixed a regression introduced in 20170224. A fix for a
1653memory leak related to resource descriptor tags (names) could fault when
1654the disassembler was generated with 64-bit compilers.
1655
1656The ASLTS test suite has been updated to implement a new testing
1657architecture. During generation of the suite from ASL source, both the
1658ASL and ASL+ compilers are now validated, as well as the disassembler
1659itself (Erik Schmauss). The architecture executes as follows:
1660
1661    For every ASL source module:
1662        Compile (legacy ASL compilation)
1663        Disassemble the resulting AML to ASL+ source code
1664        Compile the new ASL+ module
1665        Perform a binary compare on the legacy AML and the new ASL+ AML
1666    The ASLTS suite then executes normally using the AML binaries.
1667
1668----------------------------------------
166924 February 2017. Summary of changes for version 20170224:
1670
1671
16721) ACPICA kernel-resident subsystem:
1673
1674Interpreter: Fixed two issues with the control method return value auto-
1675repair feature, where an attempt to double-delete an internal object
1676could result in an ACPICA warning (for _CID repair and others). No fault
1677occurs, however, because the attempted deletion (actually a release to an
1678internal cache) is detected and ignored via object poisoning.
1679
1680Debugger: Fixed an AML interpreter mutex issue during the single stepping
1681of control methods. If certain debugger commands are executed during
1682stepping, a mutex acquire/release error could occur. Lv Zheng.
1683
1684Fixed some issues generating ACPICA with the Intel C compiler by
1685restoring the original behavior and compiler-specific include file in
1686acenv.h. Lv Zheng.
1687
1688Example Code and Data Size: These are the sizes for the OS-independent
1689acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1690debug version of the code includes the debug output trace mechanism and
1691has a much larger code and data size.
1692
1693  Current Release:
1694    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1695    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1696  Previous Release:
1697    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1698    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1699
1700
17012) iASL Compiler/Disassembler and Tools:
1702
1703iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1704tool has been designed, implemented, and included in this release. The
1705key feature of this utility is that the original comments within the
1706input ASL file are preserved during the conversion process, and included
1707within the converted ASL+ file -- thus creating a transparent conversion
1708of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1709
1710    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
1711converted code
1712
1713iASL/Disassembler: Improved the detection and correct disassembly of
1714Switch/Case operators. This feature detects sequences of if/elseif/else
1715operators that originated from ASL Switch/Case/Default operators and
1716emits the original operators. David Box.
1717
1718iASL: Improved the IORT ACPI table support in the following areas. Lv
1719Zheng:
1720    Clear MappingOffset if the MappingCount is zero.
1721    Fix the disassembly of the SMMU GSU interrupt offset.
1722    Update the template file for the IORT table.
1723
1724Disassembler: Enhanced the detection and disassembly of resource
1725template/descriptor within a Buffer object. An EndTag descriptor is now
1726required to have a zero second byte, since all known ASL compilers emit
1727this. This helps eliminate incorrect decisions when a buffer is
1728disassembled (false positives on resource templates).
1729
1730----------------------------------------
173119 January 2017. Summary of changes for version 20170119:
1732
1733
17341) General ACPICA software:
1735
1736Entire source code base: Added the 2017 copyright to all source code
1737legal/licensing module headers and utility/tool signons. This includes
1738the standard Linux dual-license header. This affects virtually every file
1739in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
1740the ACPICA test suite.
1741
1742
17432) iASL Compiler/Disassembler and Tools:
1744
1745iASL: Removed/fixed an inadvertent remark when a method argument
1746containing a reference is used as a target operand within the method (and
1747never used as a simple argument), as in the example below. Jeffrey Hugo.
1748
1749    dsdt.asl   1507:    Store(0x1, Arg0)
1750    Remark   2146 -                ^ Method Argument is never used (Arg0)
1751
1752All tools: Removed the bit width of the compiler that generated the tool
1753from the common signon for all user space tools. This proved to be
1754confusing and unnecessary. This includes similar removal of HARDWARE_NAME
1755from the generic makefiles (Thomas Petazzoni). Example below.
1756
1757    Old:
1758    ASL+ Optimizing Compiler version 20170119-32
1759    ASL+ Optimizing Compiler version 20170119-64
1760
1761    New:
1762    ASL+ Optimizing Compiler version 20170119
1763
1764----------------------------------------
176522 December 2016. Summary of changes for version 20161222:
1766
1767
17681) ACPICA kernel-resident subsystem:
1769
1770AML Debugger: Implemented a new mechanism to simplify and enhance
1771debugger integration into all environments, including kernel debuggers
1772and user-space utilities, as well as remote debug services. This
1773mechanism essentially consists of new OSL interfaces to support debugger
1774initialization/termination, as well as wait/notify interfaces to perform
1775the debugger handshake with the host. Lv Zheng.
1776
1777    New OSL interfaces:
1778        AcpiOsInitializeDebugger (void)
1779        AcpiOsTerminateDebugger (void)
1780        AcpiOsWaitCommandReady (void)
1781        AcpiOsNotifyCommandComplete (void)
1782
1783    New OS services layer:
1784        osgendbg.c -- Example implementation, and used for AcpiExec
1785
1786Update for Generic Address Space (GAS) support: Although the AccessWidth
1787and/or BitOffset fields of the GAS are not often used, this change now
1788fully supports these fields. This affects the internal support for FADT
1789registers, registers in other ACPI data tables, and the AcpiRead and
1790AcpiWrite public interfaces. Lv Zheng.
1791
1792Sleep support: In order to simplify integration of ACPI sleep for the
1793various host operating systems, a new OSL interface has been introduced.
1794AcpiOsEnterSleep allows the host to perform any required operations
1795before the final write to the sleep control register(s) is performed by
1796ACPICA. Lv Zheng.
1797
1798    New OSL interface:
1799        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1800
1801    Called from these internal interfaces:
1802        AcpiHwLegacySleep
1803        AcpiHwExtendedSleep
1804
1805EFI support: Added a very small EFI/ACPICA example application. Provides
1806a simple demo for EFI integration, as well as assisting with resolution
1807of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1808
1809    source/tools/efihello/efihello.c
1810
1811Local C library: Implemented several new functions to enhance ACPICA
1812portability, for environments where these clib functions are not
1813available (such as EFI). Lv Zheng:
1814    putchar
1815    getchar
1816    strpbrk
1817    strtok
1818    memmove
1819
1820Fixed a regression where occasionally a valid resource descriptor was
1821incorrectly detected as invalid at runtime, and a
1822AE_AML_NO_RESOURCE_END_TAG was returned.
1823
1824Fixed a problem with the recently implemented support that enables
1825control method invocations as Target operands to many ASL operators.
1826Warnings of this form: "Needed type [Reference], found [Processor]" were
1827seen at runtime for some method invocations.
1828
1829Example Code and Data Size: These are the sizes for the OS-independent
1830acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1831debug version of the code includes the debug output trace mechanism and
1832has a much larger code and data size.
1833
1834  Current Release:
1835    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1836    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
1837  Previous Release:
1838    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1839    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1840
1841
18422) iASL Compiler/Disassembler and Tools:
1843
1844Disassembler: Enhanced output by adding the capability to detect and
1845disassemble ASL Switch/Case statements back to the original ASL source
1846code instead of if/else blocks. David Box.
1847
1848AcpiHelp: Split a large file into separate files based upon
1849functionality/purpose. New files are:
1850    ahaml.c
1851    ahasl.c
1852
1853----------------------------------------
185417 November 2016. Summary of changes for version 20161117:
1855
1856
18571) ACPICA kernel-resident subsystem:
1858
1859Table Manager: Fixed a regression introduced in 20160729, "FADT support
1860cleanup". This was an attempt to remove all references in the source to
1861the FADT version 2, which never was a legal version number. It was
1862skipped because it was an early version of 64-bit support that was
1863eventually abandoned for the current 64-bit support.
1864
1865Interpreter: Fixed a problem where runtime implicit conversion was
1866incorrectly disabled for the ASL operators below. This brings the
1867behavior into compliance with the ACPI specification:
1868    FromBCD
1869    ToBCD
1870    ToDecimalString
1871    ToHexString
1872    ToInteger
1873    ToBuffer
1874
1875Table Manager: Added a new public interface, AcpiPutTable, used to
1876release and free an ACPI table returned by AcpiGetTable and related
1877interfaces. Lv Zheng.
1878
1879Example Code and Data Size: These are the sizes for the OS-independent
1880acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1881debug version of the code includes the debug output trace mechanism and
1882has a much larger code and data size.
1883
1884  Current Release:
1885    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1886    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1887  Previous Release:
1888    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1889    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1890
1891
18922) iASL Compiler/Disassembler and Tools:
1893
1894Disassembler: Fixed a regression for disassembly of Resource Template.
1895Detection of templates in the AML stream missed some types of templates.
1896
1897iASL: Fixed a problem where an Access Size error was returned for the PCC
1898address space when the AccessSize of the GAS register is greater than a
1899DWORD. Hoan Tran.
1900
1901iASL: Implemented several grammar changes for the operators below. These
1902changes are slated for the next version of the ACPI specification:
1903    RefOf        - Disallow method invocation as an operand
1904    CondRefOf    - Disallow method invocation as an operand
1905    DerefOf      - Disallow operands that use the result from operators
1906that
1907                   do not return a reference (Changed TermArg to
1908SuperName).
1909
1910iASL: Control method invocations are now allowed for Target operands, as
1911per the ACPI specification. Removed error for using a control method
1912invocation as a Target operand.
1913
1914Disassembler: Improved detection of Resource Templates, Unicode, and
1915Strings within Buffer objects. These subtypes do not contain a specific
1916opcode to indicate the originating ASL code, and they must be detected by
1917other means within the disassembler.
1918
1919iASL: Implemented an optimization improvement for 32-bit ACPI tables
1920(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
1921only after 64-bit to 32-bit truncation. A truncation warning message is
1922still emitted, however.
1923
1924AcpiXtract: Implemented handling for both types of line terminators (LF
1925or CR/LF) so that it can accept AcpiDump output files from any system.
1926Peter Wu.
1927
1928AcpiBin: Added two new options for comparing AML files:
1929    -a: compare and display ALL mismatches
1930    -o: start compare at this offset into the second file
1931
1932----------------------------------------
193330 September 2016. Summary of changes for version 20160930:
1934
1935
19361) ACPICA kernel-resident subsystem:
1937
1938Fixed a regression in the internal AcpiTbFindTable function where a non
1939AE_OK exception could inadvertently be returned even if the function did
1940not fail. This problem affects the following operators:
1941    DataTableRegion
1942    LoadTable
1943
1944Fixed a regression in the LoadTable operator where a load to any
1945namespace location other than the root no longer worked properly.
1946
1947Increased the maximum loop count value that will result in the
1948AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
1949prevent infinite loops within the AML interpreter and thus the host OS
1950kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
19511,048,575).
1952
1953Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
1954acpixf.h file. This allows hosts to easily configure the maximum loop
1955count at runtime.
1956
1957Removed an illegal character in the strtoul64.c file. This character
1958caused errors with some C compilers.
1959
1960Example Code and Data Size: These are the sizes for the OS-independent
1961acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1962debug version of the code includes the debug output trace mechanism and
1963has a much larger code and data size.
1964
1965  Current Release:
1966    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1967    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1968  Previous Release:
1969    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
1970    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1971
1972
19732) iASL Compiler/Disassembler and Tools:
1974
1975Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
1976the simpler ASL ElseIf keyword. During the conversion, a trailing If
1977block could be lost and missing from the disassembled output.
1978
1979iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
1980the missing rule caused a parse error when using the Index operator as an
1981operand to ObjectType. This construct now compiles properly. Example:
1982    ObjectType(PKG1[4]).
1983
1984iASL: Correctly handle unresolved symbols in the hardware map file (-lm
1985option). Previously, unresolved symbols could cause a protection fault.
1986Such symbols are now marked as unresolved in the map file.
1987
1988iASL: Implemented support to allow control method invocations as an
1989operand to the ASL DeRefOf operator. Example:
1990    DeRefOf(MTH1(Local0))
1991
1992Disassembler: Improved support for the ToPLD ASL macro. Detection of a
1993possible _PLD buffer now includes examination of both the normal buffer
1994length (16 or 20) as well as the surrounding AML package length.
1995
1996Disassembler: Fixed a problem with the decoding of complex expressions
1997within the Divide operator for ASL+. For the case where both the quotient
1998and remainder targets are specified, the entire statement cannot be
1999disassembled. Previously, the output incorrectly contained a mix of ASL-
2000and ASL+ operators. This mixed statement causes a syntax error when
2001compiled. Example:
2002    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2003disassembled to:
2004    Divide (INT1 + 6, 128, RSLT, QUOT)
2005
2006iASL/Tools: Added support to process AML and non-AML ACPI tables
2007consistently. For the disassembler and AcpiExec, allow all types of ACPI
2008tables (AML and data tables). For the iASL -e option, allow only AML
2009tables (DSDT/SSDT).
2010
2011----------------------------------------
201231 August 2016. Summary of changes for version 20160831:
2013
2014
20151) ACPICA kernel-resident subsystem:
2016
2017Improve support for the so-called "module-level code", which is defined
2018to be math, logical and control AML opcodes that appear outside of any
2019control method. This change improves the support by adding more opcodes
2020that can be executed in the manner. Some other issues have been solved,
2021and the ASL grammar changes to support such code under all scope
2022operators (Device, etc.) are complete. Lv Zheng.
2023
2024UEFI support: these OSL functions have been implemented. This is an
2025additional step toward supporting the AcpiExec utility natively (with
2026full hardware access) under UEFI. Marcelo Ferreira.
2027    AcpiOsReadPciConfiguration
2028    AcpiOsWritePciConfiguration
2029
2030Fixed a possible mutex error during control method auto-serialization. Lv
2031Zheng.
2032
2033Updated support for the Generic Address Structure by fully implementing
2034all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2035Zheng.
2036
2037Updated the return value for the internal _OSI method. Instead of
20380xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2039for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2040implementations, and will be reflected and clarified in the next version
2041of the ACPI specification.
2042
2043Implemented two new table events that can be passed to an ACPICA table
2044handler. These events are used to indicate a table installation or
2045uninstallation. These events are used in addition to existed table load
2046and unload events. Lv Zheng.
2047
2048Implemented a cleanup for all internal string-to-integer conversions.
2049Consolidate multiple versions of this functionality and limit possible
2050bases to either 10 or 16 to simplify the code. Adds a new file,
2051utstrtoul64.
2052
2053Cleanup the inclusion order of the various compiler-specific headers.
2054This simplifies build configuration management. The compiler-specific
2055headers are now split out from the host-specific headers. Lv Zheng.
2056
2057Example Code and Data Size: These are the sizes for the OS-independent
2058acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2059debug version of the code includes the debug output trace mechanism and
2060has a much larger code and data size.
2061
2062  Current Release:
2063    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2064    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2065
2066
20672) iASL Compiler/Disassembler and Tools:
2068
2069iASL/AcpiExec: Added a command line option to display the build date/time
2070of the tool (-vd). This can be useful to verify that the correct version
2071of the tools are being used.
2072
2073AML Debugger: Implemented a new subcommand ("execute predef") to execute
2074all predefined control methods and names within the current namespace.
2075This can be useful for debugging problems with ACPI tables and the ACPI
2076namespace.
2077
2078----------------------------------------
207929 July 2016. Summary of changes for version 20160729:
2080
2081
20821) ACPICA kernel-resident subsystem:
2083
2084Implemented basic UEFI support for the various ACPICA tools. This
2085includes:
20861) An OSL to implement the various AcpiOs* interfaces on UEFI.
20872) Support to obtain the ACPI tables on UEFI.
20883) Local implementation of required C library functions not available on
2089UEFI.
20904) A front-end (main) function for the tools for UEFI-related
2091initialization.
2092
2093The initial deployment of this support is the AcpiDump utility executing
2094as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2095Current environments supported are Linux/Unix. MSVC generation is not
2096supported at this time. See the generate/efi/README file for build
2097instructions. Lv Zheng.
2098
2099Future plans include porting the AcpiExec utility to execute natively on
2100the platform with I/O and memory access. This will allow viewing/dump of
2101the platform namespace and native execution of ACPI control methods that
2102access the actual hardware. To fully implement this support, the OSL
2103functions below must be implemented with UEFI interfaces. Any community
2104help in the implementation of these functions would be appreciated:
2105    AcpiOsReadPort
2106    AcpiOsWritePort
2107    AcpiOsReadMemory
2108    AcpiOsWriteMemory
2109    AcpiOsReadPciConfiguration
2110    AcpiOsWritePciConfiguration
2111
2112Restructured and standardized the C library configuration for ACPICA,
2113resulting in the various configuration options below. This includes a
2114global restructuring of the compiler-dependent and platform-dependent
2115include files. These changes may affect the existing platform-dependent
2116configuration files on some hosts. Lv Zheng.
2117
2118The current C library configuration options appear below. For any issues,
2119it may be helpful to examine the existing compiler-dependent and
2120platform-dependent files as examples. Lv Zheng.
2121
21221) Linux kernel:
2123    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2124library.
2125    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
21262) Unix/Windows/BSD applications:
2127    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2128library.
2129    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
21303) UEFI applications:
2131    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2132library.
2133    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
21344) UEFI applications (EDK2/StdLib):
2135    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2136    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2137
2138
2139AML interpreter: "module-level code" support. Allows for execution of so-
2140called "executable" AML code (math/logical operations, etc.) outside of
2141control methods not just at the module level (top level) but also within
2142any scope declared outside of a control method - Scope{}, Device{},
2143Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2144
2145Simplified the configuration of the "maximum AML loops" global option by
2146adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2147modified at runtime.
2148
2149
2150Example Code and Data Size: These are the sizes for the OS-independent
2151acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2152debug version of the code includes the debug output trace mechanism and
2153has a much larger code and data size.
2154
2155  Current Release:
2156    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2157    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2158
2159
21602) iASL Compiler/Disassembler and Tools:
2161
2162iASL: Add full support for the RASF ACPI table (RAS Features Table).
2163Includes disassembler, data table compiler, and header support.
2164
2165iASL Expand "module-level code" support. Allows for
2166compilation/disassembly of so-called "executable" AML code (math/logical
2167operations, etc.) outside of control methods not just at the module level
2168(top level) but also within any scope declared outside of a control
2169method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2170ThermalZone{}.
2171
2172AcpiDump: Added support for dumping all SSDTs on newer versions of
2173Windows. These tables are now easily available -- SSDTs are not available
2174through the registry on older versions.
2175
2176----------------------------------------
217727 May 2016. Summary of changes for version 20160527:
2178
2179
21801) ACPICA kernel-resident subsystem:
2181
2182Temporarily reverted the new arbitrary bit length/alignment support in
2183AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2184a number of regressions with the new code that need to be fully resolved
2185and tested before this support can be finally integrated into ACPICA.
2186Apologies for any inconveniences these issues may have caused.
2187
2188The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2189ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2190and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2191
2192Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2193option. Adds a new return macro, return_STR. Junk-uk Kim.
2194
2195Example Code and Data Size: These are the sizes for the OS-independent
2196acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2197debug version of the code includes the debug output trace mechanism and
2198has a much larger code and data size.
2199
2200  Current Release:
2201    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2202    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2203  Previous Release:
2204    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2205    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2206
2207----------------------------------------
220822 April 2016. Summary of changes for version 20160422:
2209
22101) ACPICA kernel-resident subsystem:
2211
2212Fixed a regression in the GAS (generic address structure) arbitrary bit
2213support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2214and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2215
2216ACPI 6.0: Added support for new/renamed resource macros. One new argument
2217was added to each of these macros, and the original name has been
2218deprecated. The AML disassembler will always disassemble to the new
2219names. Support for the new macros was added to iASL, disassembler,
2220resource manager, and the acpihelp utility. ACPICA BZ 1274.
2221
2222    I2cSerialBus  -> I2cSerialBusV2
2223    SpiSerialBus  -> SpiSerialBusV2
2224    UartSerialBus -> UartSerialBusV2
2225
2226ACPI 6.0: Added support for a new integer field that was appended to the
2227package object returned by the _BIX method. This adds iASL compile-time
2228and AML runtime error checking. ACPICA BZ 1273.
2229
2230ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2231Subspace Type2" (Headers, Disassembler, and data table compiler).
2232
2233Example Code and Data Size: These are the sizes for the OS-independent
2234acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2235debug version of the code includes the debug output trace mechanism and
2236has a much larger code and data size.
2237
2238  Current Release:
2239    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2240    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2241  Previous Release:
2242    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2243    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2244
2245
22462) iASL Compiler/Disassembler and Tools:
2247
2248iASL: Implemented an ASL grammar extension to allow/enable executable
2249"module-level code" to be created and executed under the various
2250operators that create new scopes. This type of AML code is already
2251supported in all known AML interpreters, and the grammar change will
2252appear in the next version of the ACPI specification. Simplifies the
2253conditional runtime creation of named objects under these object types:
2254
2255    Device
2256    PowerResource
2257    Processor
2258    Scope
2259    ThermalZone
2260
2261iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2262ease-of-use to the ASL language. The syntax is similar to the
2263corresponding C operator, and is implemented with the existing AML While
2264opcode -- thus requiring no changes to existing AML interpreters.
2265
2266    For (Initialize, Predicate, Update) {TermList}
2267
2268Grammar:
2269    ForTerm :=
2270        For (
2271            Initializer    // Nothing | TermArg => ComputationalData
2272            Predicate      // Nothing | TermArg => ComputationalData
2273            Update         // Nothing | TermArg => ComputationalData
2274        ) {TermList}
2275
2276
2277iASL: The _HID/_ADR detection and validation has been enhanced to search
2278under conditionals in order to allow these objects to be conditionally
2279created at runtime.
2280
2281iASL: Fixed several issues with the constant folding feature. The
2282improvement allows better detection and resolution of statements that can
2283be folded at compile time. ACPICA BZ 1266.
2284
2285iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2286conversion to the ASL ElseIf operator where incorrect ASL code could be
2287generated.
2288
2289iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2290sometimes an extra (and extraneous) set of parentheses were emitted for
2291some combinations of operators. Although this did not cause any problems
2292with recompilation of the disassembled code, it made the code more
2293difficult to read. David Box. ACPICA BZ 1231.
2294
2295iASL: Changed to ignore the unreferenced detection for predefined names
2296of resource descriptor elements, when the resource descriptor is
2297created/defined within a control method.
2298
2299iASL: Disassembler: Fix a possible fault with externally declared Buffer
2300objects.
2301
2302----------------------------------------
230318 March 2016. Summary of changes for version 20160318:
2304
23051) ACPICA kernel-resident subsystem:
2306
2307Added support for arbitrary bit lengths and bit offsets for registers
2308defined by the Generic Address Structure. Previously, only aligned bit
2309lengths of 8/16/32/64 were supported. This was sufficient for many years,
2310but recently some machines have been seen that require arbitrary bit-
2311level support. ACPICA BZ 1240. Lv Zheng.
2312
2313Fixed an issue where the \_SB._INI method sometimes must be evaluated
2314before any _REG methods are evaluated. Lv Zheng.
2315
2316Implemented several changes related to ACPI table support
2317(Headers/Disassembler/TableCompiler):
2318NFIT: For ACPI 6.1, updated to add some additional new fields and
2319constants.
2320FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
23216).
2322DMAR: Added new constants per the 10/2014 DMAR spec.
2323IORT: Added new subtable per the 10/2015 IORT spec.
2324HEST: For ACPI 6.1, added new constants and new subtable.
2325DBG2: Added new constants per the 12/2015 DBG2 spec.
2326FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2327ACPICA BZ 1249.
2328ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2329
2330Updated header support for the DMAR table to match the current version of
2331the related spec.
2332
2333Added extensions to the ASL Concatenate operator to allow any ACPI object
2334to be passed as an operand. Any object other than Integer/String/Buffer
2335simply returns a string containing the object type. This extends the
2336usefulness of the Printf macros. Previously, Concatenate would abort the
2337control method if a non-data object was encountered.
2338
2339ACPICA source code: Deployed the C "const" keyword across the source code
2340where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2341
2342Example Code and Data Size: These are the sizes for the OS-independent
2343acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2344debug version of the code includes the debug output trace mechanism and
2345has a much larger code and data size.
2346
2347  Current Release:
2348    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2349    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2350  Previous Release:
2351    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2352    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2353
2354
23552) iASL Compiler/Disassembler and Tools:
2356
2357iASL/Disassembler: Improved the heuristic used to determine the number of
2358arguments for an externally defined control method (a method in another
2359table). Although this is an improvement, there is no deterministic way to
2360"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2361will completely solve this problem as it is deployed (automatically) in
2362newer BIOS code.
2363
2364iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2365statements that could cause errors when the disassembled file is
2366compiled. ACPICA BZ 1243. David Box.
2367
2368iASL: Fixed a regression caused by the merger of the two versions of the
2369local strtoul64. Because of a dependency on a global variable, strtoul64
2370could return an error for integers greater than a 32-bit value. ACPICA BZ
23711260.
2372
2373iASL: Fixed a regression where a fault could occur for an ASL Return
2374statement if it invokes a control method that is not resolved. ACPICA BZ
23751264.
2376
2377AcpiXtract: Improved input file validation: detection of binary files and
2378non-acpidump text files.
2379
2380----------------------------------------
238112 February 2016. Summary of changes for version 20160212:
2382
23831) ACPICA kernel-resident subsystem:
2384
2385Implemented full support for the ACPI 6.1 specification (released in
2386January). This version of the specification is available at:
2387http://www.uefi.org/specifications
2388
2389Only a relatively small number of changes were required in ACPICA to
2390support ACPI 6.1, in these areas:
2391- New predefined names
2392- New _HID values
2393- A new subtable for HEST
2394- A few other header changes for new values
2395
2396Ensure \_SB_._INI is executed before any _REG methods are executed. There
2397appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2398
2399Reverted a change made in version 20151218 which enabled method
2400invocations to be targets of various ASL operators (SuperName and Target
2401grammar elements). While the new behavior is supported by the ACPI
2402specification, other AML interpreters do not support this behavior and
2403never will. The ACPI specification will be updated for ACPI 6.2 to remove
2404this support. Therefore, the change was reverted to the original ACPICA
2405behavior.
2406
2407ACPICA now supports the GCC 6 compiler.
2408
2409Current Release: (Note: build changes increased sizes)
2410    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2411    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2412Previous Release:
2413    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2414    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2415
2416
24172) iASL Compiler/Disassembler and Tools:
2418
2419Completed full support for the ACPI 6.0 External() AML opcode. The
2420compiler emits an external AML opcode for each ASL External statement.
2421This opcode is used by the disassembler to assist with the disassembly of
2422external control methods by specifying the required number of arguments
2423for the method. AML interpreters do not use this opcode. To ensure that
2424interpreters do not even see the opcode, a block of one or more external
2425opcodes is surrounded by an "If(0)" construct. As this feature becomes
2426commonly deployed in BIOS code, the ability of disassemblers to correctly
2427disassemble AML code will be greatly improved. David Box.
2428
2429iASL: Implemented support for an optional cross-reference output file.
2430The -lx option will create a the cross-reference file with the suffix
2431"xrf". Three different types of cross-reference are created in this file:
2432- List of object references made from within each control method
2433- Invocation (caller) list for each user-defined control method
2434- List of references to each non-method object in the namespace
2435
2436iASL: Method invocations as ASL Target operands are now disallowed and
2437flagged as errors in preparation for ACPI 6.2 (see the description of the
2438problem above).
2439
2440----------------------------------------
24418 January 2016. Summary of changes for version 20160108:
2442
24431) ACPICA kernel-resident subsystem:
2444
2445Updated all ACPICA copyrights and signons to 2016: Added the 2016
2446copyright to all source code module headers and utility/tool signons.
2447This includes the standard Linux dual-license header. This affects
2448virtually every file in the ACPICA core subsystem, iASL compiler, all
2449ACPICA utilities, and the ACPICA test suite.
2450
2451Fixed a regression introduced in version 20151218 concerning the
2452execution of so-called module-level ASL/AML code. Namespace objects
2453created under a module-level If() construct were not properly/fully
2454entered into the namespace and could cause an interpreter fault when
2455accessed.
2456
2457Example Code and Data Size: These are the sizes for the OS-independent
2458acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2459debug version of the code includes the debug output trace mechanism and
2460has a much larger code and data size.
2461
2462Current Release:
2463    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2464    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2465  Previous Release:
2466    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2467    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2468
2469
24702) iASL Compiler/Disassembler and Tools:
2471
2472Fixed a problem with the compilation of the GpioIo and GpioInt resource
2473descriptors. The _PIN field name was incorrectly defined to be an array
2474of 32-bit values, but the _PIN values are in fact 16 bits each. This
2475would cause incorrect bit width warnings when using Word (16-bit) fields
2476to access the descriptors.
2477
2478
2479----------------------------------------
248018 December 2015. Summary of changes for version 20151218:
2481
24821) ACPICA kernel-resident subsystem:
2483
2484Implemented per-AML-table execution of "module-level code" as individual
2485ACPI tables are loaded into the namespace during ACPICA initialization.
2486In other words, any module-level code within an AML table is executed
2487immediately after the table is loaded, instead of batched and executed
2488after all of the tables have been loaded. This provides compatibility
2489with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2490David Box.
2491
2492To fully support the feature above, the default operation region handlers
2493for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2494installed before any ACPI tables are loaded. This enables module-level
2495code to access these address spaces during the table load and module-
2496level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2497Box.
2498
2499Implemented several changes to the internal _REG support in conjunction
2500with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2501utilities for the changes above. Although these tools were changed, host
2502operating systems that simply use the default handlers for SystemMemory,
2503SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2504
2505For example, in the code below, DEV1 is conditionally added to the
2506namespace by the DSDT via module-level code that accesses an operation
2507region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2508created immediately after the DSDT is loaded in order for the SSDT to
2509successfully reference DEV1. Previously, this code would cause an
2510AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2511fully supported by ACPICA.
2512
2513    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2514    {
2515        OperationRegion (OPR1, SystemMemory, 0x400, 32)
2516        Field (OPR1, AnyAcc, NoLock, Preserve)
2517        {
2518            FLD1, 1
2519        }
2520        If (FLD1)
2521        {
2522            Device (\DEV1)
2523            {
2524            }
2525        }
2526    }
2527    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2528    {
2529        External (\DEV1, DeviceObj)
2530        Scope (\DEV1)
2531        {
2532        }
2533    }
2534
2535Fixed an AML interpreter problem where control method invocations were
2536not handled correctly when the invocation was itself a SuperName argument
2537to another ASL operator. In these cases, the method was not invoked.
2538ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2539argument:
2540    Store
2541    Acquire, Wait
2542    CondRefOf, RefOf
2543    Decrement, Increment
2544    Load, Unload
2545    Notify
2546    Signal, Release, Reset
2547    SizeOf
2548
2549Implemented automatic String-to-ObjectReference conversion support for
2550packages returned by predefined names (such as _DEP). A common BIOS error
2551is to add double quotes around an ObjectReference namepath, which turns
2552the reference into an unexpected string object. This support detects the
2553problem and corrects it before the package is returned to the caller that
2554invoked the method. Lv Zheng.
2555
2556Implemented extensions to the Concatenate operator. Concatenate now
2557accepts any type of object, it is not restricted to simply
2558Integer/String/Buffer. For objects other than these 3 basic data types,
2559the argument is treated as a string containing the name of the object
2560type. This expands the utility of Concatenate and the Printf/Fprintf
2561macros. ACPICA BZ 1222.
2562
2563Cleaned up the output of the ASL Debug object. The timer() value is now
2564optional and no longer emitted by default. Also, the basic data types of
2565Integer/String/Buffer are simply emitted as their values, without a data
2566type string -- since the data type is obvious from the output. ACPICA BZ
25671221.
2568
2569Example Code and Data Size: These are the sizes for the OS-independent
2570acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2571debug version of the code includes the debug output trace mechanism and
2572has a much larger code and data size.
2573
2574  Current Release:
2575    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2576    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2577  Previous Release:
2578    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2579    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2580
2581
25822) iASL Compiler/Disassembler and Tools:
2583
2584iASL: Fixed some issues with the ASL Include() operator. This operator
2585was incorrectly defined in the iASL parser rules, causing a new scope to
2586be opened for the code within the include file. This could lead to
2587several issues, including allowing ASL code that is technically illegal
2588and not supported by AML interpreters. Note, this does not affect the
2589related #include preprocessor operator. ACPICA BZ 1212.
2590
2591iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2592operator is essentially an ASL macro since there is no AML opcode
2593associated with it. The code emitted by the iASL compiler for ElseIf is
2594an Else opcode followed immediately by an If opcode. The disassembler
2595will now emit an ElseIf if it finds an Else immediately followed by an
2596If. This simplifies the decoded ASL, especially for deeply nested
2597If..Else and large Switch constructs. Thus, the disassembled code more
2598closely follows the original source ASL. ACPICA BZ 1211. Example:
2599
2600    Old disassembly:
2601        Else
2602        {
2603            If (Arg0 == 0x02)
2604            {
2605                Local0 = 0x05
2606            }
2607        }
2608
2609    New disassembly:
2610        ElseIf (Arg0 == 0x02)
2611        {
2612            Local0 = 0x05
2613        }
2614
2615AcpiExec: Added support for the new module level code behavior and the
2616early region installation. This required a small change to the
2617initialization, since AcpiExec must install its own operation region
2618handlers.
2619
2620AcpiExec: Added support to make the debug object timer optional. Default
2621is timer disabled. This cleans up the debug object output -- the timer
2622data is rarely used.
2623
2624AcpiExec: Multiple ACPI tables are now loaded in the order that they
2625appear on the command line. This can be important when there are
2626interdependencies/references between the tables.
2627
2628iASL/Templates. Add support to generate template files with multiple
2629SSDTs within a single output file. Also added ommand line support to
2630specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
26311223, 1225.
2632
2633
2634----------------------------------------
263524 November 2015. Summary of changes for version 20151124:
2636
26371) ACPICA kernel-resident subsystem:
2638
2639Fixed a possible regression for a previous update to FADT handling. The
2640FADT no longer has a fixed table ID, causing some issues with code that
2641was hardwired to a specific ID. Lv Zheng.
2642
2643Fixed a problem where the method auto-serialization could interfere with
2644the current SyncLevel. This change makes the auto-serialization support
2645transparent to the SyncLevel support and management.
2646
2647Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2648interface is intended for early access to the namespace during the
2649initial namespace device discovery walk. The _SUB method has been seen to
2650access operation regions in some cases, causing errors because the
2651operation regions are not fully initialized.
2652
2653AML Debugger: Fixed some issues with the terminate/quit/exit commands
2654that can cause faults. Lv Zheng.
2655
2656AML Debugger: Add thread ID support so that single-step mode only applies
2657to the AML Debugger thread. This prevents runtime errors within some
2658kernels. Lv Zheng.
2659
2660Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2661methods that are invoked by this interface are optional, removed warnings
2662emitted for the case where one or more of these methods do not exist.
2663ACPICA BZ 1208, original change by Prarit Bhargava.
2664
2665Made a major pass through the entire ACPICA source code base to
2666standardize formatting that has diverged a bit over time. There are no
2667functional changes, but this will of course cause quite a few code
2668differences from the previous ACPICA release.
2669
2670Example Code and Data Size: These are the sizes for the OS-independent
2671acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2672debug version of the code includes the debug output trace mechanism and
2673has a much larger code and data size.
2674
2675  Current Release:
2676    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2677    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2678  Previous Release:
2679    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2680    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2681
2682
26832) iASL Compiler/Disassembler and Tools:
2684
2685iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2686definition blocks within a single ASL file and the resulting AML file.
2687Support for this type of file was also added to the various tools that
2688use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2689example code below shows two definition blocks within the same file:
2690
2691    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
26920x12345678)
2693    {
2694    }
2695    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2696    {
2697    }
2698
2699iASL: Enhanced typechecking for the Name() operator. All expressions for
2700the value of the named object must be reduced/folded to a single constant
2701at compile time, as per the ACPI specification (the AML definition of
2702Name()).
2703
2704iASL: Fixed some code indentation issues for the -ic and -ia options (C
2705and assembly headers). Now all emitted code correctly begins in column 1.
2706
2707iASL: Added an error message for an attempt to open a Scope() on an
2708object defined in an SSDT. The DSDT is always loaded into the namespace
2709first, so any attempt to open a Scope on an SSDT object will fail at
2710runtime.
2711
2712
2713----------------------------------------
271430 September 2015. Summary of changes for version 20150930:
2715
27161) ACPICA kernel-resident subsystem:
2717
2718Debugger: Implemented several changes and bug fixes to assist support for
2719the in-kernel version of the AML debugger. Lv Zheng.
2720- Fix the "predefined" command for in-kernel debugger.
2721- Do not enter debug command loop for the help and version commands.
2722- Disallow "execute" command during execution/single-step of a method.
2723
2724Interpreter: Updated runtime typechecking for all operators that have
2725target operands. The operand is resolved and validated that it is legal.
2726For example, the target cannot be a non-data object such as a Device,
2727Mutex, ThermalZone, etc., as per the ACPI specification.
2728
2729Debugger: Fixed the double-mutex user I/O handshake to work when local
2730deadlock detection is enabled.
2731
2732Debugger: limited display of method locals and arguments (LocalX and
2733ArgX) to only those that have actually been initialized. This prevents
2734lines of extraneous output.
2735
2736Updated the definition of the NFIT table to correct the bit polarity of
2737one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2738
2739Example Code and Data Size: These are the sizes for the OS-independent
2740acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2741debug version of the code includes the debug output trace mechanism and
2742has a much larger code and data size.
2743
2744  Current Release:
2745    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2746    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2747  Previous Release:
2748    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2749    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2750
2751
27522) iASL Compiler/Disassembler and Tools:
2753
2754iASL: Improved the compile-time typechecking for operands of many of the
2755ASL operators:
2756
2757-- Added an option to disable compiler operand/operator typechecking (-
2758ot).
2759
2760-- For the following operators, the TermArg operands are now validated
2761when possible to be Integer data objects: BankField, OperationRegion,
2762DataTableRegion, Buffer, and Package.
2763
2764-- Store (Source, Target): Both the source and target operands are
2765resolved and checked that the operands are both legal. For example,
2766neither operand can be a non-data object such as a Device, Mutex,
2767ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
2768operator can be used to store an object to any type of target object.
2769
2770-- Store (Source, Target): If the source is a Package object, the target
2771must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
2772is a Package, the source must also be a Package.
2773
2774-- Store (Source, Target): A warning is issued if the source and target
2775resolve to the identical named object.
2776
2777-- Store (Source, <method invocation>): An error is generated for the
2778target method invocation, as this construct is not supported by the AML
2779interpreter.
2780
2781-- For all ASL math and logic operators, the target operand must be a
2782data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
2783includes the function return value also.
2784
2785-- External declarations are also included in the typechecking where
2786possible. External objects defined using the UnknownObj keyword cannot be
2787typechecked, however.
2788
2789iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
2790operator:
2791- Legacy code: Index(PKG1, 3)
2792- New ASL+ code: PKG1[3]
2793This completes the ACPI 6.0 ASL+ support as it was the only operator not
2794supported.
2795
2796iASL: Fixed the file suffix for the preprocessor output file (.i). Two
2797spaces were inadvertently appended to the filename, causing file access
2798and deletion problems on some systems.
2799
2800ASL Test Suite (ASLTS): Updated the master makefile to generate all
2801possible compiler output files when building the test suite -- thus
2802exercising these features of the compiler. These files are automatically
2803deleted when the test suite exits.
2804
2805
2806----------------------------------------
280718 August 2015. Summary of changes for version 20150818:
2808
28091) ACPICA kernel-resident subsystem:
2810
2811Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
2812Zheng. ACPICA BZ 1186.
2813
2814Completed development to ensure that the ACPICA Disassembler and Debugger
2815are fully standalone components of ACPICA. Removed cross-component
2816dependences. Lv Zheng.
2817
2818The max-number-of-AML-loops is now runtime configurable (previously was
2819compile-time only). This is essentially a loop timeout to force-abort
2820infinite AML loops. ACPCIA BZ 1192.
2821
2822Debugger: Cleanup output to dump ACPI names and namepaths without any
2823trailing underscores. Lv Zheng. ACPICA BZ 1135.
2824
2825Removed unnecessary conditional compilations across the Debugger and
2826Disassembler components where entire modules could be left uncompiled.
2827
2828The aapits test is deprecated and has been removed from the ACPICA git
2829tree. The test has never been completed and has not been maintained, thus
2830becoming rather useless. ACPICA BZ 1015, 794.
2831
2832A batch of small changes to close bugzilla and other reports:
2833- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2834- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2835- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2836- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
2837Moore.
2838- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
2839ACPICA BZ 1184.
2840- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
2841operators.
2842- Debugger: Split debugger initialization/termination interfaces. Lv
2843Zheng.
2844- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
2845identification.
2846- AcpiExec: Add debug message during _REG method phase during table
2847load/init.
2848- AcpiNames: Fix a regression where some output was missing and no longer
2849emitted.
2850- Debugger: General cleanup and simplification. Lv Zheng.
2851- Disassembler: Cleanup use of several global option variables. Lv Zheng.
2852
2853Example Code and Data Size: These are the sizes for the OS-independent
2854acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2855debug version of the code includes the debug output trace mechanism and
2856has a much larger code and data size.
2857
2858  Current Release:
2859    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2860    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2861  Previous Release:
2862    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2863    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2864
2865
28662) iASL Compiler/Disassembler and Tools:
2867
2868AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
2869were not handled properly and caused load errors. Now, properly invoke
2870and use the ACPICA auto-reallocate mechanism for ACPI table data
2871structures. ACPICA BZ 1188
2872
2873AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
2874BZ 1190.
2875
2876AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
2877AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
2878executed during initialization. ACPICA BZ 1187, 1189.
2879
2880iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
2881that corresponds to each disassembled ASL statement, to simplify
2882debugging. ACPICA BZ 1191.
2883
2884Debugger: Add option to the "objects" command to display a summary of the
2885current namespace objects (Object type and count). This is displayed if
2886the command is entered with no arguments.
2887
2888AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2889
2890
2891----------------------------------------
289217 July 2015. Summary of changes for version 20150717:
2893
28941) ACPICA kernel-resident subsystem:
2895
2896Improved the partitioning between the Debugger and Disassembler
2897components. This allows the Debugger to be used standalone within kernel
2898code without the Disassembler (which is used for single stepping also).
2899This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2900
2901Debugger: Implemented a new command to trace the execution of control
2902methods (Trace). This is especially useful for the in-kernel version of
2903the debugger when file I/O may not be available for method trace output.
2904See the ACPICA reference for more information. Lv Zheng.
2905
2906Moved all C library prototypes (used for the local versions of these
2907functions when requested) to a new header, acclib.h
2908Cleaned up the use of non-ANSI C library functions. These functions are
2909implemented locally in ACPICA. Moved all such functions to a common
2910source file, utnonansi.c
2911
2912Debugger: Fixed a problem with the "!!" command (get last command
2913executed) where the debugger could enter an infinite loop and eventually
2914crash.
2915
2916Removed the use of local macros that were used for some of the standard C
2917library functions to automatically cast input parameters. This mostly
2918affected the is* functions where the input parameter is defined to be an
2919int. This required a few modifications to the main ACPICA source code to
2920provide casting for these functions and eliminate possible compiler
2921warnings for these parameters.
2922
2923Across the source code, added additional status/error checking to resolve
2924issues discovered by static source code analysis tools such as Coverity.
2925
2926Example Code and Data Size: These are the sizes for the OS-independent
2927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2928debug version of the code includes the debug output trace mechanism and
2929has a much larger code and data size.
2930
2931  Current Release:
2932    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2933    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2934  Previous Release:
2935    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2936    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2937
2938
29392) iASL Compiler/Disassembler and Tools:
2940
2941iASL: Fixed a regression where the device map file feature no longer
2942worked properly when used in conjunction with the disassembler. It only
2943worked properly with the compiler itself.
2944
2945iASL: Implemented a new warning for method LocalX variables that are set
2946but never used (similar to a C compiler such as gcc). This also applies
2947to ArgX variables that are not defined by the parent method, and are
2948instead (legally) used as local variables.
2949
2950iASL/Preprocessor: Finished the pass-through of line numbers from the
2951preprocessor to the compiler. This ensures that compiler errors/warnings
2952have the correct original line numbers and filenames, regardless of any
2953#include files.
2954
2955iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2956pass-through of comments to the preprocessor output file (which becomes
2957the compiler input file). Also fixed a problem with // comments that
2958appear after a math expression.
2959
2960iASL: Added support for the TCPA server table to the table compiler and
2961template generator. (The client table was already previously supported)
2962
2963iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
2964identify the iASL compiler.
2965
2966Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
2967multiple times. The new names are ACPI_SIGN_NEGATIVE and
2968ACPI_SIGN_POSITIVE.
2969
2970AcpiHelp: Update to expand help messages for the iASL preprocessor
2971directives.
2972
2973
2974----------------------------------------
297519 June 2015. Summary of changes for version 20150619:
2976
2977Two regressions in version 20150616 have been addressed:
2978
2979Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
2980etc.) This update changes ACPICA to only use the standard headers for
2981functions, or the prototypes for the local versions of the C library
2982functions. Across the source code, this required some additional casts
2983for some Clib invocations for portability. Moved all local prototypes to
2984a new file, acclib.h
2985
2986Fixes several problems with recent changes to the handling of the FACS
2987table that could cause some systems not to boot.
2988
2989
2990----------------------------------------
299116 June 2015. Summary of changes for version 20150616:
2992
2993
29941) ACPICA kernel-resident subsystem:
2995
2996Across the entire ACPICA source code base, the various macros for the C
2997library functions (such as ACPI_STRLEN, etc.) have been removed and
2998replaced by the standard C library names (strlen, etc.) The original
2999purpose for these macros is no longer applicable. This simplification
3000reduces the number of macros used in the ACPICA source code
3001significantly, improving readability and maintainability.
3002
3003Implemented support for a new ACPI table, the OSDT. This table, the
3004"override" SDT, can be loaded directly by the host OS at boot time. It
3005enables the replacement of existing namespace objects that were installed
3006via the DSDT and/or SSDTs. The primary purpose for this is to replace
3007buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3008for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3009Moore.
3010
3011Added support for systems with (improperly) two FACS tables -- a "32-bit"
3012table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3013X field). This change will support both automatically. There continues to
3014be systems found with this issue. This support requires a change to the
3015AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3016been added to allow the host to select which FACS is desired
3017(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3018details Lv Zheng.
3019
3020Added a new feature to allow for systems that do not contain an FACS.
3021Although this is already supported on hardware-reduced platforms, the
3022feature has been extended for all platforms. The reasoning is that we do
3023not want to abort the entire ACPICA initialization just because the
3024system is seriously buggy and has no FACS.
3025
3026Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3027not correctly transcribed from the ACPI specification in ACPICA version
302820150515.
3029
3030Implemented support for the _CLS object in the AcpiGetObjectInfo external
3031interface.
3032
3033Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3034recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3035compiler also updated. Note: The TCPA "server" table is not supported by
3036the disassembler/table-compiler at this time.
3037
3038ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3039
3040Example Code and Data Size: These are the sizes for the OS-independent
3041acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3042debug version of the code includes the debug output trace mechanism and
3043has a much larger code and data size.
3044
3045  Current Release:
3046    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3047    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3048  Previous Release:
3049    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3050    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3051
3052
30532) iASL Compiler/Disassembler and Tools:
3054
3055Disassembler: Fixed a problem with the new symbolic operator disassembler
3056where incorrect ASL code could be emitted in some cases for the "non-
3057commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3058ShiftRight. The actual problem cases seem to be rather unusual in common
3059ASL code, however. David Box.
3060
3061Modified the linux version of acpidump to obtain ACPI tables from not
3062just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3063Zheng.
3064
3065iASL: Fixed a problem where the user preprocessor output file (.i)
3066contained extra data that was not expected. The compiler was using this
3067file as a temporary file and passed through #line directives in order to
3068keep compiler error messages in sync with the input file and line number
3069across multiple include files. The (.i) is no longer a temporary file as
3070the compiler uses a new, different file for the original purpose.
3071
3072iASL: Fixed a problem where comments within the original ASL source code
3073file were not passed through to the preprocessor output file, nor any
3074listing files.
3075
3076iASL: Fixed some issues for the handling of the "#include" preprocessor
3077directive and the similar (but not the same) "Include" ASL operator.
3078
3079iASL: Add support for the new OSDT in both the disassembler and compiler.
3080
3081iASL: Fixed a problem with the constant folding support where a Buffer
3082object could be incorrectly generated (incorrectly formed) during a
3083conversion to a Store() operator.
3084
3085AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3086description text for the _REV predefined name. _REV now permanently
3087returns 2, as per the ACPI 6.0 specification.
3088
3089Debugger: Enhanced the output of the Debug ASL object for references
3090produced by the Index operator. For Buffers and strings, only output the
3091actual byte pointed to by the index. For packages, only print the single
3092package element decoded by the index. Previously, the entire
3093buffer/string/package was emitted.
3094
3095iASL/Table-compiler: Fixed a regression where the "generic" data types
3096were no longer recognized, causing errors.
3097
3098
3099----------------------------------------
310015 May 2015. Summary of changes for version 20150515:
3101
3102This release implements most of ACPI 6.0 as described below.
3103
31041) ACPICA kernel-resident subsystem:
3105
3106Implemented runtime argument checking and return value checking for all
3107new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3108_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3109
3110Example Code and Data Size: These are the sizes for the OS-independent
3111acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3112debug version of the code includes the debug output trace mechanism and
3113has a much larger code and data size.
3114
3115  Current Release:
3116    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3117    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3118  Previous Release:
3119    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3120    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3121
3122
31232) iASL Compiler/Disassembler and Tools:
3124
3125iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3126names (argument count validation and return value typechecking.)
3127
3128iASL disassembler and table compiler: implemented support for all new
3129ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3130
3131iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3132tables: FADT, MADT.
3133
3134iASL preprocessor: Added a new directive to enable inclusion of binary
3135blobs into ASL code. The new directive is #includebuffer. It takes a
3136binary file as input and emits a named ascii buffer object into the ASL
3137code.
3138
3139AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3140
3141AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3142directives.
3143
3144AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3145tables.
3146
3147
3148----------------------------------------
314910 April 2015. Summary of changes for version 20150410:
3150
3151Reverted a change introduced in version 20150408 that caused
3152a regression in the disassembler where incorrect operator
3153symbols could be emitted.
3154
3155
3156----------------------------------------
315708 April 2015. Summary of changes for version 20150408:
3158
3159
31601) ACPICA kernel-resident subsystem:
3161
3162Permanently set the return value for the _REV predefined name. It now
3163returns 2 (was 5). This matches other ACPI implementations. _REV will be
3164deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3165for ACPI 2.0 and later. It should never be used to differentiate or
3166identify operating systems.
3167
3168Added the "Windows 2015" string to the _OSI support. ACPICA will now
3169return TRUE to a query with this string.
3170
3171Fixed several issues with the local version of the printf function.
3172
3173Added the C99 compiler option (-std=c99) to the Unix makefiles.
3174
3175  Current Release:
3176    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3177    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3178  Previous Release:
3179    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3180    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3181
3182
31832) iASL Compiler/Disassembler and Tools:
3184
3185iASL: Implemented an enhancement to the constant folding feature to
3186transform the parse tree to a simple Store operation whenever possible:
3187    Add (2, 3, X) ==> is converted to: Store (5, X)
3188    X = 2 + 3     ==> is converted to: Store (5, X)
3189
3190Updated support for the SLIC table (Software Licensing Description Table)
3191in both the Data Table compiler and the disassembler. The SLIC table
3192support now conforms to "Microsoft Software Licensing Tables (SLIC and
3193MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3194following the ACPI header is now defined to be "Proprietary Data", and as
3195such, can only be entered or displayed as a hex data block.
3196
3197Implemented full support for the MSDM table as described in the document
3198above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3199following the ACPI header is defined to be "Proprietary Data", and can
3200only be entered or displayed as a hex data block.
3201
3202Implemented the -Pn option for the iASL Table Compiler (was only
3203implemented for the ASL compiler). This option disables the iASL
3204preprocessor.
3205
3206Disassembler: For disassembly of Data Tables, added a comment field
3207around the Ascii equivalent data that is emitted as part of the "Raw
3208Table Data" block. This prevents the iASL Preprocessor from possible
3209confusion if/when the table is compiled.
3210
3211Disassembler: Added an option (-df) to force the disassembler to assume
3212that the table being disassembled contains valid AML. This feature is
3213useful for disassembling AML files that contain ACPI signatures other
3214than DSDT or SSDT (such as OEMx or other signatures).
3215
3216Changes for the EFI version of the tools:
32171) Fixed a build error/issue
32182) Fixed a cast warning
3219
3220iASL: Fixed a path issue with the __FILE__ operator by making the
3221directory prefix optional within the internal SplitInputFilename
3222function.
3223
3224Debugger: Removed some unused global variables.
3225
3226Tests: Updated the makefile for proper generation of the AAPITS suite.
3227
3228
3229----------------------------------------
323004 February 2015. Summary of changes for version 20150204:
3231
3232ACPICA kernel-resident subsystem:
3233
3234Updated all ACPICA copyrights and signons to 2014. Added the 2014
3235copyright to all module headers and signons, including the standard Linux
3236header. This affects virtually every file in the ACPICA core subsystem,
3237iASL compiler, all ACPICA utilities, and the test suites.
3238
3239Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3240A raw gpe handling mechanism was created to allow better handling of GPE
3241storms that aren't easily managed by the normal handler. The raw handler
3242allows disabling/renabling of the the GPE so that interrupt storms can be
3243avoided in cases where events cannot be timely serviced. In this
3244scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3245GPE. This API will leave the reference counts undisturbed, thereby
3246preventing unintentional clearing of the GPE when the intent in only to
3247temporarily disable it. Raw handlers allow enabling and disabling of a
3248GPE by removing GPE register locking. As such, raw handlers much provide
3249their own locks while using GPE API's to protect access to GPE data
3250structures.
3251Lv Zheng
3252
3253Events: Always modify GPE registers under the GPE lock.
3254Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3255values. Reported as bug by joe.liu@apple.com.
3256
3257Unix makefiles: Separate option to disable optimizations and
3258_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3259NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3260purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3261errors when building ACPICA. This allows disabling the option without
3262also having to disable optimazations.
3263David Box
3264
3265  Current Release:
3266    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3267    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3268
3269--
3270--------------------------------------
327107 November 2014. Summary of changes for version 20141107:
3272
3273This release is available at https://acpica.org/downloads
3274
3275This release introduces and implements language extensions to ASL that
3276provide support for symbolic ("C-style") operators and expressions. These
3277language extensions are known collectively as ASL+.
3278
3279
32801) iASL Compiler/Disassembler and Tools:
3281
3282Disassembler: Fixed a problem with disassembly of the UartSerialBus
3283macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3284Box.
3285
3286Disassembler: Fixed the Unicode macro support to add escape sequences.
3287All non-printable ASCII values are emitted as escape sequences, as well
3288as the standard escapes for quote and backslash. Ensures that the
3289disassembled macro can be correctly recompiled.
3290
3291iASL: Added Printf/Fprintf macros for formatted output. These macros are
3292translated to existing AML Concatenate and Store operations. Printf
3293writes to the ASL Debug object. Fprintf allows the specification of an
3294ASL name as the target. Only a single format specifier is required, %o,
3295since the AML interpreter dynamically converts objects to the required
3296type. David E. Box.
3297
3298    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3299                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3300                 ": Unexpected value for "), Arg1), ", "), Arg2),
3301                 " at line "), Arg3), Debug)
3302
3303    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3304                 Arg0, Arg1, Arg2, Arg3)
3305
3306    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3307                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3308
3309    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3310
3311iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3312ASL parse tree before the AML code is generated. This allows blocks of
3313ASL code to be removed in order to help locate and identify problem
3314devices and/or code. David E. Box.
3315
3316AcpiExec: Added support (-fi) for an optional namespace object
3317initialization file. This file specifies initial values for namespace
3318objects as necessary for debugging and testing different ASL code paths
3319that may be taken as a result of BIOS options.
3320
3321
33222) Overview of symbolic operator support for ASL (ASL+)
3323-------------------------------------------------------
3324
3325As an extension to the ASL language, iASL implements support for symbolic
3326(C-style) operators for math and logical expressions. This can greatly
3327simplify ASL code as well as improve both readability and
3328maintainability. These language extensions can exist concurrently with
3329all legacy ASL code and expressions.
3330
3331The symbolic extensions are 100% compatible with existing AML
3332interpreters, since no new AML opcodes are created. To implement the
3333extensions, the iASL compiler transforms the symbolic expressions into
3334the legacy ASL/AML equivalents at compile time.
3335
3336Full symbolic expressions are supported, along with the standard C
3337precedence and associativity rules.
3338
3339Full disassembler support for the symbolic expressions is provided, and
3340creates an automatic migration path for existing ASL code to ASL+ code
3341via the disassembly process. By default, the disassembler now emits ASL+
3342code with symbolic expressions. An option (-dl) is provided to force the
3343disassembler to emit legacy ASL code if desired.
3344
3345Below is the complete list of the currently supported symbolic operators
3346with examples. See the iASL User Guide for additional information.
3347
3348
3349ASL+ Syntax      Legacy ASL Equivalent
3350-----------      ---------------------
3351
3352    // Math operators
3353
3354Z = X + Y        Add (X, Y, Z)
3355Z = X - Y        Subtract (X, Y, Z)
3356Z = X * Y        Multiply (X, Y, Z)
3357Z = X / Y        Divide (X, Y, , Z)
3358Z = X % Y        Mod (X, Y, Z)
3359Z = X << Y       ShiftLeft (X, Y, Z)
3360Z = X >> Y       ShiftRight (X, Y, Z)
3361Z = X & Y        And (X, Y, Z)
3362Z = X | Y        Or (X, Y, Z)
3363Z = X ^ Y        Xor (X, Y, Z)
3364Z = ~X           Not (X, Z)
3365X++              Increment (X)
3366X--              Decrement (X)
3367
3368    // Logical operators
3369
3370(X == Y)         LEqual (X, Y)
3371(X != Y)         LNotEqual (X, Y)
3372(X < Y)          LLess (X, Y)
3373(X > Y)          LGreater (X, Y)
3374(X <= Y)         LLessEqual (X, Y)
3375(X >= Y)         LGreaterEqual (X, Y)
3376(X && Y)         LAnd (X, Y)
3377(X || Y)         LOr (X, Y)
3378(!X)             LNot (X)
3379
3380    // Assignment and compound assignment operations
3381
3382X = Y           Store (Y, X)
3383X += Y          Add (X, Y, X)
3384X -= Y          Subtract (X, Y, X)
3385X *= Y          Multiply (X, Y, X)
3386X /= Y          Divide (X, Y, , X)
3387X %= Y          Mod (X, Y, X)
3388X <<= Y         ShiftLeft (X, Y, X)
3389X >>= Y         ShiftRight (X, Y, X)
3390X &= Y          And (X, Y, X)
3391X |= Y          Or (X, Y, X)
3392X ^= Y          Xor (X, Y, X)
3393
3394
33953) ASL+ Examples:
3396-----------------
3397
3398Legacy ASL:
3399        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3400            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
34010x03FB),
3402            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3403        {
3404            And (MEMB, 0xFFFFFFF0, SRMB)
3405            Store (MEMB, Local2)
3406            Store (PDBM, Local1)
3407            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3408            Store (SRMB, MEMB)
3409            Or (PDBM, 0x02, PDBM)
3410        }
3411
3412ASL+ version:
3413        If (((R510 & 0x03FB) == 0x02E0) ||
3414            ((R520 & 0x03FB) == 0x02E0) ||
3415            ((R530 & 0x03FB) == 0x02E0) ||
3416            ((R540 & 0x03FB) == 0x02E0))
3417        {
3418            SRMB = (MEMB & 0xFFFFFFF0)
3419            Local2 = MEMB
3420            Local1 = PDBM
3421            PDBM &= 0xFFFFFFFFFFFFFFF9
3422            MEMB = SRMB
3423            PDBM |= 0x02
3424        }
3425
3426Legacy ASL:
3427        Store (0x1234, Local1)
3428        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3429        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3430        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3431        Store (Index (PKG1, 0x03), Local6)
3432        Store (Add (Local3, Local2), Debug)
3433        Add (Local1, 0x0F, Local2)
3434        Add (Local1, Multiply (Local2, Local3), Local2)
3435        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3436
3437ASL+ version:
3438        Local1 = 0x1234
3439        Local3 = (((Local1 + TEST) + 0x20) * Local2)
3440        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3441        Local3 = (Local1 + (TEST + (0x20 * Local2)))
3442        Local6 = Index (PKG1, 0x03)
3443        Debug = (Local3 + Local2)
3444        Local2 = (Local1 + 0x0F)
3445        Local2 = (Local1 + (Local2 * Local3))
3446        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3447
3448
3449----------------------------------------
345026 September 2014. Summary of changes for version 20140926:
3451
34521) ACPICA kernel-resident subsystem:
3453
3454Updated the GPIO operation region handler interface (GeneralPurposeIo).
3455In order to support GPIO Connection objects with multiple pins, along
3456with the related Field objects, the following changes to the interface
3457have been made: The Address is now defined to be the offset in bits of
3458the field unit from the previous invocation of a Connection. It can be
3459viewed as a "Pin Number Index" into the connection resource descriptor.
3460The BitWidth is the exact bit width of the field. It is usually one bit,
3461but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3462additional information and examples.
3463
3464GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3465corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3466by the firmware), so that they cannot fire until they are enabled via
3467AcpiUpdateAllGpes. Rafael J. Wysocki.
3468
3469Added a new return flag for the Event/GPE status interfaces --
3470AcpiGetEventStatus and AcpiGetGpeStatus. The new
3471ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3472GPE currently has a handler associated with it, and can thus actually
3473affect the system. Lv Zheng.
3474
3475Example Code and Data Size: These are the sizes for the OS-independent
3476acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3477debug version of the code includes the debug output trace mechanism and
3478has a much larger code and data size.
3479
3480  Current Release:
3481    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3482    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3483  Previous Release:
3484    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3485    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3486
34872) iASL Compiler/Disassembler and Tools:
3488
3489iASL: Fixed a memory allocation/free regression introduced in 20140828
3490that could cause the compiler to crash. This was introduced inadvertently
3491during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
34921113.
3493
3494iASL: Removed two error messages that have been found to create false
3495positives, until they can be fixed and fully validated (ACPICA BZ 1112):
34961) Illegal forward reference within a method
34972) Illegal reference across two methods
3498
3499iASL: Implemented a new option (-lm) to create a hardware mapping file
3500that summarizes all GPIO, I2C, SPI, and UART connections. This option
3501works for both the compiler and disassembler. See the iASL compiler user
3502guide for additional information and examples (section 6.4.6).
3503
3504AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3505version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3506a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3507
3508AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3509unless STDIN is actually a terminal. Assists with batch-mode processing.
3510ACPICA BZ 1114.
3511
3512Disassembler/AcpiHelp: Added another large group of recognized _HID
3513values.
3514
3515
3516----------------------------------------
351728 August 2014. Summary of changes for version 20140828:
3518
35191) ACPICA kernel-resident subsystem:
3520
3521Fixed a problem related to the internal use of the Timer() operator where
3522a 64-bit divide could cause an attempted link to a double-precision math
3523library. This divide is not actually necessary, so the code was
3524restructured to eliminate it. Lv Zheng.
3525
3526ACPI 5.1: Added support for the runtime validation of the _DSD package
3527(similar to the iASL support).
3528
3529ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3530SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3531
3532Example Code and Data Size: These are the sizes for the OS-independent
3533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3534debug version of the code includes the debug output trace mechanism and
3535has a much larger code and data size.
3536
3537  Current Release:
3538    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3539    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3540  Previous Release:
3541    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
3542    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3543
35442) iASL Compiler/Disassembler and Tools:
3545
3546AcpiExec: Fixed a problem on unix systems where the original terminal
3547state was not always properly restored upon exit. Seen when using the -v
3548option. ACPICA BZ 1104.
3549
3550iASL: Fixed a problem with the validation of the ranges/length within the
3551Memory24 resource descriptor. There was a boundary condition when the
3552range was equal to the (length -1) caused by the fact that these values
3553are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3554
3555Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3556polarity
3557flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3558is
3559now supported properly.
3560
3561ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3562in the disassembler, data table compiler, and table template generator.
3563
3564iASL: Added a requirement for Device() objects that one of either a _HID
3565or _ADR must exist within the scope of a Device, as per the ACPI
3566specification. Remove a similar requirement that was incorrectly in place
3567for the _DSD object.
3568
3569iASL: Added error detection for illegal named references within control
3570methods that would cause runtime failures. Now trapped as errors are: 1)
3571References to objects within a non-parent control method. 2) Forward
3572references (within a method) -- for control methods, AML interpreters use
3573a one-pass parse of control methods. ACPICA BZ 1008.
3574
3575iASL: Added error checking for dependencies related to the _PSx power
3576methods. ACPICA BZ 1029.
35771) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3578_PS3.
35792) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3580scope.
3581
3582iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3583deploying the existing object and string caches and adding new caches for
3584the table compiler.
3585
3586iASL: Split the huge parser source file into multiple subfiles to improve
3587manageability. Generation now requires the M4 macro preprocessor, which
3588is part of the Bison distribution on both unix and windows platforms.
3589
3590AcpiSrc: Fixed and removed all extraneous warnings generated during
3591entire ACPICA source code scan and/or conversion.
3592
3593
3594----------------------------------------
3595
359624 July 2014. Summary of changes for version 20140724:
3597
3598The ACPI 5.1 specification has been released and is available at:
3599http://uefi.org/specs/access
3600
3601
36020) ACPI 5.1 support in ACPICA:
3603
3604ACPI 5.1 is fully supported in ACPICA as of this release.
3605
3606New predefined names. Support includes iASL and runtime ACPICA
3607validation.
3608    _CCA (Cache Coherency Attribute).
3609    _DSD (Device-Specific Data). David Box.
3610
3611Modifications to existing ACPI tables. Support includes headers, iASL
3612Data Table compiler, disassembler, and the template generator.
3613    FADT - New fields and flags. Graeme Gregory.
3614    GTDT - One new subtable and new fields. Tomasz Nowicki.
3615    MADT - Two new subtables. Tomasz Nowicki.
3616    PCCT - One new subtable.
3617
3618Miscellaneous.
3619    New notification type for System Resource Affinity change events.
3620
3621
36221) ACPICA kernel-resident subsystem:
3623
3624Fixed a regression introduced in 20140627 where a fault can happen during
3625the deletion of Alias AML namespace objects. The problem affected both
3626the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3627
3628Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3629simple mechanism to enable wake GPEs that have no associated handler or
3630control method. Rafael Wysocki.
3631
3632Updated the AcpiEnableGpe interface to disallow the enable if there is no
3633handler or control method associated with the particular GPE. This will
3634help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3635
3636Updated GPE handling and dispatch by disabling the GPE before clearing
3637the status bit for edge-triggered GPEs. Lv Zheng.
3638
3639Added Timer() support to the AML Debug object. The current timer value is
3640now displayed with each invocation of (Store to) the debug object to
3641enable simple generation of execution times for AML code (method
3642execution for example.) ACPICA BZ 1093.
3643
3644Example Code and Data Size: These are the sizes for the OS-independent
3645acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3646debug version of the code includes the debug output trace mechanism and
3647has a much larger code and data size.
3648
3649  Current Release:
3650    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
3651    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3652  Previous Release:
3653    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3654    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3655
3656
36572) iASL Compiler/Disassembler and Tools:
3658
3659Fixed an issue with the recently added local printf implementation,
3660concerning width/precision specifiers that could cause incorrect output.
3661Lv Zheng. ACPICA BZ 1094.
3662
3663Disassembler: Added support to detect buffers that contain UUIDs and
3664disassemble them to an invocation of the ToUUID operator. Also emit
3665commented descriptions of known ACPI-related UUIDs.
3666
3667AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3668-u. Adds three new files.
3669
3670iASL: Update table compiler and disassembler for DMAR table changes that
3671were introduced in September 2013. With assistance by David Woodhouse.
3672
3673----------------------------------------
367427 June 2014. Summary of changes for version 20140627:
3675
36761) ACPICA kernel-resident subsystem:
3677
3678Formatted Output: Implemented local versions of standard formatted output
3679utilities such as printf, etc. Over time, it has been discovered that
3680there are in fact many portability issues with printf, and the addition
3681of this feature will fix/prevent these issues once and for all. Some
3682known issues are summarized below:
3683
36841) Output of 64-bit values is not portable. For example, UINT64 is %ull
3685for the Linux kernel and is %uI64 for some MSVC versions.
36862) Invoking printf consistently in a manner that is portable across both
368732-bit and 64-bit platforms is difficult at best in many situations.
36883) The output format for pointers varies from system to system (leading
3689zeros especially), and leads to inconsistent output from ACPICA across
3690platforms.
36914) Certain platform-specific printf formats may conflict with ACPICA use.
36925) If there is no local C library available, ACPICA now has local support
3693for printf.
3694
3695-- To address these printf issues in a complete manner, ACPICA now
3696directly implements a small subset of printf format specifiers, only
3697those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3698
3699Implemented support for ACPICA generation within the EFI environment.
3700Initially, the AcpiDump utility is supported in the UEFI shell
3701environment. Lv Zheng.
3702
3703Added a new external interface, AcpiLogError, to improve ACPICA
3704portability. This allows the host to redirect error messages from the
3705ACPICA utilities. Lv Zheng.
3706
3707Added and deployed new OSL file I/O interfaces to improve ACPICA
3708portability:
3709  AcpiOsOpenFile
3710  AcpiOsCloseFile
3711  AcpiOsReadFile
3712  AcpiOsWriteFile
3713  AcpiOsGetFileOffset
3714  AcpiOsSetFileOffset
3715There are C library implementations of these functions in the new file
3716service_layers/oslibcfs.c -- however, the functions can be implemented by
3717the local host in any way necessary. Lv Zheng.
3718
3719Implemented a mechanism to disable/enable ACPI table checksum validation
3720at runtime. This can be useful when loading tables very early during OS
3721initialization when it may not be possible to map the entire table in
3722order to compute the checksum. Lv Zheng.
3723
3724Fixed a buffer allocation issue for the Generic Serial Bus support.
3725Originally, a fixed buffer length was used. This change allows for
3726variable-length buffers based upon the protocol indicated by the field
3727access attributes. Reported by Lan Tianyu. Lv Zheng.
3728
3729Fixed a problem where an object detached from a namespace node was not
3730properly terminated/cleared and could cause a circular list problem if
3731reattached. ACPICA BZ 1063. David Box.
3732
3733Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3734
3735Fixed a possible memory leak in an error return path within the function
3736AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3737
3738Example Code and Data Size: These are the sizes for the OS-independent
3739acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3740debug version of the code includes the debug output trace mechanism and
3741has a much larger code and data size.
3742
3743  Current Release:
3744    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3745    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3746  Previous Release:
3747    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3748    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3749
3750
37512) iASL Compiler/Disassembler and Tools:
3752
3753Disassembler: Add dump of ASCII equivalent text within a comment at the
3754end of each line of the output for the Buffer() ASL operator.
3755
3756AcpiDump: Miscellaneous changes:
3757  Fixed repetitive table dump in -n mode.
3758  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
3759the ACPI 2.0 GUID fails.
3760
3761iASL: Fixed a problem where the compiler could fault if incorrectly given
3762an acpidump output file as input. ACPICA BZ 1088. David Box.
3763
3764AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
3765they are invoked without any arguments.
3766
3767Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
37681086. Colin Ian King.
3769
3770Disassembler: Cleaned up a block of code that extracts a parent Op
3771object. Added a comment that explains that the parent is guaranteed to be
3772valid in this case. ACPICA BZ 1069.
3773
3774
3775----------------------------------------
377624 April 2014. Summary of changes for version 20140424:
3777
37781) ACPICA kernel-resident subsystem:
3779
3780Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
3781Some of these tables are known to contain a trailing NULL entry. Lv
3782Zheng.
3783
3784Removed an extraneous error message for the case where there are a large
3785number of system GPEs (> 124). This was the "32-bit FADT register is too
3786long to convert to GAS struct" message, which is irrelevant for GPEs
3787since the GPEx_BLK_LEN fields of the FADT are always used instead of the
3788(limited capacity) GAS bit length. Also, several changes to ensure proper
3789support for GPE numbers > 255, where some "GPE number" fields were 8-bits
3790internally.
3791
3792Implemented and deployed additional configuration support for the public
3793ACPICA external interfaces. Entire classes of interfaces can now be
3794easily modified or configured out, replaced by stubbed inline functions
3795by default. Lv Zheng.
3796
3797Moved all public ACPICA runtime configuration globals to the public
3798ACPICA external interface file for convenience. Also, removed some
3799obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3800
3801Documentation: Added a new section to the ACPICA reference describing the
3802maximum number of GPEs that can be supported by the FADT-defined GPEs in
3803block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
3804reference.
3805
3806Example Code and Data Size: These are the sizes for the OS-independent
3807acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3808debug version of the code includes the debug output trace mechanism and
3809has a much larger code and data size.
3810
3811  Current Release:
3812    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3813    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3814  Previous Release:
3815    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3816    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3817
3818
38192) iASL Compiler/Disassembler and Tools:
3820
3821iASL and disassembler: Add full support for the LPIT table (Low Power
3822Idle Table). Includes support in the disassembler, data table compiler,
3823and template generator.
3824
3825AcpiDump utility:
38261) Add option to force the use of the RSDT (over the XSDT).
38272) Improve validation of the RSDP signature (use 8 chars instead of 4).
3828
3829iASL: Add check for predefined packages that are too large.  For
3830predefined names that contain subpackages, check if each subpackage is
3831too large. (Check for too small already exists.)
3832
3833Debugger: Updated the GPE command (which simulates a GPE by executing the
3834GPE code paths in ACPICA). The GPE device is now optional, and defaults
3835to the GPE 0/1 FADT-defined blocks.
3836
3837Unix application OSL: Update line-editing support. Add additional error
3838checking and take care not to reset terminal attributes on exit if they
3839were never set. This should help guarantee that the terminal is always
3840left in the previous state on program exit.
3841
3842
3843----------------------------------------
384425 March 2014. Summary of changes for version 20140325:
3845
38461) ACPICA kernel-resident subsystem:
3847
3848Updated the auto-serialize feature for control methods. This feature
3849automatically serializes all methods that create named objects in order
3850to prevent runtime errors. The update adds support to ignore the
3851currently executing AML SyncLevel when invoking such a method, in order
3852to prevent disruption of any existing SyncLevel priorities that may exist
3853in the AML code. Although the use of SyncLevels is relatively rare, this
3854change fixes a regression where an AE_AML_MUTEX_ORDER exception can
3855appear on some machines starting with the 20140214 release.
3856
3857Added a new external interface to allow the host to install ACPI tables
3858very early, before the namespace is even created. AcpiInstallTable gives
3859the host additional flexibility for ACPI table management. Tables can be
3860installed directly by the host as if they had originally appeared in the
3861XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
3862(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
3863with additional internal restructuring and cleanup. See the ACPICA
3864Reference for interface details. Lv Zheng.
3865
3866Added validation of the checksum for all incoming dynamically loaded
3867tables (via external interfaces or via AML Load/LoadTable operators). Lv
3868Zheng.
3869
3870Updated the use of the AcpiOsWaitEventsComplete interface during Notify
3871and GPE handler removal. Restructured calls to eliminate possible race
3872conditions. Lv Zheng.
3873
3874Added a warning for the use/execution of the ASL/AML Unload (table)
3875operator. This will help detect and identify machines that use this
3876operator if and when it is ever used. This operator has never been seen
3877in the field and the usage model and possible side-effects of the drastic
3878runtime action of a full table removal are unknown.
3879
3880Reverted the use of #pragma push/pop which was introduced in the 20140214
3881release. It appears that push and pop are not implemented by enough
3882compilers to make the use of this feature feasible for ACPICA at this
3883time. However, these operators may be deployed in a future ACPICA
3884release.
3885
3886Added the missing EXPORT_SYMBOL macros for the install and remove SCI
3887handler interfaces.
3888
3889Source code generation:
38901) Disabled the use of the "strchr" macro for the gcc-specific
3891generation. For some versions of gcc, this macro can periodically expose
3892a compiler bug which in turn causes compile-time error(s).
38932) Added support for PPC64 compilation. Colin Ian King.
3894
3895Example Code and Data Size: These are the sizes for the OS-independent
3896acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3897debug version of the code includes the debug output trace mechanism and
3898has a much larger code and data size.
3899
3900  Current Release:
3901    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3902    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3903  Previous Release:
3904    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3905    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3906
3907
39082) iASL Compiler/Disassembler and Tools:
3909
3910Disassembler: Added several new features to improve the readability of
3911the resulting ASL code. Extra information is emitted within comment
3912fields in the ASL code:
39131) Known _HID/_CID values are decoded to descriptive text.
39142) Standard values for the Notify() operator are decoded to descriptive
3915text.
39163) Target operands are expanded to full pathnames (in a comment) when
3917possible.
3918
3919Disassembler: Miscellaneous updates for extern() handling:
39201) Abort compiler if file specified by -fe option does not exist.
39212) Silence unnecessary warnings about argument count mismatches.
39223) Update warning messages concerning unresolved method externals.
39234) Emit "UnknownObj" keyword for externals whose type cannot be
3924determined.
3925
3926AcpiHelp utility:
39271) Added the -a option to display both the ASL syntax and the AML
3928encoding for an input ASL operator. This effectively displays all known
3929information about an ASL operator with one AcpiHelp invocation.
39302) Added substring match support (similar to a wildcard) for the -i
3931(_HID/PNP IDs) option.
3932
3933iASL/Disassembler: Since this tool does not yet support execution on big-
3934endian machines, added detection of endianness and an error message if
3935execution is attempted on big-endian. Support for big-endian within iASL
3936is a feature that is on the ACPICA to-be-done list.
3937
3938AcpiBin utility:
39391) Remove option to extract binary files from an acpidump; this function
3940is made obsolete by the AcpiXtract utility.
39412) General cleanup of open files and allocated buffers.
3942
3943
3944----------------------------------------
394514 February 2014. Summary of changes for version 20140214:
3946
39471) ACPICA kernel-resident subsystem:
3948
3949Implemented a new mechanism to proactively prevent problems with ill-
3950behaved reentrant control methods that create named ACPI objects. This
3951behavior is illegal as per the ACPI specification, but is nonetheless
3952frequently seen in the field. Previously, this could lead to an
3953AE_ALREADY_EXISTS exception if the method was actually entered by more
3954than one thread. This new mechanism detects such methods at table load
3955time and marks them "serialized" to prevent reentrancy. A new global
3956option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3957feature if desired. This mechanism and global option obsoletes and
3958supersedes the previous AcpiGbl_SerializeAllMethods option.
3959
3960Added the "Windows 2013" string to the _OSI support. ACPICA will now
3961respond TRUE to _OSI queries with this string. It is the stated policy of
3962ACPICA to add new strings to the _OSI support as soon as possible after
3963they are defined. See the full ACPICA _OSI policy which has been added to
3964the utilities/utosi.c file.
3965
3966Hardened/updated the _PRT return value auto-repair code:
39671) Do not abort the repair on a single subpackage failure, continue to
3968check all subpackages.
39692) Add check for the minimum subpackage length (4).
39703) Properly handle extraneous NULL package elements.
3971
3972Added support to avoid the possibility of infinite loops when traversing
3973object linked lists. Never allow an infinite loop, even in the face of
3974corrupted object lists.
3975
3976ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
3977pack(pop) directives to ensure that the ACPICA headers are independent of
3978compiler settings or other host headers.
3979
3980Example Code and Data Size: These are the sizes for the OS-independent
3981acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3982debug version of the code includes the debug output trace mechanism and
3983has a much larger code and data size.
3984
3985  Current Release:
3986    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3987    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3988  Previous Release:
3989    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3990    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3991
3992
39932) iASL Compiler/Disassembler and Tools:
3994
3995iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
3996first reserved field was incorrectly forced to have a value of zero. This
3997change correctly forces the field to have a value of one. ACPICA BZ 1081.
3998
3999Debugger: Added missing support for the "Extra" and "Data" subobjects
4000when displaying object data.
4001
4002Debugger: Added support to display entire object linked lists when
4003displaying object data.
4004
4005iASL: Removed the obsolete -g option to obtain ACPI tables from the
4006Windows registry. This feature has been superseded by the acpidump
4007utility.
4008
4009
4010----------------------------------------
401114 January 2014. Summary of changes for version 20140114:
4012
40131) ACPICA kernel-resident subsystem:
4014
4015Updated all ACPICA copyrights and signons to 2014. Added the 2014
4016copyright to all module headers and signons, including the standard Linux
4017header. This affects virtually every file in the ACPICA core subsystem,
4018iASL compiler, all ACPICA utilities, and the test suites.
4019
4020Improved parameter validation for AcpiInstallGpeBlock. Added the
4021following checks:
40221) The incoming device handle refers to type ACPI_TYPE_DEVICE.
40232) There is not already a GPE block attached to the device.
4024Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4025device.
4026
4027Correctly support "references" in the ACPI_OBJECT. This change fixes the
4028support to allow references (namespace nodes) to be passed as arguments
4029to control methods via the evaluate object interface. This is probably
4030most useful for testing purposes, however.
4031
4032Improved support for 32/64 bit physical addresses in printf()-like
4033output. This change improves the support for physical addresses in printf
4034debug statements and other output on both 32-bit and 64-bit hosts. It
4035consistently outputs the appropriate number of bytes for each host. The
4036%p specifier is unsatisfactory since it does not emit uniform output on
4037all hosts/clib implementations (on some, leading zeros are not supported,
4038leading to difficult-to-read output).
4039
4040Example Code and Data Size: These are the sizes for the OS-independent
4041acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4042debug version of the code includes the debug output trace mechanism and
4043has a much larger code and data size.
4044
4045  Current Release:
4046    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4047    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4048  Previous Release:
4049    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4050    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4051
4052
40532) iASL Compiler/Disassembler and Tools:
4054
4055iASL: Fix a possible fault when using the Connection() operator. Fixes a
4056problem if the parent Field definition for the Connection operator refers
4057to an operation region that does not exist. ACPICA BZ 1064.
4058
4059AcpiExec: Load of local test tables is now optional. The utility has the
4060capability to load some various tables to test features of ACPICA.
4061However, there are enough of them that the output of the utility became
4062confusing. With this change, only the required local tables are displayed
4063(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4064line specification. This makes the default output simler and easier to
4065understand. The -el command line option restores the original behavior
4066for testing purposes.
4067
4068AcpiExec: Added support for overlapping operation regions. This change
4069expands the simulation of operation regions by supporting regions that
4070overlap within the given address space. Supports SystemMemory and
4071SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4072
4073AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4074allows AcpiExec to simulate these address spaces, similar to the current
4075support for SystemMemory and SystemIO.
4076
4077Debugger: Added new command to read/write/compare all namespace objects.
4078The command "test objects" will exercise the entire namespace by writing
4079new values to each data object, and ensuring that the write was
4080successful. The original value is then restored and verified.
4081
4082Debugger: Added the "test predefined" command. This change makes this
4083test public and puts it under the new "test" command. The test executes
4084each and every predefined name within the current namespace.
4085
4086
4087----------------------------------------
408818 December 2013. Summary of changes for version 20131218:
4089
4090Global note: The ACPI 5.0A specification was released this month. There
4091are no changes needed for ACPICA since this release of ACPI is an
4092errata/clarification release. The specification is available at
4093acpi.info.
4094
4095
40961) ACPICA kernel-resident subsystem:
4097
4098Added validation of the XSDT root table if it is present. Some older
4099platforms contain an XSDT that is ill-formed or otherwise invalid (such
4100as containing some or all entries that are NULL pointers). This change
4101adds a new function to validate the XSDT before actually using it. If the
4102XSDT is found to be invalid, ACPICA will now automatically fall back to
4103using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4104ACPICA and enhanced by Lv Zheng and Bob Moore.
4105
4106Added a runtime option to ignore the XSDT and force the use of the RSDT.
4107This change adds a runtime option that will force ACPICA to use the RSDT
4108instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4109requires that an XSDT be used instead of the RSDT, the XSDT has been
4110found to be corrupt or ill-formed on some machines. Lv Zheng.
4111
4112Added a runtime option to favor 32-bit FADT register addresses over the
411364-bit addresses. This change adds an option to favor 32-bit FADT
4114addresses when there is a conflict between the 32-bit and 64-bit versions
4115of the same register. The default behavior is to use the 64-bit version
4116in accordance with the ACPI specification. This can now be overridden via
4117the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4118
4119During the change above, the internal "Convert FADT" and "Verify FADT"
4120functions have been merged to simplify the code, making it easier to
4121understand and maintain. ACPICA BZ 933.
4122
4123Improve exception reporting and handling for GPE block installation.
4124Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4125status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4126
4127Added helper macros to extract bus/segment numbers from the HEST table.
4128This change adds two macros to extract the encoded bus and segment
4129numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4130Betty Dall <betty.dall@hp.com>
4131
4132Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4133by ACPICA. It is not a public macro, so it should have no effect on
4134existing OSV code. Lv Zheng.
4135
4136Example Code and Data Size: These are the sizes for the OS-independent
4137acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4138debug version of the code includes the debug output trace mechanism and
4139has a much larger code and data size.
4140
4141  Current Release:
4142    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4143    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4144  Previous Release:
4145    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4146    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4147
4148
41492) iASL Compiler/Disassembler and Tools:
4150
4151Disassembler: Improved pathname support for emitted External()
4152statements. This change adds full pathname support for external names
4153that have been resolved internally by the inclusion of additional ACPI
4154tables (via the iASL -e option). Without this change, the disassembler
4155can emit multiple externals for the same object, or it become confused
4156when the Scope() operator is used on an external object. Overall, greatly
4157improves the ability to actually recompile the emitted ASL code when
4158objects a referenced across multiple ACPI tables. Reported by Michael
4159Tsirkin (mst@redhat.com).
4160
4161Tests/ASLTS: Updated functional control suite to execute with no errors.
4162David Box. Fixed several errors related to the testing of the interpreter
4163slack mode. Lv Zheng.
4164
4165iASL: Added support to detect names that are declared within a control
4166method, but are unused (these are temporary names that are only valid
4167during the time the method is executing). A remark is issued for these
4168cases. ACPICA BZ 1022.
4169
4170iASL: Added full support for the DBG2 table. Adds full disassembler,
4171table compiler, and template generator support for the DBG2 table (Debug
4172Port 2 table).
4173
4174iASL: Added full support for the PCCT table, update the table definition.
4175Updates the PCCT table definition in the actbl3.h header and adds table
4176compiler and template generator support.
4177
4178iASL: Added an option to emit only error messages (no warnings/remarks).
4179The -ve option will enable only error messages, warnings and remarks are
4180suppressed. This can simplify debugging when only the errors are
4181important, such as when an ACPI table is disassembled and there are many
4182warnings and remarks -- but only the actual errors are of real interest.
4183
4184Example ACPICA code (source/tools/examples): Updated the example code so
4185that it builds to an actual working program, not just example code. Added
4186ACPI tables and execution of an example control method in the DSDT. Added
4187makefile support for Unix generation.
4188
4189
4190----------------------------------------
419115 November 2013. Summary of changes for version 20131115:
4192
4193This release is available at https://acpica.org/downloads
4194
4195
41961) ACPICA kernel-resident subsystem:
4197
4198Resource Manager: Fixed loop termination for the "get AML length"
4199function. The loop previously had an error termination on a NULL resource
4200pointer, which can never happen since the loop simply increments a valid
4201resource pointer. This fix changes the loop to terminate with an error on
4202an invalid end-of-buffer condition. The problem can be seen as an
4203infinite loop by callers to AcpiSetCurrentResources with an invalid or
4204corrupted resource descriptor, or a resource descriptor that is missing
4205an END_TAG descriptor. Reported by Dan Carpenter
4206<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4207
4208Table unload and ACPICA termination: Delete all attached data objects
4209during namespace node deletion. This fix updates namespace node deletion
4210to delete the entire list of attached objects (attached via
4211AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
42121024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4213
4214ACPICA termination: Added support to delete all objects attached to the
4215root namespace node. This fix deletes any and all objects that have been
4216attached to the root node via AcpiAttachData. Previously, none of these
4217objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4218
4219Debug output: Do not emit the function nesting level for the in-kernel
4220build. The nesting level is really only useful during a single-thread
4221execution. Therefore, only enable this output for the AcpiExec utility.
4222Also, only emit the thread ID when executing under AcpiExec (Context
4223switches are still always detected and a message is emitted). ACPICA BZ
4224972.
4225
4226Example Code and Data Size: These are the sizes for the OS-independent
4227acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4228debug version of the code includes the debug output trace mechanism and
4229has a much larger code and data size.
4230
4231  Current Release:
4232    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4233    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4234  Previous Release:
4235    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4236    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4237
4238
42392) iASL Compiler/Disassembler and Tools:
4240
4241AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4242correct portable POSIX header for terminal control functions.
4243
4244Disassembler: Fixed control method invocation issues related to the use
4245of the CondRefOf() operator. The problem is seen in the disassembly where
4246control method invocations may not be disassembled properly if the
4247control method name has been used previously as an argument to CondRefOf.
4248The solution is to not attempt to emit an external declaration for the
4249CondRefOf target (it is not necessary in the first place). This prevents
4250disassembler object type confusion. ACPICA BZ 988.
4251
4252Unix Makefiles: Added an option to disable compiler optimizations and the
4253_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4254with optimizations (reportedly, gcc 4.4 for example). This change adds a
4255command line option for make (NOOPT) that disables all compiler
4256optimizations and the _FORTIFY_SOURCE compiler flag. The default
4257optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
42581034. Lv Zheng, Bob Moore.
4259
4260Tests/ASLTS: Added options to specify individual test cases and modes.
4261This allows testers running aslts.sh to optionally specify individual
4262test modes and test cases. Also added an option to disable the forced
4263generation of the ACPICA tools from source if desired. Lv Zheng.
4264
4265----------------------------------------
426627 September 2013. Summary of changes for version 20130927:
4267
4268This release is available at https://acpica.org/downloads
4269
4270
42711) ACPICA kernel-resident subsystem:
4272
4273Fixed a problem with store operations to reference objects. This change
4274fixes a problem where a Store operation to an ArgX object that contained
4275a
4276reference to a field object did not complete the automatic dereference
4277and
4278then write to the actual field object. Instead, the object type of the
4279field object was inadvertently changed to match the type of the source
4280operand. The new behavior will actually write to the field object (buffer
4281field or field unit), thus matching the correct ACPI-defined behavior.
4282
4283Implemented support to allow the host to redefine individual OSL
4284prototypes. This change enables the host to redefine OSL prototypes found
4285in the acpiosxf.h file. This allows the host to implement OSL interfaces
4286with a macro or inlined function. Further, it allows the host to add any
4287additional required modifiers such as __iomem, __init, __exit, etc., as
4288necessary on a per-interface basis. Enables maximum flexibility for the
4289OSL interfaces. Lv Zheng.
4290
4291Hardcoded the access width for the FADT-defined reset register. The ACPI
4292specification requires the reset register width to be 8 bits. ACPICA now
4293hardcodes the width to 8 and ignores the FADT width value. This provides
4294compatibility with other ACPI implementations that have allowed BIOS code
4295with bad register width values to go unnoticed. Matthew Garett, Bob
4296Moore,
4297Lv Zheng.
4298
4299Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4300used
4301in the OSL header (acpiosxf). The change modifies the position of this
4302macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4303build issues if the OSL defines the implementation of the interface to be
4304an inline stub function. Lv Zheng.
4305
4306Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4307initialization interfaces. This change adds a new macro for the main init
4308and terminate external interfaces in order to support hosts that require
4309additional or different processing for these functions. Changed from
4310ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4311Zheng, Bob Moore.
4312
4313Cleaned up the memory allocation macros for configurability. In the
4314common
4315case, the ACPI_ALLOCATE and related macros now resolve directly to their
4316respective AcpiOs* OSL interfaces. Two options:
43171) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4318default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
43192) For AcpiExec (and for debugging), the macros can optionally be
4320resolved
4321to the local ACPICA interfaces that track each allocation (local tracking
4322is used to immediately detect memory leaks).
4323Lv Zheng.
4324
4325Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4326to predefine this macro to either TRUE or FALSE during the system build.
4327
4328Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4329
4330Example Code and Data Size: These are the sizes for the OS-independent
4331acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4332debug version of the code includes the debug output trace mechanism and
4333has a much larger code and data size.
4334
4335  Current Release:
4336    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4337    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4338  Previous Release:
4339    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4340    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4341
4342
43432) iASL Compiler/Disassembler and Tools:
4344
4345iASL: Implemented wildcard support for the -e option. This simplifies use
4346when there are many SSDTs that must be included to resolve external
4347method
4348declarations. ACPICA BZ 1041. Example:
4349    iasl -e ssdt*.dat -d dsdt.dat
4350
4351AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4352adds a portable module that implements full history and limited line
4353editing for Unix and Linux systems. It does not use readline() due to
4354portability issues. Instead it uses the POSIX termio interface to put the
4355terminal in raw input mode so that the various special keys can be
4356trapped
4357(such as up/down-arrow for history support and left/right-arrow for line
4358editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4359
4360AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4361one or more spaces. This provides compatible with early or different
4362versions of the AcpiDump utility. ACPICA BZ 1044.
4363
4364AcpiDump: Do not ignore tables that contain only an ACPI table header.
4365Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4366no other data. This change adds support to dump these tables. Any tables
4367shorter than the length of an ACPI table header remain in error (an error
4368message is emitted). Reported by Yi Li.
4369
4370Debugger: Echo actual command along with the "unknown command" message.
4371
4372----------------------------------------
437323 August 2013. Summary of changes for version 20130823:
4374
43751) ACPICA kernel-resident subsystem:
4376
4377Implemented support for host-installed System Control Interrupt (SCI)
4378handlers. Certain ACPI functionality requires the host to handle raw
4379SCIs. For example, the "SCI Doorbell" that is defined for memory power
4380state support requires the host device driver to handle SCIs to examine
4381if the doorbell has been activated. Multiple SCI handlers can be
4382installed to allow for future expansion. New external interfaces are
4383AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4384details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4385
4386Operation region support: Never locally free the handler "context"
4387pointer. This change removes some dangerous code that attempts to free
4388the handler context pointer in some (rare) circumstances. The owner of
4389the handler owns this pointer and the ACPICA code should never touch it.
4390Although not seen to be an issue in any kernel, it did show up as a
4391problem (fault) under AcpiExec. Also, set the internal storage field for
4392the context pointer to zero when the region is deactivated, simply for
4393sanity. David Box. ACPICA BZ 1039.
4394
4395AcpiRead: On error, do not modify the return value target location. If an
4396error happens in the middle of a split 32/32 64-bit I/O operation, do not
4397modify the target of the return value pointer. Makes the code consistent
4398with the rest of ACPICA. Bjorn Helgaas.
4399
4400Example Code and Data Size: These are the sizes for the OS-independent
4401acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4402debug version of the code includes the debug output trace mechanism and
4403has a much larger code and data size.
4404
4405  Current Release:
4406    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4407    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4408  Previous Release:
4409    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4410    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4411
4412
44132) iASL Compiler/Disassembler and Tools:
4414
4415AcpiDump: Implemented several new features and fixed some problems:
44161) Added support to dump the RSDP, RSDT, and XSDT tables.
44172) Added support for multiple table instances (SSDT, UEFI).
44183) Added option to dump "customized" (overridden) tables (-c).
44194) Fixed a problem where some table filenames were improperly
4420constructed.
44215) Improved some error messages, removed some unnecessary messages.
4422
4423iASL: Implemented additional support for disassembly of ACPI tables that
4424contain invocations of external control methods. The -fe<file> option
4425allows the import of a file that specifies the external methods along
4426with the required number of arguments for each -- allowing for the
4427correct disassembly of the table. This is a workaround for a limitation
4428of AML code where the disassembler often cannot determine the number of
4429arguments required for an external control method and generates incorrect
4430ASL code. See the iASL reference for details. ACPICA BZ 1030.
4431
4432Debugger: Implemented a new command (paths) that displays the full
4433pathnames (namepaths) and object types of all objects in the namespace.
4434This is an alternative to the namespace command.
4435
4436Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4437mechanism and any installed handlers.
4438
4439iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4440This can occur if there are too many parent prefixes in a namepath (for
4441example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4442
4443Application OSLs: Set the return value for the PCI read functions. These
4444functions simply return AE_OK, but should set the return value to zero
4445also. This change implements this. ACPICA BZ 1038.
4446
4447Debugger: Prevent possible command line buffer overflow. Increase the
4448size of a couple of the debugger line buffers, and ensure that overflow
4449cannot happen. ACPICA BZ 1037.
4450
4451iASL: Changed to abort immediately on serious errors during the parsing
4452phase. Due to the nature of ASL, there is no point in attempting to
4453compile these types of errors, and they typically end up causing a
4454cascade of hundreds of errors which obscure the original problem.
4455
4456----------------------------------------
445725 July 2013. Summary of changes for version 20130725:
4458
44591) ACPICA kernel-resident subsystem:
4460
4461Fixed a problem with the DerefOf operator where references to FieldUnits
4462and BufferFields incorrectly returned the parent object, not the actual
4463value of the object. After this change, a dereference of a FieldUnit
4464reference results in a read operation on the field to get the value, and
4465likewise, the appropriate BufferField value is extracted from the target
4466buffer.
4467
4468Fixed a problem where the _WAK method could cause a fault under these
4469circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4470method returned no value. The problem is rarely seen because most kernels
4471run ACPICA in slack mode.
4472
4473For the DerefOf operator, a fatal error now results if an attempt is made
4474to dereference a reference (created by the Index operator) to a NULL
4475package element. Provides compatibility with other ACPI implementations,
4476and this behavior will be added to a future version of the ACPI
4477specification.
4478
4479The ACPI Power Management Timer (defined in the FADT) is now optional.
4480This provides compatibility with other ACPI implementations and will
4481appear in the next version of the ACPI specification. If there is no PM
4482Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4483zero in the FADT indicates no PM timer.
4484
4485Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4486allows the host to globally enable/disable all vendor strings, all
4487feature strings, or both. Intended to be primarily used for debugging
4488purposes only. Lv Zheng.
4489
4490Expose the collected _OSI data to the host via a global variable. This
4491data tracks the highest level vendor ID that has been invoked by the BIOS
4492so that the host (and potentially ACPICA itself) can change behaviors
4493based upon the age of the BIOS.
4494
4495Example Code and Data Size: These are the sizes for the OS-independent
4496acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4497debug version of the code includes the debug output trace mechanism and
4498has a much larger code and data size.
4499
4500  Current Release:
4501    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4502    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4503  Previous Release:
4504    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4505    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4506
4507
45082) iASL Compiler/Disassembler and Tools:
4509
4510iASL: Created the following enhancements for the -so option (create
4511offset table):
45121)Add offsets for the last nameseg in each namepath for every supported
4513object type
45142)Add support for Processor, Device, Thermal Zone, and Scope objects
45153)Add the actual AML opcode for the parent object of every supported
4516object type
45174)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4518
4519Disassembler: Emit all unresolved external symbols in a single block.
4520These are external references to control methods that could not be
4521resolved, and thus, the disassembler had to make a guess at the number of
4522arguments to parse.
4523
4524iASL: The argument to the -T option (create table template) is now
4525optional. If not specified, the default table is a DSDT, typically the
4526most common case.
4527
4528----------------------------------------
452926 June 2013. Summary of changes for version 20130626:
4530
45311) ACPICA kernel-resident subsystem:
4532
4533Fixed an issue with runtime repair of the _CST object. Null or invalid
4534elements were not always removed properly. Lv Zheng.
4535
4536Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4537FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4538the maximum number of GPEs is 1016. Use of multiple GPE block devices
4539makes the system-wide number of GPEs essentially unlimited.
4540
4541Example Code and Data Size: These are the sizes for the OS-independent
4542acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4543debug version of the code includes the debug output trace mechanism and
4544has a much larger code and data size.
4545
4546  Current Release:
4547    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4548    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4549  Previous Release:
4550    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4551    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4552
4553
45542) iASL Compiler/Disassembler and Tools:
4555
4556Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4557hosts. Now supports Linux, FreeBSD, and Windows.
4558
4559Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4560Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4561
4562iASL/Preprocessor: Implemented full support for nested
4563#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4564
4565Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4566max. The original purpose of this constraint was to limit the amount of
4567debug output. However, the string function in question (UtPrintString) is
4568now used for the disassembler also, where 256 bytes is insufficient.
4569Reported by RehabMan@GitHub.
4570
4571iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4572tables. ACPICA BZ 999. Lv Zheng.
4573
4574iASL: Fixed a couple of error exit issues that could result in a "Could
4575not delete <file>" message during ASL compilation.
4576
4577AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4578the actual signatures for these tables are "FACP" and "APIC",
4579respectively.
4580
4581AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4582tables are allowed to have multiple instances.
4583
4584----------------------------------------
458517 May 2013. Summary of changes for version 20130517:
4586
45871) ACPICA kernel-resident subsystem:
4588
4589Fixed a regression introduced in version 20130328 for _INI methods. This
4590change fixes a problem introduced in 20130328 where _INI methods are no
4591longer executed properly because of a memory block that was not
4592initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4593<tomasz.nowicki@linaro.org>.
4594
4595Fixed a possible problem with the new extended sleep registers in the
4596ACPI
45975.0 FADT. Do not use these registers (even if populated) unless the HW-
4598reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
45991020. Lv Zheng.
4600
4601Implemented return value repair code for _CST predefined objects: Sort
4602the
4603list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4604
4605Implemented a debug-only option to disable loading of SSDTs from the
4606RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4607ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4608acglobal.h - ACPICA BZ 1005. Lv Zheng.
4609
4610Fixed some issues in the ACPICA initialization and termination code:
4611Tomasz Nowicki <tomasz.nowicki@linaro.org>
46121) Clear events initialized flag upon event component termination. ACPICA
4613BZ 1013.
46142) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
46153) Delete global lock pending lock during termination. ACPICA BZ 1012.
46164) Clear debug buffer global on termination to prevent possible multiple
4617delete. ACPICA BZ 1010.
4618
4619Standardized all switch() blocks across the entire source base. After
4620many
4621years, different formatting for switch() had crept in. This change makes
4622the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4623
4624Split some files to enhance ACPICA modularity and configurability:
46251) Split buffer dump routines into utilities/utbuffer.c
46262) Split internal error message routines into utilities/uterror.c
46273) Split table print utilities into tables/tbprint.c
46284) Split iASL command-line option processing into asloptions.c
4629
4630Makefile enhancements:
46311) Support for all new files above.
46322) Abort make on errors from any subcomponent. Chao Guan.
46333) Add build support for Apple Mac OS X. Liang Qi.
4634
4635Example Code and Data Size: These are the sizes for the OS-independent
4636acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4637debug version of the code includes the debug output trace mechanism and
4638has a much larger code and data size.
4639
4640  Current Release:
4641    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4642    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4643  Previous Release:
4644    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4645    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4646
4647
46482) iASL Compiler/Disassembler and Tools:
4649
4650New utility: Implemented an easily portable version of the acpidump
4651utility to extract ACPI tables from the system (or a file) in an ASCII
4652hex
4653dump format. The top-level code implements the various command line
4654options, file I/O, and table dump routines. To port to a new host, only
4655three functions need to be implemented to get tables -- since this
4656functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4657the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
46581) The Windows version obtains the ACPI tables from the Registry.
46592) The Linux version is under development.
46603) Other hosts - If an OS-dependent module is submitted, it will be
4661distributed with ACPICA.
4662
4663iASL: Fixed a regression for -D preprocessor option (define symbol). A
4664restructuring/change to the initialization sequence caused this option to
4665no longer work properly.
4666
4667iASL: Implemented a mechanism to disable specific warnings and remarks.
4668Adds a new command line option, "-vw <messageid> as well as "#pragma
4669disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4670
4671iASL: Fix for too-strict package object validation. The package object
4672validation for return values from the predefined names is a bit too
4673strict, it does not allow names references within the package (which will
4674be resolved at runtime.) These types of references cannot be validated at
4675compile time. This change ignores named references within package objects
4676for names that return or define static packages.
4677
4678Debugger: Fixed the 80-character command line limitation for the History
4679command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4680
4681iASL: Added control method and package support for the -so option
4682(generates AML offset table for BIOS support.)
4683
4684iASL: issue a remark if a non-serialized method creates named objects. If
4685a thread blocks within the method for any reason, and another thread
4686enters the method, the method will fail because an attempt will be made
4687to
4688create the same (named) object twice. In this case, issue a remark that
4689the method should be marked serialized. NOTE: may become a warning later.
4690ACPICA BZ 909.
4691
4692----------------------------------------
469318 April 2013. Summary of changes for version 20130418:
4694
46951) ACPICA kernel-resident subsystem:
4696
4697Fixed a possible buffer overrun during some rare but specific field unit
4698read operations. This overrun can only happen if the DSDT version is 1 --
4699meaning that all AML integers are 32 bits -- and the field length is
4700between 33 and 55 bits long. During the read, an internal buffer object
4701is
4702created for the field unit because the field is larger than an integer
4703(32
4704bits). However, in this case, the buffer will be incorrectly written
4705beyond the end because the buffer length is less than the internal
4706minimum
4707of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4708long, but a full 8 bytes will be written.
4709
4710Updated the Embedded Controller "orphan" _REG method support. This refers
4711to _REG methods under the EC device that have no corresponding operation
4712region. This is allowed by the ACPI specification. This update removes a
4713dependency on the existence an ECDT table. It will execute an orphan _REG
4714method as long as the operation region handler for the EC is installed at
4715the EC device node and not the namespace root. Rui Zhang (original
4716update), Bob Moore (update/integrate).
4717
4718Implemented run-time argument typechecking for all predefined ACPI names
4719(_STA, _BIF, etc.) This change performs object typechecking on all
4720incoming arguments for all predefined names executed via
4721AcpiEvaluateObject. This ensures that ACPI-related device drivers are
4722passing correct object types as well as the correct number of arguments
4723(therefore identifying any issues immediately). Also, the ASL/namespace
4724definition of the predefined name is checked against the ACPI
4725specification for the proper argument count. Adds one new file,
4726nsarguments.c
4727
4728Changed an exception code for the ASL UnLoad() operator. Changed the
4729exception code for the case where the input DdbHandle is invalid, from
4730AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4731
4732Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
4733global makefile. The use of this flag causes compiler errors on earlier
4734versions of GCC, so it has been removed for compatibility.
4735
4736Miscellaneous cleanup:
47371) Removed some unused/obsolete macros
47382) Fixed a possible memory leak in the _OSI support
47393) Removed an unused variable in the predefined name support
47404) Windows OSL: remove obsolete reference to a memory list field
4741
4742Example Code and Data Size: These are the sizes for the OS-independent
4743acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4744debug version of the code includes the debug output trace mechanism and
4745has a much larger code and data size.
4746
4747  Current Release:
4748    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4749    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4750  Previous Release:
4751    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4752    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4753
4754
47552) iASL Compiler/Disassembler and Tools:
4756
4757AcpiExec: Added installation of a handler for the SystemCMOS address
4758space. This prevents control method abort if a method accesses this
4759space.
4760
4761AcpiExec: Added support for multiple EC devices, and now install EC
4762operation region handler(s) at the actual EC device instead of the
4763namespace root. This reflects the typical behavior of host operating
4764systems.
4765
4766AcpiExec: Updated to ensure that all operation region handlers are
4767installed before the _REG methods are executed. This prevents a _REG
4768method from aborting if it accesses an address space has no handler.
4769AcpiExec installs a handler for every possible address space.
4770
4771Debugger: Enhanced the "handlers" command to display non-root handlers.
4772This change enhances the handlers command to display handlers associated
4773with individual devices throughout the namespace, in addition to the
4774currently supported display of handlers associated with the root
4775namespace
4776node.
4777
4778ASL Test Suite: Several test suite errors have been identified and
4779resolved, reducing the total error count during execution. Chao Guan.
4780
4781----------------------------------------
478228 March 2013. Summary of changes for version 20130328:
4783
47841) ACPICA kernel-resident subsystem:
4785
4786Fixed several possible race conditions with the internal object reference
4787counting mechanism. Some of the external ACPICA interfaces update object
4788reference counts without holding the interpreter or namespace lock. This
4789change adds a spinlock to protect reference count updates on the internal
4790ACPICA objects. Reported by and with assistance from Andriy Gapon
4791(avg@FreeBSD.org).
4792
4793FADT support: Removed an extraneous warning for very large GPE register
4794sets. This change removes a size mismatch warning if the legacy length
4795field for a GPE register set is larger than the 64-bit GAS structure can
4796accommodate. GPE register sets can be larger than the 255-bit width
4797limitation of the GAS structure. Linn Crosetto (linn@hp.com).
4798
4799_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
4800return from this interface. Handles a possible timeout case if
4801ACPI_WAIT_FOREVER is modified by the host to be a value less than
4802"forever". Jung-uk Kim.
4803
4804Predefined name support: Add allowed/required argument type information
4805to
4806the master predefined info table. This change adds the infrastructure to
4807enable typechecking on incoming arguments for all predefined
4808methods/objects. It does not actually contain the code that will fully
4809utilize this information, this is still under development. Also condenses
4810some duplicate code for the predefined names into a new module,
4811utilities/utpredef.c
4812
4813Example Code and Data Size: These are the sizes for the OS-independent
4814acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4815debug version of the code includes the debug output trace mechanism and
4816has a much larger code and data size.
4817
4818  Previous Release:
4819    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4820    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4821  Current Release:
4822    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4823    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4824
4825
48262) iASL Compiler/Disassembler and Tools:
4827
4828iASL: Implemented a new option to simplify the development of ACPI-
4829related
4830BIOS code. Adds support for a new "offset table" output file. The -so
4831option will create a C table containing the AML table offsets of various
4832named objects in the namespace so that BIOS code can modify them easily
4833at
4834boot time. This can simplify BIOS runtime code by eliminating expensive
4835searches for "magic values", enhancing boot times and adding greater
4836reliability. With assistance from Lee Hamel.
4837
4838iASL: Allow additional predefined names to return zero-length packages.
4839Now, all predefined names that are defined by the ACPI specification to
4840return a "variable-length package of packages" are allowed to return a
4841zero length top-level package. This allows the BIOS to tell the host that
4842the requested feature is not supported, and supports existing BIOS/ASL
4843code and practices.
4844
4845iASL: Changed the "result not used" warning to an error. This is the case
4846where an ASL operator is effectively a NOOP because the result of the
4847operation is not stored anywhere. For example:
4848    Add (4, Local0)
4849There is no target (missing 3rd argument), nor is the function return
4850value used. This is potentially a very serious problem -- since the code
4851was probably intended to do something, but for whatever reason, the value
4852was not stored. Therefore, this issue has been upgraded from a warning to
4853an error.
4854
4855AcpiHelp: Added allowable/required argument types to the predefined names
4856info display. This feature utilizes the recent update to the predefined
4857names table (above).
4858
4859----------------------------------------
486014 February 2013. Summary of changes for version 20130214:
4861
48621) ACPICA Kernel-resident Subsystem:
4863
4864Fixed a possible regression on some hosts: Reinstated the safe return
4865macros (return_ACPI_STATUS, etc.) that ensure that the argument is
4866evaluated only once. Although these macros are not needed for the ACPICA
4867code itself, they are often used by ACPI-related host device drivers
4868where
4869the safe feature may be necessary.
4870
4871Fixed several issues related to the ACPI 5.0 reduced hardware support
4872(SOC): Now ensure that if the platform declares itself as hardware-
4873reduced
4874via the FADT, the following functions become NOOPs (and always return
4875AE_OK) because ACPI is always enabled by definition on these machines:
4876  AcpiEnable
4877  AcpiDisable
4878  AcpiHwGetMode
4879  AcpiHwSetMode
4880
4881Dynamic Object Repair: Implemented additional runtime repairs for
4882predefined name return values. Both of these repairs can simplify code in
4883the related device drivers that invoke these methods:
48841) For the _STR and _MLS names, automatically repair/convert an ASCII
4885string to a Unicode buffer.
48862) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
4887a
4888lone end tag descriptor in the following cases: A Return(0) was executed,
4889a null buffer was returned, or no object at all was returned (non-slack
4890mode only). Adds a new file, nsconvert.c
4891ACPICA BZ 998. Bob Moore, Lv Zheng.
4892
4893Resource Manager: Added additional code to prevent possible infinite
4894loops
4895while traversing corrupted or ill-formed resource template buffers. Check
4896for zero-length resource descriptors in all code that loops through
4897resource templates (the length field is used to index through the
4898template). This change also hardens the external AcpiWalkResources and
4899AcpiWalkResourceBuffer interfaces.
4900
4901Local Cache Manager: Enhanced the main data structure to eliminate an
4902unnecessary mechanism to access the next object in the list. Actually
4903provides a small performance enhancement for hosts that use the local
4904ACPICA cache manager. Jung-uk Kim.
4905
4906Example Code and Data Size: These are the sizes for the OS-independent
4907acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4908debug version of the code includes the debug output trace mechanism and
4909has a much larger code and data size.
4910
4911  Previous Release:
4912    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4913    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4914  Current Release:
4915    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4916    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4917
4918
49192) iASL Compiler/Disassembler and Tools:
4920
4921iASL/Disassembler: Fixed several issues with the definition of the ACPI
49225.0 RASF table (RAS Feature Table). This change incorporates late changes
4923that were made to the ACPI 5.0 specification.
4924
4925iASL/Disassembler: Added full support for the following new ACPI tables:
4926  1) The MTMR table (MID Timer Table)
4927  2) The VRTC table (Virtual Real Time Clock Table).
4928Includes header file, disassembler, table compiler, and template support
4929for both tables.
4930
4931iASL: Implemented compile-time validation of package objects returned by
4932predefined names. This new feature validates static package objects
4933returned by the various predefined names defined to return packages. Both
4934object types and package lengths are validated, for both parent packages
4935and sub-packages, if any. The code is similar in structure and behavior
4936to
4937the runtime repair mechanism within the AML interpreter and uses the
4938existing predefined name information table. Adds a new file, aslprepkg.c.
4939ACPICA BZ 938.
4940
4941iASL: Implemented auto-detection of binary ACPI tables for disassembly.
4942This feature detects a binary file with a valid ACPI table header and
4943invokes the disassembler automatically. Eliminates the need to
4944specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4945
4946iASL/Disassembler: Added several warnings for the case where there are
4947unresolved control methods during the disassembly. This can potentially
4948cause errors when the output file is compiled, because the disassembler
4949assumes zero method arguments in these cases (it cannot determine the
4950actual number of arguments without resolution/definition of the method).
4951
4952Debugger: Added support to display all resources with a single command.
4953Invocation of the resources command with no arguments will now display
4954all
4955resources within the current namespace.
4956
4957AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4958via the -e option.
4959
4960----------------------------------------
496117 January 2013. Summary of changes for version 20130117:
4962
49631) ACPICA Kernel-resident Subsystem:
4964
4965Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
4966return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
4967objects to return a package containing one integer, most BIOS code
4968returns
4969two integers and the previous code reflects that. However, we also need
4970to
4971support BIOS code that actually implements to the ACPI spec, and this
4972change reflects this.
4973
4974Fixed two issues with the ACPI_DEBUG_PRINT macros:
49751) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
4976C compilers that require this support.
49772) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
4978ACPI_DEBUG is already used by many of the various hosts.
4979
4980Updated all ACPICA copyrights and signons to 2013. Added the 2013
4981copyright to all module headers and signons, including the standard Linux
4982header. This affects virtually every file in the ACPICA core subsystem,
4983iASL compiler, all ACPICA utilities, and the test suites.
4984
4985Example Code and Data Size: These are the sizes for the OS-independent
4986acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4987debug version of the code includes the debug output trace mechanism and
4988has a much larger code and data size.
4989
4990  Previous Release:
4991    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4992    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4993  Current Release:
4994    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4995    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4996
4997
49982) iASL Compiler/Disassembler and Tools:
4999
5000Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5001prevent a possible fault on some hosts. Some C libraries modify the arg
5002pointer parameter to vfprintf making it difficult to call it twice in the
5003AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5004does not affect the Windows OSL since the Win C library does not modify
5005the arg pointer. Chao Guan, Bob Moore.
5006
5007iASL: Fixed a possible infinite loop when the maximum error count is
5008reached. If an output file other than the .AML file is specified (such as
5009a listing file), and the maximum number of errors is reached, do not
5010attempt to flush data to the output file(s) as the compiler is aborting.
5011This can cause an infinite loop as the max error count code essentially
5012keeps calling itself.
5013
5014iASL/Disassembler: Added an option (-in) to ignore NOOP
5015opcodes/operators.
5016Implemented for both the compiler and the disassembler. Often, the NOOP
5017opcode is used as padding for packages that are changed dynamically by
5018the
5019BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5020errors. This option causes the disassembler to ignore all NOOP opcodes
5021(0xA3), and it also causes the compiler to ignore all ASL source code
5022NOOP
5023statements as well.
5024
5025Debugger: Enhanced the Sleep command to execute all sleep states. This
5026change allows Sleep to be invoked with no arguments and causes the
5027debugger to execute all of the sleep states, 0-5, automatically.
5028
5029----------------------------------------
503020 December 2012. Summary of changes for version 20121220:
5031
50321) ACPICA Kernel-resident Subsystem:
5033
5034Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5035alternate entry point for AcpiWalkResources and improves the usability of
5036the resource manager by accepting as input a buffer containing the output
5037of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5038input buffer is not deleted by this interface so that it can be used by
5039the host later. See the ACPICA reference for details.
5040
5041Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5042(DSDT version < 2). The constant will be truncated and this warning
5043reflects that behavior.
5044
5045Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5046ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5047both get and set the new wake bit in these descriptors, separately from
5048the existing share bit. Reported by Aaron Lu.
5049
5050Interpreter: Fix Store() when an implicit conversion is not possible. For
5051example, in the cases such as a store of a string to an existing package
5052object, implement the store as a CopyObject(). This is a small departure
5053from the ACPI specification which states that the control method should
5054be
5055aborted in this case. However, the ASLTS suite depends on this behavior.
5056
5057Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5058macros: check if debug output is currently enabled as soon as possible to
5059minimize performance impact if debug is in fact not enabled.
5060
5061Source code restructuring: Cleanup to improve modularity. The following
5062new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5063psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5064Associated makefiles and project files have been updated.
5065
5066Changed an exception code for LoadTable operator. For the case where one
5067of the input strings is too long, change the returned exception code from
5068AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5069
5070Fixed a possible memory leak in dispatcher error path. On error, delete
5071the mutex object created during method mutex creation. Reported by
5072tim.gardner@canonical.com.
5073
5074Example Code and Data Size: These are the sizes for the OS-independent
5075acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5076debug version of the code includes the debug output trace mechanism and
5077has a much larger code and data size.
5078
5079  Previous Release:
5080    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5081    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5082  Current Release:
5083    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5084    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5085
5086
50872) iASL Compiler/Disassembler and Tools:
5088
5089iASL: Disallow a method call as argument to the ObjectType ASL operator.
5090This change tracks an errata to the ACPI 5.0 document. The AML grammar
5091will not allow the interpreter to differentiate between a method and a
5092method invocation when these are used as an argument to the ObjectType
5093operator. The ACPI specification change is to disallow a method
5094invocation
5095(UserTerm) for the ObjectType operator.
5096
5097Finish support for the TPM2 and CSRT tables in the headers, table
5098compiler, and disassembler.
5099
5100Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5101always expires immediately if the semaphore is not available. The
5102original
5103code was using a relative-time timeout, but sem_timedwait requires the
5104use
5105of an absolute time.
5106
5107iASL: Added a remark if the Timer() operator is used within a 32-bit
5108table. This operator returns a 64-bit time value that will be truncated
5109within a 32-bit table.
5110
5111iASL Source code restructuring: Cleanup to improve modularity. The
5112following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5113aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5114been updated.
5115
5116
5117----------------------------------------
511814 November 2012. Summary of changes for version 20121114:
5119
51201) ACPICA Kernel-resident Subsystem:
5121
5122Implemented a performance enhancement for ACPI/AML Package objects. This
5123change greatly increases the performance of Package objects within the
5124interpreter. It changes the processing of reference counts for packages
5125by
5126optimizing for the most common case where the package sub-objects are
5127either Integers, Strings, or Buffers. Increases the overall performance
5128of
5129the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
51302X.)
5131Chao Guan. ACPICA BZ 943.
5132
5133Implemented and deployed common macros to extract flag bits from resource
5134descriptors. Improves readability and maintainability of the code. Fixes
5135a
5136problem with the UART serial bus descriptor for the number of data bits
5137flags (was incorrectly 2 bits, should be 3).
5138
5139Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5140of the macros and changed the SETx macros to the style of (destination,
5141source). Also added ACPI_CASTx companion macros. Lv Zheng.
5142
5143Example Code and Data Size: These are the sizes for the OS-independent
5144acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5145debug version of the code includes the debug output trace mechanism and
5146has a much larger code and data size.
5147
5148  Previous Release:
5149    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5150    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5151  Current Release:
5152    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5153    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5154
5155
51562) iASL Compiler/Disassembler and Tools:
5157
5158Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5159adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5160Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5161
5162Disassembler: Fixed a problem with external declaration generation. Fixes
5163a problem where an incorrect pathname could be generated for an external
5164declaration if the original reference to the object includes leading
5165carats (^). ACPICA BZ 984.
5166
5167Debugger: Completed a major update for the Disassemble<method> command.
5168This command was out-of-date and did not properly disassemble control
5169methods that had any reasonable complexity. This fix brings the command
5170up
5171to the same level as the rest of the disassembler. Adds one new file,
5172dmdeferred.c, which is existing code that is now common with the main
5173disassembler and the debugger disassemble command. ACPICA MZ 978.
5174
5175iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5176Newer versions of Bison emit this prototype, so moved the prototype out
5177of
5178the iASL header to where it is actually used in order to avoid a
5179duplicate
5180declaration.
5181
5182iASL/Tools: Standardized use of the stream I/O functions:
5183  1) Ensure check for I/O error after every fopen/fread/fwrite
5184  2) Ensure proper order of size/count arguments for fread/fwrite
5185  3) Use test of (Actual != Requested) after all fwrite, and most fread
5186  4) Standardize I/O error messages
5187Improves reliability and maintainability of the code. Bob Moore, Lv
5188Zheng.
5189ACPICA BZ 981.
5190
5191Disassembler: Prevent duplicate External() statements. During generation
5192of external statements, detect similar pathnames that are actually
5193duplicates such as these:
5194  External (\ABCD)
5195  External (ABCD)
5196Remove all leading '\' characters from pathnames during the external
5197statement generation so that duplicates will be detected and tossed.
5198ACPICA BZ 985.
5199
5200Tools: Replace low-level I/O with stream I/O functions. Replace
5201open/read/write/close with the stream I/O equivalents
5202fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5203Moore.
5204
5205AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5206name header so that AcpiXtract recognizes the output file/table.
5207
5208iASL: Remove obsolete -2 option flag. Originally intended to force the
5209compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5210and the entire concept is now obsolete.
5211
5212----------------------------------------
521318 October 2012. Summary of changes for version 20121018:
5214
5215
52161) ACPICA Kernel-resident Subsystem:
5217
5218Updated support for the ACPI 5.0 MPST table. Fixes some problems
5219introduced by late changes to the table as it was added to the ACPI 5.0
5220specification. Includes header, disassembler, and data table compiler
5221support as well as a new version of the MPST template.
5222
5223AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
52245.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5225methods: _HID, _CID, and _UID.
5226
5227Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5228ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5229name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5230names for their various drivers. Affects the AcpiGetObjectInfo external
5231interface, and other internal interfaces as well.
5232
5233Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5234This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5235on machines that support non-aligned transfers. Optimizes for this case
5236rather than using a strncpy. With assistance from Zheng Lv.
5237
5238Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5239error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5240
5241Added a new debug print message for AML mutex objects that are force-
5242released. At control method termination, any currently acquired mutex
5243objects are force-released. Adds a new debug-only message for each one
5244that is released.
5245
5246Audited/updated all ACPICA return macros and the function debug depth
5247counter: 1) Ensure that all functions that use the various TRACE macros
5248also use the appropriate ACPICA return macros. 2) Ensure that all normal
5249return statements surround the return expression (value) with parens to
5250ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5251Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5252
5253Global source code changes/maintenance: All extra lines at the start and
5254end of each source file have been removed for consistency. Also, within
5255comments, all new sentences start with a single space instead of a double
5256space, again for consistency across the code base.
5257
5258Example Code and Data Size: These are the sizes for the OS-independent
5259acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5260debug version of the code includes the debug output trace mechanism and
5261has a much larger code and data size.
5262
5263  Previous Release:
5264    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5265    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5266  Current Release:
5267    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5268    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5269
5270
52712) iASL Compiler/Disassembler and Tools:
5272
5273AcpiExec: Improved the algorithm used for memory leak/corruption
5274detection. Added some intelligence to the code that maintains the global
5275list of allocated memory. The list is now ordered by allocated memory
5276address, significantly improving performance. When running AcpiExec on
5277the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5278on the platform and/or the environment. Note, this performance
5279enhancement affects the AcpiExec utility only, not the kernel-resident
5280ACPICA code.
5281
5282Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5283the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5284incorrect table offset reported for invalid opcodes. Report the original
528532-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5286
5287Disassembler: Enhanced the -vt option to emit the binary table data in
5288hex format to assist with debugging.
5289
5290Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5291size of file structure. Colin Ian King.
5292
5293----------------------------------------
529413 September 2012. Summary of changes for version 20120913:
5295
5296
52971) ACPICA Kernel-resident Subsystem:
5298
5299ACPI 5.0: Added two new notify types for the Hardware Error Notification
5300Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5301and
5302MCE(6).
5303
5304Table Manager: Merged/removed duplicate code in the root table resize
5305functions. One function is external, the other is internal. Lv Zheng,
5306ACPICA
5307BZ 846.
5308
5309Makefiles: Completely removed the obsolete "Linux" makefiles under
5310acpica/generate/linux. These makefiles are obsolete and have been
5311replaced
5312by
5313the generic unix makefiles under acpica/generate/unix.
5314
5315Makefiles: Ensure that binary files always copied properly. Minor rule
5316change
5317to ensure that the final binary output files are always copied up to the
5318appropriate binary directory (bin32 or bin64.)
5319
5320Example Code and Data Size: These are the sizes for the OS-independent
5321acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5322debug
5323version of the code includes the debug output trace mechanism and has a
5324much
5325larger code and data size.
5326
5327  Previous Release:
5328    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5329    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5330  Current Release:
5331    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5332    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5333
5334
53352) iASL Compiler/Disassembler and Tools:
5336
5337Disassembler: Fixed a possible fault during the disassembly of resource
5338descriptors when a second parse is required because of the invocation of
5339external control methods within the table. With assistance from
5340adq@lidskialf.net. ACPICA BZ 976.
5341
5342iASL: Fixed a namepath optimization problem. An error can occur if the
5343parse
5344node that contains the namepath to be optimized does not have a parent
5345node
5346that is a named object. This change fixes the problem.
5347
5348iASL: Fixed a regression where the AML file is not deleted on errors. The
5349AML
5350output file should be deleted if there are any errors during the
5351compiler.
5352The
5353only exception is if the -f (force output) option is used. ACPICA BZ 974.
5354
5355iASL: Added a feature to automatically increase internal line buffer
5356sizes.
5357Via realloc(), automatically increase the internal line buffer sizes as
5358necessary to support very long source code lines. The current version of
5359the
5360preprocessor requires a buffer long enough to contain full source code
5361lines.
5362This change increases the line buffer(s) if the input lines go beyond the
5363current buffer size. This eliminates errors that occurred when a source
5364code
5365line was longer than the buffer.
5366
5367iASL: Fixed a problem with constant folding in method declarations. The
5368SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5369if a
5370Type3 opcode was used.
5371
5372Debugger: Improved command help support. For incorrect argument count,
5373display
5374full help for the command. For help command itself, allow an argument to
5375specify a command.
5376
5377Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5378errors during execution of the suite. Guan Chao.
5379
5380----------------------------------------
538116 August 2012. Summary of changes for version 20120816:
5382
5383
53841) ACPICA Kernel-resident Subsystem:
5385
5386Removed all use of the deprecated _GTS and _BFS predefined methods. The
5387_GTS
5388(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5389deprecated and will probably be removed from the ACPI specification.
5390Windows
5391does not invoke them, and reportedly never will. The final nail in the
5392coffin
5393is that the ACPI specification states that these methods must be run with
5394interrupts off, which is not going to happen in a kernel interpreter.
5395Note:
5396Linux has removed all use of the methods also. It was discovered that
5397invoking these functions caused failures on some machines, probably
5398because
5399they were never tested since Windows does not call them. Affects two
5400external
5401interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5402ACPICA BZ 969.
5403
5404Implemented support for complex bit-packed buffers returned from the _PLD
5405(Physical Location of Device) predefined method. Adds a new external
5406interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5407C
5408structure. Note: C Bitfields cannot be used for this type of predefined
5409structure since the memory layout of individual bitfields is not defined
5410by
5411the C language. In addition, there are endian concerns where a compiler
5412will
5413change the bitfield ordering based on the machine type. The new ACPICA
5414interface eliminates these issues, and should be called after _PLD is
5415executed. ACPICA BZ 954.
5416
5417Implemented a change to allow a scope change to root (via "Scope (\)")
5418during
5419execution of module-level ASL code (code that is executed at table load
5420time.) Lin Ming.
5421
5422Added the Windows8/Server2012 string for the _OSI method. This change
5423adds
5424a
5425new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
54262012.
5427
5428Added header support for the new ACPI tables DBG2 (Debug Port Table Type
54292)
5430and CSRT (Core System Resource Table).
5431
5432Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5433names. This simplifies access to the buffers returned by these predefined
5434names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5435
5436GPE support: Removed an extraneous parameter from the various low-level
5437internal GPE functions. Tang Feng.
5438
5439Removed the linux makefiles from the unix packages. The generate/linux
5440makefiles are obsolete and have been removed from the unix tarball
5441release
5442packages. The replacement makefiles are under generate/unix, and there is
5443a
5444top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5445
5446Updates for Unix makefiles:
54471) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
54482) Update linker flags (move to end of command line) for AcpiExec
5449utility.
5450Guan Chao.
5451
5452Split ACPICA initialization functions to new file, utxfinit.c. Split from
5453utxface.c to improve modularity and reduce file size.
5454
5455Example Code and Data Size: These are the sizes for the OS-independent
5456acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5457debug version of the code includes the debug output trace mechanism and
5458has a
5459much larger code and data size.
5460
5461  Previous Release:
5462    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5463    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5464  Current Release:
5465    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5466    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5467
5468
54692) iASL Compiler/Disassembler and Tools:
5470
5471iASL: Fixed a problem with constant folding for fixed-length constant
5472expressions. The constant-folding code was not being invoked for constant
5473expressions that allow the use of type 3/4/5 opcodes to generate
5474constants
5475for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5476result
5477in the generation of invalid AML bytecode. ACPICA BZ 970.
5478
5479iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5480apparently automatically emit some of the necessary externals. This
5481change
5482handles these versions in order to eliminate generation warnings.
5483
5484Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5485
5486Disassembler: Add support to decode _PLD buffers. The decoded buffer
5487appears
5488within comments in the output file.
5489
5490Debugger: Fixed a regression with the "Threads" command where
5491AE_BAD_PARAMETER was always returned.
5492
5493----------------------------------------
549411 July 2012. Summary of changes for version 20120711:
5495
54961) ACPICA Kernel-resident Subsystem:
5497
5498Fixed a possible fault in the return package object repair code. Fixes a
5499problem that can occur when a lone package object is wrapped with an
5500outer
5501package object in order to force conformance to the ACPI specification.
5502Can
5503affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5504_DLM,
5505_CSD, _PSD, _TSD.
5506
5507Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5508PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5509ARB_DIS bit must be implemented in the host-dependent C3 processor power
5510state
5511support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5512both
5513Intel and other vendors. (for Intel: ICH4-M and earlier)
5514
5515This change removes the code to disable/enable bus master arbitration
5516during
5517suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5518causes
5519resume problems on some machines. The change has been in use for over
5520seven
5521years within Linux.
5522
5523Implemented two new external interfaces to support host-directed dynamic
5524ACPI
5525table load and unload. They are intended to simplify the host
5526implementation
5527of hot-plug support:
5528  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5529  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5530table.
5531See the ACPICA reference for additional details. Adds one new file,
5532components/tables/tbxfload.c
5533
5534Implemented and deployed two new interfaces for errors and warnings that
5535are
5536known to be caused by BIOS/firmware issues:
5537  AcpiBiosError: Prints "ACPI Firmware Error" message.
5538  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5539Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5540table
5541and FADT errors. Additional deployment to be completed as appropriate in
5542the
5543future. The associated conditional macros are ACPI_BIOS_ERROR and
5544ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5545ACPICA
5546BZ
5547843.
5548
5549Implicit notify support: ensure that no memory allocation occurs within a
5550critical region. This fix moves a memory allocation outside of the time
5551that a
5552spinlock is held. Fixes issues on systems that do not allow this
5553behavior.
5554Jung-uk Kim.
5555
5556Split exception code utilities and tables into a new file,
5557utilities/utexcep.c
5558
5559Example Code and Data Size: These are the sizes for the OS-independent
5560acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5561debug
5562version of the code includes the debug output trace mechanism and has a
5563much
5564larger code and data size.
5565
5566  Previous Release:
5567    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5568    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5569  Current Release:
5570    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5571    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5572
5573
55742) iASL Compiler/Disassembler and Tools:
5575
5576iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5577of
55780. Jung-uk Kim.
5579
5580Debugger: Enhanced the "tables" command to emit additional information
5581about
5582the current set of ACPI tables, including the owner ID and flags decode.
5583
5584Debugger: Reimplemented the "unload" command to use the new
5585AcpiUnloadParentTable external interface. This command was disable
5586previously
5587due to need for an unload interface.
5588
5589AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5590option
5591will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5592
5593----------------------------------------
559420 June 2012. Summary of changes for version 20120620:
5595
5596
55971) ACPICA Kernel-resident Subsystem:
5598
5599Implemented support to expand the "implicit notify" feature to allow
5600multiple
5601devices to be notified by a single GPE. This feature automatically
5602generates a
5603runtime device notification in the absence of a BIOS-provided GPE control
5604method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5605notify is
5606provided by ACPICA for Windows compatibility, and is a workaround for
5607BIOS
5608AML
5609code errors. See the description of the AcpiSetupGpeForWake interface in
5610the
5611APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5612
5613Changed some comments and internal function names to simplify and ensure
5614correctness of the Linux code translation. No functional changes.
5615
5616Example Code and Data Size: These are the sizes for the OS-independent
5617acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5618debug
5619version of the code includes the debug output trace mechanism and has a
5620much
5621larger code and data size.
5622
5623  Previous Release:
5624    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5625    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5626  Current Release:
5627    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5628    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5629
5630
56312) iASL Compiler/Disassembler and Tools:
5632
5633Disassembler: Added support to emit short, commented descriptions for the
5634ACPI
5635predefined names in order to improve the readability of the disassembled
5636output. ACPICA BZ 959. Changes include:
5637  1) Emit descriptions for all standard predefined names (_INI, _STA,
5638_PRW,
5639etc.)
5640  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5641  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5642etc.)
5643
5644AcpiSrc: Fixed several long-standing Linux code translation issues.
5645Argument
5646descriptions in function headers are now translated properly to lower
5647case
5648and
5649underscores. ACPICA BZ 961. Also fixes translation problems such as
5650these:
5651(old -> new)
5652  i_aSL -> iASL
5653  00-7_f -> 00-7F
5654  16_k -> 16K
5655  local_fADT -> local_FADT
5656  execute_oSI -> execute_OSI
5657
5658iASL: Fixed a problem where null bytes were inadvertently emitted into
5659some
5660listing files.
5661
5662iASL: Added the existing debug options to the standard help screen. There
5663are
5664no longer two different help screens. ACPICA BZ 957.
5665
5666AcpiHelp: Fixed some typos in the various predefined name descriptions.
5667Also
5668expand some of the descriptions where appropriate.
5669
5670iASL: Fixed the -ot option (display compile times/statistics). Was not
5671working
5672properly for standard output; only worked for the debug file case.
5673
5674----------------------------------------
567518 May 2012. Summary of changes for version 20120518:
5676
5677
56781) ACPICA Core Subsystem:
5679
5680Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5681defined
5682to block until asynchronous events such as notifies and GPEs have
5683completed.
5684Within ACPICA, it is only called before a notify or GPE handler is
5685removed/uninstalled. It also may be useful for the host OS within related
5686drivers such as the Embedded Controller driver. See the ACPICA reference
5687for
5688additional information. ACPICA BZ 868.
5689
5690ACPI Tables: Added a new error message for a possible overflow failure
5691during
5692the conversion of FADT 32-bit legacy register addresses to internal
5693common
569464-
5695bit GAS structure representation. The GAS has a one-byte "bit length"
5696field,
5697thus limiting the register length to 255 bits. ACPICA BZ 953.
5698
5699Example Code and Data Size: These are the sizes for the OS-independent
5700acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5701debug
5702version of the code includes the debug output trace mechanism and has a
5703much
5704larger code and data size.
5705
5706  Previous Release:
5707    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5708    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5709  Current Release:
5710    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5711    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5712
5713
57142) iASL Compiler/Disassembler and Tools:
5715
5716iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
5717macro.
5718This keyword was added late in the ACPI 5.0 release cycle and was not
5719implemented until now.
5720
5721Disassembler: Added support for Operation Region externals. Adds missing
5722support for operation regions that are defined in another table, and
5723referenced locally via a Field or BankField ASL operator. Now generates
5724the
5725correct External statement.
5726
5727Disassembler: Several additional fixes for the External() statement
5728generation
5729related to some ASL operators. Also, order the External() statements
5730alphabetically in the disassembler output. Fixes the External()
5731generation
5732for
5733the Create* field, Alias, and Scope operators:
5734 1) Create* buffer field operators - fix type mismatch warning on
5735disassembly
5736 2) Alias - implement missing External support
5737 3) Scope - fix to make sure all necessary externals are emitted.
5738
5739iASL: Improved pathname support. For include files, merge the prefix
5740pathname
5741with the file pathname and eliminate unnecessary components. Convert
5742backslashes in all pathnames to forward slashes, for readability. Include
5743file
5744pathname changes affect both #include and Include() type operators.
5745
5746iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
5747end
5748of a valid line by inserting a newline and then returning the EOF during
5749the
5750next call to GetNextLine. Prevents the line from being ignored due to EOF
5751condition.
5752
5753iASL: Implemented some changes to enhance the IDE support (-vi option.)
5754Error
5755and Warning messages are now correctly recognized for both the source
5756code
5757browser and the global error and warning counts.
5758
5759----------------------------------------
576020 April 2012. Summary of changes for version 20120420:
5761
5762
57631) ACPICA Core Subsystem:
5764
5765Implemented support for multiple notify handlers. This change adds
5766support
5767to
5768allow multiple system and device notify handlers on Device, Thermal Zone,
5769and
5770Processor objects. This can simplify the host OS notification
5771implementation.
5772Also re-worked and restructured the entire notify support code to
5773simplify
5774handler installation, handler removal, notify event queuing, and notify
5775dispatch to handler(s). Note: there can still only be two global notify
5776handlers - one for system notifies and one for device notifies. There are
5777no
5778changes to the existing handler install/remove interfaces. Lin Ming, Bob
5779Moore, Rafael Wysocki.
5780
5781Fixed a regression in the package repair code where the object reference
5782count was calculated incorrectly. Regression was introduced in the commit
5783"Support to add Package wrappers".
5784
5785Fixed a couple possible memory leaks in the AML parser, in the error
5786recovery
5787path. Jesper Juhl, Lin Ming.
5788
5789Example Code and Data Size: These are the sizes for the OS-independent
5790acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5791debug version of the code includes the debug output trace mechanism and
5792has a
5793much larger code and data size.
5794
5795  Previous Release:
5796    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5797    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5798  Current Release:
5799    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5800    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5801
5802
58032) iASL Compiler/Disassembler and Tools:
5804
5805iASL: Fixed a problem with the resource descriptor support where the
5806length
5807of the StartDependentFn and StartDependentFnNoPrio descriptors were not
5808included in cumulative descriptor offset, resulting in incorrect values
5809for
5810resource tags within resource descriptors appearing after a
5811StartDependent*
5812descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5813
5814iASL and Preprocessor: Implemented full support for the #line directive
5815to
5816correctly track original source file line numbers through the .i
5817preprocessor
5818output file - for error and warning messages.
5819
5820iASL: Expand the allowable byte constants for address space IDs.
5821Previously,
5822the allowable range was 0x80-0xFF (user-defined spaces), now the range is
58230x0A-0xFF to allow for custom and new IDs without changing the compiler.
5824
5825iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5826
5827iASL: Add option to completely disable the preprocessor (-Pn).
5828
5829iASL: Now emit all error/warning messages to standard error (stderr) by
5830default (instead of the previous stdout).
5831
5832ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
5833Update
5834for resource descriptor offset fix above. Update/cleanup error output
5835routines. Enable and send iASL errors/warnings to an error logfile
5836(error.txt). Send all other iASL output to a logfile (compiler.txt).
5837Fixed
5838several extraneous "unrecognized operator" messages.
5839
5840----------------------------------------
584120 March 2012. Summary of changes for version 20120320:
5842
5843
58441) ACPICA Core Subsystem:
5845
5846Enhanced the sleep/wake interfaces to optionally execute the _GTS method
5847(Going To Sleep) and the _BFS method (Back From Sleep). Windows
5848apparently
5849does not execute these methods, and therefore these methods are often
5850untested. It has been seen on some systems where the execution of these
5851methods causes errors and also prevents the machine from entering S5. It
5852is
5853therefore suggested that host operating systems do not execute these
5854methods
5855by default. In the future, perhaps these methods can be optionally
5856executed
5857based on the age of the system and/or what is the newest version of
5858Windows
5859that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
5860and
5861AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
5862Ming.
5863
5864Fixed a problem where the length of the local/common FADT was set too
5865early.
5866The local FADT table length cannot be set to the common length until the
5867original length has been examined. There is code that checks the table
5868length
5869and sets various fields appropriately. This can affect older machines
5870with
5871early FADT versions. For example, this can cause inadvertent writes to
5872the
5873CST_CNT register. Julian Anastasov.
5874
5875Fixed a mapping issue related to a physical table override. Use the
5876deferred
5877mapping mechanism for tables loaded via the physical override OSL
5878interface.
5879This allows for early mapping before the virtual memory manager is
5880available.
5881Thomas Renninger, Bob Moore.
5882
5883Enhanced the automatic return-object repair code: Repair a common problem
5884with
5885predefined methods that are defined to return a variable-length Package
5886of
5887sub-objects. If there is only one sub-object, some BIOS ASL code
5888mistakenly
5889simply returns the single object instead of a Package with one sub-
5890object.
5891This new support will repair this error by wrapping a Package object
5892around
5893the original object, creating the correct and expected Package with one
5894sub-
5895object. Names that can be repaired in this manner include: _ALR, _CSD,
5896_HPX,
5897_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
5898939.
5899
5900Changed the exception code returned for invalid ACPI paths passed as
5901parameters to external interfaces such as AcpiEvaluateObject. Was
5902AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
5903
5904Example Code and Data Size: These are the sizes for the OS-independent
5905acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5906debug
5907version of the code includes the debug output trace mechanism and has a
5908much
5909larger code and data size.
5910
5911  Previous Release:
5912    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5913    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5914  Current Release:
5915    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5916    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5917
5918
59192) iASL Compiler/Disassembler and Tools:
5920
5921iASL: Added the infrastructure and initial implementation of a integrated
5922C-
5923like preprocessor. This will simplify BIOS development process by
5924eliminating
5925the need for a separate preprocessing step during builds. On Windows, it
5926also
5927eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
5928features including full #define() macro support are still under
5929development.
5930These preprocessor directives are supported:
5931    #define
5932    #elif
5933    #else
5934    #endif
5935    #error
5936    #if
5937    #ifdef
5938    #ifndef
5939    #include
5940    #pragma message
5941    #undef
5942    #warning
5943In addition, these new command line options are supported:
5944    -D <symbol> Define symbol for preprocessor use
5945    -li         Create preprocessed output file (*.i)
5946    -P          Preprocess only and create preprocessor output file (*.i)
5947
5948Table Compiler: Fixed a problem where the equals operator within an
5949expression
5950did not work properly.
5951
5952Updated iASL to use the current versions of Bison/Flex. Updated the
5953Windows
5954project file to invoke these tools from the standard location. ACPICA BZ
5955904.
5956Versions supported:
5957    Flex for Windows:  V2.5.4
5958    Bison for Windows: V2.4.1
5959
5960----------------------------------------
596115 February 2012. Summary of changes for version 20120215:
5962
5963
59641) ACPICA Core Subsystem:
5965
5966There have been some major changes to the sleep/wake support code, as
5967described below (a - e).
5968
5969a) The AcpiLeaveSleepState has been split into two interfaces, similar to
5970AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
5971AcpiLeaveSleepStatePrep. This allows the host to perform actions between
5972the
5973time the _BFS method is called and the _WAK method is called. NOTE: all
5974hosts
5975must update their wake/resume code or else sleep/wake will not work
5976properly.
5977Rafael Wysocki.
5978
5979b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
5980_WAK
5981method. Some machines require that the GPEs are enabled before the _WAK
5982method
5983is executed. Thomas Renninger.
5984
5985c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
5986bit.
5987Some BIOS code assumes that WAK_STS will be cleared on resume and use it
5988to
5989determine whether the system is rebooting or resuming. Matthew Garrett.
5990
5991d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
5992Sleep) to
5993match the ACPI specification requirement. Rafael Wysocki.
5994
5995e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
5996registers within the V5 FADT. This support adds two new files:
5997hardware/hwesleep.c implements the support for the new registers. Moved
5998all
5999sleep/wake external interfaces to hardware/hwxfsleep.c.
6000
6001
6002Added a new OSL interface for ACPI table overrides,
6003AcpiOsPhysicalTableOverride. This interface allows the host to override a
6004table via a physical address, instead of the logical address required by
6005AcpiOsTableOverride. This simplifies the host implementation. Initial
6006implementation by Thomas Renninger. The ACPICA implementation creates a
6007single
6008shared function for table overrides that attempts both a logical and a
6009physical override.
6010
6011Expanded the OSL memory read/write interfaces to 64-bit data
6012(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6013transfer support for GAS register structures passed to AcpiRead and
6014AcpiWrite.
6015
6016Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6017custom
6018build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6019model.
6020See the ACPICA reference for details. ACPICA BZ 942. This option removes
6021about
602210% of the code and 5% of the static data, and the following hardware
6023ACPI
6024features become unavailable:
6025    PM Event and Control registers
6026    SCI interrupt (and handler)
6027    Fixed Events
6028    General Purpose Events (GPEs)
6029    Global Lock
6030    ACPI PM timer
6031    FACS table (Waking vectors and Global Lock)
6032
6033Updated the unix tarball directory structure to match the ACPICA git
6034source
6035tree. This ensures that the generic unix makefiles work properly (in
6036generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6037867.
6038
6039Updated the return value of the _REV predefined method to integer value 5
6040to
6041reflect ACPI 5.0 support.
6042
6043Moved the external ACPI PM timer interface prototypes to the public
6044acpixf.h
6045file where they belong.
6046
6047Example Code and Data Size: These are the sizes for the OS-independent
6048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6049debug
6050version of the code includes the debug output trace mechanism and has a
6051much
6052larger code and data size.
6053
6054  Previous Release:
6055    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6056    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6057  Current Release:
6058    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6059    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6060
6061
60622) iASL Compiler/Disassembler and Tools:
6063
6064Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6065descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6066incorrectly displayed.
6067
6068AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6069specification.
6070
6071----------------------------------------
607211 January 2012. Summary of changes for version 20120111:
6073
6074
60751) ACPICA Core Subsystem:
6076
6077Implemented a new mechanism to allow host device drivers to check for
6078address
6079range conflicts with ACPI Operation Regions. Both SystemMemory and
6080SystemIO
6081address spaces are supported. A new external interface,
6082AcpiCheckAddressRange,
6083allows drivers to check an address range against the ACPI namespace. See
6084the
6085ACPICA reference for additional details. Adds one new file,
6086utilities/utaddress.c. Lin Ming, Bob Moore.
6087
6088Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6089Control
6090and
6091Status registers, update the ACPI 5.0 flags, and update internal data
6092structures to handle an FADT larger than 256 bytes. The size of the ACPI
60935.0
6094FADT is 268 bytes.
6095
6096Updated all ACPICA copyrights and signons to 2012. Added the 2012
6097copyright to
6098all module headers and signons, including the standard Linux header. This
6099affects virtually every file in the ACPICA core subsystem, iASL compiler,
6100and
6101all ACPICA utilities.
6102
6103Example Code and Data Size: These are the sizes for the OS-independent
6104acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6105debug
6106version of the code includes the debug output trace mechanism and has a
6107much
6108larger code and data size.
6109
6110  Previous Release:
6111    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6112    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6113  Current Release:
6114    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6115    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6116
6117
61182) iASL Compiler/Disassembler and Tools:
6119
6120Disassembler: fixed a problem with the automatic resource tag generation
6121support. Fixes a problem where the resource tags are inadvertently not
6122constructed if the table being disassembled contains external references
6123to
6124control methods. Moved the actual construction of the tags to after the
6125final
6126namespace is constructed (after 2nd parse is invoked due to external
6127control
6128method references.) ACPICA BZ 941.
6129
6130Table Compiler: Make all "generic" operators caseless. These are the
6131operators
6132like UINT8, String, etc. Making these caseless improves ease-of-use.
6133ACPICA BZ
6134934.
6135
6136----------------------------------------
613723 November 2011. Summary of changes for version 20111123:
6138
61390) ACPI 5.0 Support:
6140
6141This release contains full support for the ACPI 5.0 specification, as
6142summarized below.
6143
6144Reduced Hardware Support:
6145-------------------------
6146
6147This support allows for ACPI systems without the usual ACPI hardware.
6148This
6149support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6150will
6151not attempt to initialize or use any of the usual ACPI hardware. Note,
6152when
6153this flag is set, all of the following ACPI hardware is assumed to be not
6154present and is not initialized or accessed:
6155
6156    General Purpose Events (GPEs)
6157    Fixed Events (PM1a/PM1b and PM Control)
6158    Power Management Timer and Console Buttons (power/sleep)
6159    Real-time Clock Alarm
6160    Global Lock
6161    System Control Interrupt (SCI)
6162    The FACS is assumed to be non-existent
6163
6164ACPI Tables:
6165------------
6166
6167All new tables and updates to existing tables are fully supported in the
6168ACPICA headers (for use by device drivers), the disassembler, and the
6169iASL
6170Data Table Compiler. ACPI 5.0 defines these new tables:
6171
6172    BGRT        /* Boot Graphics Resource Table */
6173    DRTM        /* Dynamic Root of Trust for Measurement table */
6174    FPDT        /* Firmware Performance Data Table */
6175    GTDT        /* Generic Timer Description Table */
6176    MPST        /* Memory Power State Table */
6177    PCCT        /* Platform Communications Channel Table */
6178    PMTT        /* Platform Memory Topology Table */
6179    RASF        /* RAS Feature table */
6180
6181Operation Regions/SpaceIDs:
6182---------------------------
6183
6184All new operation regions are fully supported by the iASL compiler, the
6185disassembler, and the ACPICA runtime code (for dispatch to region
6186handlers.)
6187The new operation region Space IDs are:
6188
6189    GeneralPurposeIo
6190    GenericSerialBus
6191
6192Resource Descriptors:
6193---------------------
6194
6195All new ASL resource descriptors are fully supported by the iASL
6196compiler,
6197the
6198ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6199(including
6200all new predefined resource tags). New descriptors are:
6201
6202    FixedDma
6203    GpioIo
6204    GpioInt
6205    I2cSerialBus
6206    SpiSerialBus
6207    UartSerialBus
6208
6209ASL/AML Operators, New and Modified:
6210------------------------------------
6211
6212One new operator is added, the Connection operator, which is used to
6213associate
6214a GeneralPurposeIo or GenericSerialBus resource descriptor with
6215individual
6216field objects within an operation region. Several new protocols are
6217associated
6218with the AccessAs operator. All are fully supported by the iASL compiler,
6219disassembler, and runtime ACPICA AML interpreter:
6220
6221    Connection                      // Declare Field Connection
6222attributes
6223    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6224    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6225Protocol
6226    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6227    RawDataBuffer                       // Data type for Vendor Data
6228fields
6229
6230Predefined ASL/AML Objects:
6231---------------------------
6232
6233All new predefined objects/control-methods are supported by the iASL
6234compiler
6235and the ACPICA runtime validation/repair (arguments and return values.)
6236New
6237predefined names include the following:
6238
6239Standard Predefined Names (Objects or Control Methods):
6240    _AEI, _CLS, _CPC, _CWS, _DEP,
6241    _DLM, _EVT, _GCP, _CRT, _GWS,
6242    _HRV, _PRE, _PSE, _SRT, _SUB.
6243
6244Resource Tags (Names used to access individual fields within resource
6245descriptors):
6246    _DBT, _DPL, _DRS, _END, _FLC,
6247    _IOR, _LIN, _MOD, _PAR, _PHA,
6248    _PIN, _PPI, _POL, _RXL, _SLV,
6249    _SPE, _STB, _TXL, _VEN.
6250
6251ACPICA External Interfaces:
6252---------------------------
6253
6254Several new interfaces have been defined for use by ACPI-related device
6255drivers and other host OS services:
6256
6257AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6258to
6259acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6260provided by the BIOS. They are intended to be used in conjunction with
6261the
6262ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6263mutual exclusion with the AML code/interpreter.
6264
6265AcpiGetEventResources: Returns the (formatted) resource descriptors as
6266defined
6267by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6268provides
6269resource descriptors associated with hardware-reduced platform events,
6270similar
6271to the AcpiGetCurrentResources interface.
6272
6273Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6274operation regions, information about the Connection() object and any
6275optional
6276length information is passed to the region handler within the Context
6277parameter.
6278
6279AcpiBufferToResource: This interface converts a raw AML buffer containing
6280a
6281resource template or resource descriptor to the ACPI_RESOURCE internal
6282format
6283suitable for use by device drivers. Can be used by an operation region
6284handler
6285to convert the Connection() buffer object into a ACPI_RESOURCE.
6286
6287Miscellaneous/Tools/TestSuites:
6288-------------------------------
6289
6290Support for extended _HID names (Four alpha characters instead of three).
6291Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6292Support for ACPI 5.0 features in the ASLTS test suite.
6293Fully updated documentation (ACPICA and iASL reference documents.)
6294
6295ACPI Table Definition Language:
6296-------------------------------
6297
6298Support for this language was implemented and released as a subsystem of
6299the
6300iASL compiler in 2010. (See the iASL compiler User Guide.)
6301
6302
6303Non-ACPI 5.0 changes for this release:
6304--------------------------------------
6305
63061) ACPICA Core Subsystem:
6307
6308Fix a problem with operation region declarations where a failure can
6309occur
6310if
6311the region name and an argument that evaluates to an object (such as the
6312region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6313937.
6314
6315Do not abort an ACPI table load if an invalid space ID is found within.
6316This
6317will be caught later if the offending method is executed. ACPICA BZ 925.
6318
6319Fixed an issue with the FFixedHW space ID where the ID was not always
6320recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6321
6322Fixed a problem with the 32-bit generation of the unix-specific OSL
6323(osunixxf.c). Lin Ming, ACPICA BZ 936.
6324
6325Several changes made to enable generation with the GCC 4.6 compiler.
6326ACPICA BZ
6327935.
6328
6329New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6330Index/Bank
6331field registers out-of-range.
6332
63332) iASL Compiler/Disassembler and Tools:
6334
6335iASL: Implemented the __PATH__ operator, which returns the full pathname
6336of
6337the current source file.
6338
6339AcpiHelp: Automatically display expanded keyword information for all ASL
6340operators.
6341
6342Debugger: Add "Template" command to disassemble/dump resource template
6343buffers.
6344
6345Added a new master script to generate and execute the ASLTS test suite.
6346Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6347
6348iASL: Fix problem with listing generation during processing of the
6349Switch()
6350operator where AML listing was disabled until the entire Switch block was
6351completed.
6352
6353iASL: Improve support for semicolon statement terminators. Fix "invalid
6354character" message for some cases when the semicolon is used. Semicolons
6355are
6356now allowed after every <Term> grammar element. ACPICA BZ 927.
6357
6358iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6359923.
6360
6361Disassembler: Fix problem with disassembly of the DataTableRegion
6362operator
6363where an inadvertent "Unhandled deferred opcode" message could be
6364generated.
6365
63663) Example Code and Data Size
6367
6368These are the sizes for the OS-independent acpica.lib produced by the
6369Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6370includes the debug output trace mechanism and has a much larger code and
6371data
6372size.
6373
6374  Previous Release:
6375    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6376    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6377  Current Release:
6378    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6379    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6380
6381----------------------------------------
638222 September 2011. Summary of changes for version 20110922:
6383
63840) ACPI 5.0 News:
6385
6386Support for ACPI 5.0 in ACPICA has been underway for several months and
6387will
6388be released at the same time that ACPI 5.0 is officially released.
6389
6390The ACPI 5.0 specification is on track for release in the next few
6391months.
6392
63931) ACPICA Core Subsystem:
6394
6395Fixed a problem where the maximum sleep time for the Sleep() operator was
6396intended to be limited to two seconds, but was inadvertently limited to
639720
6398seconds instead.
6399
6400Linux and Unix makefiles: Added header file dependencies to ensure
6401correct
6402generation of ACPICA core code and utilities. Also simplified the
6403makefiles
6404considerably through the use of the vpath variable to specify search
6405paths.
6406ACPICA BZ 924.
6407
64082) iASL Compiler/Disassembler and Tools:
6409
6410iASL: Implemented support to check the access length for all fields
6411created to
6412access named Resource Descriptor fields. For example, if a resource field
6413is
6414defined to be two bits, a warning is issued if a CreateXxxxField() is
6415used
6416with an incorrect bit length. This is implemented for all current
6417resource
6418descriptor names. ACPICA BZ 930.
6419
6420Disassembler: Fixed a byte ordering problem with the output of 24-bit and
642156-
6422bit integers.
6423
6424iASL: Fixed a couple of issues associated with variable-length package
6425objects. 1) properly handle constants like One, Ones, Zero -- do not make
6426a
6427VAR_PACKAGE when these are used as a package length. 2) Allow the
6428VAR_PACKAGE
6429opcode (in addition to PACKAGE) when validating object types for
6430predefined
6431names.
6432
6433iASL: Emit statistics for all output files (instead of just the ASL input
6434and
6435AML output). Includes listings, hex files, etc.
6436
6437iASL: Added -G option to the table compiler to allow the compilation of
6438custom
6439ACPI tables. The only part of a table that is required is the standard
644036-
6441byte
6442ACPI header.
6443
6444AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6445headers),
6446which also adds correct 64-bit support. Also, now all output filenames
6447are
6448completely lower case.
6449
6450AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6451loading table files. A warning is issued for any such tables. The only
6452exception is an FADT. This also fixes a possible fault when attempting to
6453load
6454non-AML tables. ACPICA BZ 932.
6455
6456AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6457a
6458missing table terminator could cause a fault when using the -p option.
6459
6460AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6461statistics.
6462
64633) Example Code and Data Size
6464
6465These are the sizes for the OS-independent acpica.lib produced by the
6466Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6467includes the debug output trace mechanism and has a much larger code and
6468data
6469size.
6470
6471  Previous Release (VC 9.0):
6472    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6473    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6474  Current Release (VC 9.0):
6475    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6476    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6477
6478
6479----------------------------------------
648023 June 2011. Summary of changes for version 20110623:
6481
64821) ACPI CA Core Subsystem:
6483
6484Updated the predefined name repair mechanism to not attempt repair of a
6485_TSS
6486return object if a _PSS object is present. We can only sort the _TSS
6487return
6488package if there is no _PSS within the same scope. This is because if
6489_PSS
6490is
6491present, the ACPI specification dictates that the _TSS Power Dissipation
6492field
6493is to be ignored, and therefore some BIOSs leave garbage values in the
6494_TSS
6495Power field(s). In this case, it is best to just return the _TSS package
6496as-
6497is. Reported by, and fixed with assistance from Fenghua Yu.
6498
6499Added an option to globally disable the control method return value
6500validation
6501and repair. This runtime option can be used to disable return value
6502repair
6503if
6504this is causing a problem on a particular machine. Also added an option
6505to
6506AcpiExec (-dr) to set this disable flag.
6507
6508All makefiles and project files: Major changes to improve generation of
6509ACPICA
6510tools. ACPICA BZ 912:
6511    Reduce default optimization levels to improve compatibility
6512    For Linux, add strict-aliasing=0 for gcc 4
6513    Cleanup and simplify use of command line defines
6514    Cleanup multithread library support
6515    Improve usage messages
6516
6517Linux-specific header: update handling of THREAD_ID and pthread. For the
651832-
6519bit case, improve casting to eliminate possible warnings, especially with
6520the
6521acpica tools.
6522
6523Example Code and Data Size: These are the sizes for the OS-independent
6524acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6525debug
6526version of the code includes the debug output trace mechanism and has a
6527much
6528larger code and data size.
6529
6530  Previous Release (VC 9.0):
6531    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6532    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6533  Current Release (VC 9.0):
6534    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6535    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6536
65372) iASL Compiler/Disassembler and Tools:
6538
6539With this release, a new utility named "acpihelp" has been added to the
6540ACPICA
6541package. This utility summarizes the ACPI specification chapters for the
6542ASL
6543and AML languages. It generates under Linux/Unix as well as Windows, and
6544provides the following functionality:
6545    Find/display ASL operator(s) -- with description and syntax.
6546    Find/display ASL keyword(s) -- with exact spelling and descriptions.
6547    Find/display ACPI predefined name(s) -- with description, number
6548        of arguments, and the return value data type.
6549    Find/display AML opcode name(s) -- with opcode, arguments, and
6550grammar.
6551    Decode/display AML opcode -- with opcode name, arguments, and
6552grammar.
6553
6554Service Layers: Make multi-thread support configurable. Conditionally
6555compile
6556the multi-thread support so that threading libraries will not be linked
6557if
6558not
6559necessary. The only tool that requires multi-thread support is AcpiExec.
6560
6561iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6562of
6563Bison appear to want the interface to yyerror to be a const char * (or at
6564least this is a problem when generating iASL on some systems.) ACPICA BZ
6565923
6566Pierre Lejeune.
6567
6568Tools: Fix for systems where O_BINARY is not defined. Only used for
6569Windows
6570versions of the tools.
6571
6572----------------------------------------
657327 May 2011. Summary of changes for version 20110527:
6574
65751) ACPI CA Core Subsystem:
6576
6577ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6578table
6579signature. Now, only allow SSDT, OEMx, and a null signature. History:
6580    1) Originally, we checked the table signature for "SSDT" or "PSDT".
6581       (PSDT is now obsolete.)
6582    2) We added support for OEMx tables, signature "OEM" plus a fourth
6583       "don't care" character.
6584    3) Valid tables were encountered with a null signature, so we just
6585       gave up on validating the signature, (05/2008).
6586    4) We encountered non-AML tables such as the MADT, which caused
6587       interpreter errors and kernel faults. So now, we once again allow
6588       only SSDT, OEMx, and now, also a null signature. (05/2011).
6589
6590Added the missing _TDL predefined name to the global name list in order
6591to
6592enable validation. Affects both the core ACPICA code and the iASL
6593compiler.
6594
6595Example Code and Data Size: These are the sizes for the OS-independent
6596acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6597debug
6598version of the code includes the debug output trace mechanism and has a
6599much
6600larger code and data size.
6601
6602  Previous Release (VC 9.0):
6603    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6604    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6605  Current Release (VC 9.0):
6606    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6607    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6608
66092) iASL Compiler/Disassembler and Tools:
6610
6611Debugger/AcpiExec: Implemented support for "complex" method arguments on
6612the
6613debugger command line. This adds support beyond simple integers --
6614including
6615Strings, Buffers, and Packages. Includes support for nested packages.
6616Increased the default command line buffer size to accommodate these
6617arguments.
6618See the ACPICA reference for details and syntax. ACPICA BZ 917.
6619
6620Debugger/AcpiExec: Implemented support for "default" method arguments for
6621the
6622Execute/Debug command. Now, the debugger will always invoke a control
6623method
6624with the required number of arguments -- even if the command line
6625specifies
6626none or insufficient arguments. It uses default integer values for any
6627missing
6628arguments. Also fixes a bug where only six method arguments maximum were
6629supported instead of the required seven.
6630
6631Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6632and
6633also return status in order to prevent buffer overruns. See the ACPICA
6634reference for details and syntax. ACPICA BZ 921
6635
6636iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6637makefiles to simplify support for the two different but similar parser
6638generators, bison and yacc.
6639
6640Updated the generic unix makefile for gcc 4. The default gcc version is
6641now
6642expected to be 4 or greater, since options specific to gcc 4 are used.
6643
6644----------------------------------------
664513 April 2011. Summary of changes for version 20110413:
6646
66471) ACPI CA Core Subsystem:
6648
6649Implemented support to execute a so-called "orphan" _REG method under the
6650EC
6651device. This change will force the execution of a _REG method underneath
6652the
6653EC
6654device even if there is no corresponding operation region of type
6655EmbeddedControl. Fixes a problem seen on some machines and apparently is
6656compatible with Windows behavior. ACPICA BZ 875.
6657
6658Added more predefined methods that are eligible for automatic NULL
6659package
6660element removal. This change adds another group of predefined names to
6661the
6662list
6663of names that can be repaired by having NULL package elements dynamically
6664removed. This group are those methods that return a single variable-
6665length
6666package containing simple data types such as integers, buffers, strings.
6667This
6668includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6669_PSL,
6670_Sx,
6671and _TZD. ACPICA BZ 914.
6672
6673Split and segregated all internal global lock functions to a new file,
6674evglock.c.
6675
6676Updated internal address SpaceID for DataTable regions. Moved this
6677internal
6678space
6679id in preparation for ACPI 5.0 changes that will include some new space
6680IDs.
6681This
6682change should not affect user/host code.
6683
6684Example Code and Data Size: These are the sizes for the OS-independent
6685acpica.lib
6686produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6687version of
6688the code includes the debug output trace mechanism and has a much larger
6689code
6690and
6691data size.
6692
6693  Previous Release (VC 9.0):
6694    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6695    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6696  Current Release (VC 9.0):
6697    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6698    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6699
67002) iASL Compiler/Disassembler and Tools:
6701
6702iASL/DTC: Major update for new grammar features. Allow generic data types
6703in
6704custom ACPI tables. Field names are now optional. Any line can be split
6705to
6706multiple lines using the continuation char (\). Large buffers now use
6707line-
6708continuation character(s) and no colon on the continuation lines. See the
6709grammar
6710update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
6711Moore.
6712
6713iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
6714statements.
6715Since the parser stuffs a "zero" as the return value for these statements
6716(due
6717to
6718the underlying AML grammar), they were seen as "return with value" by the
6719iASL
6720semantic checking. They are now seen correctly as "null" return
6721statements.
6722
6723iASL: Check if a_REG declaration has a corresponding Operation Region.
6724Adds a
6725check for each _REG to ensure that there is in fact a corresponding
6726operation
6727region declaration in the same scope. If not, the _REG method is not very
6728useful
6729since it probably won't be executed. ACPICA BZ 915.
6730
6731iASL/DTC: Finish support for expression evaluation. Added a new
6732expression
6733parser
6734that implements c-style operator precedence and parenthesization. ACPICA
6735bugzilla
6736908.
6737
6738Disassembler/DTC: Remove support for () and <> style comments in data
6739tables.
6740Now
6741that DTC has full expression support, we don't want to have comment
6742strings
6743that
6744start with a parentheses or a less-than symbol. Now, only the standard /*
6745and
6746//
6747comments are supported, as well as the bracket [] comments.
6748
6749AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
6750"unusual"
6751headers in the acpidump file. Update the header validation to support
6752these
6753tables. Problem introduced in previous AcpiXtract version in the change
6754to
6755support "wrong checksum" error messages emitted by acpidump utility.
6756
6757iASL: Add a * option to generate all template files (as a synonym for
6758ALL)
6759as
6760in
6761"iasl -T *" or "iasl -T ALL".
6762
6763iASL/DTC: Do not abort compiler on fatal errors. We do not want to
6764completely
6765abort the compiler on "fatal" errors, simply should abort the current
6766compile.
6767This allows multiple compiles with a single (possibly wildcard) compiler
6768invocation.
6769
6770----------------------------------------
677116 March 2011. Summary of changes for version 20110316:
6772
67731) ACPI CA Core Subsystem:
6774
6775Fixed a problem caused by a _PRW method appearing at the namespace root
6776scope
6777during the setup of wake GPEs. A fault could occur if a _PRW directly
6778under
6779the
6780root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
6781
6782Implemented support for "spurious" Global Lock interrupts. On some
6783systems, a
6784global lock interrupt can occur without the pending flag being set. Upon
6785a
6786GL
6787interrupt, we now ensure that a thread is actually waiting for the lock
6788before
6789signaling GL availability. Rafael Wysocki, Bob Moore.
6790
6791Example Code and Data Size: These are the sizes for the OS-independent
6792acpica.lib
6793produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6794version of
6795the code includes the debug output trace mechanism and has a much larger
6796code
6797and
6798data size.
6799
6800  Previous Release (VC 9.0):
6801    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6802    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6803  Current Release (VC 9.0):
6804    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6805    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6806
68072) iASL Compiler/Disassembler and Tools:
6808
6809Implemented full support for the "SLIC" ACPI table. Includes support in
6810the
6811header files, disassembler, table compiler, and template generator. Bob
6812Moore,
6813Lin Ming.
6814
6815AcpiXtract: Correctly handle embedded comments and messages from
6816AcpiDump.
6817Apparently some or all versions of acpidump will occasionally emit a
6818comment
6819like
6820"Wrong checksum", etc., into the dump file. This was causing problems for
6821AcpiXtract. ACPICA BZ 905.
6822
6823iASL: Fix the Linux makefile by removing an inadvertent double file
6824inclusion.
6825ACPICA BZ 913.
6826
6827AcpiExec: Update installation of operation region handlers. Install one
6828handler
6829for a user-defined address space. This is used by the ASL test suite
6830(ASLTS).
6831
6832----------------------------------------
683311 February 2011. Summary of changes for version 20110211:
6834
68351) ACPI CA Core Subsystem:
6836
6837Added a mechanism to defer _REG methods for some early-installed
6838handlers.
6839Most user handlers should be installed before call to
6840AcpiEnableSubsystem.
6841However, Event handlers and region handlers should be installed after
6842AcpiInitializeObjects. Override handlers for the "default" regions should
6843be
6844installed early, however. This change executes all _REG methods for the
6845default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
6846chicken/egg issues between them. ACPICA BZ 848.
6847
6848Implemented an optimization for GPE detection. This optimization will
6849simply
6850ignore GPE registers that contain no enabled GPEs -- there is no need to
6851read the register since this information is available internally. This
6852becomes more important on machines with a large GPE space. ACPICA
6853bugzilla
6854884. Lin Ming. Suggestion from Joe Liu.
6855
6856Removed all use of the highly unreliable FADT revision field. The
6857revision
6858number in the FADT has been found to be completely unreliable and cannot
6859be
6860trusted. Only the actual table length can be used to infer the version.
6861This
6862change updates the ACPICA core and the disassembler so that both no
6863longer
6864even look at the FADT version and instead depend solely upon the FADT
6865length.
6866
6867Fix an unresolved name issue for the no-debug and no-error-message source
6868generation cases. The _AcpiModuleName was left undefined in these cases,
6869but
6870it is actually needed as a parameter to some interfaces. Define
6871_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
6872
6873Split several large files (makefiles and project files updated)
6874  utglobal.c   -> utdecode.c
6875  dbcomds.c    -> dbmethod.c dbnames.c
6876  dsopcode.c   -> dsargs.c dscontrol.c
6877  dsload.c     -> dsload2.c
6878  aslanalyze.c -> aslbtypes.c aslwalks.c
6879
6880Example Code and Data Size: These are the sizes for the OS-independent
6881acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6882debug version of the code includes the debug output trace mechanism and
6883has
6884a much larger code and data size.
6885
6886  Previous Release (VC 9.0):
6887    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6888    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6889  Current Release (VC 9.0):
6890    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6891    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6892
68932) iASL Compiler/Disassembler and Tools:
6894
6895iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
6896These are useful C-style macros with the standard definitions. ACPICA
6897bugzilla 898.
6898
6899iASL/DTC: Added support for integer expressions and labels. Support for
6900full
6901expressions for all integer fields in all ACPI tables. Support for labels
6902in
6903"generic" portions of tables such as UEFI. See the iASL reference manual.
6904
6905Debugger: Added a command to display the status of global handlers. The
6906"handlers" command will display op region, fixed event, and miscellaneous
6907global handlers. installation status -- and for op regions, whether
6908default
6909or user-installed handler will be used.
6910
6911iASL: Warn if reserved method incorrectly returns a value. Many
6912predefined
6913names are defined such that they do not return a value. If implemented as
6914a
6915method, issue a warning if such a name explicitly returns a value. ACPICA
6916Bugzilla 855.
6917
6918iASL: Added detection of GPE method name conflicts. Detects a conflict
6919where
6920there are two GPE methods of the form _Lxy and _Exy in the same scope.
6921(For
6922example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6923
6924iASL/DTC: Fixed a couple input scanner issues with comments and line
6925numbers. Comment remover could get confused and miss a comment ending.
6926Fixed
6927a problem with line counter maintenance.
6928
6929iASL/DTC: Reduced the severity of some errors from fatal to error. There
6930is
6931no need to abort on simple errors within a field definition.
6932
6933Debugger: Simplified the output of the help command. All help output now
6934in
6935a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6936
6937----------------------------------------
693812 January 2011. Summary of changes for version 20110112:
6939
69401) ACPI CA Core Subsystem:
6941
6942Fixed a race condition between method execution and namespace walks that
6943can
6944possibly cause a fault. The problem was apparently introduced in version
694520100528 as a result of a performance optimization that reduces the
6946number
6947of
6948namespace walks upon method exit by using the delete_namespace_subtree
6949function instead of the delete_namespace_by_owner function used
6950previously.
6951Bug is a missing namespace lock in the delete_namespace_subtree function.
6952dana.myers@oracle.com
6953
6954Fixed several issues and a possible fault with the automatic "serialized"
6955method support. History: This support changes a method to "serialized" on
6956the
6957fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6958possibility that it cannot handle reentrancy. This fix repairs a couple
6959of
6960issues seen in the field, especially on machines with many cores:
6961
6962    1) Delete method children only upon the exit of the last thread,
6963       so as to not delete objects out from under other running threads
6964      (and possibly causing a fault.)
6965    2) Set the "serialized" bit for the method only upon the exit of the
6966       Last thread, so as to not cause deadlock when running threads
6967       attempt to exit.
6968    3) Cleanup the use of the AML "MethodFlags" and internal method flags
6969       so that there is no longer any confusion between the two.
6970
6971    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
6972
6973Debugger: Now lock the namespace for duration of a namespace dump.
6974Prevents
6975issues if the namespace is changing dynamically underneath the debugger.
6976Especially affects temporary namespace nodes, since the debugger displays
6977these also.
6978
6979Updated the ordering of include files. The ACPICA headers should appear
6980before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
6981set
6982any necessary compiler-specific defines, etc. Affects the ACPI-related
6983tools
6984and utilities.
6985
6986Updated all ACPICA copyrights and signons to 2011. Added the 2011
6987copyright
6988to all module headers and signons, including the Linux header. This
6989affects
6990virtually every file in the ACPICA core subsystem, iASL compiler, and all
6991utilities.
6992
6993Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
6994project files for VC++ 6.0 are now obsolete. New project files can be
6995found
6996under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
6997details.
6998
6999Example Code and Data Size: These are the sizes for the OS-independent
7000acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7001debug version of the code includes the debug output trace mechanism and
7002has a
7003much larger code and data size.
7004
7005  Previous Release (VC 6.0):
7006    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7007    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7008  Current Release (VC 9.0):
7009    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7010    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7011
70122) iASL Compiler/Disassembler and Tools:
7013
7014iASL: Added generic data types to the Data Table compiler. Add "generic"
7015data
7016types such as UINT32, String, Unicode, etc., to simplify the generation
7017of
7018platform-defined tables such as UEFI. Lin Ming.
7019
7020iASL: Added listing support for the Data Table Compiler. Adds listing
7021support
7022(-l) to display actual binary output for each line of input code.
7023
7024----------------------------------------
702509 December 2010. Summary of changes for version 20101209:
7026
70271) ACPI CA Core Subsystem:
7028
7029Completed the major overhaul of the GPE support code that was begun in
7030July
70312010. Major features include: removal of _PRW execution in ACPICA (host
7032executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7033changes to existing interfaces, simplification of GPE handler operation,
7034and
7035a handful of new interfaces:
7036
7037    AcpiUpdateAllGpes
7038    AcpiFinishGpe
7039    AcpiSetupGpeForWake
7040    AcpiSetGpeWakeMask
7041    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7042
7043See the ACPICA Programmer Reference for full details and programming
7044information. See the new section 4.4 "General Purpose Event (GPE)
7045Support"
7046for a full overview, and section 8.7 "ACPI General Purpose Event
7047Management"
7048for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7049Ming,
7050Bob Moore, Rafael Wysocki.
7051
7052Implemented a new GPE feature for Windows compatibility, the "Implicit
7053Wake
7054GPE Notify". This feature will automatically issue a Notify(2) on a
7055device
7056when a Wake GPE is received if there is no corresponding GPE method or
7057handler. ACPICA BZ 870.
7058
7059Fixed a problem with the Scope() operator during table parse and load
7060phase.
7061During load phase (table load or method execution), the scope operator
7062should
7063not enter the target into the namespace. Instead, it should open a new
7064scope
7065at the target location. Linux BZ 19462, ACPICA BZ 882.
7066
7067Example Code and Data Size: These are the sizes for the OS-independent
7068acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7069debug version of the code includes the debug output trace mechanism and
7070has a
7071much larger code and data size.
7072
7073  Previous Release:
7074    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7075    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7076  Current Release:
7077    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7078    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7079
70802) iASL Compiler/Disassembler and Tools:
7081
7082iASL: Relax the alphanumeric restriction on _CID strings. These strings
7083are
7084"bus-specific" per the ACPI specification, and therefore any characters
7085are
7086acceptable. The only checks that can be performed are for a null string
7087and
7088perhaps for a leading asterisk. ACPICA BZ 886.
7089
7090iASL: Fixed a problem where a syntax error that caused a premature EOF
7091condition on the source file emitted a very confusing error message. The
7092premature EOF is now detected correctly. ACPICA BZ 891.
7093
7094Disassembler: Decode the AccessSize within a Generic Address Structure
7095(byte
7096access, word access, etc.) Note, this field does not allow arbitrary bit
7097access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7098
7099New: AcpiNames utility - Example namespace dump utility. Shows an example
7100of
7101ACPICA configuration for a minimal namespace dump utility. Uses table and
7102namespace managers, but no AML interpreter. Does not add any
7103functionality
7104over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7105partition and configure ACPICA. ACPICA BZ 883.
7106
7107AML Debugger: Increased the debugger buffer size for method return
7108objects.
7109Was 4K, increased to 16K. Also enhanced error messages for debugger
7110method
7111execution, including the buffer overflow case.
7112
7113----------------------------------------
711413 October 2010. Summary of changes for version 20101013:
7115
71161) ACPI CA Core Subsystem:
7117
7118Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7119now
7120clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7121HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7122
7123Changed the type of the predefined namespace object _TZ from ThermalZone
7124to
7125Device. This was found to be confusing to the host software that
7126processes
7127the various thermal zones, since _TZ is not really a ThermalZone.
7128However,
7129a
7130Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7131Zhang.
7132
7133Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7134string is "Windows 2006 SP2".
7135
7136Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7137nsrepair
7138code automatically repairs _HID-related strings, this type of code is no
7139longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7140878.
7141
7142Example Code and Data Size: These are the sizes for the OS-independent
7143acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7144debug version of the code includes the debug output trace mechanism and
7145has a
7146much larger code and data size.
7147
7148  Previous Release:
7149    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7150    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7151  Current Release:
7152    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7153    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7154
71552) iASL Compiler/Disassembler and Tools:
7156
7157iASL: Implemented additional compile-time validation for _HID strings.
7158The
7159non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7160length
7161of
7162the string must be exactly seven or eight characters. For both _HID and
7163_CID
7164strings, all characters must be alphanumeric. ACPICA BZ 874.
7165
7166iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7167descriptors that are mostly or all zeros, with the expectation that they
7168will
7169be filled in at runtime. iASL now allows this as long as there is a
7170"resource
7171tag" (name) associated with the descriptor, which gives the ASL a handle
7172needed to modify the descriptor. ACPICA BZ 873.
7173
7174Added single-thread support to the generic Unix application OSL.
7175Primarily
7176for iASL support, this change removes the use of semaphores in the
7177single-
7178threaded ACPICA tools/applications - increasing performance. The
7179_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7180option. ACPICA BZ 879.
7181
7182AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7183support
7184for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7185
7186iASL: Moved all compiler messages to a new file, aslmessages.h.
7187
7188----------------------------------------
718915 September 2010. Summary of changes for version 20100915:
7190
71911) ACPI CA Core Subsystem:
7192
7193Removed the AcpiOsDerivePciId OSL interface. The various host
7194implementations
7195of this function were not OS-dependent and are now obsolete and can be
7196removed from all host OSLs. This function has been replaced by
7197AcpiHwDerivePciId, which is now part of the ACPICA core code.
7198AcpiHwDerivePciId has been implemented without recursion. Adds one new
7199module, hwpci.c. ACPICA BZ 857.
7200
7201Implemented a dynamic repair for _HID and _CID strings. The following
7202problems are now repaired at runtime: 1) Remove a leading asterisk in the
7203string, and 2) the entire string is uppercased. Both repairs are in
7204accordance with the ACPI specification and will simplify host driver
7205code.
7206ACPICA BZ 871.
7207
7208The ACPI_THREAD_ID type is no longer configurable, internally it is now
7209always UINT64. This simplifies the ACPICA code, especially any printf
7210output.
7211UINT64 is the only common data type for all thread_id types across all
7212operating systems. It is now up to the host OSL to cast the native
7213thread_id
7214type to UINT64 before returning the value to ACPICA (via
7215AcpiOsGetThreadId).
7216Lin Ming, Bob Moore.
7217
7218Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7219"inline"
7220keyword is not standard across compilers, and this type allows inline to
7221be
7222configured on a per-compiler basis. Lin Ming.
7223
7224Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7225available.
7226Added an extern for this boolean in acpixf.h. Some hosts utilize this
7227value
7228during suspend/restore operations. ACPICA BZ 869.
7229
7230All code that implements error/warning messages with the "ACPI:" prefix
7231has
7232been moved to a new module, utxferror.c.
7233
7234The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7235it
7236is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7237
7238Example Code and Data Size: These are the sizes for the OS-independent
7239acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7240debug version of the code includes the debug output trace mechanism and
7241has a
7242much larger code and data size.
7243
7244  Previous Release:
7245    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7246    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7247  Current Release:
7248    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7249    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7250
72512) iASL Compiler/Disassembler and Tools:
7252
7253iASL/Disassembler: Write ACPI errors to stderr instead of the output
7254file.
7255This keeps the output files free of random error messages that may
7256originate
7257from within the namespace/interpreter code. Used this opportunity to
7258merge
7259all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7260866. Lin Ming, Bob Moore.
7261
7262Tools: update some printfs for ansi warnings on size_t. Handle width
7263change
7264of size_t on 32-bit versus 64-bit generations. Lin Ming.
7265
7266----------------------------------------
726706 August 2010. Summary of changes for version 20100806:
7268
72691) ACPI CA Core Subsystem:
7270
7271Designed and implemented a new host interface to the _OSI support code.
7272This
7273will allow the host to dynamically add or remove multiple _OSI strings,
7274as
7275well as install an optional handler that is called for each _OSI
7276invocation.
7277Also added a new AML debugger command, 'osi' to display and modify the
7278global
7279_OSI string table, and test support in the AcpiExec utility. See the
7280ACPICA
7281reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7282New Functions:
7283    AcpiInstallInterface - Add an _OSI string.
7284    AcpiRemoveInterface - Delete an _OSI string.
7285    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7286Obsolete Functions:
7287    AcpiOsValidateInterface - no longer used.
7288New Files:
7289    source/components/utilities/utosi.c
7290
7291Re-introduced the support to enable multi-byte transfers for Embedded
7292Controller (EC) operation regions. A reported problem was found to be a
7293bug
7294in the host OS, not in the multi-byte support. Previously, the maximum
7295data
7296size passed to the EC operation region handler was a single byte. There
7297are
7298often EC Fields larger than one byte that need to be transferred, and it
7299is
7300useful for the EC driver to lock these as a single transaction. This
7301change
7302enables single transfers larger than 8 bits. This effectively changes the
7303access to the EC space from ByteAcc to AnyAcc, and will probably require
7304changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7305bit
7306transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7307
7308Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7309prototype in acpiosxf.h had the output value pointer as a (void *).
7310It should be a (UINT64 *). This may affect some host OSL code.
7311
7312Fixed a couple problems with the recently modified Linux makefiles for
7313iASL
7314and AcpiExec. These new makefiles place the generated object files in the
7315local directory so that there can be no collisions between the files that
7316are
7317shared between them that are compiled with different options.
7318
7319Example Code and Data Size: These are the sizes for the OS-independent
7320acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7321debug version of the code includes the debug output trace mechanism and
7322has a
7323much larger code and data size.
7324
7325  Previous Release:
7326    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7327    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7328  Current Release:
7329    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7330    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7331
73322) iASL Compiler/Disassembler and Tools:
7333
7334iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7335the
7336namespace from and disassemble an entire group of AML files. Useful for
7337loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7338and
7339disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7340
7341iASL: Allow multiple invocations of -e option. This change allows
7342multiple
7343uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7344834.
7345Lin Ming.
7346
7347----------------------------------------
734802 July 2010. Summary of changes for version 20100702:
7349
73501) ACPI CA Core Subsystem:
7351
7352Implemented several updates to the recently added GPE reference count
7353support. The model for "wake" GPEs is changing to give the host OS
7354complete
7355control of these GPEs. Eventually, the ACPICA core will not execute any
7356_PRW
7357methods, since the host already must execute them. Also, additional
7358changes
7359were made to help ensure that the reference counts are kept in proper
7360synchronization with reality. Rafael J. Wysocki.
7361
73621) Ensure that GPEs are not enabled twice during initialization.
73632) Ensure that GPE enable masks stay in sync with the reference count.
73643) Do not inadvertently enable GPEs when writing GPE registers.
73654) Remove the internal wake reference counter and add new AcpiGpeWakeup
7366interface. This interface will set or clear individual GPEs for wakeup.
73675) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7368interfaces
7369are now used for "runtime" GPEs only.
7370
7371Changed the behavior of the GPE install/remove handler interfaces. The
7372GPE
7373is
7374no longer disabled during this process, as it was found to cause problems
7375on
7376some machines. Rafael J. Wysocki.
7377
7378Reverted a change introduced in version 20100528 to enable Embedded
7379Controller multi-byte transfers. This change was found to cause problems
7380with
7381Index Fields and possibly Bank Fields. It will be reintroduced when these
7382problems have been resolved.
7383
7384Fixed a problem with references to Alias objects within Package Objects.
7385A
7386reference to an Alias within the definition of a Package was not always
7387resolved properly. Aliases to objects like Processors, Thermal zones,
7388etc.
7389were resolved to the actual object instead of a reference to the object
7390as
7391it
7392should be. Package objects are only allowed to contain integer, string,
7393buffer, package, and reference objects. Redhat bugzilla 608648.
7394
7395Example Code and Data Size: These are the sizes for the OS-independent
7396acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7397debug version of the code includes the debug output trace mechanism and
7398has a
7399much larger code and data size.
7400
7401  Previous Release:
7402    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7403    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7404  Current Release:
7405    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7406    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7407
74082) iASL Compiler/Disassembler and Tools:
7409
7410iASL: Implemented a new compiler subsystem to allow definition and
7411compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7412These
7413are called "ACPI Data Tables", and the new compiler is the "Data Table
7414Compiler". This compiler is intended to simplify the existing error-prone
7415process of creating these tables for the BIOS, as well as allowing the
7416disassembly, modification, recompilation, and override of existing ACPI
7417data
7418tables. See the iASL User Guide for detailed information.
7419
7420iASL: Implemented a new Template Generator option in support of the new
7421Data
7422Table Compiler. This option will create examples of all known ACPI tables
7423that can be used as the basis for table development. See the iASL
7424documentation and the -T option.
7425
7426Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7427Descriptor Table).
7428
7429Updated the Linux makefiles for iASL and AcpiExec to place the generated
7430object files in the local directory so that there can be no collisions
7431between the shared files between them that are generated with different
7432options.
7433
7434Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7435Use
7436the #define __APPLE__ to enable this support.
7437
7438----------------------------------------
743928 May 2010. Summary of changes for version 20100528:
7440
7441Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7442available at www.acpi.info. This is primarily an errata release.
7443
74441) ACPI CA Core Subsystem:
7445
7446Undefined ACPI tables: We are looking for the definitions for the
7447following
7448ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7449
7450Implemented support to enable multi-byte transfers for Embedded
7451Controller
7452(EC) operation regions. Previously, the maximum data size passed to the
7453EC
7454operation region handler was a single byte. There are often EC Fields
7455larger
7456than one byte that need to be transferred, and it is useful for the EC
7457driver
7458to lock these as a single transaction. This change enables single
7459transfers
7460larger than 8 bits. This effectively changes the access to the EC space
7461from
7462ByteAcc to AnyAcc, and will probably require changes to the host OS
7463Embedded
7464Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7465bit
7466transfers. Alexey Starikovskiy, Lin Ming
7467
7468Implemented a performance enhancement for namespace search and access.
7469This
7470change enhances the performance of namespace searches and walks by adding
7471a
7472backpointer to the parent in each namespace node. On large namespaces,
7473this
7474change can improve overall ACPI performance by up to 9X. Adding a pointer
7475to
7476each namespace node increases the overall size of the internal namespace
7477by
7478about 5%, since each namespace entry usually consists of both a namespace
7479node and an ACPI operand object. However, this is the first growth of the
7480namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7481
7482Implemented a performance optimization that reduces the number of
7483namespace
7484walks. On control method exit, only walk the namespace if the method is
7485known
7486to have created namespace objects outside of its local scope. Previously,
7487the
7488entire namespace was traversed on each control method exit. This change
7489can
7490improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7491Moore.
7492
7493Added support to truncate I/O addresses to 16 bits for Windows
7494compatibility.
7495Some ASL code has been seen in the field that inadvertently has bits set
7496above bit 15. This feature is optional and is enabled if the BIOS
7497requests
7498any Windows OSI strings. It can also be enabled by the host OS. Matthew
7499Garrett, Bob Moore.
7500
7501Added support to limit the maximum time for the ASL Sleep() operator. To
7502prevent accidental deep sleeps, limit the maximum time that Sleep() will
7503actually sleep. Configurable, the default maximum is two seconds. ACPICA
7504bugzilla 854.
7505
7506Added run-time validation support for the _WDG and_WED Microsoft
7507predefined
7508methods. These objects are defined by "Windows Instrumentation", and are
7509not
7510part of the ACPI spec. ACPICA BZ 860.
7511
7512Expanded all statistic counters used during namespace and device
7513initialization from 16 to 32 bits in order to support very large
7514namespaces.
7515
7516Replaced all instances of %d in printf format specifiers with %u since
7517nearly
7518all integers in ACPICA are unsigned.
7519
7520Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7521returned
7522as AE_NO_HANDLER.
7523
7524Example Code and Data Size: These are the sizes for the OS-independent
7525acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7526debug version of the code includes the debug output trace mechanism and
7527has a
7528much larger code and data size.
7529
7530  Previous Release:
7531    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7532    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7533  Current Release:
7534    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7535    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7536
75372) iASL Compiler/Disassembler and Tools:
7538
7539iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7540methods. These objects are defined by "Windows Instrumentation", and are
7541not
7542part of the ACPI spec. ACPICA BZ 860.
7543
7544AcpiExec: added option to disable the memory tracking mechanism. The -dt
7545option will disable the tracking mechanism, which improves performance
7546considerably.
7547
7548AcpiExec: Restructured the command line options into -d (disable) and -e
7549(enable) options.
7550
7551----------------------------------------
755228 April 2010. Summary of changes for version 20100428:
7553
75541) ACPI CA Core Subsystem:
7555
7556Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7557including FADT-based and GPE Block Devices, execute any _PRW methods in
7558the
7559new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7560runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7561immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7562Devices. Provides compatibility with other ACPI implementations. Two new
7563files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7564Moore.
7565
7566Fixed a regression introduced in version 20100331 within the table
7567manager
7568where initial table loading could fail. This was introduced in the fix
7569for
7570AcpiReallocateRootTable. Also, renamed some of fields in the table
7571manager
7572data structures to clarify their meaning and use.
7573
7574Fixed a possible allocation overrun during internal object copy in
7575AcpiUtCopySimpleObject. The original code did not correctly handle the
7576case
7577where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7578847.
7579
7580Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7581possible access beyond end-of-allocation. Also, now fully validate
7582descriptor
7583(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7584
7585Example Code and Data Size: These are the sizes for the OS-independent
7586acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7587debug version of the code includes the debug output trace mechanism and
7588has a
7589much larger code and data size.
7590
7591  Previous Release:
7592    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7593    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7594  Current Release:
7595    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7596    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7597
75982) iASL Compiler/Disassembler and Tools:
7599
7600iASL: Implemented Min/Max/Len/Gran validation for address resource
7601descriptors. This change implements validation for the address fields
7602that
7603are common to all address-type resource descriptors. These checks are
7604implemented: Checks for valid Min/Max, length within the Min/Max window,
7605valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7606per
7607table 6-40 in the ACPI 4.0a specification. Also split the large
7608aslrestype1.c
7609and aslrestype2.c files into five new files. ACPICA BZ 840.
7610
7611iASL: Added support for the _Wxx predefined names. This support was
7612missing
7613and these names were not recognized by the compiler as valid predefined
7614names. ACPICA BZ 851.
7615
7616iASL: Added an error for all predefined names that are defined to return
7617no
7618value and thus must be implemented as Control Methods. These include all
7619of
7620the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7621names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7622
7623iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7624an
7625ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7626be
7627dynamically loaded via the Load() operator. Also cleaned up output for
7628the
7629-
7630ta and -tc options. ACPICA BZ 853.
7631
7632Tests: Added a new file with examples of extended iASL error checking.
7633Demonstrates the advanced error checking ability of the iASL compiler.
7634Available at tests/misc/badcode.asl.
7635
7636----------------------------------------
763731 March 2010. Summary of changes for version 20100331:
7638
76391) ACPI CA Core Subsystem:
7640
7641Completed a major update for the GPE support in order to improve support
7642for
7643shared GPEs and to simplify both host OS and ACPICA code. Added a
7644reference
7645count mechanism to support shared GPEs that require multiple device
7646drivers.
7647Several external interfaces have changed. One external interface has been
7648removed. One new external interface was added. Most of the GPE external
7649interfaces now use the GPE spinlock instead of the events mutex (and the
7650Flags parameter for many GPE interfaces has been removed.) See the
7651updated
7652ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7653Rafael
7654Wysocki. ACPICA BZ 831.
7655
7656Changed:
7657    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7658Removed:
7659    AcpiSetGpeType
7660New:
7661    AcpiSetGpe
7662
7663Implemented write support for DataTable operation regions. These regions
7664are
7665defined via the DataTableRegion() operator. Previously, only read support
7666was
7667implemented. The ACPI specification allows DataTableRegions to be
7668read/write,
7669however.
7670
7671Implemented a new subsystem option to force a copy of the DSDT to local
7672memory. Optionally copy the entire DSDT to local memory (instead of
7673simply
7674mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7675replace
7676the original DSDT, creating the need for this option. Default is FALSE,
7677do
7678not copy the DSDT.
7679
7680Implemented detection of a corrupted or replaced DSDT. This change adds
7681support to detect a DSDT that has been corrupted and/or replaced from
7682outside
7683the OS (by firmware). This is typically catastrophic for the system, but
7684has
7685been seen on some machines. Once this problem has been detected, the DSDT
7686copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7687
7688Fixed two problems with AcpiReallocateRootTable during the root table
7689copy.
7690When copying the root table to the new allocation, the length used was
7691incorrect. The new size was used instead of the current table size,
7692meaning
7693too much data was copied. Also, the count of available slots for ACPI
7694tables
7695was not set correctly. Alexey Starikovskiy, Bob Moore.
7696
7697Example Code and Data Size: These are the sizes for the OS-independent
7698acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7699debug version of the code includes the debug output trace mechanism and
7700has a
7701much larger code and data size.
7702
7703  Previous Release:
7704    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7705    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7706  Current Release:
7707    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7708    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7709
77102) iASL Compiler/Disassembler and Tools:
7711
7712iASL: Implement limited typechecking for values returned from predefined
7713control methods. The type of any returned static (unnamed) object is now
7714validated. For example, Return(1). ACPICA BZ 786.
7715
7716iASL: Fixed a predefined name object verification regression. Fixes a
7717problem
7718introduced in version 20100304. An error is incorrectly generated if a
7719predefined name is declared as a static named object with a value defined
7720using the keywords "Zero", "One", or "Ones". Lin Ming.
7721
7722iASL: Added Windows 7 support for the -g option (get local ACPI tables)
7723by
7724reducing the requested registry access rights. ACPICA BZ 842.
7725
7726Disassembler: fixed a possible fault when generating External()
7727statements.
7728Introduced in commit ae7d6fd: Properly handle externals with parent-
7729prefix
7730(carat). Fixes a string length allocation calculation. Lin Ming.
7731
7732----------------------------------------
773304 March 2010. Summary of changes for version 20100304:
7734
77351) ACPI CA Core Subsystem:
7736
7737Fixed a possible problem with the AML Mutex handling function
7738AcpiExReleaseMutex where the function could fault under the very rare
7739condition when the interpreter has blocked, the interpreter lock is
7740released,
7741the interpreter is then reentered via the same thread, and attempts to
7742acquire an AML mutex that was previously acquired. FreeBSD report 140979.
7743Lin
7744Ming.
7745
7746Implemented additional configuration support for the AML "Debug Object".
7747Output from the debug object can now be enabled via a global variable,
7748AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
7749debugging.
7750This debug output is now available in the release version of ACPICA
7751instead
7752of just the debug version. Also, the entire debug output module can now
7753be
7754configured out of the ACPICA build if desired. One new file added,
7755executer/exdebug.c. Lin Ming, Bob Moore.
7756
7757Added header support for the ACPI MCHI table (Management Controller Host
7758Interface Table). This table was added in ACPI 4.0, but the defining
7759document
7760has only recently become available.
7761
7762Standardized output of integer values for ACPICA warnings/errors. Always
7763use
77640x prefix for hex output, always use %u for unsigned integer decimal
7765output.
7766Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
7767400
7768invocations.) These invocations were converted from the original
7769ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
7770
7771Example Code and Data Size: These are the sizes for the OS-independent
7772acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7773debug version of the code includes the debug output trace mechanism and
7774has a
7775much larger code and data size.
7776
7777  Previous Release:
7778    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7779    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7780  Current Release:
7781    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7782    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7783
77842) iASL Compiler/Disassembler and Tools:
7785
7786iASL: Implemented typechecking support for static (non-control method)
7787predefined named objects that are declared with the Name() operator. For
7788example, the type of this object is now validated to be of type Integer:
7789Name(_BBN, 1). This change migrates the compiler to using the core
7790predefined
7791name table instead of maintaining a local version. Added a new file,
7792aslpredef.c. ACPICA BZ 832.
7793
7794Disassembler: Added support for the ACPI 4.0 MCHI table.
7795
7796----------------------------------------
779721 January 2010. Summary of changes for version 20100121:
7798
77991) ACPI CA Core Subsystem:
7800
7801Added the 2010 copyright to all module headers and signons. This affects
7802virtually every file in the ACPICA core subsystem, the iASL compiler, the
7803tools/utilities, and the test suites.
7804
7805Implemented a change to the AcpiGetDevices interface to eliminate
7806unnecessary
7807invocations of the _STA method. In the case where a specific _HID is
7808requested, do not run _STA until a _HID match is found. This eliminates
7809potentially dozens of _STA calls during a search for a particular
7810device/HID,
7811which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7812
7813Implemented an additional repair for predefined method return values.
7814Attempt
7815to repair unexpected NULL elements within returned Package objects.
7816Create
7817an
7818Integer of value zero, a NULL String, or a zero-length Buffer as
7819appropriate.
7820ACPICA BZ 818. Lin Ming, Bob Moore.
7821
7822Removed the obsolete ACPI_INTEGER data type. This type was introduced as
7823the
7824code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
7825(with
782664-bit AML integers). It is now obsolete and this change removes it from
7827the
7828ACPICA code base, replaced by UINT64. The original typedef has been
7829retained
7830for now for compatibility with existing device driver code. ACPICA BZ
7831824.
7832
7833Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
7834in
7835the parse tree object.
7836
7837Added additional warning options for the gcc-4 generation. Updated the
7838source
7839accordingly. This includes some code restructuring to eliminate
7840unreachable
7841code, elimination of some gotos, elimination of unused return values,
7842some
7843additional casting, and removal of redundant declarations.
7844
7845Example Code and Data Size: These are the sizes for the OS-independent
7846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7847debug version of the code includes the debug output trace mechanism and
7848has a
7849much larger code and data size.
7850
7851  Previous Release:
7852    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7853    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7854  Current Release:
7855    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7856    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7857
78582) iASL Compiler/Disassembler and Tools:
7859
7860No functional changes for this release.
7861
7862----------------------------------------
786314 December 2009. Summary of changes for version 20091214:
7864
78651) ACPI CA Core Subsystem:
7866
7867Enhanced automatic data type conversions for predefined name repairs.
7868This
7869change expands the automatic repairs/conversions for predefined name
7870return
7871values to make Integers, Strings, and Buffers fully interchangeable.
7872Also,
7873a
7874Buffer can be converted to a Package of Integers if necessary. The
7875nsrepair.c
7876module was completely restructured. Lin Ming, Bob Moore.
7877
7878Implemented automatic removal of null package elements during predefined
7879name
7880repairs. This change will automatically remove embedded and trailing NULL
7881package elements from returned package objects that are defined to
7882contain
7883a
7884variable number of sub-packages. The driver is then presented with a
7885package
7886with no null elements to deal with. ACPICA BZ 819.
7887
7888Implemented a repair for the predefined _FDE and _GTM names. The expected
7889return value for both names is a Buffer of 5 DWORDs. This repair fixes
7890two
7891possible problems (both seen in the field), where a package of integers
7892is
7893returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
7894Kim.
7895
7896Implemented additional module-level code support. This change will
7897properly
7898execute module-level code that is not at the root of the namespace (under
7899a
7900Device object, etc.). Now executes the code within the current scope
7901instead
7902of the root. ACPICA BZ 762. Lin Ming.
7903
7904Fixed possible mutex acquisition errors when running _REG methods. Fixes
7905a
7906problem where mutex errors can occur when running a _REG method that is
7907in
7908the same scope as a method-defined operation region or an operation
7909region
7910under a module-level IF block. This type of code is rare, so the problem
7911has
7912not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7913
7914Fixed a possible memory leak during module-level code execution. An
7915object
7916could be leaked for each block of executed module-level code if the
7917interpreter slack mode is enabled This change deletes any implicitly
7918returned
7919object from the module-level code block. Lin Ming.
7920
7921Removed messages for successful predefined repair(s). The repair
7922mechanism
7923was considered too wordy. Now, messages are only unconditionally emitted
7924if
7925the return object cannot be repaired. Existing messages for successful
7926repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
7927827.
7928
7929Example Code and Data Size: These are the sizes for the OS-independent
7930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7931debug version of the code includes the debug output trace mechanism and
7932has a
7933much larger code and data size.
7934
7935  Previous Release:
7936    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7937    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7938  Current Release:
7939    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7940    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7941
79422) iASL Compiler/Disassembler and Tools:
7943
7944iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
7945files
7946were no longer automatically removed at the termination of the compile.
7947
7948acpiexec: Implemented the -f option to specify default region fill value.
7949This option specifies the value used to initialize buffers that simulate
7950operation regions. Default value is zero. Useful for debugging problems
7951that
7952depend on a specific initial value for a region or field.
7953
7954----------------------------------------
795512 November 2009. Summary of changes for version 20091112:
7956
79571) ACPI CA Core Subsystem:
7958
7959Implemented a post-order callback to AcpiWalkNamespace. The existing
7960interface only has a pre-order callback. This change adds an additional
7961parameter for a post-order callback which will be more useful for bus
7962scans.
7963ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
7964
7965Modified the behavior of the operation region memory mapping cache for
7966SystemMemory. Ensure that the memory mappings created for operation
7967regions
7968do not cross 4K page boundaries. Crossing a page boundary while mapping
7969regions can cause kernel warnings on some hosts if the pages have
7970different
7971attributes. Such regions are probably BIOS bugs, and this is the
7972workaround.
7973Linux BZ 14445. Lin Ming.
7974
7975Implemented an automatic repair for predefined methods that must return
7976sorted lists. This change will repair (by sorting) packages returned by
7977_ALR,
7978_PSS, and _TSS. Drivers can now assume that the packages are correctly
7979sorted
7980and do not contain NULL package elements. Adds one new file,
7981namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
7982
7983Fixed a possible fault during predefined name validation if a return
7984Package
7985object contains NULL elements. Also adds a warning if a NULL element is
7986followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
7987may
7988include repair or removal of all such NULL elements where possible.
7989
7990Implemented additional module-level executable AML code support. This
7991change
7992will execute module-level code that is not at the root of the namespace
7993(under a Device object, etc.) at table load time. Module-level executable
7994AML
7995code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
7996
7997Implemented a new internal function to create Integer objects. This
7998function
7999simplifies miscellaneous object creation code. ACPICA BZ 823.
8000
8001Reduced the severity of predefined repair messages, Warning to Info.
8002Since
8003the object was successfully repaired, a warning is too severe. Reduced to
8004an
8005info message for now. These messages may eventually be changed to debug-
8006only.
8007ACPICA BZ 812.
8008
8009Example Code and Data Size: These are the sizes for the OS-independent
8010acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8011debug version of the code includes the debug output trace mechanism and
8012has a
8013much larger code and data size.
8014
8015  Previous Release:
8016    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8017    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8018  Current Release:
8019    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8020    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8021
80222) iASL Compiler/Disassembler and Tools:
8023
8024iASL: Implemented Switch() with While(1) so that Break works correctly.
8025This
8026change correctly implements the Switch operator with a surrounding
8027While(1)
8028so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8029
8030iASL: Added a message if a package initializer list is shorter than
8031package
8032length. Adds a new remark for a Package() declaration if an initializer
8033list
8034exists, but is shorter than the declared length of the package. Although
8035technically legal, this is probably a coding error and it is seen in the
8036field. ACPICA BZ 815. Lin Ming, Bob Moore.
8037
8038iASL: Fixed a problem where the compiler could fault after the maximum
8039number
8040of errors was reached (200).
8041
8042acpixtract: Fixed a possible warning for pointer cast if the compiler
8043warning
8044level set very high.
8045
8046----------------------------------------
804713 October 2009. Summary of changes for version 20091013:
8048
80491) ACPI CA Core Subsystem:
8050
8051Fixed a problem where an Operation Region _REG method could be executed
8052more
8053than once. If a custom address space handler is installed by the host
8054before
8055the "initialize operation regions" phase of the ACPICA initialization,
8056any
8057_REG methods for that address space could be executed twice. This change
8058fixes the problem. ACPICA BZ 427. Lin Ming.
8059
8060Fixed a possible memory leak for the Scope() ASL operator. When the exact
8061invocation of "Scope(\)" is executed (change scope to root), one internal
8062operand object was leaked. Lin Ming.
8063
8064Implemented a run-time repair for the _MAT predefined method. If the _MAT
8065return value is defined as a Field object in the AML, and the field
8066size is less than or equal to the default width of an integer (32 or
806764),_MAT
8068can incorrectly return an Integer instead of a Buffer. ACPICA now
8069automatically repairs this problem. ACPICA BZ 810.
8070
8071Implemented a run-time repair for the _BIF and _BIX predefined methods.
8072The
8073"OEM Information" field is often incorrectly returned as an Integer with
8074value zero if the field is not supported by the platform. This is due to
8075an
8076ambiguity in the ACPI specification. The field should always be a string.
8077ACPICA now automatically repairs this problem by returning a NULL string
8078within the returned Package. ACPICA BZ 807.
8079
8080Example Code and Data Size: These are the sizes for the OS-independent
8081acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8082debug version of the code includes the debug output trace mechanism and
8083has a
8084much larger code and data size.
8085
8086  Previous Release:
8087    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8088    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8089  Current Release:
8090    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8091    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8092
80932) iASL Compiler/Disassembler and Tools:
8094
8095Disassembler: Fixed a problem where references to external symbols that
8096contained one or more parent-prefixes (carats) were not handled
8097correctly,
8098possibly causing a fault. ACPICA BZ 806. Lin Ming.
8099
8100Disassembler: Restructured the code so that all functions that handle
8101external symbols are in a single module. One new file is added,
8102common/dmextern.c.
8103
8104AML Debugger: Added a max count argument for the Batch command (which
8105executes multiple predefined methods within the namespace.)
8106
8107iASL: Updated the compiler documentation (User Reference.) Available at
8108http://www.acpica.org/documentation/. ACPICA BZ 750.
8109
8110AcpiXtract: Updated for Lint and other formatting changes. Close all open
8111files.
8112
8113----------------------------------------
811403 September 2009. Summary of changes for version 20090903:
8115
81161) ACPI CA Core Subsystem:
8117
8118For Windows Vista compatibility, added the automatic execution of an _INI
8119method located at the namespace root (\_INI). This method is executed at
8120table load time. This support is in addition to the automatic execution
8121of
8122\_SB._INI. Lin Ming.
8123
8124Fixed a possible memory leak in the interpreter for AML package objects
8125if
8126the package initializer list is longer than the defined size of the
8127package.
8128This apparently can only happen if the BIOS changes the package size on
8129the
8130fly (seen in a _PSS object), as ASL compilers do not allow this. The
8131interpreter will truncate the package to the defined size (and issue an
8132error
8133message), but previously could leave the extra objects undeleted if they
8134were
8135pre-created during the argument processing (such is the case if the
8136package
8137consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8138
8139Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8140This has been reported in the field. Previously, ACPICA would zero out
8141the
8142buffer/string. Now, the operation is treated as a noop. Provides Windows
8143compatibility. ACPICA BZ 803. Lin Ming.
8144
8145Removed an extraneous error message for ASL constructs of the form
8146Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8147statements
8148are seen in many BIOSs and are once again treated as NOOPs and no error
8149is
8150emitted when they are encountered. ACPICA BZ 785.
8151
8152Fixed an extraneous warning message if a _DSM reserved method returns a
8153Package object. _DSM can return any type of object, so validation on the
8154return type cannot be performed. ACPICA BZ 802.
8155
8156Example Code and Data Size: These are the sizes for the OS-independent
8157acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8158debug version of the code includes the debug output trace mechanism and
8159has a
8160much larger code and data size.
8161
8162  Previous Release:
8163    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8164    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8165  Current Release:
8166    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8167    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8168
81692) iASL Compiler/Disassembler and Tools:
8170
8171iASL: Fixed a problem with the use of the Alias operator and Resource
8172Templates. The correct alias is now constructed and no error is emitted.
8173ACPICA BZ 738.
8174
8175iASL: Implemented the -I option to specify additional search directories
8176for
8177include files. Allows multiple additional search paths for include files.
8178Directories are searched in the order specified on the command line
8179(after
8180the local directory is searched.) ACPICA BZ 800.
8181
8182iASL: Fixed a problem where the full pathname for include files was not
8183emitted for warnings/errors. This caused the IDE support to not work
8184properly. ACPICA BZ 765.
8185
8186iASL: Implemented the -@ option to specify a Windows-style response file
8187containing additional command line options. ACPICA BZ 801.
8188
8189AcpiExec: Added support to load multiple AML files simultaneously (such
8190as
8191a
8192DSDT and multiple SSDTs). Also added support for wildcards within the AML
8193pathname. These features allow all machine tables to be easily loaded and
8194debugged together. ACPICA BZ 804.
8195
8196Disassembler: Added missing support for disassembly of HEST table Error
8197Bank
8198subtables.
8199
8200----------------------------------------
820130 July 2009. Summary of changes for version 20090730:
8202
8203The ACPI 4.0 implementation for ACPICA is complete with this release.
8204
82051) ACPI CA Core Subsystem:
8206
8207ACPI 4.0: Added header file support for all new and changed ACPI tables.
8208Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8209new
8210for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8211BERT,
8212EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8213There
8214have been some ACPI 4.0 changes to other existing tables. Split the large
8215actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8216
8217ACPI 4.0: Implemented predefined name validation for all new names. There
8218are
821931 new names in ACPI 4.0. The predefined validation module was split into
8220two
8221files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8222
8223Implemented support for so-called "module-level executable code". This is
8224executable AML code that exists outside of any control method and is
8225intended
8226to be executed at table load time. Although illegal since ACPI 2.0, this
8227type
8228of code still exists and is apparently still being created. Blocks of
8229this
8230code are now detected and executed as intended. Currently, the code
8231blocks
8232must exist under either an If, Else, or While construct; these are the
8233typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8234
8235Implemented an automatic dynamic repair for predefined names that return
8236nested Package objects. This applies to predefined names that are defined
8237to
8238return a variable-length Package of sub-packages. If the number of sub-
8239packages is one, BIOS code is occasionally seen that creates a simple
8240single
8241package with no sub-packages. This code attempts to fix the problem by
8242wrapping a new package object around the existing package. These methods
8243can
8244be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8245BZ
8246790.
8247
8248Fixed a regression introduced in 20090625 for the AcpiGetDevices
8249interface.
8250The _HID/_CID matching was broken and no longer matched IDs correctly.
8251ACPICA
8252BZ 793.
8253
8254Fixed a problem with AcpiReset where the reset would silently fail if the
8255register was one of the protected I/O ports. AcpiReset now bypasses the
8256port
8257validation mechanism. This may eventually be driven into the
8258AcpiRead/Write
8259interfaces.
8260
8261Fixed a regression related to the recent update of the AcpiRead/Write
8262interfaces. A sleep/suspend could fail if the optional PM2 Control
8263register
8264does not exist during an attempt to write the Bus Master Arbitration bit.
8265(However, some hosts already delete the code that writes this bit, and
8266the
8267code may in fact be obsolete at this date.) ACPICA BZ 799.
8268
8269Fixed a problem where AcpiTerminate could fault if inadvertently called
8270twice
8271in succession. ACPICA BZ 795.
8272
8273Example Code and Data Size: These are the sizes for the OS-independent
8274acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8275debug version of the code includes the debug output trace mechanism and
8276has a
8277much larger code and data size.
8278
8279  Previous Release:
8280    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8281    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8282  Current Release:
8283    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8284    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8285
82862) iASL Compiler/Disassembler and Tools:
8287
8288ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8289changes to existing tables. ACPICA BZ 775.
8290
8291----------------------------------------
829225 June 2009. Summary of changes for version 20090625:
8293
8294The ACPI 4.0 Specification was released on June 16 and is available at
8295www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8296continue for the next few releases.
8297
82981) ACPI CA Core Subsystem:
8299
8300ACPI 4.0: Implemented interpreter support for the IPMI operation region
8301address space. Includes support for bi-directional data buffers and an
8302IPMI
8303address space handler (to be installed by an IPMI device driver.) ACPICA
8304BZ
8305773. Lin Ming.
8306
8307ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8308Includes
8309support in both the header files and the disassembler.
8310
8311Completed a major update for the AcpiGetObjectInfo external interface.
8312Changes include:
8313 - Support for variable, unlimited length HID, UID, and CID strings.
8314 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8315etc.)
8316 - Call the _SxW power methods on behalf of a device object.
8317 - Determine if a device is a PCI root bridge.
8318 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8319These changes will require an update to all callers of this interface.
8320See
8321the updated ACPICA Programmer Reference for details. One new source file
8322has
8323been added - utilities/utids.c. ACPICA BZ 368, 780.
8324
8325Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8326transfers. The Value parameter has been extended from 32 bits to 64 bits
8327in
8328order to support new ACPI 4.0 tables. These changes will require an
8329update
8330to
8331all callers of these interfaces. See the ACPICA Programmer Reference for
8332details. ACPICA BZ 768.
8333
8334Fixed several problems with AcpiAttachData. The handler was not invoked
8335when
8336the host node was deleted. The data sub-object was not automatically
8337deleted
8338when the host node was deleted. The interface to the handler had an
8339unused
8340parameter, this was removed. ACPICA BZ 778.
8341
8342Enhanced the function that dumps ACPI table headers. All non-printable
8343characters in the string fields are now replaced with '?' (Signature,
8344OemId,
8345OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8346these fields are occasionally seen in the field. ACPICA BZ 788.
8347
8348Fixed a problem with predefined method repair code where the code that
8349attempts to repair/convert an object of incorrect type is only executed
8350on
8351the first time the predefined method is called. The mechanism that
8352disables
8353warnings on subsequent calls was interfering with the repair mechanism.
8354ACPICA BZ 781.
8355
8356Fixed a possible memory leak in the predefined validation/repair code
8357when
8358a
8359buffer is automatically converted to an expected string object.
8360
8361Removed obsolete 16-bit files from the distribution and from the current
8362git
8363tree head. ACPICA BZ 776.
8364
8365Example Code and Data Size: These are the sizes for the OS-independent
8366acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8367debug version of the code includes the debug output trace mechanism and
8368has a
8369much larger code and data size.
8370
8371  Previous Release:
8372    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8373    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8374  Current Release:
8375    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8376    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8377
83782) iASL Compiler/Disassembler and Tools:
8379
8380ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8381operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8382
8383ACPI 4.0: iASL - implemented compile-time validation support for all new
8384predefined names and control methods (31 total). ACPICA BZ 769.
8385
8386----------------------------------------
838721 May 2009. Summary of changes for version 20090521:
8388
83891) ACPI CA Core Subsystem:
8390
8391Disabled the preservation of the SCI enable bit in the PM1 control
8392register.
8393The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8394to
8395be
8396a "preserved" bit - "OSPM always preserves this bit position", section
83974.7.3.2.1. However, some machines fail if this bit is in fact preserved
8398because the bit needs to be explicitly set by the OS as a workaround. No
8399machines fail if the bit is not preserved. Therefore, ACPICA no longer
8400attempts to preserve this bit.
8401
8402Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8403incorrectly formed _PRT package could cause a fault. Added validation to
8404ensure that each package element is actually a sub-package.
8405
8406Implemented a new interface to install or override a single control
8407method,
8408AcpiInstallMethod. This interface is useful when debugging in order to
8409repair
8410an existing method or to install a missing method without having to
8411override
8412the entire ACPI table. See the ACPICA Programmer Reference for use and
8413examples. Lin Ming, Bob Moore.
8414
8415Fixed several reference count issues with the DdbHandle object that is
8416created from a Load or LoadTable operator. Prevent premature deletion of
8417the
8418object. Also, mark the object as invalid once the table has been
8419unloaded.
8420This is needed because the handle itself may not be deleted after the
8421table
8422unload, depending on whether it has been stored in a named object by the
8423caller. Lin Ming.
8424
8425Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8426mutexes of the same sync level are acquired but then not released in
8427strict
8428opposite order, the internally maintained Current Sync Level becomes
8429confused
8430and can cause subsequent execution errors. ACPICA BZ 471.
8431
8432Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8433specification has been changed to make the SyncLevel for mutex objects
8434more
8435useful. When releasing a mutex, the SyncLevel of the mutex must now be
8436the
8437same as the current sync level. This makes more sense than the previous
8438rule
8439(SyncLevel less than or equal). This change updates the code to match the
8440specification.
8441
8442Fixed a problem with the local version of the AcpiOsPurgeCache function.
8443The
8444(local) cache must be locked during all cache object deletions. Andrew
8445Baumann.
8446
8447Updated the Load operator to use operation region interfaces. This
8448replaces
8449direct memory mapping with region access calls. Now, all region accesses
8450go
8451through the installed region handler as they should.
8452
8453Simplified and optimized the NsGetNextNode function. Reduced parameter
8454count
8455and reduced code for this frequently used function.
8456
8457Example Code and Data Size: These are the sizes for the OS-independent
8458acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8459debug version of the code includes the debug output trace mechanism and
8460has a
8461much larger code and data size.
8462
8463  Previous Release:
8464    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8465    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8466  Current Release:
8467    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8468    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8469
84702) iASL Compiler/Disassembler and Tools:
8471
8472Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8473problems
8474with sub-table disassembly and handling invalid sub-tables. Attempt
8475recovery
8476after an invalid sub-table ID.
8477
8478----------------------------------------
847922 April 2009. Summary of changes for version 20090422:
8480
84811) ACPI CA Core Subsystem:
8482
8483Fixed a compatibility issue with the recently released I/O port
8484protection
8485mechanism. For windows compatibility, 1) On a port protection violation,
8486simply ignore the request and do not return an exception (allow the
8487control
8488method to continue execution.) 2) If only part of the request overlaps a
8489protected port, read/write the individual ports that are not protected.
8490Linux
8491BZ 13036. Lin Ming
8492
8493Enhanced the execution of the ASL/AML BreakPoint operator so that it
8494actually
8495breaks into the AML debugger if the debugger is present. This matches the
8496ACPI-defined behavior.
8497
8498Fixed several possible warnings related to the use of the configurable
8499ACPI_THREAD_ID. This type can now be configured as either an integer or a
8500pointer with no warnings. Also fixes several warnings in printf-like
8501statements for the 64-bit build when the type is configured as a pointer.
8502ACPICA BZ 766, 767.
8503
8504Fixed a number of possible warnings when compiling with gcc 4+ (depending
8505on
8506warning options.) Examples include printf formats, aliasing, unused
8507globals,
8508missing prototypes, missing switch default statements, use of non-ANSI
8509library functions, use of non-ANSI constructs. See generate/unix/Makefile
8510for
8511a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8512
8513Example Code and Data Size: These are the sizes for the OS-independent
8514acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8515debug version of the code includes the debug output trace mechanism and
8516has a
8517much larger code and data size.
8518
8519  Previous Release:
8520    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8521    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8522  Current Release:
8523    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8524    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8525
85262) iASL Compiler/Disassembler and Tools:
8527
8528iASL: Fixed a generation warning from Bison 2.3 and fixed several
8529warnings
8530on
8531the 64-bit build.
8532
8533iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8534not
8535correctly digest Windows/DOS formatted files (with CR/LF).
8536
8537iASL: Added a new option for "quiet mode" (-va) that produces only the
8538compilation summary, not individual errors and warnings. Useful for large
8539batch compilations.
8540
8541AcpiExec: Implemented a new option (-z) to enable a forced
8542semaphore/mutex
8543timeout that can be used to detect hang conditions during execution of
8544AML
8545code (includes both internal semaphores and AML-defined mutexes and
8546events.)
8547
8548Added new makefiles for the generation of acpica in a generic unix-like
8549environment. These makefiles are intended to generate the acpica tools
8550and
8551utilities from the original acpica git source tree structure.
8552
8553Test Suites: Updated and cleaned up the documentation files. Updated the
8554copyrights to 2009, affecting all source files. Use the new version of
8555iASL
8556with quiet mode. Increased the number of available semaphores in the
8557Windows
8558OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8559added
8560an alternate implementation of the semaphore timeout to allow aslts to
8561execute fully on Cygwin.
8562
8563----------------------------------------
856420 March 2009. Summary of changes for version 20090320:
8565
85661) ACPI CA Core Subsystem:
8567
8568Fixed a possible race condition between AcpiWalkNamespace and dynamic
8569table
8570unloads. Added a reader/writer locking mechanism to allow multiple
8571concurrent
8572namespace walks (readers), but block a dynamic table unload until it can
8573gain
8574exclusive write access to the namespace. This fixes a problem where a
8575table
8576unload could (possibly catastrophically) delete the portion of the
8577namespace
8578that is currently being examined by a walk. Adds a new file, utlock.c,
8579that
8580implements the reader/writer lock mechanism. ACPICA BZ 749.
8581
8582Fixed a regression introduced in version 20090220 where a change to the
8583FADT
8584handling could cause the ACPICA subsystem to access non-existent I/O
8585ports.
8586
8587Modified the handling of FADT register and table (FACS/DSDT) addresses.
8588The
8589FADT can contain both 32-bit and 64-bit versions of these addresses.
8590Previously, the 64-bit versions were favored, meaning that if both 32 and
859164
8592versions were valid, but not equal, the 64-bit version was used. This was
8593found to cause some machines to fail. Now, in this case, the 32-bit
8594version
8595is used instead. This now matches the Windows behavior.
8596
8597Implemented a new mechanism to protect certain I/O ports. Provides
8598Microsoft
8599compatibility and protects the standard PC I/O ports from access via AML
8600code. Adds a new file, hwvalid.c
8601
8602Fixed a possible extraneous warning message from the FADT support. The
8603message warns of a 32/64 length mismatch between the legacy and GAS
8604definitions for a register.
8605
8606Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8607is
8608made obsolete by the port protection mechanism above. It was previously
8609used
8610to validate the entire address range of an operation region, which could
8611be
8612incorrect if the range included illegal ports, but fields within the
8613operation region did not actually access those ports. Validation is now
8614performed on a per-field basis instead of the entire region.
8615
8616Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8617Ignored bits must be "preserved" according to the ACPI spec. Usually,
8618this
8619means a read/modify/write when writing to the register. However, for
8620status
8621registers, writing a one means clear the event. Writing a zero means
8622preserve
8623the event (do not clear.) This behavior is clarified in the ACPI 4.0
8624spec,
8625and the ACPICA code now simply always writes a zero to the ignored bit.
8626
8627Modified the handling of ignored bits for the PM1 A/B Control Registers.
8628As
8629per the ACPI specification, for the control registers, preserve
8630(read/modify/write) all bits that are defined as either reserved or
8631ignored.
8632
8633Updated the handling of write-only bits in the PM1 A/B Control Registers.
8634When reading the register, zero the write-only bits as per the ACPI spec.
8635ACPICA BZ 443. Lin Ming.
8636
8637Removed "Linux" from the list of supported _OSI strings. Linux no longer
8638wants to reply true to this request. The Windows strings are the only
8639paths
8640through the AML that are tested and known to work properly.
8641
8642  Previous Release:
8643    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8644    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8645  Current Release:
8646    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8647    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8648
86492) iASL Compiler/Disassembler and Tools:
8650
8651Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8652and
8653aetables.c
8654
8655----------------------------------------
865620 February 2009. Summary of changes for version 20090220:
8657
86581) ACPI CA Core Subsystem:
8659
8660Optimized the ACPI register locking. Removed locking for reads from the
8661ACPI
8662bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8663is
8664not required when reading the single-bit registers. The
8665AcpiGetRegisterUnlocked function is no longer needed and has been
8666removed.
8667This will improve performance for reads on these registers. ACPICA BZ
8668760.
8669
8670Fixed the parameter validation for AcpiRead/Write. Now return
8671AE_BAD_PARAMETER if the input register pointer is null, and
8672AE_BAD_ADDRESS
8673if
8674the register has an address of zero. Previously, these cases simply
8675returned
8676AE_OK. For optional registers such as PM1B status/enable/control, the
8677caller
8678should check for a valid register address before calling. ACPICA BZ 748.
8679
8680Renamed the external ACPI bit register access functions. Renamed
8681AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8682functions. The new names are AcpiReadBitRegister and
8683AcpiWriteBitRegister.
8684Also, restructured the code for these functions by simplifying the code
8685path
8686and condensing duplicate code to reduce code size.
8687
8688Added new functions to transparently handle the possibly split PM1 A/B
8689registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8690functions
8691now handle the split registers for PM1 Status, Enable, and Control.
8692ACPICA
8693BZ
8694746.
8695
8696Added a function to handle the PM1 control registers,
8697AcpiHwWritePm1Control.
8698This function writes both of the PM1 control registers (A/B). These
8699registers
8700are different than the PM1 A/B status and enable registers in that
8701different
8702values can be written to the A/B registers. Most notably, the SLP_TYP
8703bits
8704can be different, as per the values returned from the _Sx predefined
8705methods.
8706
8707Removed an extra register write within AcpiHwClearAcpiStatus. This
8708function
8709was writing an optional PM1B status register twice. The existing call to
8710the
8711low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
8712A/B
8713register. ACPICA BZ 751.
8714
8715Split out the PM1 Status registers from the FADT. Added new globals for
8716these
8717registers (A/B), similar to the way the PM1 Enable registers are handled.
8718Instead of overloading the FADT Event Register blocks. This makes the
8719code
8720clearer and less prone to error.
8721
8722Fixed the warning message for when the platform contains too many ACPI
8723tables
8724for the default size of the global root table data structure. The
8725calculation
8726for the truncation value was incorrect.
8727
8728Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
8729obsolete macro, since it is now a simple reference to ->common.type.
8730There
8731were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8732
8733Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
8734TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
8735simply SLEEP_TYPE. ACPICA BZ 754.
8736
8737Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
8738function is only needed on 64-bit host operating systems and is thus not
8739included for 32-bit hosts.
8740
8741Debug output: print the input and result for invocations of the _OSI
8742reserved
8743control method via the ACPI_LV_INFO debug level. Also, reduced some of
8744the
8745verbosity of this debug level. Len Brown.
8746
8747Example Code and Data Size: These are the sizes for the OS-independent
8748acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8749debug version of the code includes the debug output trace mechanism and
8750has a
8751much larger code and data size.
8752
8753  Previous Release:
8754    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8755    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8756  Current Release:
8757    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8758    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8759
87602) iASL Compiler/Disassembler and Tools:
8761
8762Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
8763various legal performance profiles.
8764
8765----------------------------------------
876623 January 2009. Summary of changes for version 20090123:
8767
87681) ACPI CA Core Subsystem:
8769
8770Added the 2009 copyright to all module headers and signons. This affects
8771virtually every file in the ACPICA core subsystem, the iASL compiler, and
8772the tools/utilities.
8773
8774Implemented a change to allow the host to override any ACPI table,
8775including
8776dynamically loaded tables. Previously, only the DSDT could be replaced by
8777the
8778host. With this change, the AcpiOsTableOverride interface is called for
8779each
8780table found in the RSDT/XSDT during ACPICA initialization, and also
8781whenever
8782a table is dynamically loaded via the AML Load operator.
8783
8784Updated FADT flag definitions, especially the Boot Architecture flags.
8785
8786Debugger: For the Find command, automatically pad the input ACPI name
8787with
8788underscores if the name is shorter than 4 characters. This enables a
8789match
8790with the actual namespace entry which is itself padded with underscores.
8791
8792Example Code and Data Size: These are the sizes for the OS-independent
8793acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8794debug version of the code includes the debug output trace mechanism and
8795has a
8796much larger code and data size.
8797
8798  Previous Release:
8799    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8800    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8801  Current Release:
8802    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8803    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8804
88052) iASL Compiler/Disassembler and Tools:
8806
8807Fix build error under Bison-2.4.
8808
8809Dissasembler: Enhanced FADT support. Added decoding of the Boot
8810Architecture
8811flags. Now decode all flags, regardless of the FADT version. Flag output
8812includes the FADT version which first defined each flag.
8813
8814The iASL -g option now dumps the RSDT to a file (in addition to the FADT
8815and
8816DSDT). Windows only.
8817
8818----------------------------------------
881904 December 2008. Summary of changes for version 20081204:
8820
88211) ACPI CA Core Subsystem:
8822
8823The ACPICA Programmer Reference has been completely updated and revamped
8824for
8825this release. This includes updates to the external interfaces, OSL
8826interfaces, the overview sections, and the debugger reference.
8827
8828Several new ACPICA interfaces have been implemented and documented in the
8829programmer reference:
8830AcpiReset - Writes the reset value to the FADT-defined reset register.
8831AcpiDisableAllGpes - Disable all available GPEs.
8832AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8833AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8834AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8835AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8836AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8837
8838Most of the public ACPI hardware-related interfaces have been moved to a
8839new
8840file, components/hardware/hwxface.c
8841
8842Enhanced the FADT parsing and low-level ACPI register access: The ACPI
8843register lengths within the FADT are now used, and the low level ACPI
8844register access no longer hardcodes the ACPI register lengths. Given that
8845there may be some risk in actually trusting the FADT register lengths, a
8846run-
8847time option was added to fall back to the default hardcoded lengths if
8848the
8849FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
8850option is set to true for now, and a warning is issued if a suspicious
8851FADT
8852register length is overridden with the default value.
8853
8854Fixed a reference count issue in NsRepairObject. This problem was
8855introduced
8856in version 20081031 as part of a fix to repair Buffer objects within
8857Packages. Lin Ming.
8858
8859Added semaphore support to the Linux/Unix application OS-services layer
8860(OSL). ACPICA BZ 448. Lin Ming.
8861
8862Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
8863will
8864be implemented in the OSL, or will binary semaphores be used instead.
8865
8866Example Code and Data Size: These are the sizes for the OS-independent
8867acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8868debug version of the code includes the debug output trace mechanism and
8869has a
8870much larger code and data size.
8871
8872  Previous Release:
8873    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8874    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8875  Current Release:
8876    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8877    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8878
88792) iASL Compiler/Disassembler and Tools:
8880
8881iASL: Completed the '-e' option to include additional ACPI tables in
8882order
8883to
8884aid with disassembly and External statement generation. ACPICA BZ 742.
8885Lin
8886Ming.
8887
8888iASL: Removed the "named object in while loop" error. The compiler cannot
8889determine how many times a loop will execute. ACPICA BZ 730.
8890
8891Disassembler: Implemented support for FADT revision 2 (MS extension).
8892ACPICA
8893BZ 743.
8894
8895Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
8896MCFG).
8897
8898----------------------------------------
889931 October 2008. Summary of changes for version 20081031:
8900
89011) ACPI CA Core Subsystem:
8902
8903Restructured the ACPICA header files into public/private. acpi.h now
8904includes
8905only the "public" acpica headers. All other acpica headers are "private"
8906and
8907should not be included by acpica users. One new file, accommon.h is used
8908to
8909include the commonly used private headers for acpica code generation.
8910Future
8911plans include moving all private headers to a new subdirectory.
8912
8913Implemented an automatic Buffer->String return value conversion for
8914predefined ACPI methods. For these methods (such as _BIF), added
8915automatic
8916conversion for return objects that are required to be a String, but a
8917Buffer
8918was found instead. This can happen when reading string battery data from
8919an
8920operation region, because it used to be difficult to convert the data
8921from
8922buffer to string from within the ASL. Ensures that the host OS is
8923provided
8924with a valid null-terminated string. Linux BZ 11822.
8925
8926Updated the FACS waking vector interfaces. Split
8927AcpiSetFirmwareWakingVector
8928into two: one for the 32-bit vector, another for the 64-bit vector. This
8929is
8930required because the host OS must setup the wake much differently for
8931each
8932vector (real vs. protected mode, etc.) and the interface itself should
8933not
8934be
8935deciding which vector to use. Also, eliminated the
8936GetFirmwareWakingVector
8937interface, as it served no purpose (only the firmware reads the vector,
8938OS
8939only writes the vector.) ACPICA BZ 731.
8940
8941Implemented a mechanism to escape infinite AML While() loops. Added a
8942loop
8943counter to force exit from AML While loops if the count becomes too
8944large.
8945This can occur in poorly written AML when the hardware does not respond
8946within a while loop and the loop does not implement a timeout. The
8947maximum
8948loop count is configurable. A new exception code is returned when a loop
8949is
8950broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8951
8952Optimized the execution of AML While loops. Previously, a control state
8953object was allocated and freed for each execution of the loop. The
8954optimization is to simply reuse the control state for each iteration.
8955This
8956speeds up the raw loop execution time by about 5%.
8957
8958Enhanced the implicit return mechanism. For Windows compatibility, return
8959an
8960implicit integer of value zero for methods that contain no executable
8961code.
8962Such methods are seen in the field as stubs (presumably), and can cause
8963drivers to fail if they expect a return value. Lin Ming.
8964
8965Allow multiple backslashes as root prefixes in namepaths. In a fully
8966qualified namepath, allow multiple backslash prefixes. This can happen
8967(and
8968is seen in the field) because of the use of a double-backslash in strings
8969(since backslash is the escape character) causing confusion. ACPICA BZ
8970739
8971Lin Ming.
8972
8973Emit a warning if two different FACS or DSDT tables are discovered in the
8974FADT. Checks if there are two valid but different addresses for the FACS
8975and
8976DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
8977
8978Consolidated the method argument count validation code. Merged the code
8979that
8980validates control method argument counts into the predefined validation
8981module. Eliminates possible multiple warnings for incorrect argument
8982counts.
8983
8984Implemented ACPICA example code. Includes code for ACPICA initialization,
8985handler installation, and calling a control method. Available at
8986source/tools/examples.
8987
8988Added a global pointer for FACS table to simplify internal FACS access.
8989Use
8990the global pointer instead of using AcpiGetTableByIndex for each FACS
8991access.
8992This simplifies the code for the Global Lock and the Firmware Waking
8993Vector(s).
8994
8995Example Code and Data Size: These are the sizes for the OS-independent
8996acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8997debug version of the code includes the debug output trace mechanism and
8998has a
8999much larger code and data size.
9000
9001  Previous Release:
9002    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9003    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9004  Current Release:
9005    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9006    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9007
90082) iASL Compiler/Disassembler and Tools:
9009
9010iASL: Improved disassembly of external method calls. Added the -e option
9011to
9012allow the inclusion of additional ACPI tables to help with the
9013disassembly
9014of
9015method invocations and the generation of external declarations during the
9016disassembly. Certain external method invocations cannot be disassembled
9017properly without the actual declaration of the method. Use the -e option
9018to
9019include the table where the external method(s) are actually declared.
9020Most
9021useful for disassembling SSDTs that make method calls back to the master
9022DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9023-d
9024-e dsdt.aml ssdt1.aml
9025
9026iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9027problem where the use of an alias within a namepath would result in a not
9028found error or cause the compiler to fault. Also now allows forward
9029references from the Alias operator itself. ACPICA BZ 738.
9030
9031----------------------------------------
903226 September 2008. Summary of changes for version 20080926:
9033
90341) ACPI CA Core Subsystem:
9035
9036Designed and implemented a mechanism to validate predefined ACPI methods
9037and
9038objects. This code validates the predefined ACPI objects (objects whose
9039names
9040start with underscore) that appear in the namespace, at the time they are
9041evaluated. The argument count and the type of the returned object are
9042validated against the ACPI specification. The purpose of this validation
9043is
9044to detect problems with the BIOS-implemented predefined ACPI objects
9045before
9046the results are returned to the ACPI-related drivers. Future enhancements
9047may
9048include actual repair of incorrect return objects where possible. Two new
9049files are nspredef.c and acpredef.h.
9050
9051Fixed a fault in the AML parser if a memory allocation fails during the
9052Op
9053completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9054
9055Fixed an issue with implicit return compatibility. This change improves
9056the
9057implicit return mechanism to be more compatible with the MS interpreter.
9058Lin
9059Ming, ACPICA BZ 349.
9060
9061Implemented support for zero-length buffer-to-string conversions. Allow
9062zero
9063length strings during interpreter buffer-to-string conversions. For
9064example,
9065during the ToDecimalString and ToHexString operators, as well as implicit
9066conversions. Fiodor Suietov, ACPICA BZ 585.
9067
9068Fixed two possible memory leaks in the error exit paths of
9069AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9070are
9071similar in that they use a stack of state objects in order to eliminate
9072recursion. The stack must be fully unwound and deallocated if an error
9073occurs. Lin Ming. ACPICA BZ 383.
9074
9075Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9076global
9077ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9078Moore ACPICA BZ 442.
9079
9080Removed the obsolete version number in module headers. Removed the
9081"$Revision" number that appeared in each module header. This version
9082number
9083was useful under SourceSafe and CVS, but has no meaning under git. It is
9084not
9085only incorrect, it could also be misleading.
9086
9087Example Code and Data Size: These are the sizes for the OS-independent
9088acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9089debug version of the code includes the debug output trace mechanism and
9090has a
9091much larger code and data size.
9092
9093  Previous Release:
9094    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9095    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9096  Current Release:
9097    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9098    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9099
9100----------------------------------------
910129 August 2008. Summary of changes for version 20080829:
9102
91031) ACPI CA Core Subsystem:
9104
9105Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9106Reference. Changes include the elimination of cheating on the Object
9107field
9108for the DdbHandle subtype, addition of a reference class field to
9109differentiate the various reference types (instead of an AML opcode), and
9110the
9111cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9112
9113Reduce an error to a warning for an incorrect method argument count.
9114Previously aborted with an error if too few arguments were passed to a
9115control method via the external ACPICA interface. Now issue a warning
9116instead
9117and continue. Handles the case where the method inadvertently declares
9118too
9119many arguments, but does not actually use the extra ones. Applies mainly
9120to
9121the predefined methods. Lin Ming. Linux BZ 11032.
9122
9123Disallow the evaluation of named object types with no intrinsic value.
9124Return
9125AE_TYPE for objects that have no value and therefore evaluation is
9126undefined:
9127Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9128of
9129these types were allowed, but an exception would be generated at some
9130point
9131during the evaluation. Now, the error is generated up front.
9132
9133Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9134(nsnames.c). Fixes a leak in the error exit path.
9135
9136Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9137debug
9138levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9139ACPI_EXCEPTION
9140interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9141ACPI_LV_EVENTS.
9142
9143Removed obsolete and/or unused exception codes from the acexcep.h header.
9144There is the possibility that certain device drivers may be affected if
9145they
9146use any of these exceptions.
9147
9148The ACPICA documentation has been added to the public git source tree,
9149under
9150acpica/documents. Included are the ACPICA programmer reference, the iASL
9151compiler reference, and the changes.txt release logfile.
9152
9153Example Code and Data Size: These are the sizes for the OS-independent
9154acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9155debug version of the code includes the debug output trace mechanism and
9156has a
9157much larger code and data size.
9158
9159  Previous Release:
9160    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9161    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9162  Current Release:
9163    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9164    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9165
91662) iASL Compiler/Disassembler and Tools:
9167
9168Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9169defines _SCP with 3 arguments. Previous versions defined it with only 1
9170argument. iASL now allows both definitions.
9171
9172iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9173zero-
9174length subtables when disassembling ACPI tables. Also fixed a couple of
9175errors where a full 16-bit table type field was not extracted from the
9176input
9177properly.
9178
9179acpisrc: Improve comment counting mechanism for generating source code
9180statistics. Count first and last lines of multi-line comments as
9181whitespace,
9182not comment lines. Handle Linux legal header in addition to standard
9183acpica
9184header.
9185
9186----------------------------------------
9187
918829 July 2008. Summary of changes for version 20080729:
9189
91901) ACPI CA Core Subsystem:
9191
9192Fix a possible deadlock in the GPE dispatch. Remove call to
9193AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9194attempt
9195to acquire the GPE lock but can deadlock since the GPE lock is already
9196held
9197at dispatch time. This code was introduced in version 20060831 as a
9198response
9199to Linux BZ 6881 and has since been removed from Linux.
9200
9201Add a function to dereference returned reference objects. Examines the
9202return
9203object from a call to AcpiEvaluateObject. Any Index or RefOf references
9204are
9205automatically dereferenced in an attempt to return something useful
9206(these
9207reference types cannot be converted into an external ACPI_OBJECT.)
9208Provides
9209MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9210
9211x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9212subtables for the MADT and one new subtable for the SRAT. Includes
9213disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9214x2APIC
9215Specification, June 2008.
9216
9217Additional error checking for pathname utilities. Add error check after
9218all
9219calls to AcpiNsGetPathnameLength. Add status return from
9220AcpiNsBuildExternalPath and check after all calls. Add parameter
9221validation
9222to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9223
9224Return status from the global init function AcpiUtGlobalInitialize. This
9225is
9226used by both the kernel subsystem and the utilities such as iASL
9227compiler.
9228The function could possibly fail when the caches are initialized. Yang
9229Yi.
9230
9231Add a function to decode reference object types to strings. Created for
9232improved error messages.
9233
9234Improve object conversion error messages. Better error messages during
9235object
9236conversion from internal to the external ACPI_OBJECT. Used for external
9237calls
9238to AcpiEvaluateObject.
9239
9240Example Code and Data Size: These are the sizes for the OS-independent
9241acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9242debug version of the code includes the debug output trace mechanism and
9243has a
9244much larger code and data size.
9245
9246  Previous Release:
9247    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9248    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9249  Current Release:
9250    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9251    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9252
92532) iASL Compiler/Disassembler and Tools:
9254
9255Debugger: fix a possible hang when evaluating non-methods. Fixes a
9256problem
9257introduced in version 20080701. If the object being evaluated (via
9258execute
9259command) is not a method, the debugger can hang while trying to obtain
9260non-
9261existent parameters.
9262
9263iASL: relax error for using reserved "_T_x" identifiers. These names can
9264appear in a disassembled ASL file if they were emitted by the original
9265compiler. Instead of issuing an error or warning and forcing the user to
9266manually change these names, issue a remark instead.
9267
9268iASL: error if named object created in while loop. Emit an error if any
9269named
9270object is created within a While loop. If allowed, this code will
9271generate
9272a
9273run-time error on the second iteration of the loop when an attempt is
9274made
9275to
9276create the same named object twice. ACPICA bugzilla 730.
9277
9278iASL: Support absolute pathnames for include files. Add support for
9279absolute
9280pathnames within the Include operator. previously, only relative
9281pathnames
9282were supported.
9283
9284iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9285Descriptor.
9286The ACPI spec requires one interrupt minimum. BZ 423
9287
9288iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9289Handles the case for the Interrupt Resource Descriptor where
9290the ResourceSource argument is omitted but ResourceSourceIndex
9291is present. Now leave room for the Index. BZ 426
9292
9293iASL: Prevent error message if CondRefOf target does not exist. Fixes
9294cases
9295where an error message is emitted if the target does not exist. BZ 516
9296
9297iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9298(get ACPI tables on Windows). This was apparently broken in version
929920070919.
9300
9301AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9302where
9303the EOF happens immediately after the last table in the input file. Print
9304completion message. Previously, no message was displayed in this case.
9305
9306----------------------------------------
930701 July 2008. Summary of changes for version 20080701:
9308
93090) Git source tree / acpica.org
9310
9311Fixed a problem where a git-clone from http would not transfer the entire
9312source tree.
9313
93141) ACPI CA Core Subsystem:
9315
9316Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9317enable bit. Now performs a read-change-write of the enable register
9318instead
9319of simply writing out the cached enable mask. This will prevent
9320inadvertent
9321enabling of GPEs if a rogue GPE is received during initialization (before
9322GPE
9323handlers are installed.)
9324
9325Implemented a copy for dynamically loaded tables. Previously, dynamically
9326loaded tables were simply mapped - but on some machines this memory is
9327corrupted after suspend. Now copy the table to a local buffer. For the
9328OpRegion case, added checksum verify. Use the table length from the table
9329header, not the region length. For the Buffer case, use the table length
9330also. Dennis Noordsij, Bob Moore. BZ 10734
9331
9332Fixed a problem where the same ACPI table could not be dynamically loaded
9333and
9334unloaded more than once. Without this change, a table cannot be loaded
9335again
9336once it has been loaded/unloaded one time. The current mechanism does not
9337unregister a table upon an unload. During a load, if the same table is
9338found,
9339this no longer returns an exception. BZ 722
9340
9341Fixed a problem where the wrong descriptor length was calculated for the
9342EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9343EndTag
9344are calculated as 12 bytes long, but the actual length in the internal
9345descriptor is 16 because of the round-up to 8 on the 64-bit build.
9346Reported
9347by Linn Crosetto. BZ 728
9348
9349Fixed a possible memory leak in the Unload operator. The DdbHandle
9350returned
9351by Load() did not have its reference count decremented during unload,
9352leading
9353to a memory leak. Lin Ming. BZ 727
9354
9355Fixed a possible memory leak when deleting thermal/processor objects. Any
9356associated notify handlers (and objects) were not being deleted. Fiodor
9357Suietov. BZ 506
9358
9359Fixed the ordering of the ASCII names in the global mutex table to match
9360the
9361actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9362only.
9363Vegard Nossum. BZ 726
9364
9365Enhanced the AcpiGetObjectInfo interface to return the number of required
9366arguments if the object is a control method. Added this call to the
9367debugger
9368so the proper number of default arguments are passed to a method. This
9369prevents a warning when executing methods from AcpiExec.
9370
9371Added a check for an invalid handle in AcpiGetObjectInfo. Return
9372AE_BAD_PARAMETER if input handle is invalid. BZ 474
9373
9374Fixed an extraneous warning from exconfig.c on the 64-bit build.
9375
9376Example Code and Data Size: These are the sizes for the OS-independent
9377acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9378debug version of the code includes the debug output trace mechanism and
9379has a
9380much larger code and data size.
9381
9382  Previous Release:
9383    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9384    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9385  Current Release:
9386    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9387    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9388
93892) iASL Compiler/Disassembler and Tools:
9390
9391iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9392resource descriptor names.
9393
9394iASL: Detect invalid ASCII characters in input (windows version). Removed
9395the
9396"-CF" flag from the flex compile, enables correct detection of non-ASCII
9397characters in the input. BZ 441
9398
9399iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9400the
9401"result of operation not used" warning when the DDB handle returned from
9402LoadTable is not used. The warning is not needed. BZ 590
9403
9404AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9405method
9406to
9407pass address of table to the AML. Added option to disable OpRegion
9408simulation
9409to allow creation of an OpRegion with a real address that was passed to
9410_CFG.
9411All of this allows testing of the Load and Unload operators from
9412AcpiExec.
9413
9414Debugger: update tables command for unloaded tables. Handle unloaded
9415tables
9416and use the standard table header output routine.
9417
9418----------------------------------------
941909 June 2008. Summary of changes for version 20080609:
9420
94211) ACPI CA Core Subsystem:
9422
9423Implemented a workaround for reversed _PRT entries. A significant number
9424of
9425BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9426change dynamically detects and repairs this problem. Provides
9427compatibility
9428with MS ACPI. BZ 6859
9429
9430Simplified the internal ACPI hardware interfaces to eliminate the locking
9431flag parameter from Register Read/Write. Added a new external interface,
9432AcpiGetRegisterUnlocked.
9433
9434Fixed a problem where the invocation of a GPE control method could hang.
9435This
9436was a regression introduced in 20080514. The new method argument count
9437validation mechanism can enter an infinite loop when a GPE method is
9438dispatched. Problem fixed by removing the obsolete code that passed GPE
9439block
9440information to the notify handler via the control method parameter
9441pointer.
9442
9443Fixed a problem where the _SST execution status was incorrectly returned
9444to
9445the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9446in
944720080514. _SST is optional and a NOT_FOUND exception should never be
9448returned. BZ 716
9449
9450Fixed a problem where a deleted object could be accessed from within the
9451AML
9452parser. This was a regression introduced in version 20080123 as a fix for
9453the
9454Unload operator. Lin Ming. BZ 10669
9455
9456Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9457operands
9458and eliminated the use of a negative index in a loop. Operands are now
9459displayed in the correct order, not backwards. This also fixes a
9460regression
9461introduced in 20080514 on 64-bit systems where the elimination of
9462ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9463715
9464
9465Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9466exit
9467path did not delete a locally allocated structure.
9468
9469Updated definitions for the DMAR and SRAT tables to synchronize with the
9470current specifications. Includes disassembler support.
9471
9472Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9473loop termination value was used. Loop terminated on iteration early,
9474missing
9475one mutex. Linn Crosetto
9476
9477Example Code and Data Size: These are the sizes for the OS-independent
9478acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9479debug version of the code includes the debug output trace mechanism and
9480has a
9481much larger code and data size.
9482
9483  Previous Release:
9484    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9485    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9486  Current Release:
9487    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9488    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9489
94902) iASL Compiler/Disassembler and Tools:
9491
9492Disassembler: Implemented support for EisaId() within _CID objects. Now
9493disassemble integer _CID objects back to EisaId invocations, including
9494multiple integers within _CID packages. Includes single-step support for
9495debugger also.
9496
9497Disassembler: Added support for DMAR and SRAT table definition changes.
9498
9499----------------------------------------
950014 May 2008. Summary of changes for version 20080514:
9501
95021) ACPI CA Core Subsystem:
9503
9504Fixed a problem where GPEs were enabled too early during the ACPICA
9505initialization. This could lead to "handler not installed" errors on some
9506machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9507This
9508ensures that all operation regions and devices throughout the namespace
9509have
9510been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9511
9512Implemented a change to the enter sleep code. Moved execution of the _GTS
9513method to just before setting sleep enable bit. The execution was moved
9514from
9515AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9516immediately before the SLP_EN bit is set, as per the ACPI specification.
9517Luming Yu, BZ 1653.
9518
9519Implemented a fix to disable unknown GPEs (2nd version). Now always
9520disable
9521the GPE, even if ACPICA thinks that that it is already disabled. It is
9522possible that the AML or some other code has enabled the GPE unbeknownst
9523to
9524the ACPICA code.
9525
9526Fixed a problem with the Field operator where zero-length fields would
9527return
9528an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9529ASL
9530field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9531
9532Implemented a fix for the Load operator, now load the table at the
9533namespace
9534root. This reverts a change introduced in version 20071019. The table is
9535now
9536loaded at the namespace root even though this goes against the ACPI
9537specification. This provides compatibility with other ACPI
9538implementations.
9539The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9540Ming.
9541
9542Fixed a problem where ACPICA would not Load() tables with unusual
9543signatures.
9544Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9545acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9546Therefore, signature validation is worthless. Apparently MS ACPI accepts
9547such
9548signatures, ACPICA must be compatible. BZ 10454.
9549
9550Fixed a possible negative array index in AcpiUtValidateException. Added
9551NULL
9552fields to the exception string arrays to eliminate a -1 subtraction on
9553the
9554SubStatus field.
9555
9556Updated the debug tracking macros to reduce overall code and data size.
9557Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9558instead of pointers to static strings. Jan Beulich and Bob Moore.
9559
9560Implemented argument count checking in control method invocation via
9561AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9562too
9563many. This applies only to extern programmatic control method execution,
9564not
9565method-to-method calls within the AML. Lin Ming.
9566
9567Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9568no
9569longer needed, especially with the removal of 16-bit support. It was
9570replaced
9571mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9572bit
9573on
957432/64-bit platforms is required.
9575
9576Added the C const qualifier for appropriate string constants -- mostly
9577MODULE_NAME and printf format strings. Jan Beulich.
9578
9579Example Code and Data Size: These are the sizes for the OS-independent
9580acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9581debug version of the code includes the debug output trace mechanism and
9582has a
9583much larger code and data size.
9584
9585  Previous Release:
9586    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9587    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9588  Current Release:
9589    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9590    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9591
95922) iASL Compiler/Disassembler and Tools:
9593
9594Implemented ACPI table revision ID validation in the disassembler. Zero
9595is
9596always invalid. For DSDTs, the ID controls the interpreter integer width.
95971
9598means 32-bit and this is unusual. 2 or greater is 64-bit.
9599
9600----------------------------------------
960121 March 2008. Summary of changes for version 20080321:
9602
96031) ACPI CA Core Subsystem:
9604
9605Implemented an additional change to the GPE support in order to suppress
9606spurious or stray GPEs. The AcpiEvDisableGpe function will now
9607permanently
9608disable incoming GPEs that are neither enabled nor disabled -- meaning
9609that
9610the GPE is unknown to the system. This should prevent future interrupt
9611floods
9612from that GPE. BZ 6217 (Zhang Rui)
9613
9614Fixed a problem where NULL package elements were not returned to the
9615AcpiEvaluateObject interface correctly. The element was simply ignored
9616instead of returning a NULL ACPI_OBJECT package element, potentially
9617causing
9618a buffer overflow and/or confusing the caller who expected a fixed number
9619of
9620elements. BZ 10132 (Lin Ming, Bob Moore)
9621
9622Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9623Dword,
9624Qword), Field, BankField, and IndexField operators when invoked from
9625inside
9626an executing control method. In this case, these operators created
9627namespace
9628nodes that were incorrectly left marked as permanent nodes instead of
9629temporary nodes. This could cause a problem if there is race condition
9630between an exiting control method and a running namespace walk. (Reported
9631by
9632Linn Crosetto)
9633
9634Fixed a problem where the CreateField and CreateXXXField operators would
9635incorrectly allow duplicate names (the name of the field) with no
9636exception
9637generated.
9638
9639Implemented several changes for Notify handling. Added support for new
9640Notify
9641values (ACPI 2.0+) and improved the Notify debug output. Notify on
9642PowerResource objects is no longer allowed, as per the ACPI
9643specification.
9644(Bob Moore, Zhang Rui)
9645
9646All Reference Objects returned via the AcpiEvaluateObject interface are
9647now
9648marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9649for
9650NULL objects - either NULL package elements or unresolved named
9651references.
9652
9653Fixed a problem where an extraneous debug message was produced for
9654package
9655objects (when debugging enabled). The message "Package List length larger
9656than NumElements count" is now produced in the correct case, and is now
9657an
9658error message rather than a debug message. Added a debug message for the
9659opposite case, where NumElements is larger than the Package List (the
9660package
9661will be padded out with NULL elements as per the ACPI spec.)
9662
9663Implemented several improvements for the output of the ASL "Debug" object
9664to
9665clarify and keep all data for a given object on one output line.
9666
9667Fixed two size calculation issues with the variable-length Start
9668Dependent
9669resource descriptor.
9670
9671Example Code and Data Size: These are the sizes for the OS-independent
9672acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9673debug version of the code includes the debug output trace mechanism and
9674has
9675a much larger code and data size.
9676
9677  Previous Release:
9678    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9679    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9680  Current Release:
9681    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9682    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9683
96842) iASL Compiler/Disassembler and Tools:
9685
9686Fixed a problem with the use of the Switch operator where execution of
9687the
9688containing method by multiple concurrent threads could cause an
9689AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9690actual Switch opcode, it must be simulated with local named temporary
9691variables and if/else pairs. The solution chosen was to mark any method
9692that
9693uses Switch as Serialized, thus preventing multiple thread entries. BZ
9694469.
9695
9696----------------------------------------
969713 February 2008. Summary of changes for version 20080213:
9698
96991) ACPI CA Core Subsystem:
9700
9701Implemented another MS compatibility design change for GPE/Notify
9702handling.
9703GPEs are now cleared/enabled asynchronously to allow all pending notifies
9704to
9705complete first. It is expected that the OSL will queue the enable request
9706behind all pending notify requests (may require changes to the local host
9707OSL
9708in AcpiOsExecute). Alexey Starikovskiy.
9709
9710Fixed a problem where buffer and package objects passed as arguments to a
9711control method via the external AcpiEvaluateObject interface could cause
9712an
9713AE_AML_INTERNAL exception depending on the order and type of operators
9714executed by the target control method.
9715
9716Fixed a problem where resource descriptor size optimization could cause a
9717problem when a _CRS resource template is passed to a _SRS method. The
9718_SRS
9719resource template must use the same descriptors (with the same size) as
9720returned from _CRS. This change affects the following resource
9721descriptors:
9722IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
97239487)
9724
9725Fixed a problem where a CopyObject to RegionField, BankField, and
9726IndexField
9727objects did not perform an implicit conversion as it should. These types
9728must
9729retain their initial type permanently as per the ACPI specification.
9730However,
9731a CopyObject to all other object types should not perform an implicit
9732conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9733
9734Fixed a problem with the AcpiGetDevices interface where the mechanism to
9735match device CIDs did not examine the entire list of available CIDs, but
9736instead aborted on the first non-matching CID. Andrew Patterson.
9737
9738Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
9739was
9740inadvertently changed to return a 16-bit value instead of a 32-bit value,
9741truncating the upper dword of a 64-bit value. This macro is only used to
9742display debug output, so no incorrect calculations were made. Also,
9743reimplemented the macro so that a 64-bit shift is not performed by
9744inefficient compilers.
9745
9746Added missing va_end statements that should correspond with each va_start
9747statement.
9748
9749Example Code and Data Size: These are the sizes for the OS-independent
9750acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9751debug version of the code includes the debug output trace mechanism and
9752has
9753a much larger code and data size.
9754
9755  Previous Release:
9756    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9757    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9758  Current Release:
9759    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9760    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9761
97622) iASL Compiler/Disassembler and Tools:
9763
9764Implemented full disassembler support for the following new ACPI tables:
9765BERT, EINJ, and ERST. Implemented partial disassembler support for the
9766complicated HEST table. These tables support the Windows Hardware Error
9767Architecture (WHEA).
9768
9769----------------------------------------
977023 January 2008. Summary of changes for version 20080123:
9771
97721) ACPI CA Core Subsystem:
9773
9774Added the 2008 copyright to all module headers and signons. This affects
9775virtually every file in the ACPICA core subsystem, the iASL compiler, and
9776the tools/utilities.
9777
9778Fixed a problem with the SizeOf operator when used with Package and
9779Buffer
9780objects. These objects have deferred execution for some arguments, and
9781the
9782execution is now completed before the SizeOf is executed. This problem
9783caused
9784unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
9785BZ
97869558
9787
9788Implemented an enhancement to the interpreter "slack mode". In the
9789absence
9790of
9791an explicit return or an implicitly returned object from the last
9792executed
9793opcode, a control method will now implicitly return an integer of value 0
9794for
9795Microsoft compatibility. (Lin Ming) BZ 392
9796
9797Fixed a problem with the Load operator where an exception was not
9798returned
9799in
9800the case where the table is already loaded. (Lin Ming) BZ 463
9801
9802Implemented support for the use of DDBHandles as an Indexed Reference, as
9803per
9804the ACPI spec. (Lin Ming) BZ 486
9805
9806Implemented support for UserTerm (Method invocation) for the Unload
9807operator
9808as per the ACPI spec. (Lin Ming) BZ 580
9809
9810Fixed a problem with the LoadTable operator where the OemId and
9811OemTableId
9812input strings could cause unexpected failures if they were shorter than
9813the
9814maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9815
9816Implemented support for UserTerm (Method invocation) for the Unload
9817operator
9818as per the ACPI spec. (Lin Ming) BZ 580
9819
9820Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
9821HEST,
9822IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9823
9824Example Code and Data Size: These are the sizes for the OS-independent
9825acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9826debug version of the code includes the debug output trace mechanism and
9827has
9828a much larger code and data size.
9829
9830  Previous Release:
9831    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9832    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9833  Current Release:
9834    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9835    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9836
98372) iASL Compiler/Disassembler and Tools:
9838
9839Implemented support in the disassembler for checksum validation on
9840incoming
9841binary DSDTs and SSDTs. If incorrect, a message is displayed within the
9842table
9843header dump at the start of the disassembly.
9844
9845Implemented additional debugging information in the namespace listing
9846file
9847created during compilation. In addition to the namespace hierarchy, the
9848full
9849pathname to each namespace object is displayed.
9850
9851Fixed a problem with the disassembler where invalid ACPI tables could
9852cause
9853faults or infinite loops.
9854
9855Fixed an unexpected parse error when using the optional "parameter types"
9856list in a control method declaration. (Lin Ming) BZ 397
9857
9858Fixed a problem where two External declarations with the same name did
9859not
9860cause an error (Lin Ming) BZ 509
9861
9862Implemented support for full TermArgs (adding Argx, Localx and method
9863invocation) for the ParameterData parameter to the LoadTable operator.
9864(Lin
9865Ming) BZ 583,587
9866
9867----------------------------------------
986819 December 2007. Summary of changes for version 20071219:
9869
98701) ACPI CA Core Subsystem:
9871
9872Implemented full support for deferred execution for the TermArg string
9873arguments for DataTableRegion. This enables forward references and full
9874operand resolution for the three string arguments. Similar to
9875OperationRegion
9876deferred argument execution.) Lin Ming. BZ 430
9877
9878Implemented full argument resolution support for the BankValue argument
9879to
9880BankField. Previously, only constants were supported, now any TermArg may
9881be
9882used. Lin Ming BZ 387, 393
9883
9884Fixed a problem with AcpiGetDevices where the search of a branch of the
9885device tree could be terminated prematurely. In accordance with the ACPI
9886specification, the search down the current branch is terminated if a
9887device
9888is both not present and not functional (instead of just not present.)
9889Yakui
9890Zhao.
9891
9892Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
9893if
9894the underlying AML code changed the GPE enable registers. Now, any
9895unknown
9896incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
9897disabled
9898instead of simply ignored. Rui Zhang.
9899
9900Fixed a problem with Index Fields where the Index register was
9901incorrectly
9902limited to a maximum of 32 bits. Now any size may be used.
9903
9904Fixed a couple memory leaks associated with "implicit return" objects
9905when
9906the AML Interpreter slack mode is enabled. Lin Ming BZ 349
9907
9908Example Code and Data Size: These are the sizes for the OS-independent
9909acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9910debug version of the code includes the debug output trace mechanism and
9911has
9912a much larger code and data size.
9913
9914  Previous Release:
9915    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9916    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9917  Current Release:
9918    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9919    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9920
9921----------------------------------------
992214 November 2007. Summary of changes for version 20071114:
9923
99241) ACPI CA Core Subsystem:
9925
9926Implemented event counters for each of the Fixed Events, the ACPI SCI
9927(interrupt) itself, and control methods executed. Named
9928AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
9929These
9930should be useful for debugging and statistics.
9931
9932Implemented a new external interface, AcpiGetStatistics, to retrieve the
9933contents of the various event counters. Returns the current values for
9934AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
9935AcpiMethodCount. The interface can be expanded in the future if new
9936counters
9937are added. Device drivers should use this interface rather than access
9938the
9939counters directly.
9940
9941Fixed a problem with the FromBCD and ToBCD operators. With some
9942compilers,
9943the ShortDivide function worked incorrectly, causing problems with the
9944BCD
9945functions with large input values. A truncation from 64-bit to 32-bit
9946inadvertently occurred. Internal BZ 435. Lin Ming
9947
9948Fixed a problem with Index references passed as method arguments.
9949References
9950passed as arguments to control methods were dereferenced immediately
9951(before
9952control was passed to the called method). The references are now
9953correctly
9954passed directly to the called method. BZ 5389. Lin Ming
9955
9956Fixed a problem with CopyObject used in conjunction with the Index
9957operator.
9958The reference was incorrectly dereferenced before the copy. The reference
9959is
9960now correctly copied. BZ 5391. Lin Ming
9961
9962Fixed a problem with Control Method references within Package objects.
9963These
9964references are now correctly generated. This completes the package
9965construction overhaul that began in version 20071019.
9966
9967Example Code and Data Size: These are the sizes for the OS-independent
9968acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9969debug version of the code includes the debug output trace mechanism and
9970has
9971a much larger code and data size.
9972
9973  Previous Release:
9974    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9975    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9976  Current Release:
9977    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9978    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9979
9980
99812) iASL Compiler/Disassembler and Tools:
9982
9983The AcpiExec utility now installs handlers for all of the predefined
9984Operation Region types. New types supported are: PCI_Config, CMOS, and
9985PCIBARTarget.
9986
9987Fixed a problem with the 64-bit version of AcpiExec where the extended
9988(64-
9989bit) address fields for the DSDT and FACS within the FADT were not being
9990used, causing truncation of the upper 32-bits of these addresses. Lin
9991Ming
9992and Bob Moore
9993
9994----------------------------------------
999519 October 2007. Summary of changes for version 20071019:
9996
99971) ACPI CA Core Subsystem:
9998
9999Fixed a problem with the Alias operator when the target of the alias is a
10000named ASL operator that opens a new scope -- Scope, Device,
10001PowerResource,
10002Processor, and ThermalZone. In these cases, any children of the original
10003operator could not be accessed via the alias, potentially causing
10004unexpected
10005AE_NOT_FOUND exceptions. (BZ 9067)
10006
10007Fixed a problem with the Package operator where all named references were
10008created as object references and left otherwise unresolved. According to
10009the
10010ACPI specification, a Package can only contain Data Objects or references
10011to
10012control methods. The implication is that named references to Data Objects
10013(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10014immediately upon package creation. This is the approach taken with this
10015change. References to all other named objects (Methods, Devices, Scopes,
10016etc.) are all now properly created as reference objects. (BZ 5328)
10017
10018Reverted a change to Notify handling that was introduced in version
1001920070508. This version changed the Notify handling from asynchronous to
10020fully synchronous (Device driver Notify handling with respect to the
10021Notify
10022ASL operator). It was found that this change caused more problems than it
10023solved and was removed by most users.
10024
10025Fixed a problem with the Increment and Decrement operators where the type
10026of
10027the target object could be unexpectedly and incorrectly changed. (BZ 353)
10028Lin Ming.
10029
10030Fixed a problem with the Load and LoadTable operators where the table
10031location within the namespace was ignored. Instead, the table was always
10032loaded into the root or current scope. Lin Ming.
10033
10034Fixed a problem with the Load operator when loading a table from a buffer
10035object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10036
10037Fixed a problem with the Debug object where a store of a DdbHandle
10038reference
10039object to the Debug object could cause a fault.
10040
10041Added a table checksum verification for the Load operator, in the case
10042where
10043the load is from a buffer. (BZ 578).
10044
10045Implemented additional parameter validation for the LoadTable operator.
10046The
10047length of the input strings SignatureString, OemIdString, and OemTableId
10048are
10049now checked for maximum lengths. (BZ 582) Lin Ming.
10050
10051Example Code and Data Size: These are the sizes for the OS-independent
10052acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10053debug version of the code includes the debug output trace mechanism and
10054has
10055a much larger code and data size.
10056
10057  Previous Release:
10058    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10059    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10060  Current Release:
10061    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10062    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10063
10064
100652) iASL Compiler/Disassembler:
10066
10067Fixed a problem where if a single file was specified and the file did not
10068exist, no error message was emitted. (Introduced with wildcard support in
10069version 20070917.)
10070
10071----------------------------------------
1007219 September 2007. Summary of changes for version 20070919:
10073
100741) ACPI CA Core Subsystem:
10075
10076Designed and implemented new external interfaces to install and remove
10077handlers for ACPI table-related events. Current events that are defined
10078are
10079LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10080they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10081AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10082
10083Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10084(acpi_serialized option on Linux) could cause some systems to hang during
10085initialization. (Bob Moore) BZ 8171
10086
10087Fixed a problem where objects of certain types (Device, ThermalZone,
10088Processor, PowerResource) can be not found if they are declared and
10089referenced from within the same control method (Lin Ming) BZ 341
10090
10091Example Code and Data Size: These are the sizes for the OS-independent
10092acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10093debug version of the code includes the debug output trace mechanism and
10094has
10095a much larger code and data size.
10096
10097  Previous Release:
10098    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10099    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10100  Current Release:
10101    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10102    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10103
10104
101052) iASL Compiler/Disassembler:
10106
10107Implemented support to allow multiple files to be compiled/disassembled
10108in
10109a
10110single invocation. This includes command line wildcard support for both
10111the
10112Windows and Unix versions of the compiler. This feature simplifies the
10113disassembly and compilation of multiple ACPI tables in a single
10114directory.
10115
10116----------------------------------------
1011708 May 2007. Summary of changes for version 20070508:
10118
101191) ACPI CA Core Subsystem:
10120
10121Implemented a Microsoft compatibility design change for the handling of
10122the
10123Notify AML operator. Previously, notify handlers were dispatched and
10124executed completely asynchronously in a deferred thread. The new design
10125still executes the notify handlers in a different thread, but the
10126original
10127thread that executed the Notify() now waits at a synchronization point
10128for
10129the notify handler to complete. Some machines depend on a synchronous
10130Notify
10131operator in order to operate correctly.
10132
10133Implemented support to allow Package objects to be passed as method
10134arguments to the external AcpiEvaluateObject interface. Previously, this
10135would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10136implemented since there were no reserved control methods that required it
10137until recently.
10138
10139Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10140that
10141contained invalid non-zero values in reserved fields could cause later
10142failures because these fields have meaning in later revisions of the
10143FADT.
10144For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10145fields
10146are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10147
10148Fixed a problem where the Global Lock handle was not properly updated if
10149a
10150thread that acquired the Global Lock via executing AML code then
10151attempted
10152to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10153Joe
10154Liu.
10155
10156Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10157could be corrupted if the interrupt being removed was at the head of the
10158list. Reported by Linn Crosetto.
10159
10160Example Code and Data Size: These are the sizes for the OS-independent
10161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10162debug version of the code includes the debug output trace mechanism and
10163has
10164a much larger code and data size.
10165
10166  Previous Release:
10167    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10168    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10169  Current Release:
10170    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10171    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10172
10173----------------------------------------
1017420 March 2007. Summary of changes for version 20070320:
10175
101761) ACPI CA Core Subsystem:
10177
10178Implemented a change to the order of interpretation and evaluation of AML
10179operand objects within the AML interpreter. The interpreter now evaluates
10180operands in the order that they appear in the AML stream (and the
10181corresponding ASL code), instead of in the reverse order (after the
10182entire
10183operand list has been parsed). The previous behavior caused several
10184subtle
10185incompatibilities with the Microsoft AML interpreter as well as being
10186somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10187
10188Implemented a change to the ACPI Global Lock support. All interfaces to
10189the
10190global lock now allow the same thread to acquire the lock multiple times.
10191This affects the AcpiAcquireGlobalLock external interface to the global
10192lock
10193as well as the internal use of the global lock to support AML fields -- a
10194control method that is holding the global lock can now simultaneously
10195access
10196AML fields that require global lock protection. Previously, in both
10197cases,
10198this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10199to
10200AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10201Controller. There is no change to the behavior of the AML Acquire
10202operator,
10203as this can already be used to acquire a mutex multiple times by the same
10204thread. BZ 8066. With assistance from Alexey Starikovskiy.
10205
10206Fixed a problem where invalid objects could be referenced in the AML
10207Interpreter after error conditions. During operand evaluation, ensure
10208that
10209the internal "Return Object" field is cleared on error and only valid
10210pointers are stored there. Caused occasional access to deleted objects
10211that
10212resulted in "large reference count" warning messages. Valery Podrezov.
10213
10214Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10215on
10216deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10217Podrezov.
10218
10219Fixed an internal problem with the handling of result objects on the
10220interpreter result stack. BZ 7872. Valery Podrezov.
10221
10222Removed obsolete code that handled the case where AML_NAME_OP is the
10223target
10224of a reference (Reference.Opcode). This code was no longer necessary. BZ
102257874. Valery Podrezov.
10226
10227Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10228was
10229a
10230remnant from the previously discontinued 16-bit support.
10231
10232Example Code and Data Size: These are the sizes for the OS-independent
10233acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10234debug version of the code includes the debug output trace mechanism and
10235has
10236a much larger code and data size.
10237
10238  Previous Release:
10239    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10240    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10241  Current Release:
10242    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10243    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10244
10245----------------------------------------
1024626 January 2007. Summary of changes for version 20070126:
10247
102481) ACPI CA Core Subsystem:
10249
10250Added the 2007 copyright to all module headers and signons. This affects
10251virtually every file in the ACPICA core subsystem, the iASL compiler, and
10252the utilities.
10253
10254Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10255during a table load. A bad pointer was passed in the case where the DSDT
10256is
10257overridden, causing a fault in this case.
10258
10259Example Code and Data Size: These are the sizes for the OS-independent
10260acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10261debug version of the code includes the debug output trace mechanism and
10262has
10263a much larger code and data size.
10264
10265  Previous Release:
10266    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10267    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10268  Current Release:
10269    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10270    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10271
10272----------------------------------------
1027315 December 2006. Summary of changes for version 20061215:
10274
102751) ACPI CA Core Subsystem:
10276
10277Support for 16-bit ACPICA has been completely removed since it is no
10278longer
10279necessary and it clutters the code. All 16-bit macros, types, and
10280conditional compiles have been removed, cleaning up and simplifying the
10281code
10282across the entire subsystem. DOS support is no longer needed since the
10283bootable Linux firmware kit is now available.
10284
10285The handler for the Global Lock is now removed during AcpiTerminate to
10286enable a clean subsystem restart, via the implementation of the
10287AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10288HP)
10289
10290Implemented enhancements to the multithreading support within the
10291debugger
10292to enable improved multithreading debugging and evaluation of the
10293subsystem.
10294(Valery Podrezov)
10295
10296Debugger: Enhanced the Statistics/Memory command to emit the total
10297(maximum)
10298memory used during the execution, as well as the maximum memory consumed
10299by
10300each of the various object types. (Valery Podrezov)
10301
10302Example Code and Data Size: These are the sizes for the OS-independent
10303acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10304debug version of the code includes the debug output trace mechanism and
10305has
10306a much larger code and data size.
10307
10308  Previous Release:
10309    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10310    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10311  Current Release:
10312    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10313    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10314
10315
103162) iASL Compiler/Disassembler and Tools:
10317
10318AcpiExec: Implemented a new option (-m) to display full memory use
10319statistics upon subsystem/program termination. (Valery Podrezov)
10320
10321----------------------------------------
1032209 November 2006. Summary of changes for version 20061109:
10323
103241) ACPI CA Core Subsystem:
10325
10326Optimized the Load ASL operator in the case where the source operand is
10327an
10328operation region. Simply map the operation region memory, instead of
10329performing a bytewise read. (Region must be of type SystemMemory, see
10330below.)
10331
10332Fixed the Load ASL operator for the case where the source operand is a
10333region field. A buffer object is also allowed as the source operand. BZ
10334480
10335
10336Fixed a problem where the Load ASL operator allowed the source operand to
10337be
10338an operation region of any type. It is now restricted to regions of type
10339SystemMemory, as per the ACPI specification. BZ 481
10340
10341Additional cleanup and optimizations for the new Table Manager code.
10342
10343AcpiEnable will now fail if all of the required ACPI tables are not
10344loaded
10345(FADT, FACS, DSDT). BZ 477
10346
10347Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10348this
10349header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10350manually optimized to be aligned and will not work if it is byte-packed.
10351
10352Example Code and Data Size: These are the sizes for the OS-independent
10353acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10354debug version of the code includes the debug output trace mechanism and
10355has
10356a much larger code and data size.
10357
10358  Previous Release:
10359    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10360    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10361  Current Release:
10362    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10363    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10364
10365
103662) iASL Compiler/Disassembler and Tools:
10367
10368Fixed a problem where the presence of the _OSI predefined control method
10369within complex expressions could cause an internal compiler error.
10370
10371AcpiExec: Implemented full region support for multiple address spaces.
10372SpaceId is now part of the REGION object. BZ 429
10373
10374----------------------------------------
1037511 October 2006. Summary of changes for version 20061011:
10376
103771) ACPI CA Core Subsystem:
10378
10379Completed an AML interpreter performance enhancement for control method
10380execution. Previously a 2-pass parse/execution, control methods are now
10381completely parsed and executed in a single pass. This improves overall
10382interpreter performance by ~25%, reduces code size, and reduces CPU stack
10383use. (Valery Podrezov + interpreter changes in version 20051202 that
10384eliminated namespace loading during the pass one parse.)
10385
10386Implemented _CID support for PCI Root Bridge detection. If the _HID does
10387not
10388match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10389now
10390obtained and also checked for an ID match.
10391
10392Implemented additional support for the PCI _ADR execution: upsearch until
10393a
10394device scope is found before executing _ADR. This allows PCI_Config
10395operation regions to be declared locally within control methods
10396underneath
10397PCI device objects.
10398
10399Fixed a problem with a possible race condition between threads executing
10400AcpiWalkNamespace and the AML interpreter. This condition was removed by
10401modifying AcpiWalkNamespace to (by default) ignore all temporary
10402namespace
10403entries created during any concurrent control method execution. An
10404additional namespace race condition is known to exist between
10405AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10406investigation.
10407
10408Restructured the AML ParseLoop function, breaking it into several
10409subfunctions in order to reduce CPU stack use and improve
10410maintainability.
10411(Mikhail Kouzmich)
10412
10413AcpiGetHandle: Fix for parameter validation to detect invalid
10414combinations
10415of prefix handle and pathname. BZ 478
10416
10417Example Code and Data Size: These are the sizes for the OS-independent
10418acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10419debug version of the code includes the debug output trace mechanism and
10420has
10421a much larger code and data size.
10422
10423  Previous Release:
10424    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10425    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10426  Current Release:
10427    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10428    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10429
104302) iASL Compiler/Disassembler and Tools:
10431
10432Ported the -g option (get local ACPI tables) to the new ACPICA Table
10433Manager
10434to restore original behavior.
10435
10436----------------------------------------
1043727 September 2006. Summary of changes for version 20060927:
10438
104391) ACPI CA Core Subsystem:
10440
10441Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10442These functions now use a spinlock for mutual exclusion and the interrupt
10443level indication flag is not needed.
10444
10445Fixed a problem with the Global Lock where the lock could appear to be
10446obtained before it is actually obtained. The global lock semaphore was
10447inadvertently created with one unit instead of zero units. (BZ 464)
10448Fiodor
10449Suietov.
10450
10451Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10452during
10453a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10454
10455Example Code and Data Size: These are the sizes for the OS-independent
10456acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10457debug version of the code includes the debug output trace mechanism and
10458has
10459a much larger code and data size.
10460
10461  Previous Release:
10462    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10463    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10464  Current Release:
10465    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10466    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10467
10468
104692) iASL Compiler/Disassembler and Tools:
10470
10471Fixed a compilation problem with the pre-defined Resource Descriptor
10472field
10473names where an "object does not exist" error could be incorrectly
10474generated
10475if the parent ResourceTemplate pathname places the template within a
10476different namespace scope than the current scope. (BZ 7212)
10477
10478Fixed a problem where the compiler could hang after syntax errors
10479detected
10480in an ElseIf construct. (BZ 453)
10481
10482Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10483operator. An incorrect output filename was produced when this parameter
10484was
10485a null string (""). Now, the original input filename is used as the AML
10486output filename, with an ".aml" extension.
10487
10488Implemented a generic batch command mode for the AcpiExec utility
10489(execute
10490any AML debugger command) (Valery Podrezov).
10491
10492----------------------------------------
1049312 September 2006. Summary of changes for version 20060912:
10494
104951) ACPI CA Core Subsystem:
10496
10497Enhanced the implementation of the "serialized mode" of the interpreter
10498(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10499specified, instead of creating a serialization semaphore per control
10500method,
10501the interpreter lock is simply no longer released before a blocking
10502operation during control method execution. This effectively makes the AML
10503Interpreter single-threaded. The overhead of a semaphore per-method is
10504eliminated.
10505
10506Fixed a regression where an error was no longer emitted if a control
10507method
10508attempts to create 2 objects of the same name. This once again returns
10509AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10510that
10511will dynamically serialize the control method to possible prevent future
10512errors. (BZ 440)
10513
10514Integrated a fix for a problem with PCI Express HID detection in the PCI
10515Config Space setup procedure. (BZ 7145)
10516
10517Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10518AcpiHwInitialize function - the FADT registers are now validated when the
10519table is loaded.
10520
10521Added two new warnings during FADT verification - 1) if the FADT is
10522larger
10523than the largest known FADT version, and 2) if there is a mismatch
10524between
10525a
1052632-bit block address and the 64-bit X counterpart (when both are non-
10527zero.)
10528
10529Example Code and Data Size: These are the sizes for the OS-independent
10530acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10531debug version of the code includes the debug output trace mechanism and
10532has
10533a much larger code and data size.
10534
10535  Previous Release:
10536    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10537    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10538  Current Release:
10539    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10540    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10541
10542
105432) iASL Compiler/Disassembler and Tools:
10544
10545Fixed a problem with the implementation of the Switch() operator where
10546the
10547temporary variable was declared too close to the actual Switch, instead
10548of
10549at method level. This could cause a problem if the Switch() operator is
10550within a while loop, causing an error on the second iteration. (BZ 460)
10551
10552Disassembler - fix for error emitted for unknown type for target of scope
10553operator. Now, ignore it and continue.
10554
10555Disassembly of an FADT now verifies the input FADT and reports any errors
10556found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10557
10558Disassembly of raw data buffers with byte initialization data now
10559prefixes
10560each output line with the current buffer offset.
10561
10562Disassembly of ASF! table now includes all variable-length data fields at
10563the end of some of the subtables.
10564
10565The disassembler now emits a comment if a buffer appears to be a
10566ResourceTemplate, but cannot be disassembled as such because the EndTag
10567does
10568not appear at the very end of the buffer.
10569
10570AcpiExec - Added the "-t" command line option to enable the serialized
10571mode
10572of the AML interpreter.
10573
10574----------------------------------------
1057531 August 2006. Summary of changes for version 20060831:
10576
105771) ACPI CA Core Subsystem:
10578
10579Miscellaneous fixes for the Table Manager:
10580- Correctly initialize internal common FADT for all 64-bit "X" fields
10581- Fixed a couple table mapping issues during table load
10582- Fixed a couple alignment issues for IA64
10583- Initialize input array to zero in AcpiInitializeTables
10584- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10585AcpiGetTableByIndex
10586
10587Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10588now
10589immediately disabled to prevent the waking GPE from firing again and to
10590prevent other wake GPEs from interrupting the wake process.
10591
10592Added the AcpiGpeCount global that tracks the number of processed GPEs,
10593to
10594be used for debugging systems with a large number of ACPI interrupts.
10595
10596Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10597both the ACPICA headers and the disassembler.
10598
10599Example Code and Data Size: These are the sizes for the OS-independent
10600acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10601debug version of the code includes the debug output trace mechanism and
10602has
10603a much larger code and data size.
10604
10605  Previous Release:
10606    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10607    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10608  Current Release:
10609    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10610    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10611
10612
106132) iASL Compiler/Disassembler and Tools:
10614
10615Disassembler support for the DMAR ACPI table.
10616
10617----------------------------------------
1061823 August 2006. Summary of changes for version 20060823:
10619
106201) ACPI CA Core Subsystem:
10621
10622The Table Manager component has been completely redesigned and
10623reimplemented. The new design is much simpler, and reduces the overall
10624code
10625and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10626is
10627now possible to obtain the ACPI tables very early during kernel
10628initialization, even before dynamic memory management is initialized.
10629(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10630
10631Obsolete ACPICA interfaces:
10632
10633- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10634init
10635time).
10636- AcpiLoadTable: Not needed.
10637- AcpiUnloadTable: Not needed.
10638
10639New ACPICA interfaces:
10640
10641- AcpiInitializeTables: Must be called before the table manager can be
10642used.
10643- AcpiReallocateRootTable: Used to transfer the root table to dynamically
10644allocated memory after it becomes available.
10645- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10646tables
10647in the RSDT/XSDT.
10648
10649Other ACPICA changes:
10650
10651- AcpiGetTableHeader returns the actual mapped table header, not a copy.
10652Use
10653AcpiOsUnmapMemory to free this mapping.
10654- AcpiGetTable returns the actual mapped table. The mapping is managed
10655internally and must not be deleted by the caller. Use of this interface
10656causes no additional dynamic memory allocation.
10657- AcpiFindRootPointer: Support for physical addressing has been
10658eliminated,
10659it appeared to be unused.
10660- The interface to AcpiOsMapMemory has changed to be consistent with the
10661other allocation interfaces.
10662- The interface to AcpiOsGetRootPointer has changed to eliminate
10663unnecessary
10664parameters.
10665- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1066664-
10667bit platforms. Was previously 64 bits on all platforms.
10668- The interface to the ACPI Global Lock acquire/release macros have
10669changed
10670slightly since ACPICA no longer keeps a local copy of the FACS with a
10671constructed pointer to the actual global lock.
10672
10673Porting to the new table manager:
10674
10675- AcpiInitializeTables: Must be called once, and can be called anytime
10676during the OS initialization process. It allows the host to specify an
10677area
10678of memory to be used to store the internal version of the RSDT/XSDT (root
10679table). This allows the host to access ACPI tables before memory
10680management
10681is initialized and running.
10682- AcpiReallocateRootTable: Can be called after memory management is
10683running
10684to copy the root table to a dynamically allocated array, freeing up the
10685scratch memory specified in the call to AcpiInitializeTables.
10686- AcpiSubsystemInitialize: This existing interface is independent of the
10687Table Manager, and does not have to be called before the Table Manager
10688can
10689be used, it only must be called before the rest of ACPICA can be used.
10690- ACPI Tables: Some changes have been made to the names and structure of
10691the
10692actbl.h and actbl1.h header files and may require changes to existing
10693code.
10694For example, bitfields have been completely removed because of their lack
10695of
10696portability across C compilers.
10697- Update interfaces to the Global Lock acquire/release macros if local
10698versions are used. (see acwin.h)
10699
10700Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10701
10702New files: tbfind.c
10703
10704Example Code and Data Size: These are the sizes for the OS-independent
10705acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10706debug version of the code includes the debug output trace mechanism and
10707has
10708a much larger code and data size.
10709
10710  Previous Release:
10711    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10712    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10713  Current Release:
10714    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10715    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10716
10717
107182) iASL Compiler/Disassembler and Tools:
10719
10720No changes for this release.
10721
10722----------------------------------------
1072321 July 2006. Summary of changes for version 20060721:
10724
107251) ACPI CA Core Subsystem:
10726
10727The full source code for the ASL test suite used to validate the iASL
10728compiler and the ACPICA core subsystem is being released with the ACPICA
10729source for the first time. The source is contained in a separate package
10730and
10731consists of over 1100 files that exercise all ASL/AML operators. The
10732package
10733should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
10734Fiodor
10735Suietov)
10736
10737Completed a new design and implementation for support of the ACPI Global
10738Lock. On the OS side, the global lock is now treated as a standard AML
10739mutex. Previously, multiple OS threads could "acquire" the global lock
10740simultaneously. However, this could cause the BIOS to be starved out of
10741the
10742lock - especially in cases such as the Embedded Controller driver where
10743there is a tight coupling between the OS and the BIOS.
10744
10745Implemented an optimization for the ACPI Global Lock interrupt mechanism.
10746The Global Lock interrupt handler no longer queues the execution of a
10747separate thread to signal the global lock semaphore. Instead, the
10748semaphore
10749is signaled directly from the interrupt handler.
10750
10751Implemented support within the AML interpreter for package objects that
10752contain a larger AML length (package list length) than the package
10753element
10754count. In this case, the length of the package is truncated to match the
10755package element count. Some BIOS code apparently modifies the package
10756length
10757on the fly, and this change supports this behavior. Provides
10758compatibility
10759with the MS AML interpreter. (With assistance from Fiodor Suietov)
10760
10761Implemented a temporary fix for the BankValue parameter of a Bank Field
10762to
10763support all constant values, now including the Zero and One opcodes.
10764Evaluation of this parameter must eventually be converted to a full
10765TermArg
10766evaluation. A not-implemented error is now returned (temporarily) for
10767non-
10768constant values for this parameter.
10769
10770Fixed problem reports (Fiodor Suietov) integrated:
10771- Fix for premature object deletion after CopyObject on Operation Region
10772(BZ
10773350)
10774
10775Example Code and Data Size: These are the sizes for the OS-independent
10776acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10777debug version of the code includes the debug output trace mechanism and
10778has
10779a much larger code and data size.
10780
10781  Previous Release:
10782    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
10783    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
10784  Current Release:
10785    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10786    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10787
10788
107892) iASL Compiler/Disassembler and Tools:
10790
10791No changes for this release.
10792
10793----------------------------------------
1079407 July 2006. Summary of changes for version 20060707:
10795
107961) ACPI CA Core Subsystem:
10797
10798Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
10799that do not allow the initialization of address pointers within packed
10800structures - even though the hardware itself may support misaligned
10801transfers. Some of the debug data structures are packed by default to
10802minimize size.
10803
10804Added an error message for the case where AcpiOsGetThreadId() returns
10805zero.
10806A non-zero value is required by the core ACPICA code to ensure the proper
10807operation of AML mutexes and recursive control methods.
10808
10809The DSDT is now the only ACPI table that determines whether the AML
10810interpreter is in 32-bit or 64-bit mode. Not really a functional change,
10811but
10812the hooks for per-table 32/64 switching have been removed from the code.
10813A
10814clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10815
10816Fixed a possible leak of an OwnerID in the error path of
10817AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
10818deletion to a single place in AcpiTbUninstallTable to correct possible
10819leaks
10820when using the AcpiTbDeleteTablesByType interface (with assistance from
10821Lance Ortiz.)
10822
10823Fixed a problem with Serialized control methods where the semaphore
10824associated with the method could be over-signaled after multiple method
10825invocations.
10826
10827Fixed two issues with the locking of the internal namespace data
10828structure.
10829Both the Unload() operator and AcpiUnloadTable interface now lock the
10830namespace during the namespace deletion associated with the table unload
10831(with assistance from Linn Crosetto.)
10832
10833Fixed problem reports (Valery Podrezov) integrated:
10834- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10835
10836Fixed problem reports (Fiodor Suietov) integrated:
10837- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
10838- On Address Space handler deletion, needless deactivation call (BZ 374)
10839- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
10840375)
10841- Possible memory leak, Notify sub-objects of Processor, Power,
10842ThermalZone
10843(BZ 376)
10844- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
10845- Minimum Length of RSDT should be validated (BZ 379)
10846- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
10847Handler (BZ (380)
10848- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
10849loaded
10850(BZ 381)
10851
10852Example Code and Data Size: These are the sizes for the OS-independent
10853acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10854debug version of the code includes the debug output trace mechanism and
10855has
10856a much larger code and data size.
10857
10858  Previous Release:
10859    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10860    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10861  Current Release:
10862    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10863    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10864
10865
108662) iASL Compiler/Disassembler and Tools:
10867
10868Fixed problem reports:
10869Compiler segfault when ASL contains a long (>1024) String declaration (BZ
10870436)
10871
10872----------------------------------------
1087323 June 2006. Summary of changes for version 20060623:
10874
108751) ACPI CA Core Subsystem:
10876
10877Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
10878allows the type to be customized to the host OS for improved efficiency
10879(since a spinlock is usually a very small object.)
10880
10881Implemented support for "ignored" bits in the ACPI registers. According
10882to
10883the ACPI specification, these bits should be preserved when writing the
10884registers via a read/modify/write cycle. There are 3 bits preserved in
10885this
10886manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
10887
10888Implemented the initial deployment of new OSL mutex interfaces. Since
10889some
10890host operating systems have separate mutex and semaphore objects, this
10891feature was requested. The base code now uses mutexes (and the new mutex
10892interfaces) wherever a binary semaphore was used previously. However, for
10893the current release, the mutex interfaces are defined as macros to map
10894them
10895to the existing semaphore interfaces. Therefore, no OSL changes are
10896required
10897at this time. (See acpiosxf.h)
10898
10899Fixed several problems with the support for the control method SyncLevel
10900parameter. The SyncLevel now works according to the ACPI specification
10901and
10902in concert with the Mutex SyncLevel parameter, since the current
10903SyncLevel
10904is a property of the executing thread. Mutual exclusion for control
10905methods
10906is now implemented with a mutex instead of a semaphore.
10907
10908Fixed three instances of the use of the C shift operator in the bitfield
10909support code (exfldio.c) to avoid the use of a shift value larger than
10910the
10911target data width. The behavior of C compilers is undefined in this case
10912and
10913can cause unpredictable results, and therefore the case must be detected
10914and
10915avoided. (Fiodor Suietov)
10916
10917Added an info message whenever an SSDT or OEM table is loaded dynamically
10918via the Load() or LoadTable() ASL operators. This should improve
10919debugging
10920capability since it will show exactly what tables have been loaded
10921(beyond
10922the tables present in the RSDT/XSDT.)
10923
10924Example Code and Data Size: These are the sizes for the OS-independent
10925acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10926debug version of the code includes the debug output trace mechanism and
10927has
10928a much larger code and data size.
10929
10930  Previous Release:
10931    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10932    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10933  Current Release:
10934    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10935    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10936
10937
109382) iASL Compiler/Disassembler and Tools:
10939
10940No changes for this release.
10941
10942----------------------------------------
1094308 June 2006. Summary of changes for version 20060608:
10944
109451) ACPI CA Core Subsystem:
10946
10947Converted the locking mutex used for the ACPI hardware to a spinlock.
10948This
10949change should eliminate all problems caused by attempting to acquire a
10950semaphore at interrupt level, and it means that all ACPICA external
10951interfaces that directly access the ACPI hardware can be safely called
10952from
10953interrupt level. OSL code that implements the semaphore interfaces should
10954be
10955able to eliminate any workarounds for being called at interrupt level.
10956
10957Fixed a regression introduced in 20060526 where the ACPI device
10958initialization could be prematurely aborted with an AE_NOT_FOUND if a
10959device
10960did not have an optional _INI method.
10961
10962Fixed an IndexField issue where a write to the Data Register should be
10963limited in size to the AccessSize (width) of the IndexField itself. (BZ
10964433,
10965Fiodor Suietov)
10966
10967Fixed problem reports (Valery Podrezov) integrated:
10968- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
10969
10970Fixed problem reports (Fiodor Suietov) integrated:
10971- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
10972
10973Removed four global mutexes that were obsolete and were no longer being
10974used.
10975
10976Example Code and Data Size: These are the sizes for the OS-independent
10977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10978debug version of the code includes the debug output trace mechanism and
10979has
10980a much larger code and data size.
10981
10982  Previous Release:
10983    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10984    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10985  Current Release:
10986    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10987    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10988
10989
109902) iASL Compiler/Disassembler and Tools:
10991
10992Fixed a fault when using -g option (get tables from registry) on Windows
10993machines.
10994
10995Fixed problem reports integrated:
10996- Generate error if CreateField NumBits parameter is zero. (BZ 405)
10997- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
10998Suietov)
10999- Global table revision override (-r) is ignored (BZ 413)
11000
11001----------------------------------------
1100226 May 2006. Summary of changes for version 20060526:
11003
110041) ACPI CA Core Subsystem:
11005
11006Restructured, flattened, and simplified the internal interfaces for
11007namespace object evaluation - resulting in smaller code, less CPU stack
11008use,
11009and fewer interfaces. (With assistance from Mikhail Kouzmich)
11010
11011Fixed a problem with the CopyObject operator where the first parameter
11012was
11013not typed correctly for the parser, interpreter, compiler, and
11014disassembler.
11015Caused various errors and unexpected behavior.
11016
11017Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11018produced incorrect results with some C compilers. Since the behavior of C
11019compilers when the shift value is larger than the datatype width is
11020apparently not well defined, the interpreter now detects this condition
11021and
11022simply returns zero as expected in all such cases. (BZ 395)
11023
11024Fixed problem reports (Valery Podrezov) integrated:
11025- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11026- Allow interpreter to handle nested method declarations (BZ 5361)
11027
11028Fixed problem reports (Fiodor Suietov) integrated:
11029- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11030355)
11031- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11032356)
11033- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11034- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11035- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11036- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11037- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11038- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11039- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11040365)
11041- Status of the Global Initialization Handler call not used (BZ 366)
11042- Incorrect object parameter to Global Initialization Handler (BZ 367)
11043
11044Example Code and Data Size: These are the sizes for the OS-independent
11045acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11046debug version of the code includes the debug output trace mechanism and
11047has
11048a much larger code and data size.
11049
11050  Previous Release:
11051    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11052    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11053  Current Release:
11054    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11055    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11056
11057
110582) iASL Compiler/Disassembler and Tools:
11059
11060Modified the parser to allow the names IO, DMA, and IRQ to be used as
11061namespace identifiers with no collision with existing resource descriptor
11062macro names. This provides compatibility with other ASL compilers and is
11063most useful for disassembly/recompilation of existing tables without
11064parse
11065errors. (With assistance from Thomas Renninger)
11066
11067Disassembler: fixed an incorrect disassembly problem with the
11068DataTableRegion and CopyObject operators. Fixed a possible fault during
11069disassembly of some Alias operators.
11070
11071----------------------------------------
1107212 May 2006. Summary of changes for version 20060512:
11073
110741) ACPI CA Core Subsystem:
11075
11076Replaced the AcpiOsQueueForExecution interface with a new interface named
11077AcpiOsExecute. The major difference is that the new interface does not
11078have
11079a Priority parameter, this appeared to be useless and has been replaced
11080by
11081a
11082Type parameter. The Type tells the host what type of execution is being
11083requested, such as global lock handler, notify handler, GPE handler, etc.
11084This allows the host to queue and execute the request as appropriate for
11085the
11086request type, possibly using different work queues and different
11087priorities
11088for the various request types. This enables fixes for multithreading
11089deadlock problems such as BZ #5534, and will require changes to all
11090existing
11091OS interface layers. (Alexey Starikovskiy and Bob Moore)
11092
11093Fixed a possible memory leak associated with the support for the so-
11094called
11095"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11096Suietov)
11097
11098Fixed a problem with the Load() operator where a table load from an
11099operation region could overwrite an internal table buffer by up to 7
11100bytes
11101and cause alignment faults on IPF systems. (With assistance from Luming
11102Yu)
11103
11104Example Code and Data Size: These are the sizes for the OS-independent
11105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11106debug version of the code includes the debug output trace mechanism and
11107has
11108a much larger code and data size.
11109
11110  Previous Release:
11111    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11112    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11113  Current Release:
11114    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11115    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11116
11117
11118
111192) iASL Compiler/Disassembler and Tools:
11120
11121Disassembler: Implemented support to cross reference the internal
11122namespace
11123and automatically generate ASL External() statements for symbols not
11124defined
11125within the current table being disassembled. This will simplify the
11126disassembly and recompilation of interdependent tables such as SSDTs
11127since
11128these statements will no longer have to be added manually.
11129
11130Disassembler: Implemented experimental support to automatically detect
11131invocations of external control methods and generate appropriate
11132External()
11133statements. This is problematic because the AML cannot be correctly
11134parsed
11135until the number of arguments for each control method is known.
11136Currently,
11137standalone method invocations and invocations as the source operand of a
11138Store() statement are supported.
11139
11140Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11141LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11142LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11143more readable and likely closer to the original ASL source.
11144
11145----------------------------------------
1114621 April 2006. Summary of changes for version 20060421:
11147
111481) ACPI CA Core Subsystem:
11149
11150Removed a device initialization optimization introduced in 20051216 where
11151the _STA method was not run unless an _INI was also present for the same
11152device. This optimization could cause problems because it could allow
11153_INI
11154methods to be run within a not-present device subtree. (If a not-present
11155device had no _INI, _STA would not be run, the not-present status would
11156not
11157be discovered, and the children of the device would be incorrectly
11158traversed.)
11159
11160Implemented a new _STA optimization where namespace subtrees that do not
11161contain _INI are identified and ignored during device initialization.
11162Selectively running _STA can significantly improve boot time on large
11163machines (with assistance from Len Brown.)
11164
11165Implemented support for the device initialization case where the returned
11166_STA flags indicate a device not-present but functioning. In this case,
11167_INI
11168is not run, but the device children are examined for presence, as per the
11169ACPI specification.
11170
11171Implemented an additional change to the IndexField support in order to
11172conform to MS behavior. The value written to the Index Register is not
11173simply a byte offset, it is a byte offset in units of the access width of
11174the parent Index Field. (Fiodor Suietov)
11175
11176Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11177interface is called during the creation of all AML operation regions, and
11178allows the host OS to exert control over what addresses it will allow the
11179AML code to access. Operation Regions whose addresses are disallowed will
11180cause a runtime exception when they are actually accessed (will not
11181affect
11182or abort table loading.) See oswinxf or osunixxf for an example
11183implementation.
11184
11185Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11186interface allows the host OS to match the various "optional"
11187interface/behavior strings for the _OSI predefined control method as
11188appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11189for an example implementation.
11190
11191Restructured and corrected various problems in the exception handling
11192code
11193paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11194(with assistance from Takayoshi Kochi.)
11195
11196Modified the Linux source converter to ignore quoted string literals
11197while
11198converting identifiers from mixed to lower case. This will correct
11199problems
11200with the disassembler and other areas where such strings must not be
11201modified.
11202
11203The ACPI_FUNCTION_* macros no longer require quotes around the function
11204name. This allows the Linux source converter to convert the names, now
11205that
11206the converter ignores quoted strings.
11207
11208Example Code and Data Size: These are the sizes for the OS-independent
11209acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11210debug version of the code includes the debug output trace mechanism and
11211has
11212a much larger code and data size.
11213
11214  Previous Release:
11215
11216    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11217    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11218  Current Release:
11219    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11220    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11221
11222
112232) iASL Compiler/Disassembler and Tools:
11224
11225Implemented 3 new warnings for iASL, and implemented multiple warning
11226levels
11227(w2 flag).
11228
112291) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11230not
11231WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11232check for the possible timeout, a warning is issued.
11233
112342) Useless operators: If an ASL operator does not specify an optional
11235target
11236operand and it also does not use the function return value from the
11237operator, a warning is issued since the operator effectively does
11238nothing.
11239
112403) Unreferenced objects: If a namespace object is created, but never
11241referenced, a warning is issued. This is a warning level 2 since there
11242are
11243cases where this is ok, such as when a secondary table is loaded that
11244uses
11245the unreferenced objects. Even so, care is taken to only flag objects
11246that
11247don't look like they will ever be used. For example, the reserved methods
11248(starting with an underscore) are usually not referenced because it is
11249expected that the OS will invoke them.
11250
11251----------------------------------------
1125231 March 2006. Summary of changes for version 20060331:
11253
112541) ACPI CA Core Subsystem:
11255
11256Implemented header file support for the following additional ACPI tables:
11257ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11258support,
11259all current and known ACPI tables are now defined in the ACPICA headers
11260and
11261are available for use by device drivers and other software.
11262
11263Implemented support to allow tables that contain ACPI names with invalid
11264characters to be loaded. Previously, this would cause the table load to
11265fail, but since there are several known cases of such tables on existing
11266machines, this change was made to enable ACPI support for them. Also,
11267this
11268matches the behavior of the Microsoft ACPI implementation.
11269
11270Fixed a couple regressions introduced during the memory optimization in
11271the
1127220060317 release. The namespace node definition required additional
11273reorganization and an internal datatype that had been changed to 8-bit
11274was
11275restored to 32-bit. (Valery Podrezov)
11276
11277Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11278could be passed through to AcpiOsReleaseObject which is unexpected. Such
11279null pointers are now trapped and ignored, matching the behavior of the
11280previous implementation before the deployment of AcpiOsReleaseObject.
11281(Valery Podrezov, Fiodor Suietov)
11282
11283Fixed a memory mapping leak during the deletion of a SystemMemory
11284operation
11285region where a cached memory mapping was not deleted. This became a
11286noticeable problem for operation regions that are defined within
11287frequently
11288used control methods. (Dana Meyers)
11289
11290Reorganized the ACPI table header files into two main files: one for the
11291ACPI tables consumed by the ACPICA core, and another for the
11292miscellaneous
11293ACPI tables that are consumed by the drivers and other software. The
11294various
11295FADT definitions were merged into one common section and three different
11296tables (ACPI 1.0, 1.0+, and 2.0)
11297
11298Example Code and Data Size: These are the sizes for the OS-independent
11299acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11300debug version of the code includes the debug output trace mechanism and
11301has
11302a much larger code and data size.
11303
11304  Previous Release:
11305    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11306    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11307  Current Release:
11308    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11309    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11310
11311
113122) iASL Compiler/Disassembler and Tools:
11313
11314Disassembler: Implemented support to decode and format all non-AML ACPI
11315tables (tables other than DSDTs and SSDTs.) This includes the new tables
11316added to the ACPICA headers, therefore all current and known ACPI tables
11317are
11318supported.
11319
11320Disassembler: The change to allow ACPI names with invalid characters also
11321enables the disassembly of such tables. Invalid characters within names
11322are
11323changed to '*' to make the name printable; the iASL compiler will still
11324generate an error for such names, however, since this is an invalid ACPI
11325character.
11326
11327Implemented an option for AcpiXtract (-a) to extract all tables found in
11328the
11329input file. The default invocation extracts only the DSDTs and SSDTs.
11330
11331Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11332makefile for the AcpiXtract utility.
11333
11334----------------------------------------
1133517 March 2006. Summary of changes for version 20060317:
11336
113371) ACPI CA Core Subsystem:
11338
11339Implemented the use of a cache object for all internal namespace nodes.
11340Since there are about 1000 static nodes in a typical system, this will
11341decrease memory use for cache implementations that minimize per-
11342allocation
11343overhead (such as a slab allocator.)
11344
11345Removed the reference count mechanism for internal namespace nodes, since
11346it
11347was deemed unnecessary. This reduces the size of each namespace node by
11348about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11349case,
11350and 32 bytes for the 64-bit case.
11351
11352Optimized several internal data structures to reduce object size on 64-
11353bit
11354platforms by packing data within the 64-bit alignment. This includes the
11355frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11356instances corresponding to the namespace objects.
11357
11358Added two new strings for the predefined _OSI method: "Windows 2001.1
11359SP1"
11360and "Windows 2006".
11361
11362Split the allocation tracking mechanism out to a separate file, from
11363utalloc.c to uttrack.c. This mechanism appears to be only useful for
11364application-level code. Kernels may wish to not include uttrack.c in
11365distributions.
11366
11367Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11368associated
11369code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11370macros.)
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.6K Code, 65.7K Data, 227.3K Total
11385  Current Release:
11386    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11387    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11388
11389
113902) iASL Compiler/Disassembler and Tools:
11391
11392Implemented an ANSI C version of the acpixtract utility. This version
11393will
11394automatically extract the DSDT and all SSDTs from the input acpidump text
11395file and dump the binary output to separate files. It can also display a
11396summary of the input file including the headers for each table found and
11397will extract any single ACPI table, with any signature. (See
11398source/tools/acpixtract)
11399
11400----------------------------------------
1140110 March 2006. Summary of changes for version 20060310:
11402
114031) ACPI CA Core Subsystem:
11404
11405Tagged all external interfaces to the subsystem with the new
11406ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11407assist
11408kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11409macro. The default definition is NULL.
11410
11411Added the ACPI_THREAD_ID type for the return value from
11412AcpiOsGetThreadId.
11413This allows the host to define this as necessary to simplify kernel
11414integration. The default definition is ACPI_NATIVE_UINT.
11415
11416Fixed two interpreter problems related to error processing, the deletion
11417of
11418objects, and placing invalid pointers onto the internal operator result
11419stack. BZ 6028, 6151 (Valery Podrezov)
11420
11421Increased the reference count threshold where a warning is emitted for
11422large
11423reference counts in order to eliminate unnecessary warnings on systems
11424with
11425large namespaces (especially 64-bit.) Increased the value from 0x400 to
114260x800.
11427
11428Due to universal disagreement as to the meaning of the 'c' in the
11429calloc()
11430function, the ACPI_MEM_CALLOCATE macro has been renamed to
11431ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11432ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11433ACPI_FREE.
11434
11435Code and Data Size: These are the sizes for the acpica.lib produced by
11436the
11437Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11438ACPI
11439driver or OSPM code. The debug version of the code includes the debug
11440output
11441trace mechanism and has a much larger code and data size. Note that these
11442values will vary depending on the efficiency of the compiler and the
11443compiler options used during generation.
11444
11445  Previous Release:
11446    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11447    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11448  Current Release:
11449    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11450    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11451
11452
114532) iASL Compiler/Disassembler:
11454
11455Disassembler: implemented support for symbolic resource descriptor
11456references. If a CreateXxxxField operator references a fixed offset
11457within
11458a
11459resource descriptor, a name is assigned to the descriptor and the offset
11460is
11461translated to the appropriate resource tag and pathname. The addition of
11462this support brings the disassembled code very close to the original ASL
11463source code and helps eliminate run-time errors when the disassembled
11464code
11465is modified (and recompiled) in such a way as to invalidate the original
11466fixed offsets.
11467
11468Implemented support for a Descriptor Name as the last parameter to the
11469ASL
11470Register() macro. This parameter was inadvertently left out of the ACPI
11471specification, and will be added for ACPI 3.0b.
11472
11473Fixed a problem where the use of the "_OSI" string (versus the full path
11474"\_OSI") caused an internal compiler error. ("No back ptr to op")
11475
11476Fixed a problem with the error message that occurs when an invalid string
11477is
11478used for a _HID object (such as one with an embedded asterisk:
11479"*PNP010A".)
11480The correct message is now displayed.
11481
11482----------------------------------------
1148317 February 2006. Summary of changes for version 20060217:
11484
114851) ACPI CA Core Subsystem:
11486
11487Implemented a change to the IndexField support to match the behavior of
11488the
11489Microsoft AML interpreter. The value written to the Index register is now
11490a
11491byte offset, no longer an index based upon the width of the Data
11492register.
11493This should fix IndexField problems seen on some machines where the Data
11494register is not exactly one byte wide. The ACPI specification will be
11495clarified on this point.
11496
11497Fixed a problem where several resource descriptor types could overrun the
11498internal descriptor buffer due to size miscalculation: VendorShort,
11499VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11500affect all platforms.
11501
11502Fixed a problem where individual resource descriptors were misaligned
11503within
11504the internal buffer, causing alignment faults on IA64 platforms.
11505
11506Code and Data Size: These are the sizes for the acpica.lib produced by
11507the
11508Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11509ACPI
11510driver or OSPM code. The debug version of the code includes the debug
11511output
11512trace mechanism and has a much larger code and data size. Note that these
11513values will vary depending on the efficiency of the compiler and the
11514compiler options used during generation.
11515
11516  Previous Release:
11517    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11518    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11519  Current Release:
11520    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11521    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11522
11523
115242) iASL Compiler/Disassembler:
11525
11526Implemented support for new reserved names: _WDG and _WED are Microsoft
11527extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11528defined method (Throttling Depth Limit.)
11529
11530Fixed a problem where a zero-length VendorShort or VendorLong resource
11531descriptor was incorrectly emitted as a descriptor of length one.
11532
11533----------------------------------------
1153410 February 2006. Summary of changes for version 20060210:
11535
115361) ACPI CA Core Subsystem:
11537
11538Removed a couple of extraneous ACPI_ERROR messages that appeared during
11539normal execution. These became apparent after the conversion from
11540ACPI_DEBUG_PRINT.
11541
11542Fixed a problem where the CreateField operator could hang if the BitIndex
11543or
11544NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11545
11546Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11547failed with an exception. This also fixes a couple of related RefOf and
11548DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11549
11550Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11551of
11552AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11553BZ
115545480)
11555
11556Implemented a memory cleanup at the end of the execution of each
11557iteration
11558of an AML While() loop, preventing the accumulation of outstanding
11559objects.
11560(Valery Podrezov, BZ 5427)
11561
11562Eliminated a chunk of duplicate code in the object resolution code.
11563(Valery
11564Podrezov, BZ 5336)
11565
11566Fixed several warnings during the 64-bit code generation.
11567
11568The AcpiSrc source code conversion tool now inserts one line of
11569whitespace
11570after an if() statement that is followed immediately by a comment,
11571improving
11572readability of the Linux code.
11573
11574Code and Data Size: The current and previous library sizes for the core
11575subsystem are shown below. These are the code and data sizes for the
11576acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11577These
11578values do not include any ACPI driver or OSPM code. The debug version of
11579the
11580code includes the debug output trace mechanism and has a much larger code
11581and data size. Note that these values will vary depending on the
11582efficiency
11583of the compiler and the compiler options used during generation.
11584
11585  Previous Release:
11586    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11587    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11588  Current Release:
11589    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11590    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11591
11592
115932) iASL Compiler/Disassembler:
11594
11595Fixed a problem with the disassembly of a BankField operator with a
11596complex
11597expression for the BankValue parameter.
11598
11599----------------------------------------
1160027 January 2006. Summary of changes for version 20060127:
11601
116021) ACPI CA Core Subsystem:
11603
11604Implemented support in the Resource Manager to allow unresolved
11605namestring
11606references within resource package objects for the _PRT method. This
11607support
11608is in addition to the previously implemented unresolved reference support
11609within the AML parser. If the interpreter slack mode is enabled, these
11610unresolved references will be passed through to the caller as a NULL
11611package
11612entry.
11613
11614Implemented and deployed new macros and functions for error and warning
11615messages across the subsystem. These macros are simpler and generate less
11616code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11617ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11618macros remain defined to allow ACPI drivers time to migrate to the new
11619macros.
11620
11621Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11622the
11623Acquire/Release Lock OSL interfaces.
11624
11625Fixed a problem where Alias ASL operators are sometimes not correctly
11626resolved, in both the interpreter and the iASL compiler.
11627
11628Fixed several problems with the implementation of the
11629ConcatenateResTemplate
11630ASL operator. As per the ACPI specification, zero length buffers are now
11631treated as a single EndTag. One-length buffers always cause a fatal
11632exception. Non-zero length buffers that do not end with a full 2-byte
11633EndTag
11634cause a fatal exception.
11635
11636Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11637interface. (With assistance from Thomas Renninger)
11638
11639Code and Data Size: The current and previous library sizes for the core
11640subsystem are shown below. These are the code and data sizes for the
11641acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11642These
11643values do not include any ACPI driver or OSPM code. The debug version of
11644the
11645code includes the debug output trace mechanism and has a much larger code
11646and data size. Note that these values will vary depending on the
11647efficiency
11648of the compiler and the compiler options used during generation.
11649
11650  Previous Release:
11651    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11652    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11653  Current Release:
11654    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11655    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11656
11657
116582) iASL Compiler/Disassembler:
11659
11660Fixed an internal error that was generated for any forward references to
11661ASL
11662Alias objects.
11663
11664----------------------------------------
1166513 January 2006. Summary of changes for version 20060113:
11666
116671) ACPI CA Core Subsystem:
11668
11669Added 2006 copyright to all module headers and signons. This affects
11670virtually every file in the ACPICA core subsystem, iASL compiler, and the
11671utilities.
11672
11673Enhanced the ACPICA error reporting in order to simplify user migration
11674to
11675the non-debug version of ACPICA. Replaced all instances of the
11676ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11677debug
11678levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11679respectively. This preserves all error and warning messages in the non-
11680debug
11681version of the ACPICA code (this has been referred to as the "debug lite"
11682option.) Over 200 cases were converted to create a total of over 380
11683error/warning messages across the ACPICA code. This increases the code
11684and
11685data size of the default non-debug version of the code somewhat (about
1168613K),
11687but all error/warning reporting may be disabled if desired (and code
11688eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11689configuration option. The size of the debug version of ACPICA remains
11690about
11691the same.
11692
11693Fixed a memory leak within the AML Debugger "Set" command. One object was
11694not properly deleted for every successful invocation of the command.
11695
11696Code and Data Size: The current and previous library sizes for the core
11697subsystem are shown below. These are the code and data sizes for the
11698acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11699These
11700values do not include any ACPI driver or OSPM code. The debug version of
11701the
11702code includes the debug output trace mechanism and has a much larger code
11703and data size. Note that these values will vary depending on the
11704efficiency
11705of the compiler and the compiler options used during generation.
11706
11707  Previous Release:
11708    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11709    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11710  Current Release:
11711    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11712    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11713
11714
117152) iASL Compiler/Disassembler:
11716
11717The compiler now officially supports the ACPI 3.0a specification that was
11718released on December 30, 2005. (Specification is available at
11719www.acpi.info)
11720
11721----------------------------------------
1172216 December 2005. Summary of changes for version 20051216:
11723
117241) ACPI CA Core Subsystem:
11725
11726Implemented optional support to allow unresolved names within ASL Package
11727objects. A null object is inserted in the package when a named reference
11728cannot be located in the current namespace. Enabled via the interpreter
11729slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
11730machines
11731that contain such code.
11732
11733Implemented an optimization to the initialization sequence that can
11734improve
11735boot time. During ACPI device initialization, the _STA method is now run
11736if
11737and only if the _INI method exists. The _STA method is used to determine
11738if
11739the device is present; An _INI can only be run if _STA returns present,
11740but
11741it is a waste of time to run the _STA method if the _INI does not exist.
11742(Prototype and assistance from Dong Wei)
11743
11744Implemented use of the C99 uintptr_t for the pointer casting macros if it
11745is
11746available in the current compiler. Otherwise, the default (void *) cast
11747is
11748used as before.
11749
11750Fixed some possible memory leaks found within the execution path of the
11751Break, Continue, If, and CreateField operators. (Valery Podrezov)
11752
11753Fixed a problem introduced in the 20051202 release where an exception is
11754generated during method execution if a control method attempts to declare
11755another method.
11756
11757Moved resource descriptor string constants that are used by both the AML
11758disassembler and AML debugger to the common utilities directory so that
11759these components are independent.
11760
11761Implemented support in the AcpiExec utility (-e switch) to globally
11762ignore
11763exceptions during control method execution (method is not aborted.)
11764
11765Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
11766generation.
11767
11768Code and Data Size: The current and previous library sizes for the core
11769subsystem are shown below. These are the code and data sizes for the
11770acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11771These
11772values do not include any ACPI driver or OSPM code. The debug version of
11773the
11774code includes the debug output trace mechanism and has a much larger code
11775and data size. Note that these values will vary depending on the
11776efficiency
11777of the compiler and the compiler options used during generation.
11778
11779  Previous Release:
11780    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11781    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11782  Current Release:
11783    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11784    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11785
11786
117872) iASL Compiler/Disassembler:
11788
11789Fixed a problem where a CPU stack overflow fault could occur if a
11790recursive
11791method call was made from within a Return statement.
11792
11793----------------------------------------
1179402 December 2005. Summary of changes for version 20051202:
11795
117961) ACPI CA Core Subsystem:
11797
11798Modified the parsing of control methods to no longer create namespace
11799objects during the first pass of the parse. Objects are now created only
11800during the execute phase, at the moment the namespace creation operator
11801is
11802encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
11803This
11804should eliminate ALREADY_EXISTS exceptions seen on some machines where
11805reentrant control methods are protected by an AML mutex. The mutex will
11806now
11807correctly block multiple threads from attempting to create the same
11808object
11809more than once.
11810
11811Increased the number of available Owner Ids for namespace object tracking
11812from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
11813on
11814some machines with a large number of ACPI tables (either static or
11815dynamic).
11816
11817Fixed a problem with the AcpiExec utility where a fault could occur when
11818the
11819-b switch (batch mode) is used.
11820
11821Enhanced the namespace dump routine to output the owner ID for each
11822namespace object.
11823
11824Code and Data Size: The current and previous library sizes for the core
11825subsystem are shown below. These are the code and data sizes for the
11826acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11827These
11828values do not include any ACPI driver or OSPM code. The debug version of
11829the
11830code includes the debug output trace mechanism and has a much larger code
11831and data size. Note that these values will vary depending on the
11832efficiency
11833of the compiler and the compiler options used during generation.
11834
11835  Previous Release:
11836    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11837    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11838  Current Release:
11839    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11840    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11841
11842
118432) iASL Compiler/Disassembler:
11844
11845Fixed a parse error during compilation of certain Switch/Case constructs.
11846To
11847simplify the parse, the grammar now allows for multiple Default
11848statements
11849and this error is now detected and flagged during the analysis phase.
11850
11851Disassembler: The disassembly now includes the contents of the original
11852table header within a comment at the start of the file. This includes the
11853name and version of the original ASL compiler.
11854
11855----------------------------------------
1185617 November 2005. Summary of changes for version 20051117:
11857
118581) ACPI CA Core Subsystem:
11859
11860Fixed a problem in the AML parser where the method thread count could be
11861decremented below zero if any errors occurred during the method parse
11862phase.
11863This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
11864machines.
11865This also fixed a related regression with the mechanism that detects and
11866corrects methods that cannot properly handle reentrancy (related to the
11867deployment of the new OwnerId mechanism.)
11868
11869Eliminated the pre-parsing of control methods (to detect errors) during
11870table load. Related to the problem above, this was causing unwind issues
11871if
11872any errors occurred during the parse, and it seemed to be overkill. A
11873table
11874load should not be aborted if there are problems with any single control
11875method, thus rendering this feature rather pointless.
11876
11877Fixed a problem with the new table-driven resource manager where an
11878internal
11879buffer overflow could occur for small resource templates.
11880
11881Implemented a new external interface, AcpiGetVendorResource. This
11882interface
11883will find and return a vendor-defined resource descriptor within a _CRS
11884or
11885_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
11886Helgaas.
11887
11888Removed the length limit (200) on string objects as per the upcoming ACPI
118893.0A specification. This affects the following areas of the interpreter:
118901)
11891any implicit conversion of a Buffer to a String, 2) a String object
11892result
11893of the ASL Concatenate operator, 3) the String object result of the ASL
11894ToString operator.
11895
11896Fixed a problem in the Windows OS interface layer (OSL) where a
11897WAIT_FOREVER
11898on a semaphore object would incorrectly timeout. This allows the
11899multithreading features of the AcpiExec utility to work properly under
11900Windows.
11901
11902Updated the Linux makefiles for the iASL compiler and AcpiExec to include
11903the recently added file named "utresrc.c".
11904
11905Code and Data Size: The current and previous library sizes for the core
11906subsystem are shown below. These are the code and data sizes for the
11907acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11908These
11909values do not include any ACPI driver or OSPM code. The debug version of
11910the
11911code includes the debug output trace mechanism and has a much larger code
11912and data size. Note that these values will vary depending on the
11913efficiency
11914of the compiler and the compiler options used during generation.
11915
11916  Previous Release:
11917    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11918    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11919  Current Release:
11920    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11921    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11922
11923
119242) iASL Compiler/Disassembler:
11925
11926Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
11927specification. For the iASL compiler, this means that string literals
11928within
11929the source ASL can be of any length.
11930
11931Enhanced the listing output to dump the AML code for resource descriptors
11932immediately after the ASL code for each descriptor, instead of in a block
11933at
11934the end of the entire resource template.
11935
11936Enhanced the compiler debug output to dump the entire original parse tree
11937constructed during the parse phase, before any transforms are applied to
11938the
11939tree. The transformed tree is dumped also.
11940
11941----------------------------------------
1194202 November 2005. Summary of changes for version 20051102:
11943
119441) ACPI CA Core Subsystem:
11945
11946Modified the subsystem initialization sequence to improve GPE support.
11947The
11948GPE initialization has been split into two parts in order to defer
11949execution
11950of the _PRW methods (Power Resources for Wake) until after the hardware
11951is
11952fully initialized and the SCI handler is installed. This allows the _PRW
11953methods to access fields protected by the Global Lock. This will fix
11954systems
11955where a NO_GLOBAL_LOCK exception has been seen during initialization.
11956
11957Converted the ACPI internal object disassemble and display code within
11958the
11959AML debugger to fully table-driven operation, reducing code size and
11960increasing maintainability.
11961
11962Fixed a regression with the ConcatenateResTemplate() ASL operator
11963introduced
11964in the 20051021 release.
11965
11966Implemented support for "local" internal ACPI object types within the
11967debugger "Object" command and the AcpiWalkNamespace external interfaces.
11968These local types include RegionFields, BankFields, IndexFields, Alias,
11969and
11970reference objects.
11971
11972Moved common AML resource handling code into a new file, "utresrc.c".
11973This
11974code is shared by both the Resource Manager and the AML Debugger.
11975
11976Code and Data Size: The current and previous library sizes for the core
11977subsystem are shown below. These are the code and data sizes for the
11978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11979These
11980values do not include any ACPI driver or OSPM code. The debug version of
11981the
11982code includes the debug output trace mechanism and has a much larger code
11983and data size. Note that these values will vary depending on the
11984efficiency
11985of the compiler and the compiler options used during generation.
11986
11987  Previous Release:
11988    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11989    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11990  Current Release:
11991    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11992    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11993
11994
119952) iASL Compiler/Disassembler:
11996
11997Fixed a problem with very large initializer lists (more than 4000
11998elements)
11999for both Buffer and Package objects where the parse stack could overflow.
12000
12001Enhanced the pre-compile source code scan for non-ASCII characters to
12002ignore
12003characters within comment fields. The scan is now always performed and is
12004no
12005longer optional, detecting invalid characters within a source file
12006immediately rather than during the parse phase or later.
12007
12008Enhanced the ASL grammar definition to force early reductions on all
12009list-
12010style grammar elements so that the overall parse stack usage is greatly
12011reduced. This should improve performance and reduce the possibility of
12012parse
12013stack overflow.
12014
12015Eliminated all reduce/reduce conflicts in the iASL parser generation.
12016Also,
12017with the addition of a %expected statement, the compiler generates from
12018source with no warnings.
12019
12020Fixed a possible segment fault in the disassembler if the input filename
12021does not contain a "dot" extension (Thomas Renninger).
12022
12023----------------------------------------
1202421 October 2005. Summary of changes for version 20051021:
12025
120261) ACPI CA Core Subsystem:
12027
12028Implemented support for the EM64T and other x86-64 processors. This
12029essentially entails recognizing that these processors support non-aligned
12030memory transfers. Previously, all 64-bit processors were assumed to lack
12031hardware support for non-aligned transfers.
12032
12033Completed conversion of the Resource Manager to nearly full table-driven
12034operation. Specifically, the resource conversion code (convert AML to
12035internal format and the reverse) and the debug code to dump internal
12036resource descriptors are fully table-driven, reducing code and data size
12037and
12038improving maintainability.
12039
12040The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12041word
12042on 64-bit processors instead of a fixed 32-bit word. (With assistance
12043from
12044Alexey Starikovskiy)
12045
12046Implemented support within the resource conversion code for the Type-
12047Specific byte within the various ACPI 3.0 *WordSpace macros.
12048
12049Fixed some issues within the resource conversion code for the type-
12050specific
12051flags for both Memory and I/O address resource descriptors. For Memory,
12052implemented support for the MTP and TTP flags. For I/O, split the TRS and
12053TTP flags into two separate fields.
12054
12055Code and Data Size: The current and previous library sizes for the core
12056subsystem are shown below. These are the code and data sizes for the
12057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12058These
12059values do not include any ACPI driver or OSPM code. The debug version of
12060the
12061code includes the debug output trace mechanism and has a much larger code
12062and data size. Note that these values will vary depending on the
12063efficiency
12064of the compiler and the compiler options used during generation.
12065
12066  Previous Release:
12067    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12068    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12069  Current Release:
12070    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12071    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12072
12073
12074
120752) iASL Compiler/Disassembler:
12076
12077Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12078the
12079corresponding ResourceSource string was not also present in a resource
12080descriptor declaration. This restriction caused problems with existing
12081AML/ASL code that includes the Index byte without the string. When such
12082AML
12083was disassembled, it could not be compiled without modification. Further,
12084the modified code created a resource template with a different size than
12085the
12086original, breaking code that used fixed offsets into the resource
12087template
12088buffer.
12089
12090Removed a recent feature of the disassembler to ignore a lone
12091ResourceIndex
12092byte. This byte is now emitted if present so that the exact AML can be
12093reproduced when the disassembled code is recompiled.
12094
12095Improved comments and text alignment for the resource descriptor code
12096emitted by the disassembler.
12097
12098Implemented disassembler support for the ACPI 3.0 AccessSize field within
12099a
12100Register() resource descriptor.
12101
12102----------------------------------------
1210330 September 2005. Summary of changes for version 20050930:
12104
121051) ACPI CA Core Subsystem:
12106
12107Completed a major overhaul of the Resource Manager code - specifically,
12108optimizations in the area of the AML/internal resource conversion code.
12109The
12110code has been optimized to simplify and eliminate duplicated code, CPU
12111stack
12112use has been decreased by optimizing function parameters and local
12113variables, and naming conventions across the manager have been
12114standardized
12115for clarity and ease of maintenance (this includes function, parameter,
12116variable, and struct/typedef names.) The update may force changes in some
12117driver code, depending on how resources are handled by the host OS.
12118
12119All Resource Manager dispatch and information tables have been moved to a
12120single location for clarity and ease of maintenance. One new file was
12121created, named "rsinfo.c".
12122
12123The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12124guarantee that the argument is not evaluated twice, making them less
12125prone
12126to macro side-effects. However, since there exists the possibility of
12127additional stack use if a particular compiler cannot optimize them (such
12128as
12129in the debug generation case), the original macros are optionally
12130available.
12131Note that some invocations of the return_VALUE macro may now cause size
12132mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12133to
12134eliminate these. (From Randy Dunlap)
12135
12136Implemented a new mechanism to enable debug tracing for individual
12137control
12138methods. A new external interface, AcpiDebugTrace, is provided to enable
12139this mechanism. The intent is to allow the host OS to easily enable and
12140disable tracing for problematic control methods. This interface can be
12141easily exposed to a user or debugger interface if desired. See the file
12142psxface.c for details.
12143
12144AcpiUtCallocate will now return a valid pointer if a length of zero is
12145specified - a length of one is used and a warning is issued. This matches
12146the behavior of AcpiUtAllocate.
12147
12148Code and Data Size: The current and previous library sizes for the core
12149subsystem are shown below. These are the code and data sizes for the
12150acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12151These
12152values do not include any ACPI driver or OSPM code. The debug version of
12153the
12154code includes the debug output trace mechanism and has a much larger code
12155and data size. Note that these values will vary depending on the
12156efficiency
12157of the compiler and the compiler options used during generation.
12158
12159  Previous Release:
12160    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12161    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12162  Current Release:
12163    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12164    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12165
12166
121672) iASL Compiler/Disassembler:
12168
12169A remark is issued if the effective compile-time length of a package or
12170buffer is zero. Previously, this was a warning.
12171
12172----------------------------------------
1217316 September 2005. Summary of changes for version 20050916:
12174
121751) ACPI CA Core Subsystem:
12176
12177Fixed a problem within the Resource Manager where support for the Generic
12178Register descriptor was not fully implemented. This descriptor is now
12179fully
12180recognized, parsed, disassembled, and displayed.
12181
12182Completely restructured the Resource Manager code to utilize table-driven
12183dispatch and lookup, eliminating many of the large switch() statements.
12184This
12185reduces overall subsystem code size and code complexity. Affects the
12186resource parsing and construction, disassembly, and debug dump output.
12187
12188Cleaned up and restructured the debug dump output for all resource
12189descriptors. Improved readability of the output and reduced code size.
12190
12191Fixed a problem where changes to internal data structures caused the
12192optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12193
12194Code and Data Size: The current and previous library sizes for the core
12195subsystem are shown below. These are the code and data sizes for the
12196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12197These
12198values do not include any ACPI driver or OSPM code. The debug version of
12199the
12200code includes the debug output trace mechanism and has a much larger code
12201and data size. Note that these values will vary depending on the
12202efficiency
12203of the compiler and the compiler options used during generation.
12204
12205  Previous Release:
12206    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12207    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12208  Current Release:
12209    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12210    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12211
12212
122132) iASL Compiler/Disassembler:
12214
12215Updated the disassembler to automatically insert an EndDependentFn()
12216macro
12217into the ASL stream if this macro is missing in the original AML code,
12218simplifying compilation of the resulting ASL module.
12219
12220Fixed a problem in the disassembler where a disassembled ResourceSource
12221string (within a large resource descriptor) was not surrounded by quotes
12222and
12223not followed by a comma, causing errors when the resulting ASL module was
12224compiled. Also, escape sequences within a ResourceSource string are now
12225handled correctly (especially "\\")
12226
12227----------------------------------------
1222802 September 2005. Summary of changes for version 20050902:
12229
122301) ACPI CA Core Subsystem:
12231
12232Fixed a problem with the internal Owner ID allocation and deallocation
12233mechanisms for control method execution and recursive method invocation.
12234This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12235messages seen on some systems. Recursive method invocation depth is
12236currently limited to 255. (Alexey Starikovskiy)
12237
12238Completely eliminated all vestiges of support for the "module-level
12239executable code" until this support is fully implemented and debugged.
12240This
12241should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12242some systems that invoke this support.
12243
12244Fixed a problem within the resource manager code where the transaction
12245flags
12246for a 64-bit address descriptor were handled incorrectly in the type-
12247specific flag byte.
12248
12249Consolidated duplicate code within the address descriptor resource
12250manager
12251code, reducing overall subsystem code size.
12252
12253Fixed a fault when using the AML debugger "disassemble" command to
12254disassemble individual control methods.
12255
12256Removed references to the "release_current" directory within the Unix
12257release package.
12258
12259Code and Data Size: The current and previous core subsystem library sizes
12260are shown below. These are the code and data sizes for the acpica.lib
12261produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12262include any ACPI driver or OSPM code. The debug version of the code
12263includes
12264the debug output trace mechanism and has a much larger code and data
12265size.
12266Note that these values will vary depending on the efficiency of the
12267compiler
12268and the compiler options used during generation.
12269
12270  Previous Release:
12271    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12272    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12273  Current Release:
12274    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12275    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12276
12277
122782) iASL Compiler/Disassembler:
12279
12280Implemented an error check for illegal duplicate values in the interrupt
12281and
12282dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12283Interrupt().
12284
12285Implemented error checking for the Irq() and IrqNoFlags() macros to
12286detect
12287too many values in the interrupt list (16 max) and invalid values in the
12288list (range 0 - 15)
12289
12290The maximum length string literal within an ASL file is now restricted to
12291200 characters as per the ACPI specification.
12292
12293Fixed a fault when using the -ln option (generate namespace listing).
12294
12295Implemented an error check to determine if a DescriptorName within a
12296resource descriptor has already been used within the current scope.
12297
12298----------------------------------------
1229915 August 2005.  Summary of changes for version 20050815:
12300
123011) ACPI CA Core Subsystem:
12302
12303Implemented a full bytewise compare to determine if a table load request
12304is
12305attempting to load a duplicate table. The compare is performed if the
12306table
12307signatures and table lengths match. This will allow different tables with
12308the same OEM Table ID and revision to be loaded - probably against the
12309ACPI
12310specification, but discovered in the field nonetheless.
12311
12312Added the changes.txt logfile to each of the zipped release packages.
12313
12314Code and Data Size: Current and previous core subsystem library sizes are
12315shown below. These are the code and data sizes for the acpica.lib
12316produced
12317by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12318any ACPI driver or OSPM code. The debug version of the code includes the
12319debug output trace mechanism and has a much larger code and data size.
12320Note
12321that these values will vary depending on the efficiency of the compiler
12322and
12323the compiler options used during generation.
12324
12325  Previous Release:
12326    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12327    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12328  Current Release:
12329    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12330    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12331
12332
123332) iASL Compiler/Disassembler:
12334
12335Fixed a problem where incorrect AML code could be generated for Package
12336objects if optimization is disabled (via the -oa switch).
12337
12338Fixed a problem with where incorrect AML code is generated for variable-
12339length packages when the package length is not specified and the number
12340of
12341initializer values is greater than 255.
12342
12343
12344----------------------------------------
1234529 July 2005.  Summary of changes for version 20050729:
12346
123471) ACPI CA Core Subsystem:
12348
12349Implemented support to ignore an attempt to install/load a particular
12350ACPI
12351table more than once. Apparently there exists BIOS code that repeatedly
12352attempts to load the same SSDT upon certain events. With assistance from
12353Venkatesh Pallipadi.
12354
12355Restructured the main interface to the AML parser in order to correctly
12356handle all exceptional conditions. This will prevent leakage of the
12357OwnerId
12358resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12359some
12360machines. With assistance from Alexey Starikovskiy.
12361
12362Support for "module level code" has been disabled in this version due to
12363a
12364number of issues that have appeared on various machines. The support can
12365be
12366enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12367compilation. When the issues are fully resolved, the code will be enabled
12368by
12369default again.
12370
12371Modified the internal functions for debug print support to define the
12372FunctionName parameter as a (const char *) for compatibility with
12373compiler
12374built-in macros such as __FUNCTION__, etc.
12375
12376Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12377
12378Implemented support to display an object count summary for the AML
12379Debugger
12380commands Object and Methods.
12381
12382Code and Data Size: Current and previous core subsystem library sizes are
12383shown below. These are the code and data sizes for the acpica.lib
12384produced
12385by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12386any ACPI driver or OSPM code. The debug version of the code includes the
12387debug output trace mechanism and has a much larger code and data size.
12388Note
12389that these values will vary depending on the efficiency of the compiler
12390and
12391the compiler options used during generation.
12392
12393  Previous Release:
12394    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12395    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12396  Current Release:
12397    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12398    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12399
12400
124012) iASL Compiler/Disassembler:
12402
12403Fixed a regression that appeared in the 20050708 version of the compiler
12404where an error message was inadvertently emitted for invocations of the
12405_OSI
12406reserved control method.
12407
12408----------------------------------------
1240908 July 2005.  Summary of changes for version 20050708:
12410
124111) ACPI CA Core Subsystem:
12412
12413The use of the CPU stack in the debug version of the subsystem has been
12414considerably reduced. Previously, a debug structure was declared in every
12415function that used the debug macros. This structure has been removed in
12416favor of declaring the individual elements as parameters to the debug
12417functions. This reduces the cumulative stack use during nested execution
12418of
12419ACPI function calls at the cost of a small increase in the code size of
12420the
12421debug version of the subsystem. With assistance from Alexey Starikovskiy
12422and
12423Len Brown.
12424
12425Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12426headers to define a macro that will return the current function name at
12427runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12428by
12429the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12430compiler-dependent header, the function name is saved on the CPU stack
12431(one
12432pointer per function.) This mechanism is used because apparently there
12433exists no standard ANSI-C defined macro that that returns the function
12434name.
12435
12436Redesigned and reimplemented the "Owner ID" mechanism used to track
12437namespace objects created/deleted by ACPI tables and control method
12438execution. A bitmap is now used to allocate and free the IDs, thus
12439solving
12440the wraparound problem present in the previous implementation. The size
12441of
12442the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12443Starikovskiy).
12444
12445Removed the UINT32_BIT and UINT16_BIT types that were used for the
12446bitfield
12447flag definitions within the headers for the predefined ACPI tables. These
12448have been replaced by UINT8_BIT in order to increase the code portability
12449of
12450the subsystem. If the use of UINT8 remains a problem, we may be forced to
12451eliminate bitfields entirely because of a lack of portability.
12452
12453Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12454This
12455is a frequently used function and this improvement increases the
12456performance
12457of the entire subsystem (Alexey Starikovskiy).
12458
12459Fixed several possible memory leaks and the inverse - premature object
12460deletion (Alexey Starikovskiy).
12461
12462Code and Data Size: Current and previous core subsystem library sizes are
12463shown below. These are the code and data sizes for the acpica.lib
12464produced
12465by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12466any ACPI driver or OSPM code. The debug version of the code includes the
12467debug output trace mechanism and has a much larger code and data size.
12468Note
12469that these values will vary depending on the efficiency of the compiler
12470and
12471the compiler options used during generation.
12472
12473  Previous Release:
12474    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12475    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12476  Current Release:
12477    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12478    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12479
12480----------------------------------------
1248124 June 2005.  Summary of changes for version 20050624:
12482
124831) ACPI CA Core Subsystem:
12484
12485Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12486the host-defined cache object. This allows the OSL implementation to
12487define
12488and type this object in any manner desired, simplifying the OSL
12489implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12490Linux, and should be defined in the OS-specific header file for other
12491operating systems as required.
12492
12493Changed the interface to AcpiOsAcquireObject to directly return the
12494requested object as the function return (instead of ACPI_STATUS.) This
12495change was made for performance reasons, since this is the purpose of the
12496interface in the first place. AcpiOsAcquireObject is now similar to the
12497AcpiOsAllocate interface.
12498
12499Implemented a new AML debugger command named Businfo. This command
12500displays
12501information about all devices that have an associate _PRT object. The
12502_ADR,
12503_HID, _UID, and _CID are displayed for these devices.
12504
12505Modified the initialization sequence in AcpiInitializeSubsystem to call
12506the
12507OSL interface AcpiOslInitialize first, before any local initialization.
12508This
12509change was required because the global initialization now calls OSL
12510interfaces.
12511
12512Enhanced the Dump command to display the entire contents of Package
12513objects
12514(including all sub-objects and their values.)
12515
12516Restructured the code base to split some files because of size and/or
12517because the code logically belonged in a separate file. New files are
12518listed
12519below. All makefiles and project files included in the ACPI CA release
12520have
12521been updated.
12522    utilities/utcache.c           /* Local cache interfaces */
12523    utilities/utmutex.c           /* Local mutex support */
12524    utilities/utstate.c           /* State object support */
12525    interpreter/parser/psloop.c   /* Main AML parse loop */
12526
12527Code and Data Size: Current and previous core subsystem library sizes are
12528shown below. These are the code and data sizes for the acpica.lib
12529produced
12530by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12531any ACPI driver or OSPM code. The debug version of the code includes the
12532debug output trace mechanism and has a much larger code and data size.
12533Note
12534that these values will vary depending on the efficiency of the compiler
12535and
12536the compiler options used during generation.
12537
12538  Previous Release:
12539    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12540    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12541  Current Release:
12542    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12543    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12544
12545
125462) iASL Compiler/Disassembler:
12547
12548Fixed a regression introduced in version 20050513 where the use of a
12549Package
12550object within a Case() statement caused a compile time exception. The
12551original behavior has been restored (a Match() operator is emitted.)
12552
12553----------------------------------------
1255417 June 2005.  Summary of changes for version 20050617:
12555
125561) ACPI CA Core Subsystem:
12557
12558Moved the object cache operations into the OS interface layer (OSL) to
12559allow
12560the host OS to handle these operations if desired (for example, the Linux
12561OSL will invoke the slab allocator). This support is optional; the
12562compile
12563time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12564cache
12565code in the ACPI CA core. The new OSL interfaces are shown below. See
12566utalloc.c for an example implementation, and acpiosxf.h for the exact
12567interface definitions. With assistance from Alexey Starikovskiy.
12568    AcpiOsCreateCache
12569    AcpiOsDeleteCache
12570    AcpiOsPurgeCache
12571    AcpiOsAcquireObject
12572    AcpiOsReleaseObject
12573
12574Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12575return
12576and restore a flags parameter. This fits better with many OS lock models.
12577Note: the current execution state (interrupt handler or not) is no longer
12578passed to these interfaces. If necessary, the OSL must determine this
12579state
12580by itself, a simple and fast operation. With assistance from Alexey
12581Starikovskiy.
12582
12583Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12584present if the revision of the RSDP was 2 or greater. According to the
12585ACPI
12586specification, the XSDT is optional in all cases, and the table manager
12587therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12588Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12589contain
12590only the RSDT.
12591
12592Fixed an interpreter problem with the Mid() operator in the case of an
12593input
12594string where the resulting output string is of zero length. It now
12595correctly
12596returns a valid, null terminated string object instead of a string object
12597with a null pointer.
12598
12599Fixed a problem with the control method argument handling to allow a
12600store
12601to an Arg object that already contains an object of type Device. The
12602Device
12603object is now correctly overwritten. Previously, an error was returned.
12604
12605
12606Enhanced the debugger Find command to emit object values in addition to
12607the
12608found object pathnames. The output format is the same as the dump
12609namespace
12610command.
12611
12612Enhanced the debugger Set command. It now has the ability to set the
12613value
12614of any Named integer object in the namespace (Previously, only method
12615locals
12616and args could be set.)
12617
12618Code and Data Size: Current and previous core subsystem library sizes are
12619shown below. These are the code and data sizes for the acpica.lib
12620produced
12621by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12622any ACPI driver or OSPM code. The debug version of the code includes the
12623debug output trace mechanism and has a much larger code and data size.
12624Note
12625that these values will vary depending on the efficiency of the compiler
12626and
12627the compiler options used during generation.
12628
12629  Previous Release:
12630    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12631    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12632  Current Release:
12633    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12634    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12635
12636
126372) iASL Compiler/Disassembler:
12638
12639Fixed a regression in the disassembler where if/else/while constructs
12640were
12641output incorrectly. This problem was introduced in the previous release
12642(20050526). This problem also affected the single-step disassembly in the
12643debugger.
12644
12645Fixed a problem where compiling the reserved _OSI method would randomly
12646(but
12647rarely) produce compile errors.
12648
12649Enhanced the disassembler to emit compilable code in the face of
12650incorrect
12651AML resource descriptors. If the optional ResourceSourceIndex is present,
12652but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12653disassembly. Otherwise, the resulting code cannot be compiled without
12654errors.
12655
12656----------------------------------------
1265726 May 2005.  Summary of changes for version 20050526:
12658
126591) ACPI CA Core Subsystem:
12660
12661Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12662the module level (not within a control method.) These opcodes are
12663executed
12664exactly once at the time the table is loaded. This type of code was legal
12665up
12666until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12667in
12668order to provide backwards compatibility with earlier BIOS
12669implementations.
12670This eliminates the "Encountered executable code at module level" warning
12671that was previously generated upon detection of such code.
12672
12673Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12674inadvertently be generated during the lookup of namespace objects in the
12675second pass parse of ACPI tables and control methods. It appears that
12676this
12677problem could occur during the resolution of forward references to
12678namespace
12679objects.
12680
12681Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12682corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12683allows the deadlock detection debug code to be compiled out in the normal
12684case, improving mutex performance (and overall subsystem performance)
12685considerably.
12686
12687Implemented a handful of miscellaneous fixes for possible memory leaks on
12688error conditions and error handling control paths. These fixes were
12689suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12690
12691Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12692(tbxfroot.c)
12693to prevent a fault in this error case.
12694
12695Code and Data Size: Current and previous core subsystem library sizes are
12696shown below. These are the code and data sizes for the acpica.lib
12697produced
12698by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12699any ACPI driver or OSPM code. The debug version of the code includes the
12700debug output trace mechanism and has a much larger code and data size.
12701Note
12702that these values will vary depending on the efficiency of the compiler
12703and
12704the compiler options used during generation.
12705
12706  Previous Release:
12707    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12708    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12709  Current Release:
12710    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12711    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12712
12713
127142) iASL Compiler/Disassembler:
12715
12716Implemented support to allow Type 1 and Type 2 ASL operators to appear at
12717the module level (not within a control method.) These operators will be
12718executed once at the time the table is loaded. This type of code was
12719legal
12720up until the release of ACPI 2.0B (2002) and is now supported by the iASL
12721compiler in order to provide backwards compatibility with earlier BIOS
12722ASL
12723code.
12724
12725The ACPI integer width (specified via the table revision ID or the -r
12726override, 32 or 64 bits) is now used internally during compile-time
12727constant
12728folding to ensure that constants are truncated to 32 bits if necessary.
12729Previously, the revision ID value was only emitted in the AML table
12730header.
12731
12732An error message is now generated for the Mutex and Method operators if
12733the
12734SyncLevel parameter is outside the legal range of 0 through 15.
12735
12736Fixed a problem with the Method operator ParameterTypes list handling
12737(ACPI
127383.0). Previously, more than 2 types or 2 arguments generated a syntax
12739error.
12740The actual underlying implementation of method argument typechecking is
12741still under development, however.
12742
12743----------------------------------------
1274413 May 2005.  Summary of changes for version 20050513:
12745
127461) ACPI CA Core Subsystem:
12747
12748Implemented support for PCI Express root bridges -- added support for
12749device
12750PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12751
12752The interpreter now automatically truncates incoming 64-bit constants to
1275332
12754bits if currently executing out of a 32-bit ACPI table (Revision < 2).
12755This
12756also affects the iASL compiler constant folding. (Note: as per below, the
12757iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12758
12759Fixed a problem where string and buffer objects with "static" pointers
12760(pointers to initialization data within an ACPI table) were not handled
12761consistently. The internal object copy operation now always copies the
12762data
12763to a newly allocated buffer, regardless of whether the source object is
12764static or not.
12765
12766Fixed a problem with the FromBCD operator where an implicit result
12767conversion was improperly performed while storing the result to the
12768target
12769operand. Since this is an "explicit conversion" operator, the implicit
12770conversion should never be performed on the output.
12771
12772Fixed a problem with the CopyObject operator where a copy to an existing
12773named object did not always completely overwrite the existing object
12774stored
12775at name. Specifically, a buffer-to-buffer copy did not delete the
12776existing
12777buffer.
12778
12779Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
12780and
12781structs for consistency.
12782
12783Code and Data Size: Current and previous core subsystem library sizes are
12784shown below. These are the code and data sizes for the acpica.lib
12785produced
12786by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12787any ACPI driver or OSPM code. The debug version of the code includes the
12788debug output trace mechanism and has a much larger code and data size.
12789Note
12790that these values will vary depending on the efficiency of the compiler
12791and
12792the compiler options used during generation.
12793
12794  Previous Release:
12795    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12796    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12797  Current Release: (Same sizes)
12798    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12799    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12800
12801
128022) iASL Compiler/Disassembler:
12803
12804The compiler now emits a warning if an attempt is made to generate a 64-
12805bit
12806integer constant from within a 32-bit ACPI table (Revision < 2). The
12807integer
12808is truncated to 32 bits.
12809
12810Fixed a problem with large package objects: if the static length of the
12811package is greater than 255, the "variable length package" opcode is
12812emitted. Previously, this caused an error. This requires an update to the
12813ACPI spec, since it currently (incorrectly) states that packages larger
12814than
12815255 elements are not allowed.
12816
12817The disassembler now correctly handles variable length packages and
12818packages
12819larger than 255 elements.
12820
12821----------------------------------------
1282208 April 2005.  Summary of changes for version 20050408:
12823
128241) ACPI CA Core Subsystem:
12825
12826Fixed three cases in the interpreter where an "index" argument to an ASL
12827function was still (internally) 32 bits instead of the required 64 bits.
12828This was the Index argument to the Index, Mid, and Match operators.
12829
12830The "strupr" function is now permanently local (AcpiUtStrupr), since this
12831is
12832not a POSIX-defined function and not present in most kernel-level C
12833libraries. All references to the C library strupr function have been
12834removed
12835from the headers.
12836
12837Completed the deployment of static functions/prototypes. All prototypes
12838with
12839the static attribute have been moved from the headers to the owning C
12840file.
12841
12842Implemented an extract option (-e) for the AcpiBin utility (AML binary
12843utility). This option allows the utility to extract individual ACPI
12844tables
12845from the output of AcpiDmp. It provides the same functionality of the
12846acpixtract.pl perl script without the worry of setting the correct perl
12847options. AcpiBin runs on Windows and has not yet been generated/validated
12848in
12849the Linux/Unix environment (but should be soon).
12850
12851Updated and fixed the table dump option for AcpiBin (-d). This option
12852converts a single ACPI table to a hex/ascii file, similar to the output
12853of
12854AcpiDmp.
12855
12856Code and Data Size: Current and previous core subsystem library sizes are
12857shown below. These are the code and data sizes for the acpica.lib
12858produced
12859by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12860any ACPI driver or OSPM code. The debug version of the code includes the
12861debug output trace mechanism and has a much larger code and data size.
12862Note
12863that these values will vary depending on the efficiency of the compiler
12864and
12865the compiler options used during generation.
12866
12867  Previous Release:
12868    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12869    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12870  Current Release:
12871    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12872    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12873
12874
128752) iASL Compiler/Disassembler:
12876
12877Disassembler fix: Added a check to ensure that the table length found in
12878the
12879ACPI table header within the input file is not longer than the actual
12880input
12881file size. This indicates some kind of file or table corruption.
12882
12883----------------------------------------
1288429 March 2005.  Summary of changes for version 20050329:
12885
128861) ACPI CA Core Subsystem:
12887
12888An error is now generated if an attempt is made to create a Buffer Field
12889of
12890length zero (A CreateField with a length operand of zero.)
12891
12892The interpreter now issues a warning whenever executable code at the
12893module
12894level is detected during ACPI table load. This will give some idea of the
12895prevalence of this type of code.
12896
12897Implemented support for references to named objects (other than control
12898methods) within package objects.
12899
12900Enhanced package object output for the debug object. Package objects are
12901now
12902completely dumped, showing all elements.
12903
12904Enhanced miscellaneous object output for the debug object. Any object can
12905now be written to the debug object (for example, a device object can be
12906written, and the type of the object will be displayed.)
12907
12908The "static" qualifier has been added to all local functions across both
12909the
12910core subsystem and the iASL compiler.
12911
12912The number of "long" lines (> 80 chars) within the source has been
12913significantly reduced, by about 1/3.
12914
12915Cleaned up all header files to ensure that all CA/iASL functions are
12916prototyped (even static functions) and the formatting is consistent.
12917
12918Two new header files have been added, acopcode.h and acnames.h.
12919
12920Removed several obsolete functions that were no longer used.
12921
12922Code and Data Size: Current and previous core subsystem library sizes are
12923shown below. These are the code and data sizes for the acpica.lib
12924produced
12925by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12926any ACPI driver or OSPM code. The debug version of the code includes the
12927debug output trace mechanism and has a much larger code and data size.
12928Note
12929that these values will vary depending on the efficiency of the compiler
12930and
12931the compiler options used during generation.
12932
12933  Previous Release:
12934    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12935    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12936  Current Release:
12937    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12938    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12939
12940
12941
129422) iASL Compiler/Disassembler:
12943
12944Fixed a problem with the resource descriptor generation/support. For the
12945ResourceSourceIndex and the ResourceSource fields, both must be present,
12946or
12947both must be not present - can't have one without the other.
12948
12949The compiler now returns non-zero from the main procedure if any errors
12950have
12951occurred during the compilation.
12952
12953
12954----------------------------------------
1295509 March 2005.  Summary of changes for version 20050309:
12956
129571) ACPI CA Core Subsystem:
12958
12959The string-to-buffer implicit conversion code has been modified again
12960after
12961a change to the ACPI specification.  In order to match the behavior of
12962the
12963other major ACPI implementation, the target buffer is no longer truncated
12964if
12965the source string is smaller than an existing target buffer. This change
12966requires an update to the ACPI spec, and should eliminate the recent
12967AE_AML_BUFFER_LIMIT issues.
12968
12969The "implicit return" support was rewritten to a new algorithm that
12970solves
12971the general case. Rather than attempt to determine when a method is about
12972to
12973exit, the result of every ASL operator is saved momentarily until the
12974very
12975next ASL operator is executed. Therefore, no matter how the method exits,
12976there will always be a saved implicit return value. This feature is only
12977enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
12978eliminate
12979AE_AML_NO_RETURN_VALUE errors when enabled.
12980
12981Implemented implicit conversion support for the predicate (operand) of
12982the
12983If, Else, and While operators. String and Buffer arguments are
12984automatically
12985converted to Integers.
12986
12987Changed the string-to-integer conversion behavior to match the new ACPI
12988errata: "If no integer object exists, a new integer is created. The ASCII
12989string is interpreted as a hexadecimal constant. Each string character is
12990interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
12991with the first character as the most significant digit, and ending with
12992the
12993first non-hexadecimal character or end-of-string." This means that the
12994first
12995non-hex character terminates the conversion and this is the code that was
12996changed.
12997
12998Fixed a problem where the ObjectType operator would fail (fault) when
12999used
13000on an Index of a Package which pointed to a null package element. The
13001operator now properly returns zero (Uninitialized) in this case.
13002
13003Fixed a problem where the While operator used excessive memory by not
13004properly popping the result stack during execution. There was no memory
13005leak
13006after execution, however. (Code provided by Valery Podrezov.)
13007
13008Fixed a problem where references to control methods within Package
13009objects
13010caused the method to be invoked, instead of producing a reference object
13011pointing to the method.
13012
13013Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13014to
13015improve performance and reduce code size. (Code provided by Alexey
13016Starikovskiy.)
13017
13018Code and Data Size: Current and previous core subsystem library sizes are
13019shown below. These are the code and data sizes for the acpica.lib
13020produced
13021by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13022any ACPI driver or OSPM code. The debug version of the code includes the
13023debug output trace mechanism and has a much larger code and data size.
13024Note
13025that these values will vary depending on the efficiency of the compiler
13026and
13027the compiler options used during generation.
13028
13029  Previous Release:
13030    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13031    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13032  Current Release:
13033    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13034    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13035
13036
130372) iASL Compiler/Disassembler:
13038
13039Fixed a problem with the Return operator with no arguments. Since the AML
13040grammar for the byte encoding requires an operand for the Return opcode,
13041the
13042compiler now emits a Return(Zero) for this case.  An ACPI specification
13043update has been written for this case.
13044
13045For tables other than the DSDT, namepath optimization is automatically
13046disabled. This is because SSDTs can be loaded anywhere in the namespace,
13047the
13048compiler has no knowledge of where, and thus cannot optimize namepaths.
13049
13050Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13051inadvertently omitted from the ACPI specification, and will require an
13052update to the spec.
13053
13054The source file scan for ASCII characters is now optional (-a). This
13055change
13056was made because some vendors place non-ascii characters within comments.
13057However, the scan is simply a brute-force byte compare to ensure all
13058characters in the file are in the range 0x00 to 0x7F.
13059
13060Fixed a problem with the CondRefOf operator where the compiler was
13061inappropriately checking for the existence of the target. Since the point
13062of
13063the operator is to check for the existence of the target at run-time, the
13064compiler no longer checks for the target existence.
13065
13066Fixed a problem where errors generated from the internal AML interpreter
13067during constant folding were not handled properly, causing a fault.
13068
13069Fixed a problem with overly aggressive range checking for the Stall
13070operator. The valid range (max 255) is now only checked if the operand is
13071of
13072type Integer. All other operand types cannot be statically checked.
13073
13074Fixed a problem where control method references within the RefOf,
13075DeRefOf,
13076and ObjectType operators were not treated properly. They are now treated
13077as
13078actual references, not method invocations.
13079
13080Fixed and enhanced the "list namespace" option (-ln). This option was
13081broken
13082a number of releases ago.
13083
13084Improved error handling for the Field, IndexField, and BankField
13085operators.
13086The compiler now cleanly reports and recovers from errors in the field
13087component (FieldUnit) list.
13088
13089Fixed a disassembler problem where the optional ResourceDescriptor fields
13090TRS and TTP were not always handled correctly.
13091
13092Disassembler - Comments in output now use "//" instead of "/*"
13093
13094----------------------------------------
1309528 February 2005.  Summary of changes for version 20050228:
13096
130971) ACPI CA Core Subsystem:
13098
13099Fixed a problem where the result of an Index() operator (an object
13100reference) must increment the reference count on the target object for
13101the
13102life of the object reference.
13103
13104Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13105Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13106WordSpace
13107resource descriptors.
13108
13109Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13110Space Descriptor" string, indicating interpreter support for the
13111descriptors
13112above.
13113
13114Implemented header support for the new ACPI 3.0 FADT flag bits.
13115
13116Implemented header support for the new ACPI 3.0 PCI Express bits for the
13117PM1
13118status/enable registers.
13119
13120Updated header support for the MADT processor local Apic struct and MADT
13121platform interrupt source struct for new ACPI 3.0 fields.
13122
13123Implemented header support for the SRAT and SLIT ACPI tables.
13124
13125Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13126flag
13127at runtime.
13128
13129Code and Data Size: Current and previous core subsystem library sizes are
13130shown below. These are the code and data sizes for the acpica.lib
13131produced
13132by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13133any ACPI driver or OSPM code. The debug version of the code includes the
13134debug output trace mechanism and has a much larger code and data size.
13135Note
13136that these values will vary depending on the efficiency of the compiler
13137and
13138the compiler options used during generation.
13139
13140  Previous Release:
13141    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13142    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13143  Current Release:
13144    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13145    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13146
13147
131482) iASL Compiler/Disassembler:
13149
13150Fixed a problem with the internal 64-bit String-to-integer conversion
13151with
13152strings less than two characters long.
13153
13154Fixed a problem with constant folding where the result of the Index()
13155operator can not be considered a constant. This means that Index() cannot
13156be
13157a type3 opcode and this will require an update to the ACPI specification.
13158
13159Disassembler: Implemented support for the TTP, MTP, and TRS resource
13160descriptor fields. These fields were inadvertently ignored and not output
13161in
13162the disassembly of the resource descriptor.
13163
13164
13165 ----------------------------------------
1316611 February 2005.  Summary of changes for version 20050211:
13167
131681) ACPI CA Core Subsystem:
13169
13170Implemented ACPI 3.0 support for implicit conversion within the Match()
13171operator. MatchObjects can now be of type integer, buffer, or string
13172instead
13173of just type integer.  Package elements are implicitly converted to the
13174type
13175of the MatchObject. This change aligns the behavior of Match() with the
13176behavior of the other logical operators (LLess(), etc.) It also requires
13177an
13178errata change to the ACPI specification as this support was intended for
13179ACPI 3.0, but was inadvertently omitted.
13180
13181Fixed a problem with the internal implicit "to buffer" conversion.
13182Strings
13183that are converted to buffers will cause buffer truncation if the string
13184is
13185smaller than the target buffer. Integers that are converted to buffers
13186will
13187not cause buffer truncation, only zero extension (both as per the ACPI
13188spec.) The problem was introduced when code was added to truncate the
13189buffer, but this should not be performed in all cases, only the string
13190case.
13191
13192Fixed a problem with the Buffer and Package operators where the
13193interpreter
13194would get confused if two such operators were used as operands to an ASL
13195operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13196stack was not being popped after the execution of these operators,
13197resulting
13198in an AE_NO_RETURN_VALUE exception.
13199
13200Fixed a problem with constructs of the form Store(Index(...),...). The
13201reference object returned from Index was inadvertently resolved to an
13202actual
13203value. This problem was introduced in version 20050114 when the behavior
13204of
13205Store() was modified to restrict the object types that can be used as the
13206source operand (to match the ACPI specification.)
13207
13208Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13209
13210Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13211
13212Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13213
13214Code and Data Size: Current and previous core subsystem library sizes are
13215shown below. These are the code and data sizes for the acpica.lib
13216produced
13217by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13218any ACPI driver or OSPM code. The debug version of the code includes the
13219debug output trace mechanism and has a much larger code and data size.
13220Note
13221that these values will vary depending on the efficiency of the compiler
13222and
13223the compiler options used during generation.
13224
13225  Previous Release:
13226    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13227    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13228  Current Release:
13229    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13230    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13231
13232
132332) iASL Compiler/Disassembler:
13234
13235Fixed a code generation problem in the constant folding optimization code
13236where incorrect code was generated if a constant was reduced to a buffer
13237object (i.e., a reduced type 5 opcode.)
13238
13239Fixed a typechecking problem for the ToBuffer operator. Caused by an
13240incorrect return type in the internal opcode information table.
13241
13242----------------------------------------
1324325 January 2005.  Summary of changes for version 20050125:
13244
132451) ACPI CA Core Subsystem:
13246
13247Fixed a recently introduced problem with the Global Lock where the
13248underlying semaphore was not created.  This problem was introduced in
13249version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13250Acquire() operation on _GL.
13251
13252The local object cache is now optional, and is disabled by default. Both
13253AcpiExec and the iASL compiler enable the cache because they run in user
13254mode and this enhances their performance. #define
13255ACPI_ENABLE_OBJECT_CACHE
13256to enable the local cache.
13257
13258Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13259the
13260optional "implicit return" support where an error was returned if no
13261return
13262object was expected, but one was implicitly returned. AE_OK is now
13263returned
13264in this case and the implicitly returned object is deleted.
13265AcpiUtEvaluateObject is only occasionally used, and only to execute
13266reserved
13267methods such as _STA and _INI where the return type is known up front.
13268
13269Fixed a few issues with the internal convert-to-integer code. It now
13270returns
13271an error if an attempt is made to convert a null string, a string of only
13272blanks/tabs, or a zero-length buffer. This affects both implicit
13273conversion
13274and explicit conversion via the ToInteger() operator.
13275
13276The internal debug code in AcpiUtAcquireMutex has been commented out. It
13277is
13278not needed for normal operation and should increase the performance of
13279the
13280entire subsystem. The code remains in case it is needed for debug
13281purposes
13282again.
13283
13284The AcpiExec source and makefile are included in the Unix/Linux package
13285for
13286the first time.
13287
13288Code and Data Size: Current and previous core subsystem library sizes are
13289shown below. These are the code and data sizes for the acpica.lib
13290produced
13291by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13292any ACPI driver or OSPM code. The debug version of the code includes the
13293debug output trace mechanism and has a much larger code and data size.
13294Note
13295that these values will vary depending on the efficiency of the compiler
13296and
13297the compiler options used during generation.
13298
13299  Previous Release:
13300    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13301    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13302  Current Release:
13303    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13304    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13305
133062) iASL Compiler/Disassembler:
13307
13308Switch/Case support: A warning is now issued if the type of the Switch
13309value
13310cannot be determined at compile time. For example, Switch(Arg0) will
13311generate the warning, and the type is assumed to be an integer. As per
13312the
13313ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13314the
13315warning.
13316
13317Switch/Case support: Implemented support for buffer and string objects as
13318the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13319buffers and strings.
13320
13321Switch/Case support: The emitted code for the LEqual() comparisons now
13322uses
13323the switch value as the first operand, not the second. The case value is
13324now
13325the second operand, and this allows the case value to be implicitly
13326converted to the type of the switch value, not the other way around.
13327
13328Switch/Case support: Temporary variables are now emitted immediately
13329within
13330the control method, not at the global level. This means that there are
13331now
1333236 temps available per-method, not 36 temps per-module as was the case
13333with
13334the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13335
13336----------------------------------------
1333714 January 2005.  Summary of changes for version 20050114:
13338
13339Added 2005 copyright to all module headers.  This affects every module in
13340the core subsystem, iASL compiler, and the utilities.
13341
133421) ACPI CA Core Subsystem:
13343
13344Fixed an issue with the String-to-Buffer conversion code where the string
13345null terminator was not included in the buffer after conversion, but
13346there
13347is existing ASL that assumes the string null terminator is included. This
13348is
13349the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13350introduced in the previous version when the code was updated to correctly
13351set the converted buffer size as per the ACPI specification. The ACPI
13352spec
13353is ambiguous and will be updated to specify that the null terminator must
13354be
13355included in the converted buffer. This also affects the ToBuffer() ASL
13356operator.
13357
13358Fixed a problem with the Mid() ASL/AML operator where it did not work
13359correctly on Buffer objects. Newly created sub-buffers were not being
13360marked
13361as initialized.
13362
13363
13364Fixed a problem in AcpiTbFindTable where incorrect string compares were
13365performed on the OemId and OemTableId table header fields.  These fields
13366are
13367not null terminated, so strncmp is now used instead of strcmp.
13368
13369Implemented a restriction on the Store() ASL/AML operator to align the
13370behavior with the ACPI specification.  Previously, any object could be
13371used
13372as the source operand.  Now, the only objects that may be used are
13373Integers,
13374Buffers, Strings, Packages, Object References, and DDB Handles.  If
13375necessary, the original behavior can be restored by enabling the
13376EnableInterpreterSlack flag.
13377
13378Enhanced the optional "implicit return" support to allow an implicit
13379return
13380value from methods that are invoked externally via the AcpiEvaluateObject
13381interface.  This enables implicit returns from the _STA and _INI methods,
13382for example.
13383
13384Changed the Revision() ASL/AML operator to return the current version of
13385the
13386AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13387returned
13388the supported ACPI version (This is the function of the _REV method).
13389
13390Updated the _REV predefined method to return the currently supported
13391version
13392of ACPI, now 3.
13393
13394Implemented batch mode option for the AcpiExec utility (-b).
13395
13396Code and Data Size: Current and previous core subsystem library sizes are
13397shown below. These are the code and data sizes for the acpica.lib
13398produced
13399by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13400any ACPI driver or OSPM code. The debug version of the code includes the
13401debug output trace mechanism and has a much larger code and data size.
13402Note
13403that these values will vary depending on the efficiency of the compiler
13404and
13405the compiler options used during generation.
13406
13407  Previous Release:
13408    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13409    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13410  Current Release:
13411    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13412    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13413
13414----------------------------------------
1341510 December 2004.  Summary of changes for version 20041210:
13416
13417ACPI 3.0 support is nearing completion in both the iASL compiler and the
13418ACPI CA core subsystem.
13419
134201) ACPI CA Core Subsystem:
13421
13422Fixed a problem in the ToDecimalString operator where the resulting
13423string
13424length was incorrectly calculated. The length is now calculated exactly,
13425eliminating incorrect AE_STRING_LIMIT exceptions.
13426
13427Fixed a problem in the ToHexString operator to allow a maximum 200
13428character
13429string to be produced.
13430
13431Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13432copy
13433routine where the length of the resulting buffer was not truncated to the
13434new size (if the target buffer already existed).
13435
13436Code and Data Size: Current and previous core subsystem library sizes are
13437shown below. These are the code and data sizes for the acpica.lib
13438produced
13439by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13440any ACPI driver or OSPM code. The debug version of the code includes the
13441debug output trace mechanism and has a much larger code and data size.
13442Note
13443that these values will vary depending on the efficiency of the compiler
13444and
13445the compiler options used during generation.
13446
13447  Previous Release:
13448    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13449    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13450  Current Release:
13451    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13452    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13453
13454
134552) iASL Compiler/Disassembler:
13456
13457Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13458ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13459Includes support in the disassembler.
13460
13461Implemented support for the new (ACPI 3.0) parameter to the Register
13462macro,
13463AccessSize.
13464
13465Fixed a problem where the _HE resource name for the Interrupt macro was
13466referencing bit 0 instead of bit 1.
13467
13468Implemented check for maximum 255 interrupts in the Interrupt macro.
13469
13470Fixed a problem with the predefined resource descriptor names where
13471incorrect AML code was generated if the offset within the resource buffer
13472was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
13473but did not update the surrounding package lengths.
13474
13475Changes to the Dma macro:  All channels within the channel list must be
13476in
13477the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
13478optional (default is BusMaster).
13479
13480Implemented check for maximum 7 data bytes for the VendorShort macro.
13481
13482The ReadWrite parameter is now optional for the Memory32 and similar
13483macros.
13484
13485----------------------------------------
1348603 December 2004.  Summary of changes for version 20041203:
13487
134881) ACPI CA Core Subsystem:
13489
13490The low-level field insertion/extraction code (exfldio) has been
13491completely
13492rewritten to eliminate unnecessary complexity, bugs, and boundary
13493conditions.
13494
13495Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13496ToDecimalString
13497operators where the input operand could be inadvertently deleted if no
13498conversion was necessary (e.g., if the input to ToInteger was an Integer
13499object.)
13500
13501Fixed a problem with the ToDecimalString and ToHexString where an
13502incorrect
13503exception code was returned if the resulting string would be > 200 chars.
13504AE_STRING_LIMIT is now returned.
13505
13506Fixed a problem with the Concatenate operator where AE_OK was always
13507returned, even if the operation failed.
13508
13509Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13510semaphores to be allocated.
13511
13512Code and Data Size: Current and previous core subsystem library sizes are
13513shown below. These are the code and data sizes for the acpica.lib
13514produced
13515by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13516any ACPI driver or OSPM code. The debug version of the code includes the
13517debug output trace mechanism and has a much larger code and data size.
13518Note
13519that these values will vary depending on the efficiency of the compiler
13520and
13521the compiler options used during generation.
13522
13523  Previous Release:
13524    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13525    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13526  Current Release:
13527    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13528    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13529
13530
135312) iASL Compiler/Disassembler:
13532
13533Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
13534recently introduced in 20041119.
13535
13536Fixed a problem with the ToUUID macro where the upper nybble of each
13537buffer
13538byte was inadvertently set to zero.
13539
13540----------------------------------------
1354119 November 2004.  Summary of changes for version 20041119:
13542
135431) ACPI CA Core Subsystem:
13544
13545Fixed a problem in the internal ConvertToInteger routine where new
13546integers
13547were not truncated to 32 bits for 32-bit ACPI tables. This routine
13548converts
13549buffers and strings to integers.
13550
13551Implemented support to store a value to an Index() on a String object.
13552This
13553is an ACPI 2.0 feature that had not yet been implemented.
13554
13555Implemented new behavior for storing objects to individual package
13556elements
13557(via the Index() operator). The previous behavior was to invoke the
13558implicit
13559conversion rules if an object was already present at the index.  The new
13560behavior is to simply delete any existing object and directly store the
13561new
13562object. Although the ACPI specification seems unclear on this subject,
13563other
13564ACPI implementations behave in this manner.  (This is the root of the
13565AE_BAD_HEX_CONSTANT issue.)
13566
13567Modified the RSDP memory scan mechanism to support the extended checksum
13568for
13569ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13570RSDP signature is found with a valid checksum.
13571
13572Code and Data Size: Current and previous core subsystem library sizes are
13573shown below. These are the code and data sizes for the acpica.lib
13574produced
13575by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13576any ACPI driver or OSPM code. The debug version of the code includes the
13577debug output trace mechanism and has a much larger code and data size.
13578Note
13579that these values will vary depending on the efficiency of the compiler
13580and
13581the compiler options used during generation.
13582
13583  Previous Release:
13584    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13585    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13586  Current Release:
13587    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13588    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13589
13590
135912) iASL Compiler/Disassembler:
13592
13593Fixed a missing semicolon in the aslcompiler.y file.
13594
13595----------------------------------------
1359605 November 2004.  Summary of changes for version 20041105:
13597
135981) ACPI CA Core Subsystem:
13599
13600Implemented support for FADT revision 2.  This was an interim table
13601(between
13602ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13603
13604Implemented optional support to allow uninitialized LocalX and ArgX
13605variables in a control method.  The variables are initialized to an
13606Integer
13607object with a value of zero.  This support is enabled by setting the
13608AcpiGbl_EnableInterpreterSlack flag to TRUE.
13609
13610Implemented support for Integer objects for the SizeOf operator.  Either
136114
13612or 8 is returned, depending on the current integer size (32-bit or 64-
13613bit,
13614depending on the parent table revision).
13615
13616Fixed a problem in the implementation of the SizeOf and ObjectType
13617operators
13618where the operand was resolved to a value too early, causing incorrect
13619return values for some objects.
13620
13621Fixed some possible memory leaks during exceptional conditions.
13622
13623Code and Data Size: Current and previous core subsystem library sizes are
13624shown below. These are the code and data sizes for the acpica.lib
13625produced
13626by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13627any ACPI driver or OSPM code. The debug version of the code includes the
13628debug output trace mechanism and has a much larger code and data size.
13629Note
13630that these values will vary depending on the efficiency of the compiler
13631and
13632the compiler options used during generation.
13633
13634  Previous Release:
13635    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13636    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13637  Current Release:
13638    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13639    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13640
13641
136422) iASL Compiler/Disassembler:
13643
13644Implemented support for all ACPI 3.0 reserved names and methods.
13645
13646Implemented all ACPI 3.0 grammar elements in the front-end, including
13647support for semicolons.
13648
13649Implemented the ACPI 3.0 Function() and ToUUID() macros
13650
13651Fixed a problem in the disassembler where a Scope() operator would not be
13652emitted properly if the target of the scope was in another table.
13653
13654----------------------------------------
1365515 October 2004.  Summary of changes for version 20041015:
13656
13657Note:  ACPI CA is currently undergoing an in-depth and complete formal
13658evaluation to test/verify the following areas. Other suggestions are
13659welcome. This will result in an increase in the frequency of releases and
13660the number of bug fixes in the next few months.
13661  - Functional tests for all ASL/AML operators
13662  - All implicit/explicit type conversions
13663  - Bit fields and operation regions
13664  - 64-bit math support and 32-bit-only "truncated" math support
13665  - Exceptional conditions, both compiler and interpreter
13666  - Dynamic object deletion and memory leaks
13667  - ACPI 3.0 support when implemented
13668  - External interfaces to the ACPI subsystem
13669
13670
136711) ACPI CA Core Subsystem:
13672
13673Fixed two alignment issues on 64-bit platforms - within debug statements
13674in
13675AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13676Address
13677field within the non-aligned ACPI generic address structure.
13678
13679Fixed a problem in the Increment and Decrement operators where incorrect
13680operand resolution could result in the inadvertent modification of the
13681original integer when the integer is passed into another method as an
13682argument and the arg is then incremented/decremented.
13683
13684Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13685bit
13686BCD number were truncated during conversion.
13687
13688Fixed a problem in the ToDecimal operator where the length of the
13689resulting
13690string could be set incorrectly too long if the input operand was a
13691Buffer
13692object.
13693
13694Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13695(0)
13696within a buffer would prematurely terminate a compare between buffer
13697objects.
13698
13699Added a check for string overflow (>200 characters as per the ACPI
13700specification) during the Concatenate operator with two string operands.
13701
13702Code and Data Size: Current and previous core subsystem library sizes are
13703shown below. These are the code and data sizes for the acpica.lib
13704produced
13705by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13706any ACPI driver or OSPM code. The debug version of the code includes the
13707debug output trace mechanism and has a much larger code and data size.
13708Note
13709that these values will vary depending on the efficiency of the compiler
13710and
13711the compiler options used during generation.
13712
13713  Previous Release:
13714    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13715    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13716  Current Release:
13717    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13718    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13719
13720
13721
137222) iASL Compiler/Disassembler:
13723
13724Allow the use of the ObjectType operator on uninitialized Locals and Args
13725(returns 0 as per the ACPI specification).
13726
13727Fixed a problem where the compiler would fault if there was a syntax
13728error
13729in the FieldName of all of the various CreateXXXField operators.
13730
13731Disallow the use of lower case letters within the EISAID macro, as per
13732the
13733ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
13734Where
13735U is an uppercase letter and N is a hex digit.
13736
13737
13738----------------------------------------
1373906 October 2004.  Summary of changes for version 20041006:
13740
137411) ACPI CA Core Subsystem:
13742
13743Implemented support for the ACPI 3.0 Timer operator. This ASL function
13744implements a 64-bit timer with 100 nanosecond granularity.
13745
13746Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
13747implement the ACPI 3.0 Timer operator.  This allows the host OS to
13748implement
13749the timer with the best clock available. Also, it keeps the core
13750subsystem
13751out of the clock handling business, since the host OS (usually) performs
13752this function.
13753
13754Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
13755functions use a 64-bit address which is part of the packed ACPI Generic
13756Address Structure. Since the structure is non-aligned, the alignment
13757macros
13758are now used to extract the address to a local variable before use.
13759
13760Fixed a problem where the ToInteger operator assumed all input strings
13761were
13762hexadecimal. The operator now handles both decimal strings and hex
13763strings
13764(prefixed with "0x").
13765
13766Fixed a problem where the string length in the string object created as a
13767result of the internal ConvertToString procedure could be incorrect. This
13768potentially affected all implicit conversions and also the
13769ToDecimalString
13770and ToHexString operators.
13771
13772Fixed two problems in the ToString operator. If the length parameter was
13773zero, an incorrect string object was created and the value of the input
13774length parameter was inadvertently changed from zero to Ones.
13775
13776Fixed a problem where the optional ResourceSource string in the
13777ExtendedIRQ
13778resource macro was ignored.
13779
13780Simplified the interfaces to the internal division functions, reducing
13781code
13782size and complexity.
13783
13784Code and Data Size: Current and previous core subsystem library sizes are
13785shown below. These are the code and data sizes for the acpica.lib
13786produced
13787by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13788any ACPI driver or OSPM code. The debug version of the code includes the
13789debug output trace mechanism and has a much larger code and data size.
13790Note
13791that these values will vary depending on the efficiency of the compiler
13792and
13793the compiler options used during generation.
13794
13795  Previous Release:
13796    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13797    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13798  Current Release:
13799    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13800    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13801
13802
138032) iASL Compiler/Disassembler:
13804
13805Implemented support for the ACPI 3.0 Timer operator.
13806
13807Fixed a problem where the Default() operator was inadvertently ignored in
13808a
13809Switch/Case block.  This was a problem in the translation of the Switch
13810statement to If...Else pairs.
13811
13812Added support to allow a standalone Return operator, with no parentheses
13813(or
13814operands).
13815
13816Fixed a problem with code generation for the ElseIf operator where the
13817translated Else...If parse tree was improperly constructed leading to the
13818loss of some code.
13819
13820----------------------------------------
1382122 September 2004.  Summary of changes for version 20040922:
13822
138231) ACPI CA Core Subsystem:
13824
13825Fixed a problem with the implementation of the LNot() operator where
13826"Ones"
13827was not returned for the TRUE case. Changed the code to return Ones
13828instead
13829of (!Arg) which was usually 1. This change affects iASL constant folding
13830for
13831this operator also.
13832
13833Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
13834not
13835initialized properly -- Now zero the entire buffer in this case where the
13836buffer already exists.
13837
13838Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
13839Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
13840related code considerably. This will require changes/updates to all OS
13841interface layers (OSLs.)
13842
13843Implemented a new external interface, AcpiInstallExceptionHandler, to
13844allow
13845a system exception handler to be installed. This handler is invoked upon
13846any
13847run-time exception that occurs during control method execution.
13848
13849Added support for the DSDT in AcpiTbFindTable. This allows the
13850DataTableRegion() operator to access the local copy of the DSDT.
13851
13852Code and Data Size: Current and previous core subsystem library sizes are
13853shown below. These are the code and data sizes for the acpica.lib
13854produced
13855by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13856any ACPI driver or OSPM code. The debug version of the code includes the
13857debug output trace mechanism and has a much larger code and data size.
13858Note
13859that these values will vary depending on the efficiency of the compiler
13860and
13861the compiler options used during generation.
13862
13863  Previous Release:
13864    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13865    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13866  Current Release:
13867    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13868    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13869
13870
138712) iASL Compiler/Disassembler:
13872
13873Fixed a problem with constant folding and the LNot operator. LNot was
13874returning 1 in the TRUE case, not Ones as per the ACPI specification.
13875This
13876could result in the generation of an incorrect folded/reduced constant.
13877
13878End-Of-File is now allowed within a "//"-style comment.  A parse error no
13879longer occurs if such a comment is at the very end of the input ASL
13880source
13881file.
13882
13883Implemented the "-r" option to override the Revision in the table header.
13884The initial use of this option will be to simplify the evaluation of the
13885AML
13886interpreter by allowing a single ASL source module to be compiled for
13887either
1388832-bit or 64-bit integers.
13889
13890
13891----------------------------------------
1389227 August 2004.  Summary of changes for version 20040827:
13893
138941) ACPI CA Core Subsystem:
13895
13896- Implemented support for implicit object conversion in the non-numeric
13897logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
13898and
13899LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
13900the second operand is implicitly converted on the fly to match the type
13901of
13902the first operand.  For example:
13903
13904    LEqual (Source1, Source2)
13905
13906Source1 and Source2 must each evaluate to an integer, a string, or a
13907buffer.
13908The data type of Source1 dictates the required type of Source2. Source2
13909is
13910implicitly converted if necessary to match the type of Source1.
13911
13912- Updated and corrected the behavior of the string conversion support.
13913The
13914rules concerning conversion of buffers to strings (according to the ACPI
13915specification) are as follows:
13916
13917ToDecimalString - explicit byte-wise conversion of buffer to string of
13918decimal values (0-255) separated by commas. ToHexString - explicit byte-
13919wise
13920conversion of buffer to string of hex values (0-FF) separated by commas.
13921ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
13922byte
13923copy with no transform except NULL terminated. Any other implicit buffer-
13924to-
13925string conversion - byte-wise conversion of buffer to string of hex
13926values
13927(0-FF) separated by spaces.
13928
13929- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13930
13931- Fixed a problem in AcpiNsGetPathnameLength where the returned length
13932was
13933one byte too short in the case of a node in the root scope.  This could
13934cause a fault during debug output.
13935
13936- Code and Data Size: Current and previous core subsystem library sizes
13937are
13938shown below.  These are the code and data sizes for the acpica.lib
13939produced
13940by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13941any ACPI driver or OSPM code.  The debug version of the code includes the
13942debug output trace mechanism and has a much larger code and data size.
13943Note
13944that these values will vary depending on the efficiency of the compiler
13945and
13946the compiler options used during generation.
13947
13948  Previous Release:
13949    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13950    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13951  Current Release:
13952    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13953    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13954
13955
139562) iASL Compiler/Disassembler:
13957
13958- Fixed a Linux generation error.
13959
13960
13961----------------------------------------
1396216 August 2004.  Summary of changes for version 20040816:
13963
139641) ACPI CA Core Subsystem:
13965
13966Designed and implemented support within the AML interpreter for the so-
13967called "implicit return".  This support returns the result of the last
13968ASL
13969operation within a control method, in the absence of an explicit Return()
13970operator.  A few machines depend on this behavior, even though it is not
13971explicitly supported by the ASL language.  It is optional support that
13972can
13973be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
13974
13975Removed support for the PCI_Config address space from the internal low
13976level
13977hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
13978support was not used internally, and would not work correctly anyway
13979because
13980the PCI bus number and segment number were not supported.  There are
13981separate interfaces for PCI configuration space access because of the
13982unique
13983interface.
13984
13985Code and Data Size: Current and previous core subsystem library sizes are
13986shown below.  These are the code and data sizes for the acpica.lib
13987produced
13988by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13989any ACPI driver or OSPM code.  The debug version of the code includes the
13990debug output trace mechanism and has a much larger code and data size.
13991Note
13992that these values will vary depending on the efficiency of the compiler
13993and
13994the compiler options used during generation.
13995
13996  Previous Release:
13997    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13998    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13999  Current Release:
14000    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14001    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14002
14003
140042) iASL Compiler/Disassembler:
14005
14006Fixed a problem where constants in ASL expressions at the root level (not
14007within a control method) could be inadvertently truncated during code
14008generation.  This problem was introduced in the 20040715 release.
14009
14010
14011----------------------------------------
1401215 July 2004.  Summary of changes for version 20040715:
14013
140141) ACPI CA Core Subsystem:
14015
14016Restructured the internal HW GPE interfaces to pass/track the current
14017state
14018of interrupts (enabled/disabled) in order to avoid possible deadlock and
14019increase flexibility of the interfaces.
14020
14021Implemented a "lexicographical compare" for String and Buffer objects
14022within
14023the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14024-
14025as per further clarification to the ACPI specification.  Behavior is
14026similar
14027to C library "strcmp".
14028
14029Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14030external function.  In the 32-bit non-debug case, the stack use has been
14031reduced from 168 bytes to 32 bytes.
14032
14033Deployed a new run-time configuration flag,
14034AcpiGbl_EnableInterpreterSlack,
14035whose purpose is to allow the AML interpreter to forgive certain bad AML
14036constructs.  Default setting is FALSE.
14037
14038Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14039IO
14040support code.  If enabled, it allows field access to go beyond the end of
14041a
14042region definition if the field is within the region length rounded up to
14043the
14044next access width boundary (a common coding error.)
14045
14046Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14047ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14048these
14049symbols are lowercase by the latest version of the AcpiSrc tool.
14050
14051The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14052rename "Register" to simply "Reg" to prevent certain compilers from
14053complaining.
14054
14055Code and Data Size: Current and previous core subsystem library sizes are
14056shown below.  These are the code and data sizes for the acpica.lib
14057produced
14058by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14059any ACPI driver or OSPM code.  The debug version of the code includes the
14060debug output trace mechanism and has a much larger code and data size.
14061Note
14062that these values will vary depending on the efficiency of the compiler
14063and
14064the compiler options used during generation.
14065
14066  Previous Release:
14067    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14068    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14069  Current Release:
14070    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14071    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14072
14073
140742) iASL Compiler/Disassembler:
14075
14076Implemented full support for Package objects within the Case() operator.
14077Note: The Break() operator is currently not supported within Case blocks
14078(TermLists) as there is some question about backward compatibility with
14079ACPI
140801.0 interpreters.
14081
14082
14083Fixed a problem where complex terms were not supported properly within
14084the
14085Switch() operator.
14086
14087Eliminated extraneous warning for compiler-emitted reserved names of the
14088form "_T_x".  (Used in Switch/Case operators.)
14089
14090Eliminated optimization messages for "_T_x" objects and small constants
14091within the DefinitionBlock operator.
14092
14093
14094----------------------------------------
1409515 June 2004.  Summary of changes for version 20040615:
14096
140971) ACPI CA Core Subsystem:
14098
14099Implemented support for Buffer and String objects (as per ACPI 2.0) for
14100the
14101following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14102LLessEqual.
14103
14104All directory names in the entire source package are lower case, as they
14105were in earlier releases.
14106
14107Implemented "Disassemble" command in the AML debugger that will
14108disassemble
14109a single control method.
14110
14111Code and Data Size: Current and previous core subsystem library sizes are
14112shown below.  These are the code and data sizes for the acpica.lib
14113produced
14114by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14115any ACPI driver or OSPM code.  The debug version of the code includes the
14116debug output trace mechanism and has a much larger code and data size.
14117Note
14118that these values will vary depending on the efficiency of the compiler
14119and
14120the compiler options used during generation.
14121
14122  Previous Release:
14123    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14124    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14125
14126  Current Release:
14127    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14128    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14129
14130
141312) iASL Compiler/Disassembler:
14132
14133Implemented support for Buffer and String objects (as per ACPI 2.0) for
14134the
14135following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14136LLessEqual.
14137
14138All directory names in the entire source package are lower case, as they
14139were in earlier releases.
14140
14141Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14142not found.
14143
14144Fixed an issue with the Windows version of the compiler where later
14145versions
14146of Windows place the FADT in the registry under the name "FADT" and not
14147"FACP" as earlier versions did.  This applies when using the -g or -
14148d<nofilename> options.  The compiler now looks for both strings as
14149necessary.
14150
14151Fixed a problem with compiler namepath optimization where a namepath
14152within
14153the Scope() operator could not be optimized if the namepath was a subpath
14154of
14155the current scope path.
14156
14157----------------------------------------
1415827 May 2004.  Summary of changes for version 20040527:
14159
141601) ACPI CA Core Subsystem:
14161
14162Completed a new design and implementation for EBDA (Extended BIOS Data
14163Area)
14164support in the RSDP scan code.  The original code improperly scanned for
14165the
14166EBDA by simply scanning from memory location 0 to 0x400.  The correct
14167method
14168is to first obtain the EBDA pointer from within the BIOS data area, then
14169scan 1K of memory starting at the EBDA pointer.  There appear to be few
14170if
14171any machines that place the RSDP in the EBDA, however.
14172
14173Integrated a fix for a possible fault during evaluation of BufferField
14174arguments.  Obsolete code that was causing the problem was removed.
14175
14176Found and fixed a problem in the Field Support Code where data could be
14177corrupted on a bit field read that starts on an aligned boundary but does
14178not end on an aligned boundary.  Merged the read/write "datum length"
14179calculation code into a common procedure.
14180
14181Rolled in a couple of changes to the FreeBSD-specific header.
14182
14183
14184Code and Data Size: Current and previous core subsystem library sizes are
14185shown below.  These are the code and data sizes for the acpica.lib
14186produced
14187by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14188any ACPI driver or OSPM code.  The debug version of the code includes the
14189debug output trace mechanism and has a much larger code and data size.
14190Note
14191that these values will vary depending on the efficiency of the compiler
14192and
14193the compiler options used during generation.
14194
14195  Previous Release:
14196    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14197    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14198  Current Release:
14199    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14200    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14201
14202
142032) iASL Compiler/Disassembler:
14204
14205Fixed a generation warning produced by some overly-verbose compilers for
14206a
1420764-bit constant.
14208
14209----------------------------------------
1421014 May 2004.  Summary of changes for version 20040514:
14211
142121) ACPI CA Core Subsystem:
14213
14214Fixed a problem where hardware GPE enable bits sometimes not set properly
14215during and after GPE method execution.  Result of 04/27 changes.
14216
14217Removed extra "clear all GPEs" when sleeping/waking.
14218
14219Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14220AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14221to
14222the new AcpiEv* calls as appropriate.
14223
14224ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14225is
14226now "Microsoft Windows NT" for maximum compatibility.  However this can
14227be
14228changed by modifying the acconfig.h file.
14229
14230Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14231traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14232
14233Run _INI methods on ThermalZone objects.  This is against the ACPI
14234specification, but there is apparently ASL code in the field that has
14235these
14236_INI methods, and apparently "other" AML interpreters execute them.
14237
14238Performed a full 16/32/64 bit lint that resulted in some small changes.
14239
14240Added a sleep simulation command to the AML debugger to test sleep code.
14241
14242Code and Data Size: Current and previous core subsystem library sizes are
14243shown below.  These are the code and data sizes for the acpica.lib
14244produced
14245by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14246any ACPI driver or OSPM code.  The debug version of the code includes the
14247debug output trace mechanism and has a much larger code and data size.
14248Note
14249that these values will vary depending on the efficiency of the compiler
14250and
14251the compiler options used during generation.
14252
14253  Previous Release:
14254    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14255    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14256  Current Release:
14257    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14258    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14259
14260----------------------------------------
1426127 April 2004.  Summary of changes for version 20040427:
14262
142631) ACPI CA Core Subsystem:
14264
14265Completed a major overhaul of the GPE handling within ACPI CA.  There are
14266now three types of GPEs:  wake-only, runtime-only, and combination
14267wake/run.
14268The only GPEs allowed to be combination wake/run are for button-style
14269devices such as a control-method power button, control-method sleep
14270button,
14271or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14272not
14273referenced by any _PRW methods are marked for "runtime" and hardware
14274enabled.  Any GPE that is referenced by a _PRW method is marked for
14275"wake"
14276(and disabled at runtime).  However, at sleep time, only those GPEs that
14277have been specifically enabled for wake via the AcpiEnableGpe interface
14278will
14279actually be hardware enabled.
14280
14281A new external interface has been added, AcpiSetGpeType(), that is meant
14282to
14283be used by device drivers to force a GPE to a particular type.  It will
14284be
14285especially useful for the drivers for the button devices mentioned above.
14286
14287Completed restructuring of the ACPI CA initialization sequence so that
14288default operation region handlers are installed before GPEs are
14289initialized
14290and the _PRW methods are executed.  This will prevent errors when the
14291_PRW
14292methods attempt to access system memory or I/O space.
14293
14294GPE enable/disable no longer reads the GPE enable register.  We now keep
14295the
14296enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14297thus no longer depend on the hardware to maintain these bits.
14298
14299Always clear the wake status and fixed/GPE status bits before sleep, even
14300for state S5.
14301
14302Improved the AML debugger output for displaying the GPE blocks and their
14303current status.
14304
14305Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14306where
14307x = 0,1,2,3,4.
14308
14309Fixed a problem where the physical address was incorrectly calculated
14310when
14311the Load() operator was used to directly load from an Operation Region
14312(vs.
14313loading from a Field object.)  Also added check for minimum table length
14314for
14315this case.
14316
14317Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14318mutex release.
14319
14320Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14321consistency with the other fields returned.
14322
14323Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14324structure for each GPE in the system, so the size of this structure is
14325important.
14326
14327CPU stack requirement reduction:  Cleaned up the method execution and
14328object
14329evaluation paths so that now a parameter structure is passed, instead of
14330copying the various method parameters over and over again.
14331
14332In evregion.c:  Correctly exit and reenter the interpreter region if and
14333only if dispatching an operation region request to a user-installed
14334handler.
14335Do not exit/reenter when dispatching to a default handler (e.g., default
14336system memory or I/O handlers)
14337
14338
14339Notes for updating drivers for the new GPE support.  The following
14340changes
14341must be made to ACPI-related device drivers that are attached to one or
14342more
14343GPEs: (This information will be added to the ACPI CA Programmer
14344Reference.)
14345
143461) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14347must
14348explicitly call AcpiEnableGpe.
143492) There is a new interface called AcpiSetGpeType. This should be called
14350before enabling the GPE.  Also, this interface will automatically disable
14351the GPE if it is currently enabled.
143523) AcpiEnableGpe no longer supports a GPE type flag.
14353
14354Specific drivers that must be changed:
143551) EC driver:
14356    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14357AeGpeHandler, NULL);
14358    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14359    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14360
143612) Button Drivers (Power, Lid, Sleep):
14362Run _PRW method under parent device
14363If _PRW exists: /* This is a control-method button */
14364    Extract GPE number and possibly GpeDevice
14365    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14366    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14367
14368For all other devices that have _PRWs, we automatically set the GPE type
14369to
14370ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14371This
14372must be done on a selective basis, usually requiring some kind of user
14373app
14374to allow the user to pick the wake devices.
14375
14376
14377Code and Data Size: Current and previous core subsystem library sizes are
14378shown below.  These are the code and data sizes for the acpica.lib
14379produced
14380by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14381any ACPI driver or OSPM code.  The debug version of the code includes the
14382debug output trace mechanism and has a much larger code and data size.
14383Note
14384that these values will vary depending on the efficiency of the compiler
14385and
14386the compiler options used during generation.
14387
14388  Previous Release:
14389    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14390    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14391  Current Release:
14392
14393    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14394    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14395
14396
14397
14398----------------------------------------
1439902 April 2004.  Summary of changes for version 20040402:
14400
144011) ACPI CA Core Subsystem:
14402
14403Fixed an interpreter problem where an indirect store through an ArgX
14404parameter was incorrectly applying the "implicit conversion rules" during
14405the store.  From the ACPI specification: "If the target is a method local
14406or
14407argument (LocalX or ArgX), no conversion is performed and the result is
14408stored directly to the target".  The new behavior is to disable implicit
14409conversion during ALL stores to an ArgX.
14410
14411Changed the behavior of the _PRW method scan to ignore any and all errors
14412returned by a given _PRW.  This prevents the scan from aborting from the
14413failure of any single _PRW.
14414
14415Moved the runtime configuration parameters from the global init procedure
14416to
14417static variables in acglobal.h.  This will allow the host to override the
14418default values easily.
14419
14420Code and Data Size: Current and previous core subsystem library sizes are
14421shown below.  These are the code and data sizes for the acpica.lib
14422produced
14423by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14424any ACPI driver or OSPM code.  The debug version of the code includes the
14425debug output trace mechanism and has a much larger code and data size.
14426Note
14427that these values will vary depending on the efficiency of the compiler
14428and
14429the compiler options used during generation.
14430
14431  Previous Release:
14432    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14433    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14434  Current Release:
14435    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14436    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14437
14438
144392) iASL Compiler/Disassembler:
14440
14441iASL now fully disassembles SSDTs.  However, External() statements are
14442not
14443generated automatically for unresolved symbols at this time.  This is a
14444planned feature for future implementation.
14445
14446Fixed a scoping problem in the disassembler that occurs when the type of
14447the
14448target of a Scope() operator is overridden.  This problem caused an
14449incorrectly nested internal namespace to be constructed.
14450
14451Any warnings or errors that are emitted during disassembly are now
14452commented
14453out automatically so that the resulting file can be recompiled without
14454any
14455hand editing.
14456
14457----------------------------------------
1445826 March 2004.  Summary of changes for version 20040326:
14459
144601) ACPI CA Core Subsystem:
14461
14462Implemented support for "wake" GPEs via interaction between GPEs and the
14463_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
14464identified as a WAKE GPE and by default will no longer be enabled at
14465runtime.  Previously, we were blindly enabling all GPEs with a
14466corresponding
14467_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14468We
14469believe this has been the cause of thousands of "spurious" GPEs on some
14470systems.
14471
14472This new GPE behavior is can be reverted to the original behavior (enable
14473ALL GPEs at runtime) via a runtime flag.
14474
14475Fixed a problem where aliased control methods could not access objects
14476properly.  The proper scope within the namespace was not initialized
14477(transferred to the target of the aliased method) before executing the
14478target method.
14479
14480Fixed a potential race condition on internal object deletion on the
14481return
14482object in AcpiEvaluateObject.
14483
14484Integrated a fix for resource descriptors where both _MEM and _MTP were
14485being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
14486wide, 0x0F instead of 0x03.)
14487
14488Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14489preventing
14490a
14491fault in some cases.
14492
14493Updated Notify() values for debug statements in evmisc.c
14494
14495Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14496
14497Code and Data Size: Current and previous core subsystem library sizes are
14498shown below.  These are the code and data sizes for the acpica.lib
14499produced
14500by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14501any ACPI driver or OSPM code.  The debug version of the code includes the
14502debug output trace mechanism and has a much larger code and data size.
14503Note
14504that these values will vary depending on the efficiency of the compiler
14505and
14506the compiler options used during generation.
14507
14508  Previous Release:
14509
14510    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14511    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14512  Current Release:
14513    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14514    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14515
14516----------------------------------------
1451711 March 2004.  Summary of changes for version 20040311:
14518
145191) ACPI CA Core Subsystem:
14520
14521Fixed a problem where errors occurring during the parse phase of control
14522method execution did not abort cleanly.  For example, objects created and
14523installed in the namespace were not deleted.  This caused all subsequent
14524invocations of the method to return the AE_ALREADY_EXISTS exception.
14525
14526Implemented a mechanism to force a control method to "Serialized"
14527execution
14528if the method attempts to create namespace objects. (The root of the
14529AE_ALREADY_EXISTS problem.)
14530
14531Implemented support for the predefined _OSI "internal" control method.
14532Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14533and
14534"Windows 2001.1", and can be easily upgraded for new strings as
14535necessary.
14536This feature will allow "other" operating systems to execute the fully
14537tested, "Windows" code path through the ASL code
14538
14539Global Lock Support:  Now allows multiple acquires and releases with any
14540internal thread.  Removed concept of "owning thread" for this special
14541mutex.
14542
14543Fixed two functions that were inappropriately declaring large objects on
14544the
14545CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
14546during
14547method execution considerably.
14548
14549Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14550S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14551
14552Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14553defined on the machine.
14554
14555Implemented two runtime options:  One to force all control method
14556execution
14557to "Serialized" to mimic Windows behavior, another to disable _OSI
14558support
14559if it causes problems on a given machine.
14560
14561Code and Data Size: Current and previous core subsystem library sizes are
14562shown below.  These are the code and data sizes for the acpica.lib
14563produced
14564by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14565any ACPI driver or OSPM code.  The debug version of the code includes the
14566debug output trace mechanism and has a much larger code and data size.
14567Note
14568that these values will vary depending on the efficiency of the compiler
14569and
14570the compiler options used during generation.
14571
14572  Previous Release:
14573    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14574    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14575  Current Release:
14576    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14577    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14578
145792) iASL Compiler/Disassembler:
14580
14581Fixed an array size problem for FreeBSD that would cause the compiler to
14582fault.
14583
14584----------------------------------------
1458520 February 2004.  Summary of changes for version 20040220:
14586
14587
145881) ACPI CA Core Subsystem:
14589
14590Implemented execution of _SxD methods for Device objects in the
14591GetObjectInfo interface.
14592
14593Fixed calls to _SST method to pass the correct arguments.
14594
14595Added a call to _SST on wake to restore to "working" state.
14596
14597Check for End-Of-Buffer failure case in the WalkResources interface.
14598
14599Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14600structures to the beginning of the file.
14601
14602After wake, clear GPE status register(s) before enabling GPEs.
14603
14604After wake, clear/enable power button.  (Perhaps we should clear/enable
14605all
14606fixed events upon wake.)
14607
14608Fixed a couple of possible memory leaks in the Namespace manager.
14609
14610Integrated latest acnetbsd.h file.
14611
14612----------------------------------------
1461311 February 2004.  Summary of changes for version 20040211:
14614
14615
146161) ACPI CA Core Subsystem:
14617
14618Completed investigation and implementation of the call-by-reference
14619mechanism for control method arguments.
14620
14621Fixed a problem where a store of an object into an indexed package could
14622fail if the store occurs within a different method than the method that
14623created the package.
14624
14625Fixed a problem where the ToDecimal operator could return incorrect
14626results.
14627
14628Fixed a problem where the CopyObject operator could fail on some of the
14629more
14630obscure objects (e.g., Reference objects.)
14631
14632Improved the output of the Debug object to display buffer, package, and
14633index objects.
14634
14635Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14636return
14637the expected result.
14638
14639Added permanent ACPI_REPORT_ERROR macros for all instances of the
14640ACPI_AML_INTERNAL exception.
14641
14642Integrated latest version of acfreebsd.h
14643
14644----------------------------------------
1464516 January 2004.  Summary of changes for version 20040116:
14646
14647The purpose of this release is primarily to update the copyright years in
14648each module, thus causing a huge number of diffs.  There are a few small
14649functional changes, however.
14650
146511) ACPI CA Core Subsystem:
14652
14653Improved error messages when there is a problem finding one or more of
14654the
14655required base ACPI tables
14656
14657Reintroduced the definition of APIC_HEADER in actbl.h
14658
14659Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14660
14661Removed extraneous reference to NewObj in dsmthdat.c
14662
146632) iASL compiler
14664
14665Fixed a problem introduced in December that disabled the correct
14666disassembly
14667of Resource Templates
14668
14669
14670----------------------------------------
1467103 December 2003.  Summary of changes for version 20031203:
14672
146731) ACPI CA Core Subsystem:
14674
14675Changed the initialization of Operation Regions during subsystem
14676init to perform two entire walks of the ACPI namespace; The first
14677to initialize the regions themselves, the second to execute the
14678_REG methods.  This fixed some interdependencies across _REG
14679methods found on some machines.
14680
14681Fixed a problem where a Store(Local0, Local1) could simply update
14682the object reference count, and not create a new copy of the
14683object if the Local1 is uninitialized.
14684
14685Implemented support for the _SST reserved method during sleep
14686transitions.
14687
14688Implemented support to clear the SLP_TYP and SLP_EN bits when
14689waking up, this is apparently required by some machines.
14690
14691When sleeping, clear the wake status only if SleepState is not S5.
14692
14693Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14694pointer arithmetic advanced a string pointer too far.
14695
14696Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14697could be returned if the requested table has not been loaded.
14698
14699Within the support for IRQ resources, restructured the handling of
14700the active and edge/level bits.
14701
14702Fixed a few problems in AcpiPsxExecute() where memory could be
14703leaked under certain error conditions.
14704
14705Improved error messages for the cases where the ACPI mode could
14706not be entered.
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 (20031029):
14718    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14719    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14720  Current Release:
14721    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14722    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14723
147242) iASL Compiler/Disassembler:
14725
14726Implemented a fix for the iASL disassembler where a bad index was
14727generated.  This was most noticeable on 64-bit platforms
14728
14729
14730----------------------------------------
1473129 October 2003.  Summary of changes for version 20031029:
14732
147331) ACPI CA Core Subsystem:
14734
14735
14736Fixed a problem where a level-triggered GPE with an associated
14737_Lxx control method was incorrectly cleared twice.
14738
14739Fixed a problem with the Field support code where an access can
14740occur beyond the end-of-region if the field is non-aligned but
14741extends to the very end of the parent region (resulted in an
14742AE_AML_REGION_LIMIT exception.)
14743
14744Fixed a problem with ACPI Fixed Events where an RT Clock handler
14745would not get invoked on an RTC event.  The RTC event bitmasks for
14746the PM1 registers were not being initialized properly.
14747
14748Implemented support for executing _STA and _INI methods for
14749Processor objects.  Although this is currently not part of the
14750ACPI specification, there is existing ASL code that depends on the
14751init-time execution of these methods.
14752
14753Implemented and deployed a GetDescriptorName function to decode
14754the various types of internal descriptors.  Guards against null
14755descriptors during debug output also.
14756
14757Implemented and deployed a GetNodeName function to extract the 4-
14758character namespace node name.  This function simplifies the debug
14759and error output, as well as guarding against null pointers during
14760output.
14761
14762Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14763simplify the debug and error output of 64-bit integers.  This
14764macro replaces the HIDWORD and LODWORD macros for dumping these
14765integers.
14766
14767Updated the implementation of the Stall() operator to only call
14768AcpiOsStall(), and also return an error if the operand is larger
14769than 255.  This preserves the required behavior of not
14770relinquishing the processor, as would happen if AcpiOsSleep() was
14771called for "long stalls".
14772
14773Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
14774initialized are now treated as NOOPs.
14775
14776Cleaned up a handful of warnings during 64-bit generation.
14777
14778Fixed a reported error where and incorrect GPE number was passed
14779to the GPE dispatch handler.  This value is only used for error
14780output, however.  Used this opportunity to clean up and streamline
14781the GPE dispatch code.
14782
14783Code and Data Size: Current and previous core subsystem library
14784sizes are shown below.  These are the code and data sizes for the
14785acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14786these values do not include any ACPI driver or OSPM code.  The
14787
14788debug version of the code includes the debug output trace
14789mechanism and has a much larger code and data size.  Note that
14790these values will vary depending on the efficiency of the compiler
14791and the compiler options used during generation.
14792
14793  Previous Release (20031002):
14794    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14795    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14796  Current Release:
14797    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14798    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14799
14800
148012) iASL Compiler/Disassembler:
14802
14803Updated the iASL compiler to return an error if the operand to the
14804Stall() operator is larger than 255.
14805
14806
14807----------------------------------------
1480802 October 2003.  Summary of changes for version 20031002:
14809
14810
148111) ACPI CA Core Subsystem:
14812
14813Fixed a problem with Index Fields where the index was not
14814incremented for fields that require multiple writes to the
14815index/data registers (Fields that are wider than the data
14816register.)
14817
14818Fixed a problem with all Field objects where a write could go
14819beyond the end-of-field if the field was larger than the access
14820granularity and therefore required multiple writes to complete the
14821request.  An extra write beyond the end of the field could happen
14822inadvertently.
14823
14824Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14825would incorrectly be returned if the width of the Data Register
14826was larger than the specified field access width.
14827
14828Completed fixes for LoadTable() and Unload() and verified their
14829operation.  Implemented full support for the "DdbHandle" object
14830throughout the ACPI CA subsystem.
14831
14832Implemented full support for the MADT and ECDT tables in the ACPI
14833CA header files.  Even though these tables are not directly
14834consumed by ACPI CA, the header definitions are useful for ACPI
14835device drivers.
14836
14837Integrated resource descriptor fixes posted to the Linux ACPI
14838list.  This included checks for minimum descriptor length, and
14839support for trailing NULL strings within descriptors that have
14840optional string elements.
14841
14842Code and Data Size: Current and previous core subsystem library
14843sizes are shown below.  These are the code and data sizes for the
14844acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14845these values do not include any ACPI driver or OSPM code.  The
14846debug version of the code includes the debug output trace
14847mechanism and has a much larger code and data size.  Note that
14848these values will vary depending on the efficiency of the compiler
14849and the compiler options used during generation.
14850
14851  Previous Release (20030918):
14852    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14853    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14854  Current Release:
14855    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14856    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14857
14858
148592) iASL Compiler:
14860
14861Implemented detection of non-ASCII characters within the input
14862source ASL file.  This catches attempts to compile binary (AML)
14863files early in the compile, with an informative error message.
14864
14865Fixed a problem where the disassembler would fault if the output
14866filename could not be generated or if the output file could not be
14867opened.
14868
14869----------------------------------------
1487018 September 2003.  Summary of changes for version 20030918:
14871
14872
148731) ACPI CA Core Subsystem:
14874
14875Found and fixed a longstanding problem with the late execution of
14876the various deferred AML opcodes (such as Operation Regions,
14877Buffer Fields, Buffers, and Packages).  If the name string
14878specified for the name of the new object placed the object in a
14879scope other than the current scope, the initialization/execution
14880of the opcode failed.  The solution to this problem was to
14881implement a mechanism where the late execution of such opcodes
14882does not attempt to lookup/create the name a second time in an
14883incorrect scope.  This fixes the "region size computed
14884incorrectly" problem.
14885
14886Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
14887Global Lock AE_BAD_PARAMETER error.
14888
14889Fixed several 64-bit issues with prototypes, casting and data
14890types.
14891
14892Removed duplicate prototype from acdisasm.h
14893
14894Fixed an issue involving EC Operation Region Detach (Shaohua Li)
14895
14896Code and Data Size: Current and previous core subsystem library
14897sizes are shown below.  These are the code and data sizes for the
14898acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14899these values do not include any ACPI driver or OSPM code.  The
14900debug version of the code includes the debug output trace
14901mechanism and has a much larger code and data size.  Note that
14902these values will vary depending on the efficiency of the compiler
14903and the compiler options used during generation.
14904
14905  Previous Release:
14906
14907    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14908    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14909  Current Release:
14910    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14911    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14912
14913
149142) Linux:
14915
14916Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14917correct sleep time in seconds.
14918
14919----------------------------------------
1492014 July 2003.  Summary of changes for version 20030619:
14921
149221) ACPI CA Core Subsystem:
14923
14924Parse SSDTs in order discovered, as opposed to reverse order
14925(Hrvoje Habjanic)
14926
14927Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14928Klausner,
14929   Nate Lawson)
14930
14931
149322) Linux:
14933
14934Dynamically allocate SDT list (suggested by Andi Kleen)
14935
14936proc function return value cleanups (Andi Kleen)
14937
14938Correctly handle NMI watchdog during long stalls (Andrew Morton)
14939
14940Make it so acpismp=force works (reported by Andrew Morton)
14941
14942
14943----------------------------------------
1494419 June 2003.  Summary of changes for version 20030619:
14945
149461) ACPI CA Core Subsystem:
14947
14948Fix To/FromBCD, eliminating the need for an arch-specific #define.
14949
14950Do not acquire a semaphore in the S5 shutdown path.
14951
14952Fix ex_digits_needed for 0. (Takayoshi Kochi)
14953
14954Fix sleep/stall code reversal. (Andi Kleen)
14955
14956Revert a change having to do with control method calling
14957semantics.
14958
149592) Linux:
14960
14961acpiphp update (Takayoshi Kochi)
14962
14963Export acpi_disabled for sonypi (Stelian Pop)
14964
14965Mention acpismp=force in config help
14966
14967Re-add acpitable.c and acpismp=force. This improves backwards
14968
14969compatibility and also cleans up the code to a significant degree.
14970
14971Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
14972
14973----------------------------------------
1497422 May 2003.  Summary of changes for version 20030522:
14975
149761) ACPI CA Core Subsystem:
14977
14978Found and fixed a reported problem where an AE_NOT_FOUND error
14979occurred occasionally during _BST evaluation.  This turned out to
14980be an Owner ID allocation issue where a called method did not get
14981a new ID assigned to it.  Eventually, (after 64k calls), the Owner
14982ID UINT16 would wraparound so that the ID would be the same as the
14983caller's and the called method would delete the caller's
14984namespace.
14985
14986Implemented extended error reporting for control methods that are
14987aborted due to a run-time exception.  Output includes the exact
14988AML instruction that caused the method abort, a dump of the method
14989locals and arguments at the time of the abort, and a trace of all
14990nested control method calls.
14991
14992Modified the interpreter to allow the creation of buffers of zero
14993length from the AML code. Implemented new code to ensure that no
14994attempt is made to actually allocate a memory buffer (of length
14995zero) - instead, a simple buffer object with a NULL buffer pointer
14996and length zero is created.  A warning is no longer issued when
14997the AML attempts to create a zero-length buffer.
14998
14999Implemented a workaround for the "leading asterisk issue" in
15000_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15001asterisk is automatically removed if present in any HID, UID, or
15002CID strings.  The iASL compiler will still flag this asterisk as
15003an error, however.
15004
15005Implemented full support for _CID methods that return a package of
15006multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15007now additionally returns a device _CID list if present.  This
15008required a change to the external interface in order to pass an
15009ACPI_BUFFER object as a parameter since the _CID list is of
15010variable length.
15011
15012Fixed a problem with the new AE_SAME_HANDLER exception where
15013handler initialization code did not know about this exception.
15014
15015Code and Data Size: Current and previous core subsystem library
15016sizes are shown below.  These are the code and data sizes for the
15017acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15018these values do not include any ACPI driver or OSPM code.  The
15019debug version of the code includes the debug output trace
15020mechanism and has a much larger code and data size.  Note that
15021these values will vary depending on the efficiency of the compiler
15022and the compiler options used during generation.
15023
15024  Previous Release (20030509):
15025    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15026    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15027  Current Release:
15028    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15029    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15030
15031
150322) Linux:
15033
15034Fixed a bug in which we would reinitialize the ACPI interrupt
15035after it was already working, thus disabling all ACPI and the IRQs
15036for any other device sharing the interrupt. (Thanks to Stian
15037Jordet)
15038
15039Toshiba driver update (John Belmonte)
15040
15041Return only 0 or 1 for our interrupt handler status (Andrew
15042Morton)
15043
15044
150453) iASL Compiler:
15046
15047Fixed a reported problem where multiple (nested) ElseIf()
15048statements were not handled correctly by the compiler, resulting
15049in incorrect warnings and incorrect AML code.  This was a problem
15050in both the ASL parser and the code generator.
15051
15052
150534) Documentation:
15054
15055Added changes to existing interfaces, new exception codes, and new
15056text concerning reference count object management versus garbage
15057collection.
15058
15059----------------------------------------
1506009 May 2003.  Summary of changes for version 20030509.
15061
15062
150631) ACPI CA Core Subsystem:
15064
15065Changed the subsystem initialization sequence to hold off
15066installation of address space handlers until the hardware has been
15067initialized and the system has entered ACPI mode.  This is because
15068the installation of space handlers can cause _REG methods to be
15069run.  Previously, the _REG methods could potentially be run before
15070ACPI mode was enabled.
15071
15072Fixed some memory leak issues related to address space handler and
15073notify handler installation.  There were some problems with the
15074reference count mechanism caused by the fact that the handler
15075objects are shared across several namespace objects.
15076
15077Fixed a reported problem where reference counts within the
15078namespace were not properly updated when named objects created by
15079method execution were deleted.
15080
15081Fixed a reported problem where multiple SSDTs caused a deletion
15082issue during subsystem termination.  Restructured the table data
15083structures to simplify the linked lists and the related code.
15084
15085Fixed a problem where the table ID associated with secondary
15086tables (SSDTs) was not being propagated into the namespace objects
15087created by those tables.  This would only present a problem for
15088tables that are unloaded at run-time, however.
15089
15090Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15091type as the length parameter (instead of UINT32).
15092
15093Solved a long-standing problem where an ALREADY_EXISTS error
15094appears on various systems.  This problem could happen when there
15095are multiple PCI_Config operation regions under a single PCI root
15096bus.  This doesn't happen very frequently, but there are some
15097systems that do this in the ASL.
15098
15099Fixed a reported problem where the internal DeleteNode function
15100was incorrectly handling the case where a namespace node was the
15101first in the parent's child list, and had additional peers (not
15102the only child, but first in the list of children.)
15103
15104Code and Data Size: Current core subsystem library sizes are shown
15105below.  These are the code and data sizes for the acpica.lib
15106produced by the Microsoft Visual C++ 6.0 compiler, and these
15107values do not include any ACPI driver or OSPM code.  The debug
15108version of the code includes the debug output trace mechanism and
15109has a much larger code and data size.  Note that these values will
15110vary depending on the efficiency of the compiler and the compiler
15111options used during generation.
15112
15113  Previous Release
15114    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15115    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15116  Current Release:
15117    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15118    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15119
15120
151212) Linux:
15122
15123Allow ":" in OS override string (Ducrot Bruno)
15124
15125Kobject fix (Greg KH)
15126
15127
151283 iASL Compiler/Disassembler:
15129
15130Fixed a problem in the generation of the C source code files (AML
15131is emitted in C source statements for BIOS inclusion) where the
15132Ascii dump that appears within a C comment at the end of each line
15133could cause a compile time error if the AML sequence happens to
15134have an open comment or close comment sequence embedded.
15135
15136
15137----------------------------------------
1513824 April 2003.  Summary of changes for version 20030424.
15139
15140
151411) ACPI CA Core Subsystem:
15142
15143Support for big-endian systems has been implemented.  Most of the
15144support has been invisibly added behind big-endian versions of the
15145ACPI_MOVE_* macros.
15146
15147Fixed a problem in AcpiHwDisableGpeBlock() and
15148AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15149low level hardware write routine.  The offset parameter was
15150actually eliminated from the low level read/write routines because
15151they had become obsolete.
15152
15153Fixed a problem where a handler object was deleted twice during
15154the removal of a fixed event handler.
15155
15156
151572) Linux:
15158
15159A fix for SMP systems with link devices was contributed by
15160
15161Compaq's Dan Zink.
15162
15163(2.5) Return whether we handled the interrupt in our IRQ handler.
15164(Linux ISRs no longer return void, so we can propagate the handler
15165return value from the ACPI CA core back to the OS.)
15166
15167
15168
151693) Documentation:
15170
15171The ACPI CA Programmer Reference has been updated to reflect new
15172interfaces and changes to existing interfaces.
15173
15174----------------------------------------
1517528 March 2003.  Summary of changes for version 20030328.
15176
151771) ACPI CA Core Subsystem:
15178
15179The GPE Block Device support has been completed.  New interfaces
15180are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15181interfaces (enable, disable, clear, getstatus) have been split
15182into separate interfaces for Fixed Events and General Purpose
15183Events (GPEs) in order to support GPE Block Devices properly.
15184
15185Fixed a problem where the error message "Failed to acquire
15186semaphore" would appear during operations on the embedded
15187controller (EC).
15188
15189Code and Data Size: Current core subsystem library sizes are shown
15190below.  These are the code and data sizes for the acpica.lib
15191produced by the Microsoft Visual C++ 6.0 compiler, and these
15192values do not include any ACPI driver or OSPM code.  The debug
15193version of the code includes the debug output trace mechanism and
15194has a much larger code and data size.  Note that these values will
15195vary depending on the efficiency of the compiler and the compiler
15196options used during generation.
15197
15198  Previous Release
15199    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15200    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15201  Current Release:
15202    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15203    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15204
15205
15206----------------------------------------
1520728 February 2003.  Summary of changes for version 20030228.
15208
15209
152101) ACPI CA Core Subsystem:
15211
15212The GPE handling and dispatch code has been completely overhauled
15213in preparation for support of GPE Block Devices (ID ACPI0006).
15214This affects internal data structures and code only; there should
15215be no differences visible externally.  One new file has been
15216added, evgpeblk.c
15217
15218The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15219fields that are used to determine the GPE block lengths.  The
15220REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15221structures are ignored.  This is per the ACPI specification but it
15222isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15223(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15224
15225In the SCI interrupt handler, removed the read of the PM1_CONTROL
15226register to look at the SCI_EN bit.  On some machines, this read
15227causes an SMI event and greatly slows down SCI events.  (This may
15228in fact be the cause of slow battery status response on some
15229systems.)
15230
15231Fixed a problem where a store of a NULL string to a package object
15232could cause the premature deletion of the object.  This was seen
15233during execution of the battery _BIF method on some systems,
15234resulting in no battery data being returned.
15235
15236Added AcpiWalkResources interface to simplify parsing of resource
15237lists.
15238
15239Code and Data Size: Current core subsystem library sizes are shown
15240below.  These are the code and data sizes for the acpica.lib
15241produced by the Microsoft Visual C++ 6.0 compiler, and these
15242values do not include any ACPI driver or OSPM code.  The debug
15243version of the code includes the debug output trace mechanism and
15244has a much larger code and data size.  Note that these values will
15245vary depending on the efficiency of the compiler and the compiler
15246options used during generation.
15247
15248  Previous Release
15249    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15250    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15251  Current Release:
15252    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15253    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15254
15255
152562) Linux
15257
15258S3 fixes (Ole Rohne)
15259
15260Update ACPI PHP driver with to use new acpi_walk_resource API
15261(Bjorn Helgaas)
15262
15263Add S4BIOS support (Pavel Machek)
15264
15265Map in entire table before performing checksum (John Stultz)
15266
15267Expand the mem= cmdline to allow the specification of reserved and
15268ACPI DATA blocks (Pavel Machek)
15269
15270Never use ACPI on VISWS
15271
15272Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15273
15274Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15275causing us to think that some systems support C2 when they really
15276don't.
15277
15278Do not count processor objects for non-present CPUs (Thanks to
15279Dominik Brodowski)
15280
15281
152823) iASL Compiler:
15283
15284Fixed a problem where ASL include files could not be found and
15285opened.
15286
15287Added support for the _PDC reserved name.
15288
15289
15290----------------------------------------
1529122 January 2003.  Summary of changes for version 20030122.
15292
15293
152941) ACPI CA Core Subsystem:
15295
15296Added a check for constructs of the form:  Store (Local0, Local0)
15297where Local0 is not initialized.  Apparently, some BIOS
15298programmers believe that this is a NOOP.  Since this store doesn't
15299do anything anyway, the new prototype behavior will ignore this
15300error.  This is a case where we can relax the strict checking in
15301the interpreter in the name of compatibility.
15302
15303
153042) Linux
15305
15306The AcpiSrc Source Conversion Utility has been released with the
15307Linux package for the first time.  This is the utility that is
15308used to convert the ACPI CA base source code to the Linux version.
15309
15310(Both) Handle P_BLK lengths shorter than 6 more gracefully
15311
15312(Both) Move more headers to include/acpi, and delete an unused
15313header.
15314
15315(Both) Move drivers/acpi/include directory to include/acpi
15316
15317(Both) Boot functions don't use cmdline, so don't pass it around
15318
15319(Both) Remove include of unused header (Adrian Bunk)
15320
15321(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15322the
15323former now also includes the latter, acpiphp.h only needs the one,
15324now.
15325
15326(2.5) Make it possible to select method of bios restoring after S3
15327resume. [=> no more ugly ifdefs] (Pavel Machek)
15328
15329(2.5) Make proc write interfaces work (Pavel Machek)
15330
15331(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15332
15333(2.5) Break out ACPI Perf code into its own module, under cpufreq
15334(Dominik Brodowski)
15335
15336(2.4) S4BIOS support (Ducrot Bruno)
15337
15338(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15339Visinoni)
15340
15341
153423) iASL Compiler:
15343
15344Added support to disassemble SSDT and PSDTs.
15345
15346Implemented support to obtain SSDTs from the Windows registry if
15347available.
15348
15349
15350----------------------------------------
1535109 January 2003.  Summary of changes for version 20030109.
15352
153531) ACPI CA Core Subsystem:
15354
15355Changed the behavior of the internal Buffer-to-String conversion
15356function.  The current ACPI specification states that the contents
15357of the buffer are "converted to a string of two-character
15358hexadecimal numbers, each separated by a space".  Unfortunately,
15359this definition is not backwards compatible with existing ACPI 1.0
15360implementations (although the behavior was not defined in the ACPI
153611.0 specification).  The new behavior simply copies data from the
15362buffer to the string until a null character is found or the end of
15363the buffer is reached.  The new String object is always null
15364terminated.  This problem was seen during the generation of _BIF
15365battery data where incorrect strings were returned for battery
15366type, etc.  This will also require an errata to the ACPI
15367specification.
15368
15369Renamed all instances of NATIVE_UINT and NATIVE_INT to
15370ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15371
15372Copyright in all module headers (both Linux and non-Linux) has be
15373updated to 2003.
15374
15375Code and Data Size: Current core subsystem library sizes are shown
15376below.  These are the code and data sizes for the acpica.lib
15377produced by the Microsoft Visual C++ 6.0 compiler, and these
15378values do not include any ACPI driver or OSPM code.  The debug
15379version of the code includes the debug output trace mechanism and
15380has a much larger code and data size.  Note that these values will
15381vary depending on the efficiency of the compiler and the compiler
15382options used during generation.
15383
15384  Previous Release
15385    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15386    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15387  Current Release:
15388    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15389    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15390
15391
153922) Linux
15393
15394Fixed an oops on module insertion/removal (Matthew Tippett)
15395
15396(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15397
15398(2.5) Replace pr_debug (Randy Dunlap)
15399
15400(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15401
15402(Both) Eliminate spawning of thread from timer callback, in favor
15403of schedule_work()
15404
15405(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15406
15407(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15408
15409(Both) Add missing statics to button.c (Pavel Machek)
15410
15411Several changes have been made to the source code translation
15412utility that generates the Linux Code in order to make the code
15413more "Linux-like":
15414
15415All typedefs on structs and unions have been removed in keeping
15416with the Linux coding style.
15417
15418Removed the non-Linux SourceSafe module revision number from each
15419module header.
15420
15421Completed major overhaul of symbols to be lowercase for linux.
15422Doubled the number of symbols that are lowercase.
15423
15424Fixed a problem where identifiers within procedure headers and
15425within quotes were not fully lower cased (they were left with a
15426starting capital.)
15427
15428Some C macros whose only purpose is to allow the generation of 16-
15429bit code are now completely removed in the Linux code, increasing
15430readability and maintainability.
15431
15432----------------------------------------
15433
1543412 December 2002.  Summary of changes for version 20021212.
15435
15436
154371) ACPI CA Core Subsystem:
15438
15439Fixed a problem where the creation of a zero-length AML Buffer
15440would cause a fault.
15441
15442Fixed a problem where a Buffer object that pointed to a static AML
15443buffer (in an ACPI table) could inadvertently be deleted, causing
15444memory corruption.
15445
15446Fixed a problem where a user buffer (passed in to the external
15447ACPI CA interfaces) could be overwritten if the buffer was too
15448small to complete the operation, causing memory corruption.
15449
15450Fixed a problem in the Buffer-to-String conversion code where a
15451string of length one was always returned, regardless of the size
15452of the input Buffer object.
15453
15454Removed the NATIVE_CHAR data type across the entire source due to
15455lack of need and lack of consistent use.
15456
15457Code and Data Size: Current core subsystem library sizes are shown
15458below.  These are the code and data sizes for the acpica.lib
15459produced by the Microsoft Visual C++ 6.0 compiler, and these
15460values do not include any ACPI driver or OSPM code.  The debug
15461version of the code includes the debug output trace mechanism and
15462has a much larger code and data size.  Note that these values will
15463vary depending on the efficiency of the compiler and the compiler
15464options used during generation.
15465
15466  Previous Release
15467    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15468    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15469  Current Release:
15470    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15471    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15472
15473
15474----------------------------------------
1547505 December 2002.  Summary of changes for version 20021205.
15476
154771) ACPI CA Core Subsystem:
15478
15479Fixed a problem where a store to a String or Buffer object could
15480cause corruption of the DSDT if the object type being stored was
15481the same as the target object type and the length of the object
15482being stored was equal to or smaller than the original (existing)
15483target object.  This was seen to cause corruption of battery _BIF
15484buffers if the _BIF method modified the buffer on the fly.
15485
15486Fixed a problem where an internal error was generated if a control
15487method invocation was used in an OperationRegion, Buffer, or
15488Package declaration.  This was caused by the deferred parsing of
15489the control method and thus the deferred creation of the internal
15490method object.  The solution to this problem was to create the
15491internal method object at the moment the method is encountered in
15492the first pass - so that subsequent references to the method will
15493able to obtain the required parameter count and thus properly
15494parse the method invocation.  This problem presented itself as an
15495AE_AML_INTERNAL during the pass 1 parse phase during table load.
15496
15497Fixed a problem where the internal String object copy routine did
15498not always allocate sufficient memory for the target String object
15499and caused memory corruption.  This problem was seen to cause
15500"Allocation already present in list!" errors as memory allocation
15501became corrupted.
15502
15503Implemented a new function for the evaluation of namespace objects
15504that allows the specification of the allowable return object
15505types.  This simplifies a lot of code that checks for a return
15506object of one or more specific objects returned from the
15507evaluation (such as _STA, etc.)  This may become and external
15508function if it would be useful to ACPI-related drivers.
15509
15510Completed another round of prefixing #defines with "ACPI_" for
15511clarity.
15512
15513Completed additional code restructuring to allow more modular
15514linking for iASL compiler and AcpiExec.  Several files were split
15515creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15516
15517Implemented an abort mechanism to terminate an executing control
15518method via the AML debugger.  This feature is useful for debugging
15519control methods that depend (wait) for specific hardware
15520responses.
15521
15522Code and Data Size: Current core subsystem library sizes are shown
15523below.  These are the code and data sizes for the acpica.lib
15524produced by the Microsoft Visual C++ 6.0 compiler, and these
15525values do not include any ACPI driver or OSPM code.  The debug
15526version of the code includes the debug output trace mechanism and
15527has a much larger code and data size.  Note that these values will
15528vary depending on the efficiency of the compiler and the compiler
15529options used during generation.
15530
15531  Previous Release
15532    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15533    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15534  Current Release:
15535    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15536    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15537
15538
155392) iASL Compiler/Disassembler
15540
15541Fixed a compiler code generation problem for "Interrupt" Resource
15542Descriptors.  If specified in the ASL, the optional "Resource
15543Source Index" and "Resource Source" fields were not inserted into
15544the correct location within the AML resource descriptor, creating
15545an invalid descriptor.
15546
15547Fixed a disassembler problem for "Interrupt" resource descriptors.
15548The optional "Resource Source Index" and "Resource Source" fields
15549were ignored.
15550
15551
15552----------------------------------------
1555322 November 2002.  Summary of changes for version 20021122.
15554
15555
155561) ACPI CA Core Subsystem:
15557
15558Fixed a reported problem where an object stored to a Method Local
15559or Arg was not copied to a new object during the store - the
15560object pointer was simply copied to the Local/Arg.  This caused
15561all subsequent operations on the Local/Arg to also affect the
15562original source of the store operation.
15563
15564Fixed a problem where a store operation to a Method Local or Arg
15565was not completed properly if the Local/Arg contained a reference
15566(from RefOf) to a named field.  The general-purpose store-to-
15567namespace-node code is now used so that this case is handled
15568automatically.
15569
15570Fixed a problem where the internal object copy routine would cause
15571a protection fault if the object being copied was a Package and
15572contained either 1) a NULL package element or 2) a nested sub-
15573package.
15574
15575Fixed a problem with the GPE initialization that resulted from an
15576ambiguity in the ACPI specification.  One section of the
15577specification states that both the address and length of the GPE
15578block must be zero if the block is not supported.  Another section
15579implies that only the address need be zero if the block is not
15580supported.  The code has been changed so that both the address and
15581the length must be non-zero to indicate a valid GPE block (i.e.,
15582if either the address or the length is zero, the GPE block is
15583invalid.)
15584
15585Code and Data Size: Current core subsystem library sizes are shown
15586below.  These are the code and data sizes for the acpica.lib
15587produced by the Microsoft Visual C++ 6.0 compiler, and these
15588values do not include any ACPI driver or OSPM code.  The debug
15589version of the code includes the debug output trace mechanism and
15590has a much larger code and data size.  Note that these values will
15591vary depending on the efficiency of the compiler and the compiler
15592options used during generation.
15593
15594  Previous Release
15595    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15596    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15597  Current Release:
15598    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15599    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15600
15601
156022) Linux
15603
15604Cleaned up EC driver. Exported an external EC read/write
15605interface. By going through this, other drivers (most notably
15606sonypi) will be able to serialize access to the EC.
15607
15608
156093) iASL Compiler/Disassembler
15610
15611Implemented support to optionally generate include files for both
15612ASM and C (the -i switch).  This simplifies BIOS development by
15613automatically creating include files that contain external
15614declarations for the symbols that are created within the
15615
15616(optionally generated) ASM and C AML source files.
15617
15618
15619----------------------------------------
1562015 November 2002.  Summary of changes for version 20021115.
15621
156221) ACPI CA Core Subsystem:
15623
15624Fixed a memory leak problem where an error during resolution of
15625
15626method arguments during a method invocation from another method
15627failed to cleanup properly by deleting all successfully resolved
15628argument objects.
15629
15630Fixed a problem where the target of the Index() operator was not
15631correctly constructed if the source object was a package.  This
15632problem has not been detected because the use of a target operand
15633with Index() is very rare.
15634
15635Fixed a problem with the Index() operator where an attempt was
15636made to delete the operand objects twice.
15637
15638Fixed a problem where an attempt was made to delete an operand
15639twice during execution of the CondRefOf() operator if the target
15640did not exist.
15641
15642Implemented the first of perhaps several internal create object
15643functions that create and initialize a specific object type.  This
15644consolidates duplicated code wherever the object is created, thus
15645shrinking the size of the subsystem.
15646
15647Implemented improved debug/error messages for errors that occur
15648during nested method invocations.  All executing method pathnames
15649are displayed (with the error) as the call stack is unwound - thus
15650simplifying debug.
15651
15652Fixed a problem introduced in the 10/02 release that caused
15653premature deletion of a buffer object if a buffer was used as an
15654ASL operand where an integer operand is required (Thus causing an
15655implicit object conversion from Buffer to Integer.)  The change in
15656the 10/02 release was attempting to fix a memory leak (albeit
15657incorrectly.)
15658
15659Code and Data Size: Current core subsystem library sizes are shown
15660below.  These are the code and data sizes for the acpica.lib
15661produced by the Microsoft Visual C++ 6.0 compiler, and these
15662values do not include any ACPI driver or OSPM code.  The debug
15663version of the code includes the debug output trace mechanism and
15664has a much larger code and data size.  Note that these values will
15665vary depending on the efficiency of the compiler and the compiler
15666options used during generation.
15667
15668  Previous Release
15669    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15670    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15671  Current Release:
15672    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15673    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15674
15675
156762) Linux
15677
15678Changed the implementation of the ACPI semaphores to use down()
15679instead of down_interruptable().  It is important that the
15680execution of ACPI control methods not be interrupted by signals.
15681Methods must run to completion, or the system may be left in an
15682unknown/unstable state.
15683
15684Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15685(Shawn Starr)
15686
15687
156883) iASL Compiler/Disassembler
15689
15690
15691Changed the default location of output files.  All output files
15692are now placed in the current directory by default instead of in
15693the directory of the source file.  This change may affect some
15694existing makefiles, but it brings the behavior of the compiler in
15695line with other similar tools.  The location of the output files
15696can be overridden with the -p command line switch.
15697
15698
15699----------------------------------------
1570011 November 2002.  Summary of changes for version 20021111.
15701
15702
157030) ACPI Specification 2.0B is released and is now available at:
15704http://www.acpi.info/index.html
15705
15706
157071) ACPI CA Core Subsystem:
15708
15709Implemented support for the ACPI 2.0 SMBus Operation Regions.
15710This includes the early detection and handoff of the request to
15711the SMBus region handler (avoiding all of the complex field
15712support code), and support for the bidirectional return packet
15713from an SMBus write operation.  This paves the way for the
15714development of SMBus drivers in each host operating system.
15715
15716Fixed a problem where the semaphore WAIT_FOREVER constant was
15717defined as 32 bits, but must be 16 bits according to the ACPI
15718specification.  This had the side effect of causing ASL
15719Mutex/Event timeouts even though the ASL code requested a wait
15720forever.  Changed all internal references to the ACPI timeout
15721parameter to 16 bits to prevent future problems.  Changed the name
15722of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15723
15724Code and Data Size: Current core subsystem library sizes are shown
15725below.  These are the code and data sizes for the acpica.lib
15726produced by the Microsoft Visual C++ 6.0 compiler, and these
15727values do not include any ACPI driver or OSPM code.  The debug
15728version of the code includes the debug output trace mechanism and
15729has a much larger code and data size.  Note that these values will
15730vary depending on the efficiency of the compiler and the compiler
15731options used during generation.
15732
15733  Previous Release
15734    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15735    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15736  Current Release:
15737    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15738    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15739
15740
157412) Linux
15742
15743Module loading/unloading fixes (John Cagle)
15744
15745
157463) iASL Compiler/Disassembler
15747
15748Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15749
15750Implemented support for the disassembly of all SMBus protocol
15751keywords (SMBQuick, SMBWord, etc.)
15752
15753----------------------------------------
1575401 November 2002.  Summary of changes for version 20021101.
15755
15756
157571) ACPI CA Core Subsystem:
15758
15759Fixed a problem where platforms that have a GPE1 block but no GPE0
15760block were not handled correctly.  This resulted in a "GPE
15761overlap" error message.  GPE0 is no longer required.
15762
15763Removed code added in the previous release that inserted nodes
15764into the namespace in alphabetical order.  This caused some side-
15765effects on various machines.  The root cause of the problem is
15766still under investigation since in theory, the internal ordering
15767of the namespace nodes should not matter.
15768
15769
15770Enhanced error reporting for the case where a named object is not
15771found during control method execution.  The full ACPI namepath
15772(name reference) of the object that was not found is displayed in
15773this case.
15774
15775Note: as a result of the overhaul of the namespace object types in
15776the previous release, the namespace nodes for the predefined
15777scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
15778instead of ACPI_TYPE_ANY.  This simplifies the namespace
15779management code but may affect code that walks the namespace tree
15780looking for specific object types.
15781
15782Code and Data Size: Current core subsystem library sizes are shown
15783below.  These are the code and data sizes for the acpica.lib
15784produced by the Microsoft Visual C++ 6.0 compiler, and these
15785values do not include any ACPI driver or OSPM code.  The debug
15786version of the code includes the debug output trace mechanism and
15787has a much larger code and data size.  Note that these values will
15788vary depending on the efficiency of the compiler and the compiler
15789options used during generation.
15790
15791  Previous Release
15792    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15793    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15794  Current Release:
15795    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15796    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15797
15798
157992) Linux
15800
15801Fixed a problem introduced in the previous release where the
15802Processor and Thermal objects were not recognized and installed in
15803/proc.  This was related to the scope type change described above.
15804
15805
158063) iASL Compiler/Disassembler
15807
15808Implemented the -g option to get all of the required ACPI tables
15809from the registry and save them to files (Windows version of the
15810compiler only.)  The required tables are the FADT, FACS, and DSDT.
15811
15812Added ACPI table checksum validation during table disassembly in
15813order to catch corrupted tables.
15814
15815
15816----------------------------------------
1581722 October 2002.  Summary of changes for version 20021022.
15818
158191) ACPI CA Core Subsystem:
15820
15821Implemented a restriction on the Scope operator that the target
15822must already exist in the namespace at the time the operator is
15823encountered (during table load or method execution).  In other
15824words, forward references are not allowed and Scope() cannot
15825create a new object. This changes the previous behavior where the
15826interpreter would create the name if not found.  This new behavior
15827correctly enables the search-to-root algorithm during namespace
15828lookup of the target name.  Because of this upsearch, this fixes
15829the known Compaq _SB_.OKEC problem and makes both the AML
15830interpreter and iASL compiler compatible with other ACPI
15831implementations.
15832
15833Completed a major overhaul of the internal ACPI object types for
15834the ACPI Namespace and the associated operand objects.  Many of
15835these types had become obsolete with the introduction of the two-
15836pass namespace load.  This cleanup simplifies the code and makes
15837the entire namespace load mechanism much clearer and easier to
15838understand.
15839
15840Improved debug output for tracking scope opening/closing to help
15841diagnose scoping issues.  The old scope name as well as the new
15842scope name are displayed.  Also improved error messages for
15843problems with ASL Mutex objects and error messages for GPE
15844problems.
15845
15846Cleaned up the namespace dump code, removed obsolete code.
15847
15848All string output (for all namespace/object dumps) now uses the
15849common ACPI string output procedure which handles escapes properly
15850and does not emit non-printable characters.
15851
15852Fixed some issues with constants in the 64-bit version of the
15853local C library (utclib.c)
15854
15855
158562) Linux
15857
15858EC Driver:  No longer attempts to acquire the Global Lock at
15859interrupt level.
15860
15861
158623) iASL Compiler/Disassembler
15863
15864Implemented ACPI 2.0B grammar change that disallows all Type 1 and
158652 opcodes outside of a control method.  This means that the
15866"executable" operators (versus the "namespace" operators) cannot
15867be used at the table level; they can only be used within a control
15868method.
15869
15870Implemented the restriction on the Scope() operator where the
15871target must already exist in the namespace at the time the
15872operator is encountered (during ASL compilation). In other words,
15873forward references are not allowed and Scope() cannot create a new
15874object.  This makes the iASL compiler compatible with other ACPI
15875implementations and makes the Scope() implementation adhere to the
15876ACPI specification.
15877
15878Fixed a problem where namepath optimization for the Alias operator
15879was optimizing the wrong path (of the two namepaths.)  This caused
15880a "Missing alias link" error message.
15881
15882Fixed a problem where an "unknown reserved name" warning could be
15883incorrectly generated for names like "_SB" when the trailing
15884underscore is not used in the original ASL.
15885
15886Fixed a problem where the reserved name check did not handle
15887NamePaths with multiple NameSegs correctly.  The first nameseg of
15888the NamePath was examined instead of the last NameSeg.
15889
15890
15891----------------------------------------
15892
1589302 October 2002.  Summary of changes for this release.
15894
15895
158961) ACPI CA Core Subsystem version 20021002:
15897
15898Fixed a problem where a store/copy of a string to an existing
15899string did not always set the string length properly in the String
15900object.
15901
15902Fixed a reported problem with the ToString operator where the
15903behavior was identical to the ToHexString operator instead of just
15904simply converting a raw buffer to a string data type.
15905
15906Fixed a problem where CopyObject and the other "explicit"
15907conversion operators were not updating the internal namespace node
15908type as part of the store operation.
15909
15910Fixed a memory leak during implicit source operand conversion
15911where the original object was not deleted if it was converted to a
15912new object of a different type.
15913
15914Enhanced error messages for all problems associated with namespace
15915lookups.  Common procedure generates and prints the lookup name as
15916well as the formatted status.
15917
15918Completed implementation of a new design for the Alias support
15919within the namespace.  The existing design did not handle the case
15920where a new object was assigned to one of the two names due to the
15921use of an explicit conversion operator, resulting in the two names
15922pointing to two different objects.  The new design simply points
15923the Alias name to the original name node - not to the object.
15924This results in a level of indirection that must be handled in the
15925name resolution mechanism.
15926
15927Code and Data Size: Current core subsystem library sizes are shown
15928below.  These are the code and data sizes for the acpica.lib
15929produced by the Microsoft Visual C++ 6.0 compiler, and these
15930values do not include any ACPI driver or OSPM code.  The debug
15931version of the code includes the debug output trace mechanism and
15932has a larger code and data size.  Note that these values will vary
15933depending on the efficiency of the compiler and the compiler
15934options used during generation.
15935
15936  Previous Release
15937    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15938    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
15939  Current Release:
15940    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15941    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15942
15943
159442) Linux
15945
15946Initialize thermal driver's timer before it is used. (Knut
15947Neumann)
15948
15949Allow handling negative celsius values. (Kochi Takayoshi)
15950
15951Fix thermal management and make trip points. R/W (Pavel Machek)
15952
15953Fix /proc/acpi/sleep. (P. Christeas)
15954
15955IA64 fixes. (David Mosberger)
15956
15957Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15958
15959Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15960Brodowski)
15961
15962
159633) iASL Compiler/Disassembler
15964
15965Clarified some warning/error messages.
15966
15967
15968----------------------------------------
1596918 September 2002.  Summary of changes for this release.
15970
15971
159721) ACPI CA Core Subsystem version 20020918:
15973
15974Fixed a reported problem with reference chaining (via the Index()
15975and RefOf() operators) in the ObjectType() and SizeOf() operators.
15976The definition of these operators includes the dereferencing of
15977all chained references to return information on the base object.
15978
15979Fixed a problem with stores to indexed package elements - the
15980existing code would not complete the store if an "implicit
15981conversion" was not performed.  In other words, if the existing
15982object (package element) was to be replaced completely, the code
15983didn't handle this case.
15984
15985Relaxed typechecking on the ASL "Scope" operator to allow the
15986target name to refer to an object of type Integer, String, or
15987Buffer, in addition to the scoping object types (Device,
15988predefined Scopes, Processor, PowerResource, and ThermalZone.)
15989This allows existing AML code that has workarounds for a bug in
15990Windows to function properly.  A warning is issued, however.  This
15991affects both the AML interpreter and the iASL compiler. Below is
15992an example of this type of ASL code:
15993
15994      Name(DEB,0x00)
15995      Scope(DEB)
15996      {
15997
15998Fixed some reported problems with 64-bit integer support in the
15999local implementation of C library functions (clib.c)
16000
16001
160022) Linux
16003
16004Use ACPI fix map region instead of IOAPIC region, since it is
16005undefined in non-SMP.
16006
16007Ensure that the SCI has the proper polarity and trigger, even on
16008systems that do not have an interrupt override entry in the MADT.
16009
160102.5 big driver reorganization (Pat Mochel)
16011
16012Use early table mapping code from acpitable.c (Andi Kleen)
16013
16014New blacklist entries (Andi Kleen)
16015
16016Blacklist improvements. Split blacklist code out into a separate
16017file. Move checking the blacklist to very early. Previously, we
16018would use ACPI tables, and then halfway through init, check the
16019blacklist -- too late. Now, it's early enough to completely fall-
16020back to non-ACPI.
16021
16022
160233) iASL Compiler/Disassembler version 20020918:
16024
16025Fixed a problem where the typechecking code didn't know that an
16026alias could point to a method.  In other words, aliases were not
16027being dereferenced during typechecking.
16028
16029
16030----------------------------------------
1603129 August 2002.  Summary of changes for this release.
16032
160331) ACPI CA Core Subsystem Version 20020829:
16034
16035If the target of a Scope() operator already exists, it must be an
16036object type that actually opens a scope -- such as a Device,
16037Method, Scope, etc.  This is a fatal runtime error.  Similar error
16038check has been added to the iASL compiler also.
16039
16040Tightened up the namespace load to disallow multiple names in the
16041same scope.  This previously was allowed if both objects were of
16042the same type.  (i.e., a lookup was the same as entering a new
16043name).
16044
16045
160462) Linux
16047
16048Ensure that the ACPI interrupt has the proper trigger and
16049polarity.
16050
16051local_irq_disable is extraneous. (Matthew Wilcox)
16052
16053Make "acpi=off" actually do what it says, and not use the ACPI
16054interpreter *or* the tables.
16055
16056Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16057Takayoshi)
16058
16059
160603) iASL Compiler/Disassembler  Version 20020829:
16061
16062Implemented namepath optimization for name declarations.  For
16063example, a declaration like "Method (\_SB_.ABCD)" would get
16064optimized to "Method (ABCD)" if the declaration is within the
16065\_SB_ scope.  This optimization is in addition to the named
16066reference path optimization first released in the previous
16067version. This would seem to complete all possible optimizations
16068for namepaths within the ASL/AML.
16069
16070If the target of a Scope() operator already exists, it must be an
16071object type that actually opens a scope -- such as a Device,
16072Method, Scope, etc.
16073
16074Implemented a check and warning for unreachable code in the same
16075block below a Return() statement.
16076
16077Fixed a problem where the listing file was not generated if the
16078compiler aborted if the maximum error count was exceeded (200).
16079
16080Fixed a problem where the typechecking of method return values was
16081broken.  This includes the check for a return value when the
16082method is invoked as a TermArg (a return value is expected.)
16083
16084Fixed a reported problem where EOF conditions during a quoted
16085string or comment caused a fault.
16086
16087
16088----------------------------------------
1608915 August 2002.  Summary of changes for this release.
16090
160911) ACPI CA Core Subsystem Version 20020815:
16092
16093Fixed a reported problem where a Store to a method argument that
16094contains a reference did not perform the indirect store correctly.
16095This problem was created during the conversion to the new
16096reference object model - the indirect store to a method argument
16097code was not updated to reflect the new model.
16098
16099Reworked the ACPI mode change code to better conform to ACPI 2.0,
16100handle corner cases, and improve code legibility (Kochi Takayoshi)
16101
16102Fixed a problem with the pathname parsing for the carat (^)
16103prefix.  The heavy use of the carat operator by the new namepath
16104optimization in the iASL compiler uncovered a problem with the AML
16105interpreter handling of this prefix.  In the case where one or
16106more carats precede a single nameseg, the nameseg was treated as
16107standalone and the search rule (to root) was inadvertently
16108applied.  This could cause both the iASL compiler and the
16109interpreter to find the wrong object or to miss the error that
16110should occur if the object does not exist at that exact pathname.
16111
16112Found and fixed the problem where the HP Pavilion DSDT would not
16113load.  This was a relatively minor tweak to the table loading code
16114(a problem caused by the unexpected encounter with a method
16115invocation not within a control method), but it does not solve the
16116overall issue of the execution of AML code at the table level.
16117This investigation is still ongoing.
16118
16119Code and Data Size: Current core subsystem library sizes are shown
16120below.  These are the code and data sizes for the acpica.lib
16121produced by the Microsoft Visual C++ 6.0 compiler, and these
16122values do not include any ACPI driver or OSPM code.  The debug
16123version of the code includes the debug output trace mechanism and
16124has a larger code and data size.  Note that these values will vary
16125depending on the efficiency of the compiler and the compiler
16126options used during generation.
16127
16128  Previous Release
16129    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16130    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16131  Current Release:
16132    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16133    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16134
16135
161362) Linux
16137
16138Remove redundant slab.h include (Brad Hards)
16139
16140Fix several bugs in thermal.c (Herbert Nachtnebel)
16141
16142Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16143
16144Change acpi_system_suspend to use updated irq functions (Pavel
16145Machek)
16146
16147Export acpi_get_firmware_table (Matthew Wilcox)
16148
16149Use proper root proc entry for ACPI (Kochi Takayoshi)
16150
16151Fix early-boot table parsing (Bjorn Helgaas)
16152
16153
161543) iASL Compiler/Disassembler
16155
16156Reworked the compiler options to make them more consistent and to
16157use two-letter options where appropriate.  We were running out of
16158sensible letters.   This may break some makefiles, so check the
16159current options list by invoking the compiler with no parameters.
16160
16161Completed the design and implementation of the ASL namepath
16162optimization option for the compiler.  This option optimizes all
16163references to named objects to the shortest possible path.  The
16164first attempt tries to utilize a single nameseg (4 characters) and
16165the "search-to-root" algorithm used by the interpreter.  If that
16166cannot be used (because either the name is not in the search path
16167or there is a conflict with another object with the same name),
16168the pathname is optimized using the carat prefix (usually a
16169shorter string than specifying the entire path from the root.)
16170
16171Implemented support to obtain the DSDT from the Windows registry
16172(when the disassembly option is specified with no input file).
16173Added this code as the implementation for AcpiOsTableOverride in
16174the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16175utility) to scan memory for the DSDT to the AcpiOsTableOverride
16176function in the DOS OSL to make the disassembler truly OS
16177independent.
16178
16179Implemented a new option to disassemble and compile in one step.
16180When used without an input filename, this option will grab the
16181DSDT from the local machine, disassemble it, and compile it in one
16182step.
16183
16184Added a warning message for invalid escapes (a backslash followed
16185by any character other than the allowable escapes).  This catches
16186the quoted string error "\_SB_" (which should be "\\_SB_" ).
16187
16188Also, there are numerous instances in the ACPI specification where
16189this error occurs.
16190
16191Added a compiler option to disable all optimizations.  This is
16192basically the "compatibility mode" because by using this option,
16193the AML code will come out exactly the same as other ASL
16194compilers.
16195
16196Added error messages for incorrectly ordered dependent resource
16197functions.  This includes: missing EndDependentFn macro at end of
16198dependent resource list, nested dependent function macros (both
16199start and end), and missing StartDependentFn macro.  These are
16200common errors that should be caught at compile time.
16201
16202Implemented _OSI support for the disassembler and compiler.  _OSI
16203must be included in the namespace for proper disassembly (because
16204the disassembler must know the number of arguments.)
16205
16206Added an "optimization" message type that is optional (off by
16207default).  This message is used for all optimizations - including
16208constant folding, integer optimization, and namepath optimization.
16209
16210----------------------------------------
1621125 July 2002.  Summary of changes for this release.
16212
16213
162141) ACPI CA Core Subsystem Version 20020725:
16215
16216The AML Disassembler has been enhanced to produce compilable ASL
16217code and has been integrated into the iASL compiler (see below) as
16218well as the single-step disassembly for the AML debugger and the
16219disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16220resource templates and macros are fully supported.  The
16221disassembler has been tested on over 30 different AML files,
16222producing identical AML when the resulting disassembled ASL file
16223is recompiled with the same ASL compiler.
16224
16225Modified the Resource Manager to allow zero interrupts and zero
16226dma channels during the GetCurrentResources call.  This was
16227causing problems on some platforms.
16228
16229Added the AcpiOsRedirectOutput interface to the OSL to simplify
16230output redirection for the AcpiOsPrintf and AcpiOsVprintf
16231interfaces.
16232
16233Code and Data Size: Current core subsystem library sizes are shown
16234below.  These are the code and data sizes for the acpica.lib
16235produced by the Microsoft Visual C++ 6.0 compiler, and these
16236values do not include any ACPI driver or OSPM code.  The debug
16237version of the code includes the debug output trace mechanism and
16238has a larger code and data size.  Note that these values will vary
16239depending on the efficiency of the compiler and the compiler
16240options used during generation.
16241
16242  Previous Release
16243    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16244    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16245  Current Release:
16246    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16247    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16248
16249
162502) Linux
16251
16252Fixed a panic in the EC driver (Dominik Brodowski)
16253
16254Implemented checksum of the R/XSDT itself during Linux table scan
16255(Richard Schaal)
16256
16257
162583) iASL compiler
16259
16260The AML disassembler is integrated into the compiler.  The "-d"
16261option invokes the disassembler  to completely disassemble an
16262input AML file, producing as output a text ASL file with the
16263extension ".dsl" (to avoid name collisions with existing .asl
16264source files.)  A future enhancement will allow the disassembler
16265to obtain the BIOS DSDT from the registry under Windows.
16266
16267Fixed a problem with the VendorShort and VendorLong resource
16268descriptors where an invalid AML sequence was created.
16269
16270Implemented a fix for BufferData term in the ASL parser.  It was
16271inadvertently defined twice, allowing invalid syntax to pass and
16272causing reduction conflicts.
16273
16274Fixed a problem where the Ones opcode could get converted to a
16275value of zero if "Ones" was used where a byte, word or dword value
16276was expected.  The 64-bit value is now truncated to the correct
16277size with the correct value.
16278
16279
16280
16281----------------------------------------
1628202 July 2002.  Summary of changes for this release.
16283
16284
162851) ACPI CA Core Subsystem Version 20020702:
16286
16287The Table Manager code has been restructured to add several new
16288features.  Tables that are not required by the core subsystem
16289(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16290validated in any way and are returned from AcpiGetFirmwareTable if
16291requested.  The AcpiOsTableOverride interface is now called for
16292each table that is loaded by the subsystem in order to allow the
16293host to override any table it chooses.  Previously, only the DSDT
16294could be overridden.  Added one new files, tbrsdt.c and
16295tbgetall.c.
16296
16297Fixed a problem with the conversion of internal package objects to
16298external objects (when a package is returned from a control
16299method.)  The return buffer length was set to zero instead of the
16300proper length of the package object.
16301
16302Fixed a reported problem with the use of the RefOf and DeRefOf
16303operators when passing reference arguments to control methods.  A
16304new type of Reference object is used internally for references
16305produced by the RefOf operator.
16306
16307Added additional error messages in the Resource Manager to explain
16308AE_BAD_DATA errors when they occur during resource parsing.
16309
16310Split the AcpiEnableSubsystem into two primitives to enable a
16311finer granularity initialization sequence.  These two calls should
16312be called in this order: AcpiEnableSubsystem (flags),
16313AcpiInitializeObjects (flags).  The flags parameter remains the
16314same.
16315
16316
163172) Linux
16318
16319Updated the ACPI utilities module to understand the new style of
16320fully resolved package objects that are now returned from the core
16321subsystem.  This eliminates errors of the form:
16322
16323    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16324    acpi_utils-0430 [145] acpi_evaluate_reference:
16325        Invalid element in package (not a device reference)
16326
16327The method evaluation utility uses the new buffer allocation
16328scheme instead of calling AcpiEvaluate Object twice.
16329
16330Added support for ECDT. This allows the use of the Embedded
16331
16332Controller before the namespace has been fully initialized, which
16333is necessary for ACPI 2.0 support, and for some laptops to
16334initialize properly. (Laptops using ECDT are still rare, so only
16335limited testing was performed of the added functionality.)
16336
16337Fixed memory leaks in the EC driver.
16338
16339Eliminated a brittle code structure in acpi_bus_init().
16340
16341Eliminated the acpi_evaluate() helper function in utils.c. It is
16342no longer needed since acpi_evaluate_object can optionally
16343allocate memory for the return object.
16344
16345Implemented fix for keyboard hang when getting battery readings on
16346some systems (Stephen White)
16347
16348PCI IRQ routing update (Dominik Brodowski)
16349
16350Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16351support
16352
16353----------------------------------------
1635411 June 2002.  Summary of changes for this release.
16355
16356
163571) ACPI CA Core Subsystem Version 20020611:
16358
16359Fixed a reported problem where constants such as Zero and One
16360appearing within _PRT packages were not handled correctly within
16361the resource manager code.  Originally reported against the ASL
16362compiler because the code generator now optimizes integers to
16363their minimal AML representation (i.e. AML constants if possible.)
16364The _PRT code now handles all AML constant opcodes correctly
16365(Zero, One, Ones, Revision).
16366
16367Fixed a problem with the Concatenate operator in the AML
16368interpreter where a buffer result object was incorrectly marked as
16369not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16370
16371All package sub-objects are now fully resolved before they are
16372returned from the external ACPI interfaces.  This means that name
16373strings are resolved to object handles, and constant operators
16374(Zero, One, Ones, Revision) are resolved to Integers.
16375
16376Implemented immediate resolution of the AML Constant opcodes
16377(Zero, One, Ones, Revision) to Integer objects upon detection
16378within the AML stream. This has simplified and reduced the
16379generated code size of the subsystem by eliminating about 10
16380switch statements for these constants (which previously were
16381contained in Reference objects.)  The complicating issues are that
16382the Zero opcode is used as a "placeholder" for unspecified
16383optional target operands and stores to constants are defined to be
16384no-ops.
16385
16386Code and Data Size: Current core subsystem library sizes are shown
16387below. These are the code and data sizes for the acpica.lib
16388produced by the Microsoft Visual C++ 6.0 compiler, and these
16389values do not include any ACPI driver or OSPM code.  The debug
16390version of the code includes the debug output trace mechanism and
16391has a larger code and data size.  Note that these values will vary
16392depending on the efficiency of the compiler and the compiler
16393options used during generation.
16394
16395  Previous Release
16396    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16397    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16398  Current Release:
16399    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16400    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16401
16402
164032) Linux
16404
16405
16406Added preliminary support for obtaining _TRA data for PCI root
16407bridges (Bjorn Helgaas).
16408
16409
164103) iASL Compiler Version X2046:
16411
16412Fixed a problem where the "_DDN" reserved name was defined to be a
16413control method with one argument.  There are no arguments, and
16414_DDN does not have to be a control method.
16415
16416Fixed a problem with the Linux version of the compiler where the
16417source lines printed with error messages were the wrong lines.
16418This turned out to be the "LF versus CR/LF" difference between
16419Windows and Unix.  This appears to be the longstanding issue
16420concerning listing output and error messages.
16421
16422Fixed a problem with the Linux version of compiler where opcode
16423names within error messages were wrong.  This was caused by a
16424slight difference in the output of the Flex tool on Linux versus
16425Windows.
16426
16427Fixed a problem with the Linux compiler where the hex output files
16428contained some garbage data caused by an internal buffer overrun.
16429
16430
16431----------------------------------------
1643217 May 2002.  Summary of changes for this release.
16433
16434
164351) ACPI CA Core Subsystem Version 20020517:
16436
16437Implemented a workaround to an BIOS bug discovered on the HP
16438OmniBook where the FADT revision number and the table size are
16439inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16440behavior is to fallback to using only the ACPI 1.0 fields of the
16441FADT if the table is too small to be a ACPI 2.0 table as claimed
16442by the revision number.  Although this is a BIOS bug, this is a
16443case where the workaround is simple enough and with no side
16444effects, so it seemed prudent to add it.  A warning message is
16445issued, however.
16446
16447Implemented minimum size checks for the fixed-length ACPI tables -
16448- the FADT and FACS, as well as consistency checks between the
16449revision number and the table size.
16450
16451Fixed a reported problem in the table override support where the
16452new table pointer was incorrectly treated as a physical address
16453instead of a logical address.
16454
16455Eliminated the use of the AE_AML_ERROR exception and replaced it
16456with more descriptive codes.
16457
16458Fixed a problem where an exception would occur if an ASL Field was
16459defined with no named Field Units underneath it (used by some
16460index fields).
16461
16462Code and Data Size: Current core subsystem library sizes are shown
16463below.  These are the code and data sizes for the acpica.lib
16464produced by the Microsoft Visual C++ 6.0 compiler, and these
16465values do not include any ACPI driver or OSPM code.  The debug
16466version of the code includes the debug output trace mechanism and
16467has a larger code and data size.  Note that these values will vary
16468depending on the efficiency of the compiler and the compiler
16469options used during generation.
16470
16471  Previous Release
16472    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16473    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16474  Current Release:
16475    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16476    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16477
16478
16479
164802) Linux
16481
16482Much work done on ACPI init (MADT and PCI IRQ routing support).
16483(Paul D. and Dominik Brodowski)
16484
16485Fix PCI IRQ-related panic on boot (Sam Revitch)
16486
16487Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16488
16489Fix "MHz" typo (Dominik Brodowski)
16490
16491Fix RTC year 2000 issue (Dominik Brodowski)
16492
16493Preclude multiple button proc entries (Eric Brunet)
16494
16495Moved arch-specific code out of include/platform/aclinux.h
16496
164973) iASL Compiler Version X2044:
16498
16499Implemented error checking for the string used in the EISAID macro
16500(Usually used in the definition of the _HID object.)  The code now
16501strictly enforces the PnP format - exactly 7 characters, 3
16502uppercase letters and 4 hex digits.
16503
16504If a raw string is used in the definition of the _HID object
16505(instead of the EISAID macro), the string must contain all
16506alphanumeric characters (e.g., "*PNP0011" is not allowed because
16507of the asterisk.)
16508
16509Implemented checking for invalid use of ACPI reserved names for
16510most of the name creation operators (Name, Device, Event, Mutex,
16511OperationRegion, PowerResource, Processor, and ThermalZone.)
16512Previously, this check was only performed for control methods.
16513
16514Implemented an additional check on the Name operator to emit an
16515error if a reserved name that must be implemented in ASL as a
16516control method is used.  We know that a reserved name must be a
16517method if it is defined with input arguments.
16518
16519The warning emitted when a namespace object reference is not found
16520during the cross reference phase has been changed into an error.
16521The "External" directive should be used for names defined in other
16522modules.
16523
16524
165254) Tools and Utilities
16526
16527The 16-bit tools (adump16 and aexec16) have been regenerated and
16528tested.
16529
16530Fixed a problem with the output of both acpidump and adump16 where
16531the indentation of closing parentheses and brackets was not
16532
16533aligned properly with the parent block.
16534
16535
16536----------------------------------------
1653703 May 2002.  Summary of changes for this release.
16538
16539
165401) ACPI CA Core Subsystem Version 20020503:
16541
16542Added support a new OSL interface that allows the host operating
16543
16544system software to override the DSDT found in the firmware -
16545AcpiOsTableOverride.  With this interface, the OSL can examine the
16546version of the firmware DSDT and replace it with a different one
16547if desired.
16548
16549Added new external interfaces for accessing ACPI registers from
16550device drivers and other system software - AcpiGetRegister and
16551AcpiSetRegister.  This was simply an externalization of the
16552existing AcpiHwBitRegister interfaces.
16553
16554Fixed a regression introduced in the previous build where the
16555ASL/AML CreateField operator always returned an error,
16556"destination must be a NS Node".
16557
16558Extended the maximum time (before failure) to successfully enable
16559ACPI mode to 3 seconds.
16560
16561Code and Data Size: Current core subsystem library sizes are shown
16562below.  These are the code and data sizes for the acpica.lib
16563produced by the Microsoft Visual C++ 6.0 compiler, and these
16564values do not include any ACPI driver or OSPM code.  The debug
16565version of the code includes the debug output trace mechanism and
16566has a larger code and data size.  Note that these values will vary
16567depending on the efficiency of the compiler and the compiler
16568options used during generation.
16569
16570  Previous Release
16571    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16572    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16573  Current Release:
16574    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16575    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16576
16577
165782) Linux
16579
16580Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16581free. While 3 out of 4 of our in-house systems work fine, the last
16582one still hangs when testing the LAPIC timer.
16583
16584Renamed many files in 2.5 kernel release to omit "acpi_" from the
16585name.
16586
16587Added warning on boot for Presario 711FR.
16588
16589Sleep improvements (Pavel Machek)
16590
16591ACPI can now be built without CONFIG_PCI enabled.
16592
16593IA64: Fixed memory map functions (JI Lee)
16594
16595
165963) iASL Compiler Version X2043:
16597
16598Added support to allow the compiler to be integrated into the MS
16599VC++ development environment for one-button compilation of single
16600files or entire projects -- with error-to-source-line mapping.
16601
16602Implemented support for compile-time constant folding for the
16603Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16604specification.  This allows the ASL writer to use expressions
16605instead of Integer/Buffer/String constants in terms that must
16606evaluate to constants at compile time and will also simplify the
16607emitted AML in any such sub-expressions that can be folded
16608(evaluated at compile-time.)  This increases the size of the
16609compiler significantly because a portion of the ACPI CA AML
16610interpreter is included within the compiler in order to pre-
16611evaluate constant expressions.
16612
16613
16614Fixed a problem with the "Unicode" ASL macro that caused the
16615compiler to fault.  (This macro is used in conjunction with the
16616_STR reserved name.)
16617
16618Implemented an AML opcode optimization to use the Zero, One, and
16619Ones opcodes where possible to further reduce the size of integer
16620constants and thus reduce the overall size of the generated AML
16621code.
16622
16623Implemented error checking for new reserved terms for ACPI version
166242.0A.
16625
16626Implemented the -qr option to display the current list of ACPI
16627reserved names known to the compiler.
16628
16629Implemented the -qc option to display the current list of ASL
16630operators that are allowed within constant expressions and can
16631therefore be folded at compile time if the operands are constants.
16632
16633
166344) Documentation
16635
16636Updated the Programmer's Reference for new interfaces, data types,
16637and memory allocation model options.
16638
16639Updated the iASL Compiler User Reference to apply new format and
16640add information about new features and options.
16641
16642----------------------------------------
1664319 April 2002.  Summary of changes for this release.
16644
166451) ACPI CA Core Subsystem Version 20020419:
16646
16647The source code base for the Core Subsystem has been completely
16648cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16649versions.  The Lint option files used are included in the
16650/acpi/generate/lint directory.
16651
16652Implemented enhanced status/error checking across the entire
16653Hardware manager subsystem.  Any hardware errors (reported from
16654the OSL) are now bubbled up and will abort a running control
16655method.
16656
16657
16658Fixed a problem where the per-ACPI-table integer width (32 or 64)
16659was stored only with control method nodes, causing a fault when
16660non-control method code was executed during table loading.  The
16661solution implemented uses a global variable to indicate table
16662width across the entire ACPI subsystem.  Therefore, ACPI CA does
16663not support mixed integer widths across different ACPI tables
16664(DSDT, SSDT).
16665
16666Fixed a problem where NULL extended fields (X fields) in an ACPI
166672.0 ACPI FADT caused the table load to fail.  Although the
16668existing ACPI specification is a bit fuzzy on this topic, the new
16669behavior is to fall back on a ACPI 1.0 field if the corresponding
16670ACPI 2.0 X field is zero (even though the table revision indicates
16671a full ACPI 2.0 table.)  The ACPI specification will be updated to
16672clarify this issue.
16673
16674Fixed a problem with the SystemMemory operation region handler
16675where memory was always accessed byte-wise even if the AML-
16676specified access width was larger than a byte.  This caused
16677problems on systems with memory-mapped I/O.  Memory is now
16678accessed with the width specified.  On systems that do not support
16679non-aligned transfers, a check is made to guarantee proper address
16680alignment before proceeding in order to avoid an AML-caused
16681alignment fault within the kernel.
16682
16683
16684Fixed a problem with the ExtendedIrq resource where only one byte
16685of the 4-byte Irq field was extracted.
16686
16687Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
16688function was out of date and required a rewrite.
16689
16690Code and Data Size: Current core subsystem library sizes are shown
16691below.  These are the code and data sizes for the acpica.lib
16692produced by the Microsoft Visual C++ 6.0 compiler, and these
16693values do not include any ACPI driver or OSPM code.  The debug
16694version of the code includes the debug output trace mechanism and
16695has a larger code and data size.  Note that these values will vary
16696depending on the efficiency of the compiler and the compiler
16697options used during generation.
16698
16699  Previous Release
16700    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16701    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16702  Current Release:
16703    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16704    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16705
16706
167072) Linux
16708
16709PCI IRQ routing fixes (Dominik Brodowski)
16710
16711
167123) iASL Compiler Version X2042:
16713
16714Implemented an additional compile-time error check for a field
16715unit whose size + minimum access width would cause a run-time
16716access beyond the end-of-region.  Previously, only the field size
16717itself was checked.
16718
16719The Core subsystem and iASL compiler now share a common parse
16720object in preparation for compile-time evaluation of the type
167213/4/5 ASL operators.
16722
16723
16724----------------------------------------
16725Summary of changes for this release: 03_29_02
16726
167271) ACPI CA Core Subsystem Version 20020329:
16728
16729Implemented support for late evaluation of TermArg operands to
16730Buffer and Package objects.  This allows complex expressions to be
16731used in the declarations of these object types.
16732
16733Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
167341.0, if the field was larger than 32 bits, it was returned as a
16735buffer - otherwise it was returned as an integer.  In ACPI 2.0,
16736the field is returned as a buffer only if the field is larger than
1673764 bits.  The TableRevision is now considered when making this
16738conversion to avoid incompatibility with existing ASL code.
16739
16740Implemented logical addressing for AcpiOsGetRootPointer.  This
16741allows an RSDP with either a logical or physical address.  With
16742this support, the host OS can now override all ACPI tables with
16743one logical RSDP.  Includes implementation of  "typed" pointer
16744support to allow a common data type for both physical and logical
16745pointers internally.  This required a change to the
16746AcpiOsGetRootPointer interface.
16747
16748Implemented the use of ACPI 2.0 Generic Address Structures for all
16749GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
16750mapped I/O for these ACPI features.
16751
16752Initialization now ignores not only non-required tables (All
16753tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16754not validate the table headers of unrecognized tables.
16755
16756Fixed a problem where a notify handler could only be
16757installed/removed on an object of type Device.  All "notify"
16758
16759objects are now supported -- Devices, Processor, Power, and
16760Thermal.
16761
16762Removed most verbosity from the ACPI_DB_INFO debug level.  Only
16763critical information is returned when this debug level is enabled.
16764
16765Code and Data Size: Current core subsystem library sizes are shown
16766below.  These are the code and data sizes for the acpica.lib
16767produced by the Microsoft Visual C++ 6.0 compiler, and these
16768values do not include any ACPI driver or OSPM code.  The debug
16769version of the code includes the debug output trace mechanism and
16770has a larger code and data size.  Note that these values will vary
16771depending on the efficiency of the compiler and the compiler
16772options used during generation.
16773
16774  Previous Release
16775    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16776    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16777  Current Release:
16778    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16779    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16780
16781
167822) Linux:
16783
16784The processor driver (acpi_processor.c) now fully supports ACPI
167852.0-based processor performance control (e.g. Intel(R)
16786SpeedStep(TM) technology) Note that older laptops that only have
16787the Intel "applet" interface are not supported through this.  The
16788'limit' and 'performance' interface (/proc) are fully functional.
16789[Note that basic policy for controlling performance state
16790transitions will be included in the next version of ospmd.]  The
16791idle handler was modified to more aggressively use C2, and PIIX4
16792errata handling underwent a complete overhaul (big thanks to
16793Dominik Brodowski).
16794
16795Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
16796based devices in the ACPI namespace are now dynamically bound
16797(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
16798This allows, among other things, ACPI to resolve bus numbers for
16799subordinate PCI bridges.
16800
16801Enhanced PCI IRQ routing to get the proper bus number for _PRT
16802entries defined underneath PCI bridges.
16803
16804Added IBM 600E to bad bios list due to invalid _ADR value for
16805PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
16806
16807In the process of adding full MADT support (e.g. IOAPIC) for IA32
16808(acpi.c, mpparse.c) -- stay tuned.
16809
16810Added back visual differentiation between fixed-feature and
16811control-method buttons in dmesg.  Buttons are also subtyped (e.g.
16812button/power/PWRF) to simplify button identification.
16813
16814We no longer use -Wno-unused when compiling debug. Please ignore
16815any "_THIS_MODULE defined but not used" messages.
16816
16817Can now shut down the system using "magic sysrq" key.
16818
16819
168203) iASL Compiler version 2041:
16821
16822Fixed a problem where conversion errors for hex/octal/decimal
16823constants were not reported.
16824
16825Implemented a fix for the General Register template Address field.
16826This field was 8 bits when it should be 64.
16827
16828Fixed a problem where errors/warnings were no longer being emitted
16829within the listing output file.
16830
16831Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16832exactly 4 characters, alphanumeric only.
16833
16834
16835
16836
16837----------------------------------------
16838Summary of changes for this release: 03_08_02
16839
16840
168411) ACPI CA Core Subsystem Version 20020308:
16842
16843Fixed a problem with AML Fields where the use of the "AccessAny"
16844keyword could cause an interpreter error due to attempting to read
16845or write beyond the end of the parent Operation Region.
16846
16847Fixed a problem in the SystemMemory Operation Region handler where
16848an attempt was made to map memory beyond the end of the region.
16849This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16850errors on some Linux systems.
16851
16852Fixed a problem where the interpreter/namespace "search to root"
16853algorithm was not functioning for some object types.  Relaxed the
16854internal restriction on the search to allow upsearches for all
16855external object types as well as most internal types.
16856
16857
168582) Linux:
16859
16860We now use safe_halt() macro versus individual calls to sti | hlt.
16861
16862Writing to the processor limit interface should now work. "echo 1"
16863will increase the limit, 2 will decrease, and 0 will reset to the
16864
16865default.
16866
16867
168683) ASL compiler:
16869
16870Fixed segfault on Linux version.
16871
16872
16873----------------------------------------
16874Summary of changes for this release: 02_25_02
16875
168761) ACPI CA Core Subsystem:
16877
16878
16879Fixed a problem where the GPE bit masks were not initialized
16880properly, causing erratic GPE behavior.
16881
16882Implemented limited support for multiple calling conventions.  The
16883code can be generated with either the VPL (variable parameter
16884list, or "C") convention, or the FPL (fixed parameter list, or
16885"Pascal") convention.  The core subsystem is about 3.4% smaller
16886when generated with FPL.
16887
16888
168892) Linux
16890
16891Re-add some /proc/acpi/event functionality that was lost during
16892the rewrite
16893
16894Resolved issue with /proc events for fixed-feature buttons showing
16895up as the system device.
16896
16897Fixed checks on C2/C3 latencies to be inclusive of maximum values.
16898
16899Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
16900
16901Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
16902
16903Fixed limit interface & usage to fix bugs with passive cooling
16904hysterisis.
16905
16906Restructured PRT support.
16907
16908
16909----------------------------------------
16910Summary of changes for this label: 02_14_02
16911
16912
169131) ACPI CA Core Subsystem:
16914
16915Implemented support in AcpiLoadTable to allow loading of FACS and
16916FADT tables.
16917
16918Support for the now-obsolete interim 0.71 64-bit ACPI tables has
16919been removed.  All 64-bit platforms should be migrated to the ACPI
169202.0 tables.  The actbl71.h header has been removed from the source
16921tree.
16922
16923All C macros defined within the subsystem have been prefixed with
16924"ACPI_" to avoid collision with other system include files.
16925
16926Removed the return value for the two AcpiOsPrint interfaces, since
16927it is never used and causes lint warnings for ignoring the return
16928value.
16929
16930Added error checking to all internal mutex acquire and release
16931calls.  Although a failure from one of these interfaces is
16932probably a fatal system error, these checks will cause the
16933immediate abort of the currently executing method or interface.
16934
16935Fixed a problem where the AcpiSetCurrentResources interface could
16936fault.  This was a side effect of the deployment of the new memory
16937allocation model.
16938
16939Fixed a couple of problems with the Global Lock support introduced
16940in the last major build.  The "common" (1.0/2.0) internal FACS was
16941being overwritten with the FACS signature and clobbering the
16942Global Lock pointer.  Also, the actual firmware FACS was being
16943unmapped after construction of the "common" FACS, preventing
16944access to the actual Global Lock field within it.  The "common"
16945internal FACS is no longer installed as an actual ACPI table; it
16946is used simply as a global.
16947
16948Code and Data Size: Current core subsystem library sizes are shown
16949below.  These are the code and data sizes for the acpica.lib
16950produced by the Microsoft Visual C++ 6.0 compiler, and these
16951values do not include any ACPI driver or OSPM code.  The debug
16952version of the code includes the debug output trace mechanism and
16953has a larger code and data size.  Note that these values will vary
16954depending on the efficiency of the compiler and the compiler
16955options used during generation.
16956
16957  Previous Release (02_07_01)
16958    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16959    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16960  Current Release:
16961    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16962    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16963
16964
169652) Linux
16966
16967Updated Linux-specific code for core macro and OSL interface
16968changes described above.
16969
16970Improved /proc/acpi/event. It now can be opened only once and has
16971proper poll functionality.
16972
16973Fixed and restructured power management (acpi_bus).
16974
16975Only create /proc "view by type" when devices of that class exist.
16976
16977Fixed "charging/discharging" bug (and others) in acpi_battery.
16978
16979Improved thermal zone code.
16980
16981
169823) ASL Compiler, version X2039:
16983
16984
16985Implemented the new compiler restriction on ASL String hex/octal
16986escapes to non-null, ASCII values.  An error results if an invalid
16987value is used.  (This will require an ACPI 2.0 specification
16988change.)
16989
16990AML object labels that are output to the optional C and ASM source
16991are now prefixed with both the ACPI table signature and table ID
16992to help guarantee uniqueness within a large BIOS project.
16993
16994
16995----------------------------------------
16996Summary of changes for this label: 02_01_02
16997
169981) ACPI CA Core Subsystem:
16999
17000ACPI 2.0 support is complete in the entire Core Subsystem and the
17001ASL compiler. All new ACPI 2.0 operators are implemented and all
17002other changes for ACPI 2.0 support are complete.  With
17003simultaneous code and data optimizations throughout the subsystem,
17004ACPI 2.0 support has been implemented with almost no additional
17005cost in terms of code and data size.
17006
17007Implemented a new mechanism for allocation of return buffers.  If
17008the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17009be allocated on behalf of the caller.  Consolidated all return
17010buffer validation and allocation to a common procedure.  Return
17011buffers will be allocated via the primary OSL allocation interface
17012since it appears that a separate pool is not needed by most users.
17013If a separate pool is required for these buffers, the caller can
17014still use the original mechanism and pre-allocate the buffer(s).
17015
17016Implemented support for string operands within the DerefOf
17017operator.
17018
17019Restructured the Hardware and Event managers to be table driven,
17020simplifying the source code and reducing the amount of generated
17021code.
17022
17023Split the common read/write low-level ACPI register bitfield
17024procedure into a separate read and write, simplifying the code
17025considerably.
17026
17027Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17028used only a handful of times and didn't have enough critical mass
17029for a separate interface.  Replaced with a common calloc procedure
17030in the core.
17031
17032Fixed a reported problem with the GPE number mapping mechanism
17033that allows GPE1 numbers to be non-contiguous with GPE0.
17034Reorganized the GPE information and shrunk a large array that was
17035originally large enough to hold info for all possible GPEs (256)
17036to simply large enough to hold all GPEs up to the largest GPE
17037number on the machine.
17038
17039Fixed a reported problem with resource structure alignment on 64-
17040bit platforms.
17041
17042Changed the AcpiEnableEvent and AcpiDisableEvent external
17043interfaces to not require any flags for the common case of
17044enabling/disabling a GPE.
17045
17046Implemented support to allow a "Notify" on a Processor object.
17047
17048Most TBDs in comments within the source code have been resolved
17049and eliminated.
17050
17051
17052Fixed a problem in the interpreter where a standalone parent
17053prefix (^) was not handled correctly in the interpreter and
17054debugger.
17055
17056Removed obsolete and unnecessary GPE save/restore code.
17057
17058Implemented Field support in the ASL Load operator.  This allows a
17059table to be loaded from a named field, in addition to loading a
17060table directly from an Operation Region.
17061
17062Implemented timeout and handle support in the external Global Lock
17063interfaces.
17064
17065Fixed a problem in the AcpiDump utility where pathnames were no
17066longer being generated correctly during the dump of named objects.
17067
17068Modified the AML debugger to give a full display of if/while
17069predicates instead of just one AML opcode at a time.  (The
17070predicate can have several nested ASL statements.)  The old method
17071was confusing during single stepping.
17072
17073Code and Data Size: Current core subsystem library sizes are shown
17074below. These are the code and data sizes for the acpica.lib
17075produced by the Microsoft Visual C++ 6.0 compiler, and these
17076values do not include any ACPI driver or OSPM code.  The debug
17077version of the code includes the debug output trace mechanism and
17078has a larger code and data size.  Note that these values will vary
17079depending on the efficiency of the compiler and the compiler
17080options used during generation.
17081
17082  Previous Release (12_18_01)
17083     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17084     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17085   Current Release:
17086     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17087     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17088
170892) Linux
17090
17091 Implemented fix for PIIX reverse throttling errata (Processor
17092driver)
17093
17094Added new Limit interface (Processor and Thermal drivers)
17095
17096New thermal policy (Thermal driver)
17097
17098Many updates to /proc
17099
17100Battery "low" event support (Battery driver)
17101
17102Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17103
17104IA32 - IA64 initialization unification, no longer experimental
17105
17106Menuconfig options redesigned
17107
171083) ASL Compiler, version X2037:
17109
17110Implemented several new output features to simplify integration of
17111AML code into  firmware: 1) Output the AML in C source code with
17112labels for each named ASL object.  The    original ASL source code
17113is interleaved as C comments. 2) Output the AML in ASM source code
17114with labels and interleaved ASL    source. 3) Output the AML in
17115raw hex table form, in either C or ASM.
17116
17117Implemented support for optional string parameters to the
17118LoadTable operator.
17119
17120Completed support for embedded escape sequences within string
17121literals.  The compiler now supports all single character escapes
17122as well as the Octal and Hex escapes.  Note: the insertion of a
17123null byte into a string literal (via the hex/octal escape) causes
17124the string to be immediately terminated.  A warning is issued.
17125
17126Fixed a problem where incorrect AML was generated for the case
17127where an ASL namepath consists of a single parent prefix (
17128
17129) with no trailing name segments.
17130
17131The compiler has been successfully generated with a 64-bit C
17132compiler.
17133
17134
17135
17136
17137----------------------------------------
17138Summary of changes for this label: 12_18_01
17139
171401) Linux
17141
17142Enhanced blacklist with reason and severity fields. Any table's
17143signature may now be used to identify a blacklisted system.
17144
17145Call _PIC control method to inform the firmware which interrupt
17146model the OS is using. Turn on any disabled link devices.
17147
17148Cleaned up busmgr /proc error handling (Andreas Dilger)
17149
17150 2) ACPI CA Core Subsystem:
17151
17152Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17153while loop)
17154
17155Completed implementation of the ACPI 2.0 "Continue",
17156"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17157operators.  All new ACPI 2.0 operators are now implemented in both
17158the ASL compiler and the AML interpreter.  The only remaining ACPI
171592.0 task is support for the String data type in the DerefOf
17160operator.  Fixed a problem with AcquireMutex where the status code
17161was lost if the caller had to actually wait for the mutex.
17162
17163Increased the maximum ASL Field size from 64K bits to 4G bits.
17164
17165Completed implementation of the external Global Lock interfaces --
17166AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17167Handler parameters were added.
17168
17169Completed another pass at removing warnings and issues when
17170compiling with 64-bit compilers.  The code now compiles cleanly
17171with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17172add and subtract (diff) macros have changed considerably.
17173
17174
17175Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1717664-bit platforms, 32-bits on all others.  This type is used
17177wherever memory allocation and/or the C sizeof() operator is used,
17178and affects the OSL memory allocation interfaces AcpiOsAllocate
17179and AcpiOsCallocate.
17180
17181Implemented sticky user breakpoints in the AML debugger.
17182
17183Code and Data Size: Current core subsystem library sizes are shown
17184below. These are the code and data sizes for the acpica.lib
17185produced by the Microsoft Visual C++ 6.0 compiler, and these
17186values do not include any ACPI driver or OSPM code.  The debug
17187version of the code includes the debug output trace mechanism and
17188has a larger code and data size. Note that these values will vary
17189depending on the efficiency of the compiler and the compiler
17190options used during generation.
17191
17192  Previous Release (12_05_01)
17193     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17194     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17195   Current Release:
17196     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17197     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17198
17199 3) ASL Compiler, version X2034:
17200
17201Now checks for (and generates an error if detected) the use of a
17202Break or Continue statement without an enclosing While statement.
17203
17204
17205Successfully generated the compiler with the Intel 64-bit C
17206compiler.
17207
17208 ----------------------------------------
17209Summary of changes for this label: 12_05_01
17210
17211 1) ACPI CA Core Subsystem:
17212
17213The ACPI 2.0 CopyObject operator is fully implemented.  This
17214operator creates a new copy of an object (and is also used to
17215bypass the "implicit conversion" mechanism of the Store operator.)
17216
17217The ACPI 2.0 semantics for the SizeOf operator are fully
17218implemented.  The change is that performing a SizeOf on a
17219reference object causes an automatic dereference of the object to
17220tha actual value before the size is evaluated. This behavior was
17221undefined in ACPI 1.0.
17222
17223The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17224have been implemented.  The interrupt polarity and mode are now
17225independently set.
17226
17227Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17228appearing in Package objects were not properly converted to
17229integers when the internal Package was converted to an external
17230object (via the AcpiEvaluateObject interface.)
17231
17232Fixed a problem with the namespace object deletion mechanism for
17233objects created by control methods.  There were two parts to this
17234problem: 1) Objects created during the initialization phase method
17235parse were not being deleted, and 2) The object owner ID mechanism
17236to track objects was broken.
17237
17238Fixed a problem where the use of the ASL Scope operator within a
17239control method would result in an invalid opcode exception.
17240
17241Fixed a problem introduced in the previous label where the buffer
17242length required for the _PRT structure was not being returned
17243correctly.
17244
17245Code and Data Size: Current core subsystem library sizes are shown
17246below. These are the code and data sizes for the acpica.lib
17247produced by the Microsoft Visual C++ 6.0 compiler, and these
17248values do not include any ACPI driver or OSPM code.  The debug
17249version of the code includes the debug output trace mechanism and
17250has a larger code and data size.  Note that these values will vary
17251depending on the efficiency of the compiler and the compiler
17252options used during generation.
17253
17254  Previous Release (11_20_01)
17255     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17256     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17257
17258  Current Release:
17259     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17260     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17261
17262 2) Linux:
17263
17264Updated all files to apply cleanly against 2.4.16.
17265
17266Added basic PCI Interrupt Routing Table (PRT) support for IA32
17267(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17268version supports both static and dynamic PRT entries, but dynamic
17269entries are treated as if they were static (not yet
17270reconfigurable).  Architecture- specific code to use this data is
17271absent on IA32 but should be available shortly.
17272
17273Changed the initialization sequence to start the ACPI interpreter
17274(acpi_init) prior to initialization of the PCI driver (pci_init)
17275in init/main.c.  This ordering is required to support PRT and
17276facilitate other (future) enhancement.  A side effect is that the
17277ACPI bus driver and certain device drivers can no longer be loaded
17278as modules.
17279
17280Modified the 'make menuconfig' options to allow PCI Interrupt
17281Routing support to be included without the ACPI Bus and other
17282device drivers.
17283
17284 3) ASL Compiler, version X2033:
17285
17286Fixed some issues with the use of the new CopyObject and
17287DataTableRegion operators.  Both are fully functional.
17288
17289 ----------------------------------------
17290Summary of changes for this label: 11_20_01
17291
17292 20 November 2001.  Summary of changes for this release.
17293
17294 1) ACPI CA Core Subsystem:
17295
17296Updated Index support to match ACPI 2.0 semantics.  Storing a
17297Integer, String, or Buffer to an Index of a Buffer will store only
17298the least-significant byte of the source to the Indexed buffer
17299byte.  Multiple writes are not performed.
17300
17301Fixed a problem where the access type used in an AccessAs ASL
17302operator was not recorded correctly into the field object.
17303
17304Fixed a problem where ASL Event objects were created in a
17305signalled state. Events are now created in an unsignalled state.
17306
17307The internal object cache is now purged after table loading and
17308initialization to reduce the use of dynamic kernel memory -- on
17309the assumption that object use is greatest during the parse phase
17310of the entire table (versus the run-time use of individual control
17311methods.)
17312
17313ACPI 2.0 variable-length packages are now fully operational.
17314
17315Code and Data Size: Code and Data optimizations have permitted new
17316feature development with an actual reduction in the library size.
17317Current core subsystem library sizes are shown below.  These are
17318the code and data sizes for the acpica.lib produced by the
17319Microsoft Visual C++ 6.0 compiler, and these values do not include
17320any ACPI driver or OSPM code.  The debug version of the code
17321includes the debug output trace mechanism and has a larger code
17322and data size.  Note that these values will vary depending on the
17323efficiency of the compiler and the compiler options used during
17324generation.
17325
17326  Previous Release (11_09_01):
17327     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17328     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17329
17330  Current Release:
17331     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17332     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17333
17334 2) Linux:
17335
17336Enhanced the ACPI boot-time initialization code to allow the use
17337of Local APIC tables for processor enumeration on IA-32, and to
17338pave the way for a fully MPS-free boot (on SMP systems) in the
17339near future.  This functionality replaces
17340arch/i386/kernel/acpitables.c, which was introduced in an earlier
173412.4.15-preX release.  To enable this feature you must add
17342"acpi_boot=on" to the kernel command line -- see the help entry
17343for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17344the works...
17345
17346Restructured the configuration options to allow boot-time table
17347parsing support without inclusion of the ACPI Interpreter (and
17348other) code.
17349
17350NOTE: This release does not include fixes for the reported events,
17351power-down, and thermal passive cooling issues (coming soon).
17352
17353 3) ASL Compiler:
17354
17355Added additional typechecking for Fields within restricted access
17356Operation Regions.  All fields within EC and CMOS regions must be
17357declared with ByteAcc. All fields within SMBus regions must be
17358declared with the BufferAcc access type.
17359
17360Fixed a problem where the listing file output of control methods
17361no longer interleaved the actual AML code with the ASL source
17362code.
17363
17364
17365
17366
17367----------------------------------------
17368Summary of changes for this label: 11_09_01
17369
173701) ACPI CA Core Subsystem:
17371
17372Implemented ACPI 2.0-defined support for writes to fields with a
17373Buffer, String, or Integer source operand that is smaller than the
17374target field. In these cases, the source operand is zero-extended
17375to fill the target field.
17376
17377Fixed a problem where a Field starting bit offset (within the
17378parent operation region) was calculated incorrectly if the
17379
17380alignment of the field differed from the access width.  This
17381affected CreateWordField, CreateDwordField, CreateQwordField, and
17382possibly other fields that use the "AccessAny" keyword.
17383
17384Fixed a problem introduced in the 11_02_01 release where indirect
17385stores through method arguments did not operate correctly.
17386
173872) Linux:
17388
17389Implemented boot-time ACPI table parsing support
17390(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17391facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17392legacy BIOS interfaces (e.g. MPS) for the configuration of system
17393processors, memory, and interrupts during setup_arch().  Note that
17394this patch does not include the required architecture-specific
17395changes required to apply this information -- subsequent patches
17396will be posted for both IA32 and IA64 to achieve this.
17397
17398Added low-level sleep support for IA32 platforms, courtesy of Pat
17399Mochel. This allows IA32 systems to transition to/from various
17400sleeping states (e.g. S1, S3), although the lack of a centralized
17401driver model and power-manageable drivers will prevent its
17402(successful) use on most systems.
17403
17404Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17405submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17406tables" option, etc.
17407
17408Increased the default timeout for the EC driver from 1ms to 10ms
17409(1000 cycles of 10us) to try to address AE_TIME errors during EC
17410transactions.
17411
17412 ----------------------------------------
17413Summary of changes for this label: 11_02_01
17414
174151) ACPI CA Core Subsystem:
17416
17417ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17418(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17419implemented.
17420
17421OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17422changes to support ACPI 2.0 Qword field access.  Read/Write
17423PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17424accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17425the value parameter for the address space handler interface is now
17426an ACPI_INTEGER.  OSL implementations of these interfaces must now
17427handle the case where the Width parameter is 64.
17428
17429Index Fields: Fixed a problem where unaligned bit assembly and
17430disassembly for IndexFields was not supported correctly.
17431
17432Index and Bank Fields:  Nested Index and Bank Fields are now
17433supported. During field access, a check is performed to ensure
17434that the value written to an Index or Bank register is not out of
17435the range of the register.  The Index (or Bank) register is
17436written before each access to the field data. Future support will
17437include allowing individual IndexFields to be wider than the
17438DataRegister width.
17439
17440Fields: Fixed a problem where the AML interpreter was incorrectly
17441attempting to write beyond the end of a Field/OpRegion.  This was
17442a boundary case that occurred when a DWORD field was written to a
17443BYTE access OpRegion, forcing multiple writes and causing the
17444interpreter to write one datum too many.
17445
17446Fields: Fixed a problem with Field/OpRegion access where the
17447starting bit address of a field was incorrectly calculated if the
17448current access type was wider than a byte (WordAcc, DwordAcc, or
17449QwordAcc).
17450
17451Fields: Fixed a problem where forward references to individual
17452FieldUnits (individual Field names within a Field definition) were
17453not resolved during the AML table load.
17454
17455Fields: Fixed a problem where forward references from a Field
17456definition to the parent Operation Region definition were not
17457resolved during the AML table load.
17458
17459Fields: Duplicate FieldUnit names within a scope are now detected
17460during AML table load.
17461
17462Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17463returned an incorrect name for the root node.
17464
17465Code and Data Size: Code and Data optimizations have permitted new
17466feature development with an actual reduction in the library size.
17467Current core subsystem library sizes are shown below.  These are
17468the code and data sizes for the acpica.lib produced by the
17469Microsoft Visual C++ 6.0 compiler, and these values do not include
17470any ACPI driver or OSPM code.  The debug version of the code
17471includes the debug output trace mechanism and has a larger code
17472and data size.  Note that these values will vary depending on the
17473efficiency of the compiler and the compiler options used during
17474generation.
17475
17476  Previous Release (10_18_01):
17477     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17478     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17479
17480  Current Release:
17481     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17482     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17483
17484 2) Linux:
17485
17486Improved /proc processor output (Pavel Machek) Re-added
17487MODULE_LICENSE("GPL") to all modules.
17488
17489 3) ASL Compiler version X2030:
17490
17491Duplicate FieldUnit names within a scope are now detected and
17492flagged as errors.
17493
17494 4) Documentation:
17495
17496Programmer Reference updated to reflect OSL and address space
17497handler interface changes described above.
17498
17499----------------------------------------
17500Summary of changes for this label: 10_18_01
17501
17502ACPI CA Core Subsystem:
17503
17504Fixed a problem with the internal object reference count mechanism
17505that occasionally caused premature object deletion. This resolves
17506all of the outstanding problem reports where an object is deleted
17507in the middle of an interpreter evaluation.  Although this problem
17508only showed up in rather obscure cases, the solution to the
17509problem involved an adjustment of all reference counts involving
17510objects attached to namespace nodes.
17511
17512Fixed a problem with Field support in the interpreter where
17513writing to an aligned field whose length is an exact multiple (2
17514or greater) of the field access granularity would cause an attempt
17515to write beyond the end of the field.
17516
17517The top level AML opcode execution functions within the
17518interpreter have been renamed with a more meaningful and
17519consistent naming convention.  The modules exmonad.c and
17520exdyadic.c were eliminated.  New modules are exoparg1.c,
17521exoparg2.c, exoparg3.c, and exoparg6.c.
17522
17523Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17524
17525Fixed a problem where the AML debugger was causing some internal
17526objects to not be deleted during subsystem termination.
17527
17528Fixed a problem with the external AcpiEvaluateObject interface
17529where the subsystem would fault if the named object to be
17530evaluated referred to a constant such as Zero, Ones, etc.
17531
17532Fixed a problem with IndexFields and BankFields where the
17533subsystem would fault if the index, data, or bank registers were
17534not defined in the same scope as the field itself.
17535
17536Added printf format string checking for compilers that support
17537this feature.  Corrected more than 50 instances of issues with
17538format specifiers within invocations of ACPI_DEBUG_PRINT
17539throughout the core subsystem code.
17540
17541The ASL "Revision" operator now returns the ACPI support level
17542implemented in the core - the value "2" since the ACPI 2.0 support
17543is more than 50% implemented.
17544
17545Enhanced the output of the AML debugger "dump namespace" command
17546to output in a more human-readable form.
17547
17548Current core subsystem library code sizes are shown below.  These
17549
17550are the code and data sizes for the acpica.lib produced by the
17551Microsoft Visual C++ 6.0 compiler, and these values do not include
17552any ACPI driver or OSPM code.  The debug version of the code
17553includes the full debug trace mechanism -- leading to a much
17554
17555larger code and data size.  Note that these values will vary
17556depending on the efficiency of the compiler and the compiler
17557options used during generation.
17558
17559     Previous Label (09_20_01):
17560     Non-Debug Version:    65K Code,     5K Data,     70K Total
17561     Debug Version:       138K Code,    58K Data,    196K Total
17562
17563     This Label:
17564
17565     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17566     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17567
17568Linux:
17569
17570Implemented a "Bad BIOS Blacklist" to track machines that have
17571known ASL/AML problems.
17572
17573Enhanced the /proc interface for the thermal zone driver and added
17574support for _HOT (the critical suspend trip point).  The 'info'
17575file now includes threshold/policy information, and allows setting
17576of _SCP (cooling preference) and _TZP (polling frequency) values
17577to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17578frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17579preference to the passive/quiet mode (if supported by the ASL).
17580
17581Implemented a workaround for a gcc bug that resuted in an OOPs
17582when loading the control method battery driver.
17583
17584 ----------------------------------------
17585Summary of changes for this label: 09_20_01
17586
17587 ACPI CA Core Subsystem:
17588
17589The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17590modified to allow individual GPE levels to be flagged as wake-
17591enabled (i.e., these GPEs are to remain enabled when the platform
17592sleeps.)
17593
17594The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17595support wake-enabled GPEs.  This means that upon entering the
17596sleep state, all GPEs that are not wake-enabled are disabled.
17597When leaving the sleep state, these GPEs are re-enabled.
17598
17599A local double-precision divide/modulo module has been added to
17600enhance portability to OS kernels where a 64-bit math library is
17601not available.  The new module is "utmath.c".
17602
17603Several optimizations have been made to reduce the use of CPU
17604stack.  Originally over 2K, the maximum stack usage is now below
176052K at 1860  bytes (1.82k)
17606
17607Fixed a problem with the AcpiGetFirmwareTable interface where the
17608root table pointer was not mapped into a logical address properly.
17609
17610Fixed a problem where a NULL pointer was being dereferenced in the
17611interpreter code for the ASL Notify operator.
17612
17613Fixed a problem where the use of the ASL Revision operator
17614returned an error. This operator now returns the current version
17615of the ACPI CA core subsystem.
17616
17617Fixed a problem where objects passed as control method parameters
17618to AcpiEvaluateObject were always deleted at method termination.
17619However, these objects may end up being stored into the namespace
17620by the called method.  The object reference count mechanism was
17621applied to these objects instead of a force delete.
17622
17623Fixed a problem where static strings or buffers (contained in the
17624AML code) that are declared as package elements within the ASL
17625code could cause a fault because the interpreter would attempt to
17626delete them.  These objects are now marked with the "static
17627object" flag to prevent any attempt to delete them.
17628
17629Implemented an interpreter optimization to use operands directly
17630from the state object instead of extracting the operands to local
17631variables.  This reduces stack use and code size, and improves
17632performance.
17633
17634The module exxface.c was eliminated as it was an unnecessary extra
17635layer of code.
17636
17637Current core subsystem library code sizes are shown below.  These
17638are the code and data sizes for the acpica.lib produced by the
17639Microsoft Visual C++ 6.0 compiler, and these values do not include
17640any ACPI driver or OSPM code.  The debug version of the code
17641includes the full debug trace mechanism -- leading to a much
17642larger code and data size.  Note that these values will vary
17643depending on the efficiency of the compiler and the compiler
17644options used during generation.
17645
17646  Non-Debug Version:  65K Code,   5K Data,   70K Total
17647(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
17648Total  (Previously 195K)
17649
17650Linux:
17651
17652Support for ACPI 2.0 64-bit integers has been added.   All ACPI
17653Integer objects are now 64 bits wide
17654
17655All Acpi data types and structures are now in lower case.  Only
17656Acpi macros are upper case for differentiation.
17657
17658 Documentation:
17659
17660Changes to the external interfaces as described above.
17661
17662 ----------------------------------------
17663Summary of changes for this label: 08_31_01
17664
17665 ACPI CA Core Subsystem:
17666
17667A bug with interpreter implementation of the ASL Divide operator
17668was found and fixed.  The implicit function return value (not the
17669explicit store operands) was returning the remainder instead of
17670the quotient.  This was a longstanding bug and it fixes several
17671known outstanding issues on various platforms.
17672
17673The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17674been further optimized for size.  There are 700 invocations of the
17675DEBUG_PRINT macro alone, so each optimization reduces the size of
17676the debug version of the subsystem significantly.
17677
17678A stack trace mechanism has been implemented.  The maximum stack
17679usage is about 2K on 32-bit platforms.  The debugger command "stat
17680stack" will display the current maximum stack usage.
17681
17682All public symbols and global variables within the subsystem are
17683now prefixed with the string "Acpi".  This keeps all of the
17684symbols grouped together in a kernel map, and avoids conflicts
17685with other kernel subsystems.
17686
17687Most of the internal fixed lookup tables have been moved into the
17688code segment via the const operator.
17689
17690Several enhancements have been made to the interpreter to both
17691reduce the code size and improve performance.
17692
17693Current core subsystem library code sizes are shown below.  These
17694are the code and data sizes for the acpica.lib produced by the
17695Microsoft Visual C++ 6.0 compiler, and these values do not include
17696any ACPI driver or OSPM code.  The debug version of the code
17697includes the full debug trace mechanism which contains over 700
17698invocations of the DEBUG_PRINT macro, 500 function entry macro
17699invocations, and over 900 function exit macro invocations --
17700leading to a much larger code and data size.  Note that these
17701values will vary depending on the efficiency of the compiler and
17702the compiler options used during generation.
17703
17704        Non-Debug Version:  64K Code,   5K Data,   69K Total
17705Debug Version:     137K Code,  58K Data,  195K Total
17706
17707 Linux:
17708
17709Implemented wbinvd() macro, pending a kernel-wide definition.
17710
17711Fixed /proc/acpi/event to handle poll() and short reads.
17712
17713 ASL Compiler, version X2026:
17714
17715Fixed a problem introduced in the previous label where the AML
17716
17717code emitted for package objects produced packages with zero
17718length.
17719
17720 ----------------------------------------
17721Summary of changes for this label: 08_16_01
17722
17723ACPI CA Core Subsystem:
17724
17725The following ACPI 2.0 ASL operators have been implemented in the
17726AML interpreter (These are already supported by the Intel ASL
17727compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
17728ToBuffer.  Support for 64-bit AML constants is implemented in the
17729AML parser, debugger, and disassembler.
17730
17731The internal memory tracking mechanism (leak detection code) has
17732been upgraded to reduce the memory overhead (a separate tracking
17733block is no longer allocated for each memory allocation), and now
17734supports all of the internal object caches.
17735
17736The data structures and code for the internal object caches have
17737been coelesced and optimized so that there is a single cache and
17738memory list data structure and a single group of functions that
17739implement generic cache management.  This has reduced the code
17740size in both the debug and release versions of the subsystem.
17741
17742The DEBUG_PRINT macro(s) have been optimized for size and replaced
17743by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
17744different, because it generates a single call to an internal
17745function.  This results in a savings of about 90 bytes per
17746invocation, resulting in an overall code and data savings of about
1774716% in the debug version of the subsystem.
17748
17749 Linux:
17750
17751Fixed C3 disk corruption problems and re-enabled C3 on supporting
17752machines.
17753
17754Integrated low-level sleep code by Patrick Mochel.
17755
17756Further tweaked source code Linuxization.
17757
17758Other minor fixes.
17759
17760 ASL Compiler:
17761
17762Support for ACPI 2.0 variable length packages is fixed/completed.
17763
17764Fixed a problem where the optional length parameter for the ACPI
177652.0 ToString operator.
17766
17767Fixed multiple extraneous error messages when a syntax error is
17768detected within the declaration line of a control method.
17769
17770 ----------------------------------------
17771Summary of changes for this label: 07_17_01
17772
17773ACPI CA Core Subsystem:
17774
17775Added a new interface named AcpiGetFirmwareTable to obtain any
17776ACPI table via the ACPI signature.  The interface can be called at
17777any time during kernel initialization, even before the kernel
17778virtual memory manager is initialized and paging is enabled.  This
17779allows kernel subsystems to obtain ACPI tables very early, even
17780before the ACPI CA subsystem is initialized.
17781
17782Fixed a problem where Fields defined with the AnyAcc attribute
17783could be resolved to the incorrect address under the following
17784conditions: 1) the field width is larger than 8 bits and 2) the
17785parent operation region is not defined on a DWORD boundary.
17786
17787Fixed a problem where the interpreter is not being locked during
17788namespace initialization (during execution of the _INI control
17789methods), causing an error when an attempt is made to release it
17790later.
17791
17792ACPI 2.0 support in the AML Interpreter has begun and will be
17793ongoing throughout the rest of this year.  In this label, The Mod
17794operator is implemented.
17795
17796Added a new data type to contain full PCI addresses named
17797ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
17798and Function values.
17799
17800 Linux:
17801
17802Enhanced the Linux version of the source code to change most
17803capitalized ACPI type names to lowercase. For example, all
17804instances of ACPI_STATUS are changed to acpi_status.  This will
17805result in a large diff, but the change is strictly cosmetic and
17806aligns the CA code closer to the Linux coding standard.
17807
17808OSL Interfaces:
17809
17810The interfaces to the PCI configuration space have been changed to
17811add the PCI Segment number and to split the single 32-bit combined
17812DeviceFunction field into two 16-bit fields.  This was
17813accomplished by moving the four values that define an address in
17814PCI configuration space (segment, bus, device, and function) to
17815the new ACPI_PCI_ID structure.
17816
17817The changes to the PCI configuration space interfaces led to a
17818reexamination of the complete set of address space access
17819interfaces for PCI, I/O, and Memory.  The previously existing 18
17820interfaces have proven difficult to maintain (any small change
17821must be propagated across at least 6 interfaces) and do not easily
17822allow for future expansion to 64 bits if necessary.  Also, on some
17823systems, it would not be appropriate to demultiplex the access
17824width (8, 16, 32,or 64) before calling the OSL if the
17825corresponding native OS interfaces contain a similar access width
17826parameter.  For these reasons, the 18 address space interfaces
17827have been replaced by these 6 new ones:
17828
17829AcpiOsReadPciConfiguration
17830AcpiOsWritePciConfiguration
17831AcpiOsReadMemory
17832AcpiOsWriteMemory
17833AcpiOsReadPort
17834AcpiOsWritePort
17835
17836Added a new interface named AcpiOsGetRootPointer to allow the OSL
17837to perform the platform and/or OS-specific actions necessary to
17838obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
17839interface will simply call down to the CA core to perform the low-
17840memory search for the table.  On IA-64, the RSDP is obtained from
17841EFI.  Migrating this interface to the OSL allows the CA core to
17842
17843remain OS and platform independent.
17844
17845Added a new interface named AcpiOsSignal to provide a generic
17846"function code and pointer" interface for various miscellaneous
17847signals and notifications that must be made to the host OS.   The
17848first such signals are intended to support the ASL Fatal and
17849Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
17850interface has been obsoleted.
17851
17852The definition of the AcpiFormatException interface has been
17853changed to simplify its use.  The caller no longer must supply a
17854buffer to the call; A pointer to a const string is now returned
17855directly.  This allows the call to be easily used in printf
17856statements, etc. since the caller does not have to manage a local
17857buffer.
17858
17859
17860 ASL Compiler, Version X2025:
17861
17862The ACPI 2.0 Switch/Case/Default operators have been implemented
17863and are fully functional.  They will work with all ACPI 1.0
17864interpreters, since the operators are simply translated to If/Else
17865pairs.
17866
17867The ACPI 2.0 ElseIf operator is implemented and will also work
17868with 1.0 interpreters, for the same reason.
17869
17870Implemented support for ACPI 2.0 variable-length packages.  These
17871packages have a separate opcode, and their size is determined by
17872the interpreter at run-time.
17873
17874Documentation The ACPI CA Programmer Reference has been updated to
17875reflect the new interfaces and changes to existing interfaces.
17876
17877 ------------------------------------------
17878Summary of changes for this label: 06_15_01
17879
17880 ACPI CA Core Subsystem:
17881
17882Fixed a problem where a DWORD-accessed field within a Buffer
17883object would get its byte address inadvertently rounded down to
17884the nearest DWORD.  Buffers are always Byte-accessible.
17885
17886 ASL Compiler, version X2024:
17887
17888Fixed a problem where the Switch() operator would either fault or
17889hang the compiler.  Note however, that the AML code for this ACPI
178902.0 operator is not yet implemented.
17891
17892Compiler uses the new AcpiOsGetTimer interface to obtain compile
17893timings.
17894
17895Implementation of the CreateField operator automatically converts
17896a reference to a named field within a resource descriptor from a
17897byte offset to a bit offset if required.
17898
17899Added some missing named fields from the resource descriptor
17900support. These are the names that are automatically created by the
17901compiler to reference fields within a descriptor.  They are only
17902valid at compile time and are not passed through to the AML
17903interpreter.
17904
17905Resource descriptor named fields are now typed as Integers and
17906subject to compile-time typechecking when used in expressions.
17907
17908 ------------------------------------------
17909Summary of changes for this label: 05_18_01
17910
17911 ACPI CA Core Subsystem:
17912
17913Fixed a couple of problems in the Field support code where bits
17914from adjacent fields could be returned along with the proper field
17915bits. Restructured the field support code to improve performance,
17916readability and maintainability.
17917
17918New DEBUG_PRINTP macro automatically inserts the procedure name
17919into the output, saving hundreds of copies of procedure name
17920strings within the source, shrinking the memory footprint of the
17921debug version of the core subsystem.
17922
17923 Source Code Structure:
17924
17925The source code directory tree was restructured to reflect the
17926current organization of the component architecture.  Some files
17927and directories have been moved and/or renamed.
17928
17929 Linux:
17930
17931Fixed leaking kacpidpc processes.
17932
17933Fixed queueing event data even when /proc/acpi/event is not
17934opened.
17935
17936 ASL Compiler, version X2020:
17937
17938Memory allocation performance enhancement - over 24X compile time
17939improvement on large ASL files.  Parse nodes and namestring
17940buffers are now allocated from a large internal compiler buffer.
17941
17942The temporary .SRC file is deleted unless the "-s" option is
17943specified
17944
17945The "-d" debug output option now sends all output to the .DBG file
17946instead of the console.
17947
17948"External" second parameter is now optional
17949
17950"ElseIf" syntax now properly allows the predicate
17951
17952Last operand to "Load" now recognized as a Target operand
17953
17954Debug object can now be used anywhere as a normal object.
17955
17956ResourceTemplate now returns an object of type BUFFER
17957
17958EISAID now returns an object of type INTEGER
17959
17960"Index" now works with a STRING operand
17961
17962"LoadTable" now accepts optional parameters
17963
17964"ToString" length parameter is now optional
17965
17966"Interrupt (ResourceType," parse error fixed.
17967
17968"Register" with a user-defined region space parse error fixed
17969
17970Escaped backslash at the end of a string ("\\") scan/parse error
17971fixed
17972
17973"Revision" is now an object of type INTEGER.
17974
17975
17976
17977------------------------------------------
17978Summary of changes for this label: 05_02_01
17979
17980Linux:
17981
17982/proc/acpi/event now blocks properly.
17983
17984Removed /proc/sys/acpi. You can still dump your DSDT from
17985/proc/acpi/dsdt.
17986
17987 ACPI CA Core Subsystem:
17988
17989Fixed a problem introduced in the previous label where some of the
17990"small" resource descriptor types were not recognized.
17991
17992Improved error messages for the case where an ASL Field is outside
17993the range of the parent operation region.
17994
17995 ASL Compiler, version X2018:
17996
17997
17998Added error detection for ASL Fields that extend beyond the length
17999of the parent operation region (only if the length of the region
18000is known at compile time.)  This includes fields that have a
18001minimum access width that is smaller than the parent region, and
18002individual field units that are partially or entirely beyond the
18003extent of the parent.
18004
18005
18006
18007------------------------------------------
18008Summary of changes for this label: 04_27_01
18009
18010 ACPI CA Core Subsystem:
18011
18012Fixed a problem where the namespace mutex could be released at the
18013wrong time during execution of AcpiRemoveAddressSpaceHandler.
18014
18015Added optional thread ID output for debug traces, to simplify
18016debugging of multiple threads.  Added context switch notification
18017when the debug code realizes that a different thread is now
18018executing ACPI code.
18019
18020Some additional external data types have been prefixed with the
18021string "ACPI_" for consistency.  This may effect existing code.
18022The data types affected are the external callback typedefs - e.g.,
18023
18024WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18025
18026 Linux:
18027
18028Fixed an issue with the OSL semaphore implementation where a
18029thread was waking up with an error from receiving a SIGCHLD
18030signal.
18031
18032Linux version of ACPI CA now uses the system C library for string
18033manipulation routines instead of a local implementation.
18034
18035Cleaned up comments and removed TBDs.
18036
18037 ASL Compiler, version X2017:
18038
18039Enhanced error detection and reporting for all file I/O
18040operations.
18041
18042 Documentation:
18043
18044Programmer Reference updated to version 1.06.
18045
18046
18047
18048------------------------------------------
18049Summary of changes for this label: 04_13_01
18050
18051 ACPI CA Core Subsystem:
18052
18053Restructured support for BufferFields and RegionFields.
18054BankFields support is now fully operational.  All known 32-bit
18055limitations on field sizes have been removed.  Both BufferFields
18056and (Operation) RegionFields are now supported by the same field
18057management code.
18058
18059Resource support now supports QWORD address and IO resources. The
1806016/32/64 bit address structures and the Extended IRQ structure
18061have been changed to properly handle Source Resource strings.
18062
18063A ThreadId of -1 is now used to indicate a "mutex not acquired"
18064condition internally and must never be returned by AcpiOsThreadId.
18065This reserved value was changed from 0 since Unix systems allow a
18066thread ID of 0.
18067
18068Linux:
18069
18070Driver code reorganized to enhance portability
18071
18072Added a kernel configuration option to control ACPI_DEBUG
18073
18074Fixed the EC driver to honor _GLK.
18075
18076ASL Compiler, version X2016:
18077
18078Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18079address space was set to 0, not 0x7f as it should be.
18080
18081 ------------------------------------------
18082Summary of changes for this label: 03_13_01
18083
18084 ACPI CA Core Subsystem:
18085
18086During ACPI initialization, the _SB_._INI method is now run if
18087present.
18088
18089Notify handler fix - notifies are deferred until the parent method
18090completes execution.  This fixes the "mutex already acquired"
18091issue seen occasionally.
18092
18093Part of the "implicit conversion" rules in ACPI 2.0 have been
18094found to cause compatibility problems with existing ASL/AML.  The
18095convert "result-to-target-type" implementation has been removed
18096for stores to method Args and Locals.  Source operand conversion
18097is still fully implemented.  Possible changes to ACPI 2.0
18098specification pending.
18099
18100Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18101length.
18102
18103Fix for compiler warnings for 64-bit compiles.
18104
18105 Linux:
18106
18107/proc output aligned for easier parsing.
18108
18109Release-version compile problem fixed.
18110
18111New kernel configuration options documented in Configure.help.
18112
18113IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18114context" message.
18115
18116 OSPM:
18117
18118Power resource driver integrated with bus manager.
18119
18120Fixed kernel fault during active cooling for thermal zones.
18121
18122Source Code:
18123
18124The source code tree has been restructured.
18125
18126
18127
18128------------------------------------------
18129Summary of changes for this label: 03_02_01
18130
18131 Linux OS Services Layer (OSL):
18132
18133Major revision of all Linux-specific code.
18134
18135Modularized all ACPI-specific drivers.
18136
18137Added new thermal zone and power resource drivers.
18138
18139Revamped /proc interface (new functionality is under /proc/acpi).
18140
18141New kernel configuration options.
18142
18143 Linux known issues:
18144
18145New kernel configuration options not documented in Configure.help
18146yet.
18147
18148
18149Module dependencies not currently implemented. If used, they
18150should be loaded in this order: busmgr, power, ec, system,
18151processor, battery, ac_adapter, button, thermal.
18152
18153Modules will not load if CONFIG_MODVERSION is set.
18154
18155IBM 600E - entering S5 may reboot instead of shutting down.
18156
18157IBM 600E - Sleep button may generate "Invalid <NULL> context"
18158message.
18159
18160Some systems may fail with "execution mutex already acquired"
18161message.
18162
18163 ACPI CA Core Subsystem:
18164
18165Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18166for the  deadlock detection code. Defined to return a non-zero, 32-
18167bit thread ID for the currently executing thread.  May be a non-
18168zero constant integer on single-thread systems.
18169
18170Implemented deadlock detection for internal subsystem mutexes.  We
18171may add conditional compilation for this code (debug only) later.
18172
18173ASL/AML Mutex object semantics are now fully supported.  This
18174includes multiple acquires/releases by owner and support for the
18175
18176Mutex SyncLevel parameter.
18177
18178A new "Force Release" mechanism automatically frees all ASL
18179Mutexes that have been acquired but not released when a thread
18180exits the interpreter.  This forces conformance to the ACPI spec
18181("All mutexes must be released when an invocation exits") and
18182prevents deadlocked ASL threads.  This mechanism can be expanded
18183(later) to monitor other resource acquisitions if OEM ASL code
18184continues to misbehave (which it will).
18185
18186Several new ACPI exception codes have been added for the Mutex
18187support.
18188
18189Recursive method calls are now allowed and supported (the ACPI
18190spec does in fact allow recursive method calls.)  The number of
18191recursive calls is subject to the restrictions imposed by the
18192SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18193parameter.
18194
18195Implemented support for the SyncLevel parameter for control
18196methods (ACPI 2.0 feature)
18197
18198Fixed a deadlock problem when multiple threads attempted to use
18199the interpreter.
18200
18201Fixed a problem where the string length of a String package
18202element was not always set in a package returned from
18203AcpiEvaluateObject.
18204
18205Fixed a problem where the length of a String package element was
18206not always included in the length of the overall package returned
18207from AcpiEvaluateObject.
18208
18209Added external interfaces (Acpi*) to the ACPI debug memory
18210manager.  This manager keeps a list of all outstanding
18211allocations, and can therefore detect memory leaks and attempts to
18212free memory blocks more than once. Useful for code such as the
18213power manager, etc.  May not be appropriate for device drivers.
18214Performance with the debug code enabled is slow.
18215
18216The ACPI Global Lock is now an optional hardware element.
18217
18218 ASL Compiler Version X2015:
18219
18220Integrated changes to allow the compiler to be generated on
18221multiple platforms.
18222
18223Linux makefile added to generate the compiler on Linux
18224
18225 Source Code:
18226
18227All platform-specific headers have been moved to their own
18228subdirectory, Include/Platform.
18229
18230New source file added, Interpreter/ammutex.c
18231
18232New header file, Include/acstruct.h
18233
18234 Documentation:
18235
18236The programmer reference has been updated for the following new
18237interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18238
18239 ------------------------------------------
18240Summary of changes for this label: 02_08_01
18241
18242Core ACPI CA Subsystem: Fixed a problem where an error was
18243incorrectly returned if the return resource buffer was larger than
18244the actual data (in the resource interfaces).
18245
18246References to named objects within packages are resolved to the
18247
18248full pathname string before packages are returned directly (via
18249the AcpiEvaluateObject interface) or indirectly via the resource
18250interfaces.
18251
18252Linux OS Services Layer (OSL):
18253
18254Improved /proc battery interface.
18255
18256
18257Added C-state debugging output and other miscellaneous fixes.
18258
18259ASL Compiler Version X2014:
18260
18261All defined method arguments can now be used as local variables,
18262including the ones that are not actually passed in as parameters.
18263The compiler tracks initialization of the arguments and issues an
18264exception if they are used without prior assignment (just like
18265locals).
18266
18267The -o option now specifies a filename prefix that is used for all
18268output files, including the AML output file.  Otherwise, the
18269default behavior is as follows:  1) the AML goes to the file
18270specified in the DSDT.  2) all other output files use the input
18271source filename as the base.
18272
18273 ------------------------------------------
18274Summary of changes for this label: 01_25_01
18275
18276Core ACPI CA Subsystem: Restructured the implementation of object
18277store support within the  interpreter.  This includes support for
18278the Store operator as well  as any ASL operators that include a
18279target operand.
18280
18281Partially implemented support for Implicit Result-to-Target
18282conversion. This is when a result object is converted on the fly
18283to the type of  an existing target object.  Completion of this
18284support is pending  further analysis of the ACPI specification
18285concerning this matter.
18286
18287CPU-specific code has been removed from the subsystem (hardware
18288directory).
18289
18290New Power Management Timer functions added
18291
18292Linux OS Services Layer (OSL): Moved system state transition code
18293to the core, fixed it, and modified  Linux OSL accordingly.
18294
18295Fixed C2 and C3 latency calculations.
18296
18297
18298We no longer use the compilation date for the version message on
18299initialization, but retrieve the version from AcpiGetSystemInfo().
18300
18301Incorporated for fix Sony VAIO machines.
18302
18303Documentation:  The Programmer Reference has been updated and
18304reformatted.
18305
18306
18307ASL Compiler:  Version X2013: Fixed a problem where the line
18308numbering and error reporting could get out  of sync in the
18309presence of multiple include files.
18310
18311 ------------------------------------------
18312Summary of changes for this label: 01_15_01
18313
18314Core ACPI CA Subsystem:
18315
18316Implemented support for type conversions in the execution of the
18317ASL  Concatenate operator (The second operand is converted to
18318match the type  of the first operand before concatenation.)
18319
18320Support for implicit source operand conversion is partially
18321implemented.   The ASL source operand types Integer, Buffer, and
18322String are freely  interchangeable for most ASL operators and are
18323converted by the interpreter  on the fly as required.  Implicit
18324Target operand conversion (where the  result is converted to the
18325target type before storing) is not yet implemented.
18326
18327Support for 32-bit and 64-bit BCD integers is implemented.
18328
18329Problem fixed where a field read on an aligned field could cause a
18330read  past the end of the field.
18331
18332New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18333does not return a value, but the caller expects one.  (The ASL
18334compiler flags this as a warning.)
18335
18336ASL Compiler:
18337
18338Version X2011:
183391. Static typechecking of all operands is implemented. This
18340prevents the use of invalid objects (such as using a Package where
18341an Integer is required) at compile time instead of at interpreter
18342run-time.
183432. The ASL source line is printed with ALL errors and warnings.
183443. Bug fix for source EOF without final linefeed.
183454. Debug option is split into a parse trace and a namespace trace.
183465. Namespace output option (-n) includes initial values for
18347integers and strings.
183486. Parse-only option added for quick syntax checking.
183497. Compiler checks for duplicate ACPI name declarations
18350
18351Version X2012:
183521. Relaxed typechecking to allow interchangeability between
18353strings, integers, and buffers.  These types are now converted by
18354the interpreter at runtime.
183552. Compiler reports time taken by each internal subsystem in the
18356debug         output file.
18357
18358
18359 ------------------------------------------
18360Summary of changes for this label: 12_14_00
18361
18362ASL Compiler:
18363
18364This is the first official release of the compiler. Since the
18365compiler requires elements of the Core Subsystem, this label
18366synchronizes everything.
18367
18368------------------------------------------
18369Summary of changes for this label: 12_08_00
18370
18371
18372Fixed a problem where named references within the ASL definition
18373of both OperationRegions and CreateXXXFields did not work
18374properly.  The symptom was an AE_AML_OPERAND_TYPE during
18375initialization of the region/field. This is similar (but not
18376related internally) to the problem that was fixed in the last
18377label.
18378
18379Implemented both 32-bit and 64-bit support for the BCD ASL
18380functions ToBCD and FromBCD.
18381
18382Updated all legal headers to include "2000" in the copyright
18383years.
18384
18385 ------------------------------------------
18386Summary of changes for this label: 12_01_00
18387
18388Fixed a problem where method invocations within the ASL definition
18389of both OperationRegions and CreateXXXFields did not work
18390properly.  The symptom was an AE_AML_OPERAND_TYPE during
18391initialization of the region/field:
18392
18393  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18394[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18395(0x3005)
18396
18397Fixed a problem where operators with more than one nested
18398subexpression would fail.  The symptoms were varied, by mostly
18399AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18400problem that has gone unnoticed until now.
18401
18402  Subtract (Add (1,2), Multiply (3,4))
18403
18404Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18405previous build (The prefix part of a relative path was handled
18406incorrectly).
18407
18408Fixed a problem where Operation Region initialization failed if
18409the operation region name was a "namepath" instead of a simple
18410"nameseg". Symptom was an AE_NO_OPERAND error.
18411
18412Fixed a problem where an assignment to a local variable via the
18413indirect RefOf mechanism only worked for the first such
18414assignment.  Subsequent assignments were ignored.
18415
18416 ------------------------------------------
18417Summary of changes for this label: 11_15_00
18418
18419ACPI 2.0 table support with backwards support for ACPI 1.0 and the
184200.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18421the AML  interpreter does NOT have support for the new 2.0 ASL
18422grammar terms at this time.
18423
18424All ACPI hardware access is via the GAS structures in the ACPI 2.0
18425FADT.
18426
18427All physical memory addresses across all platforms are now 64 bits
18428wide. Logical address width remains dependent on the platform
18429(i.e., "void *").
18430
18431AcpiOsMapMemory interface changed to a 64-bit physical address.
18432
18433The AML interpreter integer size is now 64 bits, as per the ACPI
184342.0 specification.
18435
18436For backwards compatibility with ACPI 1.0, ACPI tables with a
18437revision number less than 2 use 32-bit integers only.
18438
18439Fixed a problem where the evaluation of OpRegion operands did not
18440always resolve them to numbers properly.
18441
18442------------------------------------------
18443Summary of changes for this label: 10_20_00
18444
18445Fix for CBN_._STA issue.  This fix will allow correct access to
18446CBN_ OpRegions when the _STA returns 0x8.
18447
18448Support to convert ACPI constants (Ones, Zeros, One) to actual
18449values before a package object is returned
18450
18451Fix for method call as predicate to if/while construct causing
18452incorrect if/while behavior
18453
18454Fix for Else block package lengths sometimes calculated wrong (if
18455block > 63 bytes)
18456
18457Fix for Processor object length field, was always zero
18458
18459Table load abort if FACP sanity check fails
18460
18461Fix for problem with Scope(name) if name already exists
18462
18463Warning emitted if a named object referenced cannot be found
18464(resolved) during method execution.
18465
18466
18467
18468
18469
18470------------------------------------------
18471Summary of changes for this label: 9_29_00
18472
18473New table initialization interfaces: AcpiInitializeSubsystem no
18474longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18475necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18476>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18477AcpiLoadTables
18478
18479Note: These interface changes require changes to all existing OSDs
18480
18481The PCI_Config default address space handler is always installed
18482at the root namespace object.
18483
18484-------------------------------------------
18485Summary of changes for this label: 09_15_00
18486
18487The new initialization architecture is implemented.  New
18488interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18489AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18490
18491(Namespace is automatically loaded when a table is loaded)
18492
18493The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1849452 bytes to 32 bytes.  There is usually one of these for every
18495namespace object, so the memory savings is significant.
18496
18497Implemented just-in-time evaluation of the CreateField operators.
18498
18499Bug fixes for IA-64 support have been integrated.
18500
18501Additional code review comments have been implemented
18502
18503The so-called "third pass parse" has been replaced by a final walk
18504through the namespace to initialize all operation regions (address
18505spaces) and fields that have not yet been initialized during the
18506execution of the various _INI and REG methods.
18507
18508New file - namespace/nsinit.c
18509
18510-------------------------------------------
18511Summary of changes for this label: 09_01_00
18512
18513Namespace manager data structures have been reworked to change the
18514primary  object from a table to a single object.  This has
18515resulted in dynamic memory  savings of 3X within the namespace and
185162X overall in the ACPI CA subsystem.
18517
18518Fixed problem where the call to AcpiEvFindPciRootBuses was
18519inadvertently left  commented out.
18520
18521Reduced the warning count when generating the source with the GCC
18522compiler.
18523
18524Revision numbers added to each module header showing the
18525SourceSafe version of the file.  Please refer to this version
18526number when giving us feedback or comments on individual modules.
18527
18528The main object types within the subsystem have been renamed to
18529clarify their  purpose:
18530
18531ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18532ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18533ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18534
18535NOTE: no changes to the initialization sequence are included in
18536this label.
18537
18538-------------------------------------------
18539Summary of changes for this label: 08_23_00
18540
18541Fixed problem where TerminateControlMethod was being called
18542multiple times per  method
18543
18544Fixed debugger problem where single stepping caused a semaphore to
18545be  oversignalled
18546
18547Improved performance through additional parse object caching -
18548added  ACPI_EXTENDED_OP type
18549
18550-------------------------------------------
18551Summary of changes for this label: 08_10_00
18552
18553Parser/Interpreter integration:  Eliminated the creation of
18554complete parse trees  for ACPI tables and control methods.
18555Instead, parse subtrees are created and  then deleted as soon as
18556they are processed (Either entered into the namespace or  executed
18557by the interpreter).  This reduces the use of dynamic kernel
18558memory  significantly. (about 10X)
18559
18560Exception codes broken into classes and renumbered.  Be sure to
18561recompile all  code that includes acexcep.h.  Hopefully we won't
18562have to renumber the codes  again now that they are split into
18563classes (environment, programmer, AML code,  ACPI table, and
18564internal).
18565
18566Fixed some additional alignment issues in the Resource Manager
18567subcomponent
18568
18569Implemented semaphore tracking in the AcpiExec utility, and fixed
18570several places  where mutexes/semaphores were being unlocked
18571without a corresponding lock  operation.  There are no known
18572semaphore or mutex "leaks" at this time.
18573
18574Fixed the case where an ASL Return operator is used to return an
18575unnamed  package.
18576
18577-------------------------------------------
18578Summary of changes for this label: 07_28_00
18579
18580Fixed a problem with the way addresses were calculated in
18581AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
18582manifested itself when a Field was  created with WordAccess or
18583DwordAccess, but the field unit defined within the  Field was less
18584
18585than a Word or Dword.
18586
18587Fixed a problem in AmlDumpOperands() module's loop to pull
18588operands off of the  operand stack to display information. The
18589problem manifested itself as a TLB  error on 64-bit systems when
18590accessing an operand stack with two or more  operands.
18591
18592Fixed a problem with the PCI configuration space handlers where
18593context was  getting confused between accesses. This required a
18594change to the generic address  space handler and address space
18595setup definitions. Handlers now get both a  global handler context
18596(this is the one passed in by the user when executing
18597AcpiInstallAddressSpaceHandler() and a specific region context
18598that is unique to  each region (For example, the _ADR, _SEG and
18599_BBN values associated with a  specific region). The generic
18600function definitions have changed to the  following:
18601
18602typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18603UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18604*HandlerContext, // This used to be void *Context void
18605*RegionContext); // This is an additional parameter
18606
18607typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18608RegionHandle, UINT32 Function, void *HandlerContext,  void
18609**RegionContext); // This used to be **ReturnContext
18610
18611-------------------------------------------
18612Summary of changes for this label: 07_21_00
18613
18614Major file consolidation and rename.  All files within the
18615interpreter have been  renamed as well as most header files.  This
18616was done to prevent collisions with  existing files in the host
18617OSs -- filenames such as "config.h" and "global.h"  seem to be
18618quite common.  The VC project files have been updated.  All
18619makefiles  will require modification.
18620
18621The parser/interpreter integration continues in Phase 5 with the
18622implementation  of a complete 2-pass parse (the AML is parsed
18623twice) for each table;  This  avoids the construction of a huge
18624parse tree and therefore reduces the amount of  dynamic memory
18625required by the subsystem.  Greater use of the parse object cache
18626means that performance is unaffected.
18627
18628Many comments from the two code reviews have been rolled in.
18629
18630The 64-bit alignment support is complete.
18631
18632-------------------------------------------
18633Summary of changes for this label: 06_30_00
18634
18635With a nod and a tip of the hat to the technology of yesteryear,
18636we've added  support in the source code for 80 column output
18637devices.  The code is now mostly  constrained to 80 columns or
18638less to support environments and editors that 1)  cannot display
18639or print more than 80 characters on a single line, and 2) cannot
18640disable line wrapping.
18641
18642A major restructuring of the namespace data structure has been
18643completed.  The  result is 1) cleaner and more
18644understandable/maintainable code, and 2) a  significant reduction
18645in the dynamic memory requirement for each named ACPI  object
18646(almost half).
18647
18648-------------------------------------------
18649Summary of changes for this label: 06_23_00
18650
18651Linux support has been added.  In order to obtain approval to get
18652the ACPI CA  subsystem into the Linux kernel, we've had to make
18653quite a few changes to the  base subsystem that will affect all
18654users (all the changes are generic and OS- independent).  The
18655effects of these global changes have been somewhat far  reaching.
18656Files have been merged and/or renamed and interfaces have been
18657renamed.   The major changes are described below.
18658
18659Osd* interfaces renamed to AcpiOs* to eliminate namespace
18660pollution/confusion  within our target kernels.  All OSD
18661interfaces must be modified to match the new  naming convention.
18662
18663Files merged across the subsystem.  A number of the smaller source
18664and header  files have been merged to reduce the file count and
18665increase the density of the  existing files.  There are too many
18666to list here.  In general, makefiles that  call out individual
18667files will require rebuilding.
18668
18669Interpreter files renamed.  All interpreter files now have the
18670prefix am*  instead of ie* and is*.
18671
18672Header files renamed:  The acapi.h file is now acpixf.h.  The
18673acpiosd.h file is  now acpiosxf.h.  We are removing references to
18674the acronym "API" since it is  somewhat windowsy. The new name is
18675"external interface" or xface or xf in the  filenames.j
18676
18677
18678All manifest constants have been forced to upper case (some were
18679mixed case.)   Also, the string "ACPI_" has been prepended to many
18680(not all) of the constants,  typedefs, and structs.
18681
18682The globals "DebugLevel" and "DebugLayer" have been renamed
18683"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
18684
18685All other globals within the subsystem are now prefixed with
18686"AcpiGbl_" Internal procedures within the subsystem are now
18687prefixed with "Acpi" (with only  a few exceptions).  The original
18688two-letter abbreviation for the subcomponent  remains after "Acpi"
18689- for example, CmCallocate became AcpiCmCallocate.
18690
18691Added a source code translation/conversion utility.  Used to
18692generate the Linux  source code, it can be modified to generate
18693other types of source as well. Can  also be used to cleanup
18694existing source by removing extraneous spaces and blank  lines.
18695Found in tools/acpisrc/*
18696
18697OsdUnMapMemory was renamed to OsdUnmapMemory and then
18698AcpiOsUnmapMemory.  (UnMap  became Unmap).
18699
18700A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18701When set to  one, this indicates that the caller wants to use the
18702
18703semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
18704both types.  However, implementers of this  call may want to use
18705different OS primitives depending on the type of semaphore
18706requested.  For example, some operating systems provide separate
18707
18708"mutex" and  "semaphore" interfaces - where the mutex interface is
18709much faster because it  doesn't have all the overhead of a full
18710semaphore implementation.
18711
18712Fixed a deadlock problem where a method that accesses the PCI
18713address space can  block forever if it is the first access to the
18714space.
18715
18716-------------------------------------------
18717Summary of changes for this label: 06_02_00
18718
18719Support for environments that cannot handle unaligned data
18720accesses (e.g.  firmware and OS environments devoid of alignment
18721handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
18722been added (via configurable macros) in  these three areas: -
18723Transfer of data from the raw AML byte stream is done via byte
18724moves instead of    word/dword/qword moves. - External objects are
18725aligned within the user buffer, including package   elements (sub-
18726objects). - Conversion of name strings to UINT32 Acpi Names is now
18727done byte-wise.
18728
18729The Store operator was modified to mimic Microsoft's
18730implementation when storing  to a Buffer Field.
18731
18732Added a check of the BM_STS bit before entering C3.
18733
18734The methods subdirectory has been obsoleted and removed.  A new
18735file, cmeval.c  subsumes the functionality.
18736
18737A 16-bit (DOS) version of AcpiExec has been developed.  The
18738makefile is under  the acpiexec directory.
18739