]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/contrib/dev/acpica/changes.txt
Merge ^/vendor/lld/dist up to its last change, and resolve conflicts.
[FreeBSD/FreeBSD.git] / sys / contrib / dev / acpica / changes.txt
1 ----------------------------------------
2 10 January 2020. Summary of changes for version 20200110:
3
4
5 1) ACPICA kernel-resident subsystem:
6
7 Updated all copyrights to 2020. This affects all ACPICA source code 
8 modules.
9
10
11 2) iASL Compiler/Disassembler and ACPICA tools:
12
13 ASL test suite (ASLTS): Updated all copyrights to 2020.
14
15 Tools and utilities: Updated all signon copyrights to 2020.
16
17 iASL: fix forward reference analysis for field declarations. Fixes 
18 forward reference analysis for field declarations by searching the 
19 parent scope for the named object when the object is not present in 
20 the current scope.
21
22 iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 
23 full pathname of the name that already exists is printed.
24
25 iASL: Enhance duplicate Case() detection for buffers. Add check for 
26 buffers with no initializer list (these buffers will be filled with 
27 zeros at runtime.)
28
29
30 ----------------------------------------
31 13 December 2019. Summary of changes for version 20191213:
32
33
34 1) ACPICA kernel-resident subsystem:
35
36 Return a Buffer object for all fields created via the CreateField
37 operator. Previously, an Integer would be returned if the size of
38 the field was less than or equal to the current size of an Integer.
39 Although this goes against the ACPI specification, it provides
40 compatibility with other ACPI implementations. Also updated the
41 ASLTS test suite to reflect this new behavior.
42
43 2) iASL Compiler/Disassembler and ACPICA tools:
44
45 iASL: Implemented detection of (and throw an error for) duplicate
46 values for Case statements within a single Switch statement. Duplicate
47 Integers, Strings, and Buffers are supported.
48
49 iASL: Fix error logging issue during multiple file compilation --
50 Switch to the correct input file during error node creation.
51
52 iASL: For duplicate named object creation, now emit an error instead
53 of a warning - since this will cause a runtime error.
54
55 AcpiSrc: Add unix line-ending support for non-Windows builds.
56
57 iASL: Add an error condition for an attempt to create a NameString
58 with > 255 NameSegs (the max allowable via the AML definition).
59
60
61 ----------------------------------------
62 18 October 2019. Summary of changes for version 20191018:
63
64
65 1) ACPICA kernel-resident subsystem:
66
67 Debugger: added a new command: ?Fields [address space ID]?. This command 
68 dumps the contents of all field units that are defined within the 
69 namespace with a particular address space ID.
70
71 Modified the external interface AcpiLoadTable() to return a table index. 
72 This table index can be used for unloading a table for debugging.
73     ACPI_STATUS
74     AcpiLoadTable (
75         ACPI_TABLE_HEADER       *Table,
76         UINT32                  *TableIndex))
77
78 Implemented a new external interface: AcpiUnloadTable() This new function 
79 takes a table index as an argument and unloads the table. Useful for 
80 debugging only.
81     ACPI_STATUS
82     AcpiUnloadTable (
83         UINT32                  TableIndex))
84
85 Ported the AcpiNames utility to use the new table initialization 
86 sequence. The utility was broken before this change. Also, it was 
87 required to include most of the AML interpreter into the utility in order 
88 to process table initialization (module-level code execution.)
89
90 Update for results from running Clang V8.0.1. This fixes all "dead 
91 assignment" warnings. There are still several "Dereference of NULL 
92 pointer" warnings, but these have been found to be false positive 
93 warnings.
94
95
96 2) iASL Compiler/Disassembler and ACPICA tools:
97
98 iASL: numerous table compiler changes to ensure that the usage of 
99 yacc/bison syntax is POSIX-compliant.
100
101 iASL/disassembler: several simple bug fixes in the data table 
102 disassembler.
103
104 Acpiexec: expanded the initialization file (the -fi option) to initialize 
105 strings, buffers, packages, and field units.
106
107
108 ----------------------------------------
109 16 August 2019. Summary of changes for version 20190816:
110
111 This release is available at https://acpica.org/downloads
112
113
114 1) ACPICA kernel-resident subsystem:
115
116 Modified the OwnerId mechanism to allow for more Owner Ids. The previous 
117 limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 
118 exceptions on machines with a large number of initialization threads, 
119 many CPU cores and nested initialization control methods.
120
121 Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 
122 checking if the given GPE (as represented by a GPE device handle and a 
123 GPE number) is currently active and dispatching it (if that's the case) 
124 outside of interrupt context.
125
126 Table load: exit the interpreter before initializing objects within the 
127 new table This prevents re-acquiring the interpreter lock when loading 
128 tables
129
130 Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
131 uk Kim
132
133 Macros: removed pointer math on a null pointer. Causes warnings on some 
134 compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 
135 instead of using arithmetic.
136
137 Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 
138 across all "printf-like" internal functions. Also, cleanup all calls to 
139 such functions (both in 32-bit mode and 64-bit mode) now that they are 
140 analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
141
142
143 2) iASL Compiler/Disassembler and ACPICA tools:
144
145 iASL: implemented a new data table compiler flex/bison front-end. This 
146 change is internal and is not intended to result in changes to the 
147 compiled code. This new compiler front-end can be invoked using the -tp 
148 option for now, until the old mechanism is removed.
149
150 ASLTS: Implemented a new data table compiler test suite. This test suite 
151 generates all table templates and compile/disassemble/re-compile/binary-
152 compare each file. 
153
154 iASL: return -1 if AML files were not generated due to compiler errors
155
156 iASL: added a warning on use of the now-legacy ASL Processor () keyword.
157
158 iASL: added an error on _UID object declaration that returns a String 
159 within a Processor () declaration. A _UID for a processor must be an 
160 Integer.
161
162 iASL: added a null terminator to name strings that consist only of 
163 multiple parent prefixes (^)
164
165 iASL: added support to compile both ASL and data table files in a single 
166 command.
167
168 Updated the tool generation project files that were recently migrated to 
169 MSVC 2017 to eliminate all new warnings. The new project files appear in 
170 the directory \acpica\generate\msvc2017. This change effectively 
171 deprecates the older project files in \acpica\generate\msvc9.
172
173
174 ----------------------------------------
175 03 July 2019. Summary of changes for version 20190703:
176
177
178 1) ACPICA kernel-resident subsystem:
179
180 Remove legacy module-level support code. There were still some remnants 
181 of the legacy module-level code executions. Since we no longer support 
182 this option, this is essentially dead code and has been removed from the 
183 ACPICA source.
184
185 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 
186 scope. If these named objects are declared outside the root scope, they 
187 will not be invoked by any host Operating System.
188
189 Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 
190 one) can be enabled in two situations. First, the GPEs with existing _Lxx 
191 and _Exx methods are enabled implicitly by ACPICA during system 
192 initialization.  Second, the GPEs without these methods (like GPEs listed 
193 by _PRW objects for wakeup devices) need to be enabled directly by the 
194 code that is going to use them (e.g. ACPI power management or device 
195 drivers).
196
197 In the former case, if the status of a given GPE is set to start with, 
198 its handler method (either _Lxx or _Exx) needs to be invoked to take care 
199 of the events (possibly) signaled before the GPE was enabled. In the 
200 latter case, however, the first caller of AcpiEnableGpe() for a given GPE 
201 should not be expected to care about any events that might be signaled 
202 through it earlier.  In that case, it is better to clear the status of 
203 the GPE before enabling it, to prevent stale events from triggering 
204 unwanted actions (like spurious system resume, for example).
205
206 For this reason, modify AcpiEvAddGpeReference() to take an additional 
207 boolean argument indicating whether or not the GPE status needs to be 
208 cleared when its reference counter changes from zero to one and make 
209 AcpiEnableGpe() pass TRUE to it through that new argument.
210
211
212 2) iASL Compiler/Disassembler and ACPICA tools:
213
214 The tool generation process has been migrated to MSVC 2017, and all 
215 project files have been upgraded. The new project files appear in the 
216 directory \acpica\generate\msvc2017. This change effectively deprecates 
217 the older project files in \acpica\generate\msvc9.
218
219 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 
220 scope. If these named objects are declared outside the root scope, they 
221 will not be invoked by any host Operating System
222
223 ----------------------------------------
224 09 May 2019. Summary of changes for version 20190509:
225
226
227 1) ACPICA kernel-resident subsystem:
228
229 Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling 
230 them") that causes problems with Thunderbolt controllers to occur if a 
231 dock device is connected at init time (the xhci_hcd and thunderbolt 
232 modules crash which prevents peripherals connected through them from 
233 working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 
234 Dispatch active GPEs at init time") to get undone, so the problem 
235 addressed by commit ecc1165b8b74 appears again as a result of it.
236
237
238 2) iASL Compiler/Disassembler and ACPICA tools:
239
240 Reverted iASL: Additional forward reference detection. This change 
241 reverts forward reference detection for field declarations. The feature 
242 unintentionally emitted AML bytecode with incorrect package lengths for 
243 some ASL code related to Fields and OperationRegions. This malformed AML 
244 can cause systems to crash
245 during boot. The malformed AML bytecode is emitted in iASL version 
246 20190329 and 20190405.
247
248 iASL: improve forward reference detection. This change improves forward 
249 reference detection for named objects inside of scopes. If a parse object 
250 has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 
251 a named object that is declared later in the AML bytecode. This is 
252 allowed if the reference is inside of a method and the declaration is 
253 outside of a method like so:
254
255 DefinitionBlock(...)
256 {
257     Method (TEST)
258     {
259         Return (NUM0)
260     }
261     Name (NUM0,0)
262 }
263
264 However, if the declaration and reference are both in the same method or 
265 outside any methods, this is a forward reference and should be marked as 
266 an error because it would result in runtime errors.
267
268 DefinitionBlock(...)
269 {
270     Name (BUFF, Buffer (NUM0) {}) // Forward reference
271     Name (NUM0, 0x0)
272
273     Method (TEST)
274     {
275         Local0 = NUM1
276         Name (NUM1, 0x1) // Forward reference
277         return (Local0)
278     }
279 }
280
281 iASL: Implemented additional buffer overflow analysis for BufferField 
282 declarations. Check if a buffer index argument to a create buffer field 
283 operation is beyond the end of the target buffer.
284
285 This affects these AML operators:
286  
287    AML_CREATE_FIELD_OP
288    AML_CREATE_BIT_FIELD_OP
289    AML_CREATE_BYTE_FIELD_OP
290    AML_CREATE_WORD_FIELD_OP
291    AML_CREATE_DWORD_FIELD_OP
292    AML_CREATE_QWORD_FIELD_OP
293
294  There are three conditions that must be satisfied in order to allow this 
295 validation at compile time:
296  
297    1) The length of the target buffer must be an integer constant
298    2) The index specified in the create* must be an integer constant
299    3) For CreateField, the bit length argument must be non-zero.
300
301 Example:
302     Name (BUF1, Buffer() {1,2})
303     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
304
305 dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
306 Error    6165 -                           ^ Buffer index beyond end of 
307 target buffer
308
309
310 ----------------------------------------
311 05 April 2019. Summary of changes for version 20190405:
312
313
314 1) ACPICA kernel-resident subsystem:
315
316 Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 
317 unconditionally clearing ACPI IRQs during suspend/resume") was added 
318 earlier to stop clearing of event status bits unconditionally on suspend 
319 and resume paths. Though this change fixed an issue on suspend path, it 
320 introduced regressions on several resume paths. In the case of S0ix, 
321 events are enabled as part of device suspend path. If status bits for the 
322 events are set when they are enabled, it could result in premature wake 
323 from S0ix. If status is cleared for any event that is being enabled so 
324 that any stale events are cleared out. In case of S0ix, events are 
325 enabled as part of device suspend path. If status bits for the events are 
326 set when they are enabled, it could result in premature wake from S0ix.
327
328 This change ensures that status is cleared for any event that is being 
329 enabled so that any stale events are cleared out.
330
331
332 2) iASL Compiler/Disassembler and ACPICA tools:
333
334 iASL: Implemented an enhanced multiple file compilation that combines 
335 named objects from all input files to a single namespace. With this 
336 feature, any unresolved external declarations as well as duplicate named 
337 object declarations can be detected during compilation rather than 
338 generating errors much later at runtime. The following commands are 
339 examples that utilize this feature:
340     iasl dsdt.asl ssdt.asl
341     iasl dsdt.asl ssdt1.asl ssdt2.asl
342     iasl dsdt.asl ssdt*.asl
343
344 ----------------------------------------
345 29 March 2019. Summary of changes for version 20190329:
346
347
348 1) ACPICA kernel-resident subsystem:
349
350 Namespace support: Remove the address nodes from global list after method 
351 termination. The global address list contains pointers to namespace nodes 
352 that represent Operation Regions. This change properly removes Operation 
353 Region namespace nodes that are declared dynamically during method 
354 execution.
355
356 Linux: Use a different debug default than ACPICA. There was a divergence 
357 between Linux and the ACPICA codebases. In order to resolve this 
358 divergence, Linux now declares its own debug default in aclinux.h
359
360 Renamed some internal macros to improve code understanding and 
361 maintenance. The macros below all operate on single 4-character ACPI 
362 NameSegs, not generic strings (old -> new):
363     ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
364     ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
365     ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
366
367 Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 
368 table.
369
370 Test suite: Update makefiles, add PCC operation region support
371
372
373 2) iASL Compiler/Disassembler and Tools:
374
375 iASL: Implemented additional illegal forward reference detection. Now 
376 detect and emit an error upon detection of a forward reference from a 
377 Field to an Operation Region. This will fail at runtime if allowed to 
378 pass the compiler.
379
380 AcpiExec: Add an address list check for dynamic Operation Regions. This 
381 feature performs a sanity test for each node the global address list. 
382 This is done in order to ensure that all dynamic operation regions are 
383 properly removed from the global address list and no dangling pointers 
384 are left behind.
385
386 Disassembler: Improved generation of resource pathnames. This change 
387 improves the code that generates resource descriptor and resource tag 
388 pathnames. The original code used a bunch of str* C library functions 
389 that caused warnings on some compilers.
390
391 iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 
392 function can overwrite buffers if the calling code is not very careful. 
393 In the case of generating a module/table header, use of memmove is a 
394 better implementation.
395
396
397 3) Status of new features that have not been completed at this time:
398
399 iASL: Implementing an enhanced multiple file compilation into a single 
400 namespace feature (Status): This feature will be released soon, and 
401 allows multiple ASL files to be compiled into the same single namespace. 
402 By doing so, any unresolved external declarations as well as duplicate 
403 named object declarations can be detected during compilation (rather than 
404 later during runtime). The following commands are examples that utilize 
405 this feature:
406     iasl dsdt.asl ssdt.asl
407     iasl dsdt.asl ssdt1.asl ssdt2.asl
408     iasl dsdt.asl ssdt*.asl
409
410 ASL tutorial status: Feedback is being gathered internally and the 
411 current plan is to publish this tutorial on the ACPICA website after a 
412 final review by a tech writer.
413
414 ----------------------------------------
415 15 February 2019. Summary of changes for version 20190215:
416
417
418 0) Support for ACPI specification version 6.3:
419
420 Add PCC operation region support for the AML interpreter. This adds PCC 
421 operation region support in the AML interpreter and a default handler for 
422 acpiexec. The change also renames the PCC region address space keyword to 
423 PlatformCommChannel.
424
425 Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 
426 These methods provide OSPM with health information and device boot 
427 status.
428
429 PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 
430 defines if the trigger needs to be invoked by OSPM before or at the end 
431 of kernel crash dump processing/handling operation.
432
433 SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 
434 is used for describing devices such as heterogeneous processors, 
435 accelerators, GPUs, and IO devices with integrated compute or DMA 
436 engines.
437
438 MADT: Add support for statistical profiling in GICC. Statistical 
439 profiling extension (SPE) is an architecture-specific feature for ARM.
440
441 MADT: Add online capable flag. If this bit is set, system hardware 
442 supports enabling this processor during OS runtime.
443
444 New Error Disconnect Recover Notification value. There are a number of 
445 scenarios where system Firmware in collaboration with hardware may 
446 disconnect one or more devices from the rest of the system for purposes 
447 of error containment. Firmware can use this new notification value to 
448 alert OSPM of such a removal.
449
450 PPTT: New additional fields in Processor Structure Flags. These flags 
451 provide more information about processor topology.
452
453 NFIT/Disassembler: Change a field name from "Address Range" to "Region 
454 Type".
455
456 HMAT updates: make several existing fields to be reserved as well as 
457 rename subtable 0 to "memory proximity domain attributes".
458
459 GTDT: Add support for new GTDT Revision 3. This revision adds information 
460 for the EL2 timer.
461
462 iASL: Update the HMAT example template for new fields.
463
464 iASL: Add support for the new revision of the GTDT (Rev 3).
465
466
467 1) ACPICA kernel-resident subsystem:
468
469 AML Parser: fix the main AML parse loop to correctly skip erroneous 
470 extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
471 byte extended opcodes. If an error occurs during an AML table load, the 
472 AML parser will continue loading the table by skipping the offending 
473 opcode. This implements a "load table at any cost" philosophy.
474
475
476 2) iASL Compiler/Disassembler and Tools:
477
478 iASL: Add checks for illegal object references, such as a reference 
479 outside of method to an object within a method. Such an object is only 
480 temporary.
481
482 iASL: Emit error for creation of a zero-length operation region. Such a 
483 region is rather pointless. If encountered, a runtime error is also 
484 implemented in the interpeter.
485
486 Debugger: Fix a possible fault with the "test objects" command.
487
488 iASL: Makefile: support parent directory filenames containing embedded 
489 spaces.
490
491 iASL: Update the TPM2 template to revision 4.
492
493 iASL: Add the ability to report specific warnings or remarks as errors.
494
495 Disassembler: Disassemble OEMx tables as actual AML byte code. 
496 Previously, these tables were treated as "unknown table".
497
498 iASL: Add definition and disassembly for TPM2 revision 3.
499
500 iASL: Add support for TPM2 rev 3 compilation.
501
502
503 ----------------------------------------
504 08 January 2019. Summary of changes for version 20190108:
505
506
507 1) ACPICA kernel-resident subsystem:
508
509 Updated all copyrights to 2019. This affects all source code modules.
510
511
512 2) iASL Compiler/Disassembler and Tools:
513
514 ASL test suite (ASLTS): Updated all copyrights to 2019.
515
516 Tools: Updated all signon copyrights to 2019.
517
518 AcpiExec: Added a new option to dump extra information concerning any 
519 memory leaks detected by the internal object/cache tracking mechanism. -
520 va
521
522 iASL: Updated the table template for the TPM2 table to the newest version 
523 of the table (Revision 4)
524
525
526 ----------------------------------------
527 13 December 2018. Summary of changes for version 20181213:
528
529
530 1) ACPICA Kernel-resident Subsystem:
531
532 Fixed some buffer length issues with the GenericSerialBus, related to two 
533 of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 
534 which are rarely seen in the field. For these, the LEN field of the ASL 
535 buffer is now ignored. Hans de Goede
536
537 Implemented a new object evaluation trace mechanism for control methods 
538 and data objects. This includes nested control methods. It is 
539 particularly useful for examining the ACPI execution during system 
540 initialization since the output is relatively terse. The flag below 
541 enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
542    #define ACPI_LV_EVALUATION          0x00080000
543
544 Examples:
545    Enter evaluation       :  _SB.PCI0._INI (Method)
546    Exit evaluation        :  _SB.PCI0._INI
547    Enter evaluation       :  _OSI (Method)
548    Exit evaluation        :  _OSI
549    Enter evaluation       :  _SB.PCI0.TEST (Method)
550    Nested method call     :     _SB.PCI0.NST1
551    Exit nested method     :     _SB.PCI0.NST1
552    Exit evaluation        :  _SB.PCI0.TEST
553
554 Added two recently-defined _OSI strings. See 
555 https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
556 osi.
557    "Windows 2018"
558    "Windows 2018.2"
559
560 Update for buffer-to-string conversions via the ToHexString ASL operator. 
561 A "0x" is now prepended to each of the hex values in the output string. 
562 This provides compatibility with other ACPI implementations. The ACPI 
563 specification is somewhat vague on this issue.
564    Example output string after conversion: 
565 "0x01,0x02,0x03,0x04,0x05,0x06"
566
567 Return a run-time error for TermArg expressions within individual package 
568 elements. Although this is technically supported by the ASL grammar, 
569 other ACPI implementations do not support this either. Also, this fixes a 
570 fault if this type of construct is ever encountered (it never has been).
571
572
573 2) iASL Compiler/Disassembler and Tools:
574
575 iASL: Implemented a new compile option (-ww) that will promote individual 
576 warnings and remarks to errors. This is intended to enhance the firmware 
577 build process.
578
579 AcpiExec: Implemented a new command-line option (-eo) to support the new 
580 object evaluation trace mechanism described above.
581
582 Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 
583 instead of a "unknown table" message.
584
585 AcpiHelp: Improved support for the "special" predefined names such as 
586 _Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 
587 used for "xx" and "x".
588
589 ----------------------------------------
590 31 October 2018. Summary of changes for version 20181031:
591
592
593 An Operation Region regression was fixed by properly adding address 
594 ranges to a global list during initialization. This allows OS to 
595 accurately check for overlapping regions between native devices (such as 
596 PCI) and Operation regions as well as checking for region conflicts 
597 between two Operation Regions.
598
599 Added support for the 2-byte extended opcodes in the code/feature that 
600 attempts to continue parsing during the table load phase. Skip parsing 
601 Device declarations (and other extended opcodes) when an error occurs 
602 during parsing. Previously, only single-byte opcodes were supported.
603
604 Cleanup: Simplified the module-level code support by eliminating a 
605 useless global variable (AcpiGbl_GroupModuleLeveCode).
606
607
608 2) iASL Compiler/Disassembler and Tools:
609
610 iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 
611 could cause a fault in the preprocessor. This was an inadvertent side-
612 effect from moving more allocations/frees to the local cache/memory 
613 mechanism.
614
615 iASL: Enhanced error detection by validating that all NameSeg elements 
616 within a NamePatch actually exist. The previous behavior was spotty at 
617 best, and such errors could be improperly ignored at compiler time (never 
618 at runtime, however. There are two new error messages, as shown in the 
619 examples below:
620
621 dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
622 Error    6161 -                              ^ One or more objects within 
623 the Pathname do not exist (TTTT.BXXX)
624
625 dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
626 Error    6160 -        One or more prefix Scopes do not exist ^  
627 (BBBB.CBF1)
628
629 iASL: Disassembler/table-compiler: Added support for the static data 
630 table TPM2 revision 3 (an older version of TPM2). The support has been 
631 added for the compiler and the disassembler.
632
633 Fixed compilation of DOS format data table file on Unix/Linux systems. 
634 iASL now properly detects line continuations (\) for DOS format data 
635 table definition language files on when executing on Unix/Linux.
636
637 ----------------------------------------
638 03 October 2018. Summary of changes for version 20181003:
639
640
641 2) iASL Compiler/Disassembler and Tools:
642
643 Fixed a regression introduced in version 20180927 that could cause the 
644 compiler to fault, especially with NamePaths containing one or more 
645 carats (^). Such as: ^^_SB_PCI0
646
647 Added a new remark for the Sleep() operator when the sleep time operand 
648 is larger than one second. This is a very long time for the ASL/BIOS code 
649 and may not be what was intended by the ASL writer.
650
651 ----------------------------------------
652 27 September 2018. Summary of changes for version 20180927:
653
654
655 1) ACPICA kernel-resident subsystem:
656
657 Updated the GPE support to clear the status of all ACPI events when 
658 entering any/all sleep states in order to avoid premature wakeups. In 
659 theory, this may cause some wakeup events to be missed, but the 
660 likelihood of this is small. This change restores the original behavior 
661 of the ACPICA code in order to fix a regression seen from the previous 
662 "Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 
663 This regression could cause some systems to incorrectly wake immediately.
664
665 Updated the execution of the _REG methods during initialization and 
666 namespace loading to bring the behavior into closer conformance to the 
667 ACPI specification and other ACPI implementations:
668
669 From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
670     "Control methods must assume all operation regions are inaccessible 
671 until the _REG(RegionSpace, 1) method is executed"
672
673     "The exceptions to this rule are:
674 1.  OSPM must guarantee that the following operation regions are always 
675 accessible:
676     SystemIO operation regions.
677     SystemMemory operation regions when accessing memory returned by the 
678 System Address Map reporting interfaces."
679
680 Since the state of both the SystemIO and SystemMemory address spaces are 
681 defined by the specification to never change, this ACPICA change ensures 
682 that now _REG is never called on them. This solves some problems seen in 
683 the field and provides compatibility with other ACPI implementations. An 
684 update to the upcoming new version of the ACPI specification will help 
685 clarify this behavior.
686
687 Updated the implementation of support for the Generic Serial Bus. For the 
688 "bidirectional" protocols, the internal implementation now automatically 
689 creates a return data buffer of the maximum size (255). This handles the 
690 worst-case for data that is returned from the serial bus handler, and 
691 fixes some problems seen in the field. This new buffer is directly 
692 returned to the ASL. As such, there is no true "bidirectional" buffer, 
693 which matches the ACPI specification. This is the reason for the "double 
694 store" seen in the example ASL code in the specification, shown below:
695
696 Word Process Call (AttribProcessCall):
697     OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
698     Field(TOP1, BufferAcc, NoLock, Preserve)
699     {
700         FLD1, 8, // Virtual register at command value 1.
701     }
702
703     Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
704                              // as BUFF
705     CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
706
707     Store(0x5416, DATA)               // Save 0x5416 into the data buffer
708     Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call 
709 transaction
710                            // This is the "double store". The write to
711                            // FLD1 returns a new buffer, which is stored
712                            // back into BUFF with the second Store.
713
714
715 2) iASL Compiler/Disassembler and Tools:
716
717 iASL: Implemented detection of extraneous/redundant uses of the Offset() 
718 operator within a Field Unit list. A remark is now issued for these. For 
719 example, the first two of the Offset() operators below are extraneous. 
720 Because both the compiler and the interpreter track the offsets 
721 automatically, these Offsets simply refer to the current offset and are 
722 unnecessary. Note, when optimization is enabled, the iASL compiler will 
723 in fact remove the redundant Offset operators and will not emit any AML 
724 code for them.
725
726     OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
727     Field (OPR1)
728     {
729         Offset (0),     // Never needed
730         FLD1, 32,
731         Offset (4),     // Redundant, offset is already 4 (bytes)
732         FLD2, 8,
733         Offset (64),    // OK use of Offset.
734         FLD3, 16,
735     }
736 dsdt.asl     14:         Offset (0),
737 Remark   2158 -                 ^ Unnecessary/redundant use of Offset 
738 operator
739
740 dsdt.asl     16:         Offset (4),
741 Remark   2158 -                 ^ Unnecessary/redundant use of Offset 
742 operator
743
744 ----------------------------------------
745 10 August 2018. Summary of changes for version 20180810:
746
747
748 1) ACPICA kernel-resident subsystem:
749
750 Initial ACPI table loading: Attempt to continue loading ACPI tables 
751 regardless of malformed AML. Since migrating table initialization to the 
752 new module-level code support, the AML interpreter rejected tables upon 
753 any ACPI error encountered during table load. This is a problem because 
754 non-serious ACPI errors during table load do not necessarily mean that 
755 the entire definition block (DSDT or SSDT) is invalid. This change 
756 improves the table loading by ignoring some types of errors that can be 
757 generated by incorrect AML. This can range from object type errors, scope 
758 errors, and index errors.
759
760 Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 
761 during suspend/resume. The status of ACPI events is no longer cleared 
762 when entering the ACPI S5 system state (power off) which caused some 
763 systems to power up immediately after turning off power in certain 
764 situations. This was a functional regression. It was fixed by clearing 
765 the status of all ACPI events again when entering S5 (for system-wide 
766 suspend or hibernation the clearing of the status of all events is not 
767 desirable, as it might cause the kernel to miss wakeup events sometimes). 
768 Rafael Wysocki.
769
770
771 2) iASL Compiler/Disassembler and Tools:
772
773 AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 
774 elements listed in the initialization file were previously initialized 
775 after the table load and before executing module-level code blocks. 
776 Recent changes in the module-level code support means that the table load 
777 becomes a large control method execution. If fields are used within 
778 module-level code and we are executing with the -fi option, the 
779 initialization values were used to initialize the namespace object(s) 
780 only after the table was finished loading. This change Provides an early 
781 initialization of objects specified in the initialization file so that 
782 field unit values are populated during the table load (not after the 
783 load).
784
785 AcpiExec: Fixed a small memory leak regression that could result in 
786 warnings during exit of the utility. These warnings were similar to 
787 these:
788     0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
789     0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
790
791 ----------------------------------------
792 29 June 2018. Summary of changes for version 20180629:
793
794
795 1) iASL Compiler/Disassembler and Tools:
796
797 iASL: Fixed a regression related to the use of the ASL External 
798 statement. Error checking for the use of the External() statement has 
799 been relaxed. Previously, a restriction on the use of External meant that 
800 the referenced named object was required to be defined in a different 
801 table (an SSDT). Thus it would be an error to declare an object as an 
802 external and then define the same named object in the same table. For 
803 example:
804     DefinitionBlock (...)
805     {
806         External (DEV1)
807         Device (DEV1){...} // This was an error
808     }
809 However, this behavior has caused regressions in some existing ASL code, 
810 because there is code that depends on named objects and externals (with 
811 the same name) being declared in the same table. This change will allow 
812 the ASL code above to compile without errors or warnings.
813
814 iASL: Implemented ASL language extensions for four operators to make some 
815 of their arguments optional instead of required:
816     1) Field (RegionName, AccessType, LockRule, UpdateRule)
817     2) BankField (RegionName, BankName, BankValue,
818                 AccessType, LockRule, UpdateRule)
819     3) IndexField (IndexName, DataName,
820                 AccessType, LockRule, UpdateRule)
821 For the Field operators above, the AccessType, LockRule, and UpdateRule 
822 are now optional arguments. The default values are:
823         AccessType: AnyAcc
824         LockRule:   NoLock
825         UpdateRule: Preserve
826     4) Mutex (MutexName, SyncLevel)
827 For this operator, the SyncLevel argument is now optional. This argument 
828 is rarely used in any meaningful way by ASL code, and thus it makes sense 
829 to make it optional. The default value is:
830         SyncLevel:  0
831
832 iASL: Attempted use of the ASL Unload() operator now results in the 
833 following warning:
834     "Unload is not supported by all operating systems"
835 This is in fact very true, and the Unload operator may be completely 
836 deprecated in the near future.
837
838 AcpiExec: Fixed a regression for the -fi option (Namespace initialization 
839 file. Recent changes in the ACPICA module-level code support altered the 
840 table load/initialization sequence . This means that the table load has 
841 become a large method execution of the table itself. If Operation Region 
842 Fields are used within any module-level code and the -fi option was 
843 specified, the initialization values were populated only after the table 
844 had completely finished loading (and thus the module-level code had 
845 already been executed). This change moves the initialization of objects 
846 listed in the initialization file to before the table is executed as a 
847 method. Field unit values are now initialized before the table execution 
848 is performed.
849
850 ----------------------------------------
851 31 May 2018. Summary of changes for version 20180531:
852
853
854 1) ACPICA kernel-resident Subsystem:
855
856 Implemented additional support to help ensure that a DSDT or SSDT is 
857 fully loaded even if errors are incurred during the load. The majority of 
858 the problems that are seen is the failure of individual AML operators 
859 that occur during execution of any module-level code (MLC) existing in 
860 the table. This support adds a mechanism to abort the current ASL 
861 statement (AML opcode), emit an error message, and to simply move on to 
862 the next opcode -- instead of aborting the entire table load. This is 
863 different than the execution of a control method where the entire method 
864 is aborted upon any error. The goal is to perform a very "best effort" to 
865 load the ACPI tables. The most common MLC errors that have been seen in 
866 the field are direct references to unresolved ASL/AML symbols (referenced 
867 directly without the use of the CondRefOf operator to validate the 
868 symbol). This new ACPICA behavior is now compatible with other ACPI 
869 implementations.
870
871 Interpreter: The Unload AML operator is no longer supported for the 
872 reasons below. An AE_NOT_IMPLEMENTED exception is returned.
873 1) A correct implementation on at least some hosts may not be possible.
874 2) Other ACPI implementations do not correctly/fully support it.
875 3) It requires host device driver support which is not known to exist.
876     (To properly support namespace unload out from underneath.)
877 4) This AML operator has never been seen in the field.
878
879 Parser: Added a debug option to dump AML parse sub-trees as they are 
880 being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 
881 ACPI_DB_PARSE_TREES.
882
883 Debugger: Reduced the verbosity for errors incurred during table load and 
884 module-level code execution.
885
886 Completed an investigation into adding a namespace node "owner list" 
887 instead of the current "owner ID" associated with namespace nodes. This 
888 list would link together all nodes that are owned by an individual 
889 control method. The purpose would be to enhance control method execution 
890 by speeding up cleanup during method exit (all namespace nodes created by 
891 a method are deleted upon method termination.) Currently, the entire 
892 namespace must be searched for matching owner IDs if (and only if) the 
893 method creates named objects outside of the local scope. However, by far 
894 the most common case is that methods create objects locally, not outside 
895 the method scope. There is already an ACPICA optimization in place that 
896 only searches the entire namespace in the rare case of a method creating 
897 objects elsewhere in the namespace. Therefore, it is felt that the 
898 overhead of adding an additional pointer to each namespace node to 
899 implement the owner list makes this feature unnecessary.
900
901
902 2) iASL Compiler/Disassembler and Tools:
903
904 iASL, Disassembler, and Template generator: Implemented support for 
905 Revision D of the IORT table. Adds a new subtable that is used to specify 
906 SMMUv3 PMCGs. rmurphy-arm.
907
908 Disassembler: Restored correct table header validation for the "special" 
909 ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 
910 table header and must be special-cased. This was a regression that has 
911 been present for apparently a long time.
912
913 AcpiExec: Reduced verbosity of the local exception handler implemented 
914 within acpiexec. This handler is invoked by ACPICA upon any exceptions 
915 generated during control method execution. A new option was added: -vh 
916 restores the original verbosity level if desired.
917
918 AcpiExec: Changed the default base from decimal to hex for the -x option 
919 (set debug level). This simplifies the use of this option and matches the 
920 behavior of the corresponding iASL -x option.
921
922 AcpiExec: Restored a force-exit on multiple control-c (sigint) 
923 interrupts. This allows program termination even if other issues cause 
924 the control-c to fail.
925
926 ASL test suite (ASLTS): Added tests for the recently implemented package 
927 element resolution mechanism that allows forward references to named 
928 objects from individual package elements (this mechanism provides 
929 compatibility with other ACPI implementations.)
930
931
932 ----------------------------------------
933 8 May 2018. Summary of changes for version 20180508:
934
935
936 1) ACPICA kernel-resident subsystem:
937
938 Completed the new (recently deployed) package resolution mechanism for 
939 the Load and LoadTable ASL/AML operators. This fixes a regression that 
940 was introduced in version 20180209 that could result in an 
941 AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 
942 (SSDT) that contains package objects.
943
944
945 2) iASL Compiler/Disassembler and Tools:
946
947 AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 
948 1 MB. This change allows for table offsets within the acpidump file to be 
949 up to 8 characters. These changes are backwards compatible with existing 
950 acpidump files.
951
952
953 ----------------------------------------
954 27 April 2018. Summary of changes for version 20180427: 
955
956
957 1) ACPICA kernel-resident subsystem:
958
959 Debugger: Added support for Package objects in the "Test Objects" 
960 command. This command walks the entire namespace and evaluates all named 
961 data objects (Integers, Strings, Buffers, and now Packages).
962
963 Improved error messages for the namespace root node. Originally, the root 
964 was referred to by the confusing string "\___". This has been replaced by 
965 "Namespace Root" for clarification.
966
967 Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 
968 Ian King <colin.king@canonical.com>.
969
970
971 2) iASL Compiler/Disassembler and Tools: 
972
973 iASL: Implemented support to detect and flag illegal forward references. 
974 For compatibility with other ACPI implementations, these references are 
975 now illegal at the root level of the DSDT or SSDTs. Forward references 
976 have always been illegal within control methods. This change should not 
977 affect existing ASL/AML code because of the fact that these references 
978 have always been illegal in the other ACPI implementation.
979
980 iASL: Added error messages for the case where a table OEM ID and OEM 
981 TABLE ID strings are longer than the ACPI-defined length. Previously, 
982 these strings were simply silently truncated.
983
984 iASL: Enhanced the -tc option (which creates an AML hex file in C, 
985 suitable for import into a firmware project):
986   1) Create a unique name for the table, to simplify use of multiple 
987 SSDTs.
988   2) Add a protection #ifdef in the file, similar to a .h header file.
989 With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 
990 evan.lloyd@arm.com
991
992 AcpiExec: Added a new option, -df, to disable the local fault handler. 
993 This is useful during debugging, where it may be desired to drop into a 
994 debugger on a fault.
995
996 ----------------------------------------
997 13 March 2018. Summary of changes for version 20180313:
998
999
1000 1) ACPICA kernel-resident subsystem:
1001
1002 Implemented various improvements to the GPE support:
1003
1004 1) Dispatch all active GPEs at initialization time so that no GPEs are 
1005 lost.
1006 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 
1007 before devices are enumerated.
1008 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 
1009 IRQs are not lost.
1010 4) Add parallel GPE handling to eliminate the possibility of dispatching 
1011 the same GPE twice.
1012 5) Dispatch any pending GPEs after enabling for the first time.
1013
1014 AcpiGetObjectInfo - removed support for the _STA method. This was causing 
1015 problems on some platforms.
1016
1017 Added a new _OSI string, "Windows 2017.2".
1018
1019 Cleaned up and simplified the module-level code support. These changes 
1020 are in preparation for the eventual removal of the legacy MLC support 
1021 (deferred execution), replaced by the new MLC architecture which executes 
1022 the MLC as a table is loaded (DSDT/SSDTs).
1023
1024 Changed a compile-time option to a runtime option. Changes the option to 
1025 ignore ACPI table load-time package resolution errors into a runtime 
1026 option. Used only for platforms that generate many AE_NOT_FOUND errors 
1027 during boot. AcpiGbl_IgnorePackageResolutionErrors.
1028
1029 Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 
1030 ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 
1031 compilation errors from unused variables (seen with some compilers).
1032
1033
1034 2) iASL Compiler/Disassembler and Tools:
1035
1036 ASLTS: parallelized execution in order to achieve an (approximately) 2X 
1037 performance increase.
1038
1039 ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 
1040 error reporting.
1041
1042 ----------------------------------------
1043 09 February 2018. Summary of changes for version 20180209:
1044
1045
1046 1) ACPICA kernel-resident subsystem:
1047
1048 Completed the final integration of the recent changes to Package Object 
1049 handling and the module-level AML code support. This allows forward 
1050 references from individual package elements when the package object is 
1051 declared from within module-level code blocks. Provides compatibility 
1052 with other ACPI implementations.
1053
1054 The new architecture for the AML module-level code has been completed and 
1055 is now the default for the ACPICA code. This new architecture executes 
1056 the module-level code in-line as the ACPI table is loaded/parsed instead 
1057 of the previous architecture which deferred this code until after the 
1058 table was fully loaded. This solves some ASL code ordering issues and 
1059 provides compatibility with other ACPI implementations. At this time, 
1060 there is an option to fallback to the earlier architecture, but this 
1061 support is deprecated and is planned to be completely removed later this 
1062 year.
1063
1064 Added a compile-time option to ignore AE_NOT_FOUND exceptions during 
1065 resolution of named reference elements within Package objects. Although 
1066 this is potentially a serious problem, it can generate a lot of 
1067 noise/errors on platforms whose firmware carries around a bunch of unused 
1068 Package objects. To disable these errors, define 
1069 ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 
1070 errors are always reported for ACPICA applications such as AcpiExec.
1071
1072 Fixed a regression related to the explicit type-conversion AML operators 
1073 (ToXXXX). The regression was introduced early in 2017 but was not seen 
1074 until recently because these operators are not fully supported by other 
1075 ACPI implementations and are thus rarely used by firmware developers. The 
1076 operators are defined by the ACPI specification to not implement the 
1077 "implicit result object conversion". The regression incorrectly 
1078 introduced this object conversion for the following explicit conversion 
1079 operators:
1080     ToInteger
1081     ToString
1082     ToBuffer
1083     ToDecimalString
1084     ToHexString
1085     ToBCD
1086     FromBCD
1087
1088
1089 2) iASL Compiler/Disassembler and Tools:
1090
1091 iASL: Fixed a problem with the compiler constant folding feature as 
1092 related to the ToXXXX explicit conversion operators. These operators do 
1093 not support the "implicit result object conversion" by definition. Thus, 
1094 ASL expressions that use these operators cannot be folded to a simple 
1095 Store operator because Store implements the implicit conversion. This 
1096 change uses the CopyObject operator for the ToXXXX operator folding 
1097 instead. CopyObject is defined to not implement implicit result 
1098 conversions and is thus appropriate for folding the ToXXXX operators.
1099
1100 iASL: Changed the severity of an error condition to a simple warning for 
1101 the case where a symbol is declared both locally and as an external 
1102 symbol. This accommodates existing ASL code.
1103
1104 AcpiExec: The -ep option to enable the new architecture for module-level 
1105 code has been removed. It is replaced by the -dp option which instead has 
1106 the opposite effect: it disables the new architecture (the default) and 
1107 enables the legacy architecture. When the legacy code is removed in the 
1108 future, the -dp option will be removed also.
1109
1110 ----------------------------------------
1111 05 January 2018. Summary of changes for version 20180105:
1112
1113
1114 1) ACPICA kernel-resident subsystem:
1115
1116 Updated all copyrights to 2018. This affects all source code modules.
1117
1118 Fixed a possible build error caused by an unresolved reference to the 
1119 AcpiUtSafeStrncpy function.
1120
1121 Removed NULL pointer arithmetic in the various pointer manipulation 
1122 macros. All "(void *) NULL" constructs are converted to "(void *) 0". 
1123 This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1124
1125 Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 
1126 Mittal.
1127
1128
1129 2) iASL Compiler/Disassembler and Tools:
1130
1131 ASLTS: Updated all copyrights to 2018.
1132
1133 Tools: Updated all signon copyrights to 2018.
1134
1135 AcpiXtract: Fixed a regression related to ACPI table signatures where the 
1136 signature was truncated to 3 characters (instead of 4).
1137
1138 AcpiExec: Restore the original terminal mode after the use of the -v and 
1139 -vd options.
1140
1141 ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1142
1143 ----------------------------------------
1144 14 December 2017. Summary of changes for version 20171214:
1145
1146
1147 1) ACPICA kernel-resident subsystem:
1148
1149 Fixed a regression in the external (public) AcpiEvaluateObjectTyped 
1150 interface where the optional "pathname" argument had inadvertently become 
1151 a required argument returning an error if omitted (NULL pointer 
1152 argument).
1153
1154 Fixed two possible memory leaks related to the recently developed "late 
1155 resolution" of reference objects within ASL Package Object definitions.
1156
1157 Added two recently defined _OSI strings: "Windows 2016" and "Windows 
1158 2017". Mario Limonciello.
1159
1160 Implemented and deployed a safer version of the C library function 
1161 strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the 
1162 creation of unterminated strings as a possible result of a standard 
1163 strncpy.
1164
1165 Cleaned up and restructured the global variable file (acglobal.h). There 
1166 are many changes, but no functional changes.
1167
1168
1169 2) iASL Compiler/Disassembler and Tools:
1170
1171 iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 
1172 optional OemData field at the end of the table was incorrectly required 
1173 for proper compilation. It is now correctly an optional field.
1174
1175 ASLTS: The entire suite was converted from standard ASL to the ASL+ 
1176 language, using the ASL-to-ASL+ converter which is integrated into the 
1177 iASL compiler. A binary compare of all output files has verified the 
1178 correctness of the conversion.
1179
1180 iASL: Fixed the source code build for platforms where "char" is unsigned. 
1181 This affected the iASL lexer only. Jung-uk Kim.
1182
1183 ----------------------------------------
1184 10 November 2017. Summary of changes for version 20171110:
1185
1186
1187 1) ACPICA kernel-resident subsystem:
1188
1189 This release implements full support for ACPI 6.2A:
1190     NFIT - Added a new subtable, "Platform Capabilities Structure"
1191 No other changes to ACPICA were required, since ACPI 6.2A is primarily an 
1192 errata release of the specification.
1193
1194 Other ACPI table changes:
1195     IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1196     PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 
1197 Linton
1198
1199 Utilities: Modified the string/integer conversion functions to use 
1200 internal 64-bit divide support instead of a native divide. On 32-bit 
1201 platforms, a 64-bit divide typically requires a library function which 
1202 may not be present in the build (kernel or otherwise).
1203
1204 Implemented a targeted error message for timeouts returned from the 
1205 Embedded Controller device driver. This is seen frequently enough to 
1206 special-case an AE_TIME returned from an EC operation region access:
1207     "Timeout from EC hardware or EC device driver"
1208
1209 Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 
1210 runtime error messages have the identical prefix.
1211
1212
1213 2) iASL Compiler/Disassembler and Tools:
1214
1215 AcpiXtract: Fixed a problem with table header detection within the 
1216 acpidump file. Processing a table could be ended early if a 0x40 (@) 
1217 appears in the original binary table, resulting in the @ symbol appearing 
1218 in the decoded ASCII field at the end of the acpidump text line. The 
1219 symbol caused acpixtract to incorrectly think it had reached the end of 
1220 the current table and the beginning of a new table.
1221
1222 AcpiXtract: Added an option (-f) to ignore some errors during table 
1223 extraction. This initial implementation ignores non-ASCII and non-
1224 printable characters found in the acpidump text file.
1225
1226 TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 
1227 for ASLTS. This feature is used to track memory allocations from 
1228 different memory caches within the ACPICA code. At the end of an ASLTS 
1229 run, these memory statistics are recorded and stored in a log file.
1230
1231 Debugger (user-space version): Implemented a simple "Background" command. 
1232 Creates a new thread to execute a control method in the background, while 
1233 control returns to the debugger prompt to allow additional commands.
1234     Syntax: Background <Namepath> [Arguments]
1235
1236 ----------------------------------------
1237 29 September 2017. Summary of changes for version 20170929:
1238
1239
1240 1) ACPICA kernel-resident subsystem:
1241
1242 Redesigned and implemented an improved ASL While() loop timeout 
1243 mechanism. This mechanism is used to prevent infinite loops in the kernel 
1244 AML interpreter caused by either non-responsive hardware or incorrect AML 
1245 code. The new implementation uses AcpiOsGetTimer instead of a simple 
1246 maximum loop count, and is thus more accurate and constant across 
1247 different machines. The default timeout is currently 30 seconds, but this 
1248 may be adjusted later.
1249
1250 Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 
1251 better reflect the new implementation of the loop timeout mechanism.
1252
1253 Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 
1254 and to fix an off-by-one error. Jung-uk Kim.
1255
1256 Fixed an EFI build problem by updating the makefiles to for a new file 
1257 that was added, utstrsuppt.c
1258
1259
1260 2) iASL Compiler/Disassembler and Tools:
1261
1262 Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 
1263 includes support in the table disassembler, compiler, and template 
1264 generator.
1265
1266 iASL: Added an exception for an illegal type of recursive method 
1267 invocation. If a method creates named objects, the first recursive call 
1268 will fail at runtime. This change adds an error detection at compile time 
1269 to catch the problem up front. Note: Marking such a method as 
1270 "serialized" will not help with this problem, because the same thread can 
1271 acquire the method mutex more than once. Example compiler and runtime 
1272 output:
1273
1274     Method (MTH1)
1275     {
1276         Name (INT1, 1)
1277         MTH1 ()
1278     }
1279
1280     dsdt.asl     22: MTH1 ()
1281     Error    6152 -  ^ Illegal recursive call to method
1282                        that creates named objects (MTH1)
1283
1284 Previous runtime exception:
1285     ACPI Error: [INT1] Namespace lookup failure,
1286     AE_ALREADY_EXISTS (20170831/dswload2-465)
1287
1288 iASL: Updated support for External() opcodes to improve namespace 
1289 management and error detection. These changes are related to issues seen 
1290 with multiple-segment namespace pathnames within External declarations, 
1291 such as below:
1292
1293     External(\_SB.PCI0.GFX0, DeviceObj)
1294     External(\_SB.PCI0.GFX0.ALSI)
1295
1296 iASL: Implemented support for multi-line error/warning messages. This 
1297 enables more detailed and helpful error messages as below, from the 
1298 initial deployment for the duplicate names error:
1299
1300     DSDT.iiii   1692:       Device(PEG2) {
1301     Error    6074 -                  ^ Name already exists in scope 
1302 (PEG2)
1303
1304         Original name creation/declaration below:
1305         DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1306
1307 AcpiXtract: Added additional flexibility to support differing input hex 
1308 dump formats. Specifically, hex dumps that contain partial disassembly 
1309 and/or comments within the ACPI table data definition. There exist some 
1310 dump utilities seen in the field that create this type of hex dump (such 
1311 as Simics). For example:
1312
1313     DSDT @ 0xdfffd0c0 (10999 bytes)
1314         Signature DSDT
1315         Length 10999
1316         Revision 1
1317         Checksum 0xf3 (Ok)
1318         OEM_ID BXPC
1319         OEM_table_id BXDSDT
1320         OEM_revision 1
1321         Creator_id 1280593481
1322         Creator_revision 537399345
1323       0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1324       ...
1325       2af0: 5f 4c 30 46 00 a4 01
1326
1327 Test suite: Miscellaneous changes/fixes:
1328     More cleanup and simplification of makefiles
1329     Continue compilation of test cases after a compile failure
1330     Do not perform binary compare unless both files actually exist
1331
1332 iASL: Performed some code/module restructuring. Moved all memory 
1333 allocation functions to new modules. Two new files, aslallocate.c and 
1334 aslcache.c
1335
1336 ----------------------------------------
1337 31 August 2017. Summary of changes for version 20170831:
1338
1339
1340 1) ACPICA kernel-resident subsystem:
1341
1342 Implemented internal support for full 64-bit addresses that appear in all 
1343 Generic Address Structure (GAS) structures. Previously, only the lower 32 
1344 bits were used. Affects the use of GAS structures in the FADT and other 
1345 tables, as well as the GAS structures passed to the AcpiRead and 
1346 AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1347
1348 Added header support for the PDTT ACPI table (Processor Debug Trigger 
1349 Table). Full support in the iASL Data Table Compiler and disassembler is 
1350 forthcoming.
1351
1352
1353 2) iASL Compiler/Disassembler and Tools:
1354
1355 iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 
1356 Properties Topology Table) where a flag bit was specified in the wrong 
1357 bit position ("Line Size Valid", bit 6).
1358
1359 iASL: Implemented support for Octal integer constants as defined by the 
1360 ASL language grammar, per the ACPI specification. Any integer constant 
1361 that starts with a zero is an octal constant. For example,
1362     Store (037777, Local0) /* Octal constant */
1363     Store (0x3FFF, Local0) /* Hex equivalent */
1364     Store (16383,  Local0) /* Decimal equivalent */
1365
1366 iASL: Improved overflow detection for 64-bit string conversions during 
1367 compilation of integer constants. "Overflow" in this case means a string 
1368 that represents an integer that is too large to fit into a 64-bit value. 
1369 Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 
1370 the low-order 32 bits with a warning, as previously implemented. Several 
1371 new exceptions are defined that indicate a 64-bit overflow, as well as 
1372 the base (radix) that was used during the attempted conversion. Examples:
1373     Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1374     Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1375     Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1376
1377 iASL: Added a warning for the case where a ResourceTemplate is declared 
1378 with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 
1379 this case, the resulting template is created with a single END_TAG 
1380 descriptor, which is essentially useless.
1381
1382 iASL: Expanded the -vw option (ignore specific warnings/remarks) to 
1383 include compilation error codes as well.
1384
1385 ----------------------------------------
1386 28 July 2017. Summary of changes for version 20170728:
1387
1388
1389 1) ACPICA kernel-resident subsystem:
1390
1391 Fixed a regression seen with small resource descriptors that could cause 
1392 an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1393
1394 AML interpreter: Implemented a new feature that allows forward references 
1395 from individual named references within package objects that are 
1396 contained within blocks of "module-level code". This provides 
1397 compatibility with other ACPI implementations and supports existing 
1398 firmware that depends on this feature. Example:
1399
1400     Name (ABCD, 1)
1401     If (ABCD)                       /* An If() at module-level */
1402     {
1403         Name (PKG1, Package()
1404         {
1405             INT1                    /* Forward reference to object INT1 
1406 */
1407         })
1408         Name (INT1, 0x1234)
1409     }
1410
1411 AML Interpreter: Fixed a problem with the Alias() operator where aliases 
1412 to some ASL objects were not handled properly. Objects affected are: 
1413 Mutex, Event, and OperationRegion.
1414
1415 AML Debugger: Enhanced to properly handle AML Alias objects. These 
1416 objects have one level of indirection which was not fully supported by 
1417 the debugger.
1418
1419 Table Manager: Added support to detect and ignore duplicate SSDTs within 
1420 the XSDT/RSDT. This error in the XSDT has been seen in the field.
1421
1422 EFI and EDK2 support:
1423     Enabled /WX flag for MSVC builds
1424     Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1425     Added local support for 64-bit multiply and shift operations
1426     Added support to compile acpidump.efi on Windows
1427     Added OSL function stubs for interfaces not used under EFI
1428
1429 Added additional support for the _DMA predefined name. _DMA returns a 
1430 buffer containing a resource template. This change add support within the 
1431 resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 
1432 resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1433
1434
1435 2) iASL Compiler/Disassembler and Tools:
1436
1437 iASL: Fixed a problem where the internal input line buffer(s) could 
1438 overflow if there are very long lines in the input ASL source code file. 
1439 Implemented buffer management that automatically increases the size of 
1440 the buffers as necessary.
1441
1442 iASL: Added an option (-vx) to "expect" particular remarks, warnings and 
1443 errors. If the specified exception is not raised during compilation, the 
1444 compiler emits an error. This is intended to support the ASL test suite, 
1445 but may be useful in other contexts.
1446
1447 iASL: Implemented a new predefined macro, __METHOD__, which returns a 
1448 string containing the name of the current control method that is being 
1449 compiled.
1450
1451 iASL: Implemented debugger and table compiler support for the SDEI ACPI 
1452 table (Software Delegated Exception Interface). James Morse 
1453 <james.morse@arm.com>
1454
1455 Unix/Linux makefiles: Added an option to disable compile optimizations. 
1456 The disable occurs when the NOOPT flag is set to TRUE. 
1457 theracermaster@gmail.com
1458
1459 Acpidump: Added support for multiple DSDT and FACS tables. This can occur 
1460 when there are different tables for 32-bit versus 64-bit.
1461
1462 Enhanced error reporting for the ASL test suite (ASLTS) by removing 
1463 unnecessary/verbose text, and emit the actual line number where an error 
1464 has occurred. These changes are intended to improve the usefulness of the 
1465 test suite.
1466
1467 ----------------------------------------
1468 29 June 2017. Summary of changes for version 20170629:
1469
1470
1471 1) ACPICA kernel-resident subsystem:
1472
1473 Tables: Implemented a deferred ACPI table verification. This is useful 
1474 for operating systems where the tables cannot be verified in the early 
1475 initialization stage due to early memory mapping limitations on some 
1476 architectures. Lv Zheng.
1477
1478 Tables: Removed the signature validation for dynamically loaded tables. 
1479 Provides compatibility with other ACPI implementations. Previously, only 
1480 SSDT tables were allowed, as per the ACPI specification. Now, any table 
1481 signature can be used via the Load() operator. Lv Zheng.
1482
1483 Tables: Fixed several mutex issues that could cause errors during table 
1484 acquisition. Lv Zheng.
1485
1486 Tables: Fixed a problem where an ACPI warning could be generated if a 
1487 null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1488
1489 Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 
1490 AcpiPutTable interfaces. This applies to the "late stage" table loading 
1491 when the use of AcpiPutTable is no longer required (since the system 
1492 memory manager is fully running and available). Lv Zheng.
1493
1494 Fixed/Reverted a regression during processing of resource descriptors 
1495 that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 
1496 exception in this case.
1497
1498 Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 
1499 I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1500
1501 Interpreter: Fixed a possible fault if an Alias operator with an invalid 
1502 or duplicate target is encountered during Alias creation in 
1503 AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1504
1505 Added an option to use designated initializers for function pointers. 
1506 Kees Cook <keescook@google.com>
1507
1508
1509 2) iASL Compiler/Disassembler and Tools:
1510
1511 iASL: Allow compilation of External declarations with target pathnames 
1512 that refer to existing named objects within the table. Erik Schmauss.
1513
1514 iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 
1515 FieldUnit name also is declared via External in the same table. Erik 
1516 Schmauss.
1517
1518 iASL: Allow existing scope names within pathnames used in External 
1519 statements. For example:
1520     External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1521     Device (ABCD)
1522
1523 iASL: IORT ACPI table: Implemented changes required to decode the new 
1524 Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 
1525 compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1526
1527 Disassembler: Don't abort disassembly on errors from External() 
1528 statements. Erik Schmauss.
1529
1530 Disassembler: fixed a possible fault when one of the Create*Field 
1531 operators references a Resource Template. ACPICA Bugzilla 1396.
1532
1533 iASL: In the source code, resolved some naming inconsistences across the 
1534 parsing support. Fixes confusion between "Parse Op" and "Parse Node". 
1535 Adds a new file, aslparseop.c
1536
1537 ----------------------------------------
1538 31 May 2017. Summary of changes for version 20170531:
1539
1540
1541 0) ACPI 6.2 support:
1542
1543 The ACPI specification version 6.2 has been released and is available at
1544 http://uefi.org/specifications
1545
1546 This version of ACPICA fully supports the ACPI 6.2 specification. Changes 
1547 are summarized below.
1548
1549 New ACPI tables (Table Compiler/Disassembler/Templates):
1550     HMAT (Heterogeneous Memory Attributes Table)
1551     WSMT (Windows SMM Security Mitigation Table)
1552     PPTT (Processor Properties Topology Table)
1553
1554 New subtables for existing ACPI tables:
1555     HEST (New subtable, Arch-deferred machine check)
1556     SRAT (New subtable, Arch-specific affinity structure)
1557     PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1558
1559 Simple updates for existing ACPI tables:
1560     BGRT (two new flag bits)
1561     HEST (New bit defined for several subtables, GHES_ASSIST)
1562
1563 New Resource Descriptors and Resource macros (Compiler/Disassembler):
1564     PinConfig()
1565     PinFunction()
1566     PinGroup()
1567     PinGroupConfig()
1568     PinGroupFunction()
1569     New type for hardware error notification (section 18.3.2.9)
1570
1571 New predefined names/methods (Compiler/Interpreter):
1572     _HMA (Heterogeneous Memory Attributes)
1573     _LSI (Label Storage Information)
1574     _LSR (Label Storage Read)
1575     _LSW (Label Storage Write)
1576
1577 ASL grammar/macro changes (Compiler):
1578     For() ASL macro, implemented with the AML while operator
1579     Extensions to Concatenate operator
1580     Support for multiple definition blocks in same ASL file
1581     Clarification for Buffer operator
1582     Allow executable AML code underneath all scopes (Devices, etc.)
1583     Clarification/change for the _OSI return value
1584     ASL grammar update for reference operators
1585     Allow a zero-length string for AML filename in DefinitionBlock
1586
1587 Miscellaneous:
1588     New device object notification value
1589     Remove a notify value (0x0C) for graceful shutdown
1590     New UUIDs for processor/cache properties and
1591         physical package property
1592     New _HID, ACPI0014 (Wireless Power Calibration Device)
1593
1594
1595 1) ACPICA kernel-resident subsystem:
1596
1597 Added support to disable ACPI events on hardware-reduced platforms. 
1598 Eliminates error messages of the form "Could not enable fixed event". Lv 
1599 Zheng
1600
1601 Fixed a problem using Device/Thermal objects with the ObjectType and 
1602 DerefOf ASL operators. This support had not been fully/properly 
1603 implemented.
1604
1605 Fixed a problem where if a Buffer object containing a resource template 
1606 was longer than the actual resource template, an error was generated -- 
1607 even though the AML is legal. This case has been seen in the field.
1608
1609 Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 
1610 The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1611
1612 Added header file changes for the TPM2 ACPI table. Update to new version 
1613 of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1614
1615 Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 
1616 These interfaces are intended to be used only in conjunction with the 
1617 predefined _DLM method (Device Lock Method). "This object appears in a 
1618 device scope when AML access to the device must be synchronized with the 
1619 OS environment".
1620
1621 Example Code and Data Size: These are the sizes for the OS-independent 
1622 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1623 debug version of the code includes the debug output trace mechanism and 
1624 has a much larger code and data size.
1625
1626   Current Release:
1627     Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1628     Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
1629   Previous Release:
1630     Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1631     Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1632
1633
1634 2) iASL Compiler/Disassembler and Tools:
1635
1636 iASL: Fixed a problem where an External() declaration could not refer to 
1637 a Field Unit. Erik Schmauss.
1638
1639 Disassembler: Improved support for the Switch/Case operators. This 
1640 feature will disassemble AML code back to the original Switch operators 
1641 when possible, instead of an If..Else sequence. David Box
1642
1643 iASL and disassembler: Improved the handling of multiple extraneous 
1644 parentheses for both ASL input and disassembled ASL output.
1645
1646 Improved the behavior of the iASL compiler and disassembler to detect 
1647 improper use of external declarations
1648
1649 Disassembler: Now aborts immediately upon detection of an unknown AML 
1650 opcode. The AML parser has no real way to recover from this, and can 
1651 result in the creation of an ill-formed parse tree that causes errors 
1652 later during the disassembly.
1653
1654 All tools: Fixed a problem where the Unix application OSL did not handle 
1655 control-c correctly. For example, a control-c could incorrectly wake the 
1656 debugger.
1657
1658 AcpiExec: Improved the Control-C handling and added a handler for 
1659 segmentation faults (SIGSEGV). Supports both Windows and Unix-like 
1660 environments.
1661
1662 Reduced the verbosity of the generic unix makefiles. Previously, each 
1663 compilation displayed the full set of compiler options. This has been 
1664 eliminated as the options are easily inspected within the makefiles. Each 
1665 compilation now results in a single line of output.
1666
1667 ----------------------------------------
1668 03 March 2017. Summary of changes for version 20170303:
1669
1670
1671 0) ACPICA licensing:
1672
1673 The licensing information at the start of each source code module has 
1674 been updated. In addition to the Intel license, the dual GPLv2/BSD 
1675 license has been added for completeness. Now, a single version of the 
1676 source code should be suitable for all ACPICA customers. This is the 
1677 major change for this release since it affects all source code modules.
1678
1679
1680 1) ACPICA kernel-resident subsystem: 
1681
1682 Fixed two issues with the common asltypes.h header that could cause 
1683 problems in some environments: (Kim Jung-uk)
1684     Removed typedef for YY_BUFFER_STATE ?
1685        Fixes an error with earlier versions of Flex.
1686     Removed use of FILE typedef (which is only defined in stdio.h)
1687
1688
1689 2) iASL Compiler/Disassembler and Tools: 
1690
1691 Disassembler: fixed a regression introduced in 20170224. A fix for a 
1692 memory leak related to resource descriptor tags (names) could fault when 
1693 the disassembler was generated with 64-bit compilers.
1694
1695 The ASLTS test suite has been updated to implement a new testing 
1696 architecture. During generation of the suite from ASL source, both the 
1697 ASL and ASL+ compilers are now validated, as well as the disassembler 
1698 itself (Erik Schmauss). The architecture executes as follows:
1699
1700     For every ASL source module:
1701         Compile (legacy ASL compilation)
1702         Disassemble the resulting AML to ASL+ source code
1703         Compile the new ASL+ module
1704         Perform a binary compare on the legacy AML and the new ASL+ AML
1705     The ASLTS suite then executes normally using the AML binaries.
1706
1707 ----------------------------------------
1708 24 February 2017. Summary of changes for version 20170224:
1709
1710
1711 1) ACPICA kernel-resident subsystem:
1712
1713 Interpreter: Fixed two issues with the control method return value auto-
1714 repair feature, where an attempt to double-delete an internal object 
1715 could result in an ACPICA warning (for _CID repair and others). No fault 
1716 occurs, however, because the attempted deletion (actually a release to an 
1717 internal cache) is detected and ignored via object poisoning.
1718
1719 Debugger: Fixed an AML interpreter mutex issue during the single stepping 
1720 of control methods. If certain debugger commands are executed during 
1721 stepping, a mutex acquire/release error could occur. Lv Zheng.
1722
1723 Fixed some issues generating ACPICA with the Intel C compiler by 
1724 restoring the original behavior and compiler-specific include file in 
1725 acenv.h. Lv Zheng.
1726
1727 Example Code and Data Size: These are the sizes for the OS-independent 
1728 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1729 debug version of the code includes the debug output trace mechanism and 
1730 has a much larger code and data size.
1731
1732   Current Release:
1733     Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1734     Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1735   Previous Release:
1736     Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1737     Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1738
1739
1740 2) iASL Compiler/Disassembler and Tools:
1741
1742 iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 
1743 tool has been designed, implemented, and included in this release. The 
1744 key feature of this utility is that the original comments within the 
1745 input ASL file are preserved during the conversion process, and included 
1746 within the converted ASL+ file -- thus creating a transparent conversion 
1747 of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1748
1749     Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with 
1750 converted code
1751
1752 iASL/Disassembler: Improved the detection and correct disassembly of 
1753 Switch/Case operators. This feature detects sequences of if/elseif/else 
1754 operators that originated from ASL Switch/Case/Default operators and 
1755 emits the original operators. David Box.
1756
1757 iASL: Improved the IORT ACPI table support in the following areas. Lv 
1758 Zheng:
1759     Clear MappingOffset if the MappingCount is zero.
1760     Fix the disassembly of the SMMU GSU interrupt offset.
1761     Update the template file for the IORT table.
1762
1763 Disassembler: Enhanced the detection and disassembly of resource 
1764 template/descriptor within a Buffer object. An EndTag descriptor is now 
1765 required to have a zero second byte, since all known ASL compilers emit 
1766 this. This helps eliminate incorrect decisions when a buffer is 
1767 disassembled (false positives on resource templates).
1768
1769 ----------------------------------------
1770 19 January 2017. Summary of changes for version 20170119:
1771
1772
1773 1) General ACPICA software:
1774
1775 Entire source code base: Added the 2017 copyright to all source code 
1776 legal/licensing module headers and utility/tool signons. This includes 
1777 the standard Linux dual-license header. This affects virtually every file 
1778 in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 
1779 the ACPICA test suite.
1780
1781
1782 2) iASL Compiler/Disassembler and Tools:
1783
1784 iASL: Removed/fixed an inadvertent remark when a method argument 
1785 containing a reference is used as a target operand within the method (and 
1786 never used as a simple argument), as in the example below. Jeffrey Hugo.
1787
1788     dsdt.asl   1507:    Store(0x1, Arg0)
1789     Remark   2146 -                ^ Method Argument is never used (Arg0)
1790
1791 All tools: Removed the bit width of the compiler that generated the tool 
1792 from the common signon for all user space tools. This proved to be 
1793 confusing and unnecessary. This includes similar removal of HARDWARE_NAME 
1794 from the generic makefiles (Thomas Petazzoni). Example below.
1795
1796     Old:
1797     ASL+ Optimizing Compiler version 20170119-32
1798     ASL+ Optimizing Compiler version 20170119-64
1799
1800     New:
1801     ASL+ Optimizing Compiler version 20170119
1802
1803 ----------------------------------------
1804 22 December 2016. Summary of changes for version 20161222:
1805
1806
1807 1) ACPICA kernel-resident subsystem:
1808
1809 AML Debugger: Implemented a new mechanism to simplify and enhance 
1810 debugger integration into all environments, including kernel debuggers 
1811 and user-space utilities, as well as remote debug services. This 
1812 mechanism essentially consists of new OSL interfaces to support debugger 
1813 initialization/termination, as well as wait/notify interfaces to perform 
1814 the debugger handshake with the host. Lv Zheng.
1815
1816     New OSL interfaces:
1817         AcpiOsInitializeDebugger (void)
1818         AcpiOsTerminateDebugger (void)
1819         AcpiOsWaitCommandReady (void)
1820         AcpiOsNotifyCommandComplete (void)
1821
1822     New OS services layer:
1823         osgendbg.c -- Example implementation, and used for AcpiExec
1824
1825 Update for Generic Address Space (GAS) support: Although the AccessWidth 
1826 and/or BitOffset fields of the GAS are not often used, this change now 
1827 fully supports these fields. This affects the internal support for FADT 
1828 registers, registers in other ACPI data tables, and the AcpiRead and 
1829 AcpiWrite public interfaces. Lv Zheng.
1830
1831 Sleep support: In order to simplify integration of ACPI sleep for the 
1832 various host operating systems, a new OSL interface has been introduced. 
1833 AcpiOsEnterSleep allows the host to perform any required operations 
1834 before the final write to the sleep control register(s) is performed by 
1835 ACPICA. Lv Zheng.
1836
1837     New OSL interface:
1838         AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1839
1840     Called from these internal interfaces:
1841         AcpiHwLegacySleep
1842         AcpiHwExtendedSleep
1843
1844 EFI support: Added a very small EFI/ACPICA example application. Provides 
1845 a simple demo for EFI integration, as well as assisting with resolution 
1846 of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1847
1848     source/tools/efihello/efihello.c
1849
1850 Local C library: Implemented several new functions to enhance ACPICA 
1851 portability, for environments where these clib functions are not 
1852 available (such as EFI). Lv Zheng:
1853     putchar
1854     getchar
1855     strpbrk
1856     strtok
1857     memmove
1858
1859 Fixed a regression where occasionally a valid resource descriptor was 
1860 incorrectly detected as invalid at runtime, and a 
1861 AE_AML_NO_RESOURCE_END_TAG was returned.
1862
1863 Fixed a problem with the recently implemented support that enables 
1864 control method invocations as Target operands to many ASL operators. 
1865 Warnings of this form: "Needed type [Reference], found [Processor]" were 
1866 seen at runtime for some method invocations.
1867
1868 Example Code and Data Size: These are the sizes for the OS-independent 
1869 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1870 debug version of the code includes the debug output trace mechanism and 
1871 has a much larger code and data size.
1872
1873   Current Release:
1874     Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1875     Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
1876   Previous Release:
1877     Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1878     Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1879
1880
1881 2) iASL Compiler/Disassembler and Tools:
1882
1883 Disassembler: Enhanced output by adding the capability to detect and 
1884 disassemble ASL Switch/Case statements back to the original ASL source 
1885 code instead of if/else blocks. David Box.
1886
1887 AcpiHelp: Split a large file into separate files based upon 
1888 functionality/purpose. New files are:
1889     ahaml.c
1890     ahasl.c
1891
1892 ----------------------------------------
1893 17 November 2016. Summary of changes for version 20161117:
1894
1895
1896 1) ACPICA kernel-resident subsystem:
1897
1898 Table Manager: Fixed a regression introduced in 20160729, "FADT support 
1899 cleanup". This was an attempt to remove all references in the source to 
1900 the FADT version 2, which never was a legal version number. It was 
1901 skipped because it was an early version of 64-bit support that was 
1902 eventually abandoned for the current 64-bit support.
1903
1904 Interpreter: Fixed a problem where runtime implicit conversion was 
1905 incorrectly disabled for the ASL operators below. This brings the 
1906 behavior into compliance with the ACPI specification:
1907     FromBCD
1908     ToBCD
1909     ToDecimalString
1910     ToHexString
1911     ToInteger
1912     ToBuffer
1913
1914 Table Manager: Added a new public interface, AcpiPutTable, used to 
1915 release and free an ACPI table returned by AcpiGetTable and related 
1916 interfaces. Lv Zheng.
1917
1918 Example Code and Data Size: These are the sizes for the OS-independent 
1919 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1920 debug version of the code includes the debug output trace mechanism and 
1921 has a much larger code and data size.
1922
1923   Current Release:
1924     Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1925     Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1926   Previous Release:
1927     Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1928     Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1929
1930
1931 2) iASL Compiler/Disassembler and Tools:
1932
1933 Disassembler: Fixed a regression for disassembly of Resource Template. 
1934 Detection of templates in the AML stream missed some types of templates.
1935
1936 iASL: Fixed a problem where an Access Size error was returned for the PCC 
1937 address space when the AccessSize of the GAS register is greater than a 
1938 DWORD. Hoan Tran.
1939
1940 iASL: Implemented several grammar changes for the operators below. These 
1941 changes are slated for the next version of the ACPI specification:
1942     RefOf        - Disallow method invocation as an operand
1943     CondRefOf    - Disallow method invocation as an operand
1944     DerefOf      - Disallow operands that use the result from operators 
1945 that
1946                    do not return a reference (Changed TermArg to 
1947 SuperName).
1948
1949 iASL: Control method invocations are now allowed for Target operands, as 
1950 per the ACPI specification. Removed error for using a control method 
1951 invocation as a Target operand.
1952
1953 Disassembler: Improved detection of Resource Templates, Unicode, and 
1954 Strings within Buffer objects. These subtypes do not contain a specific 
1955 opcode to indicate the originating ASL code, and they must be detected by 
1956 other means within the disassembler. 
1957
1958 iASL: Implemented an optimization improvement for 32-bit ACPI tables 
1959 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 
1960 only after 64-bit to 32-bit truncation. A truncation warning message is 
1961 still emitted, however.
1962
1963 AcpiXtract: Implemented handling for both types of line terminators (LF 
1964 or CR/LF) so that it can accept AcpiDump output files from any system. 
1965 Peter Wu.
1966
1967 AcpiBin: Added two new options for comparing AML files:
1968     -a: compare and display ALL mismatches
1969     -o: start compare at this offset into the second file
1970
1971 ----------------------------------------
1972 30 September 2016. Summary of changes for version 20160930:
1973
1974
1975 1) ACPICA kernel-resident subsystem:
1976
1977 Fixed a regression in the internal AcpiTbFindTable function where a non 
1978 AE_OK exception could inadvertently be returned even if the function did 
1979 not fail. This problem affects the following operators:
1980     DataTableRegion
1981     LoadTable
1982
1983 Fixed a regression in the LoadTable operator where a load to any 
1984 namespace location other than the root no longer worked properly.
1985
1986 Increased the maximum loop count value that will result in the 
1987 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 
1988 prevent infinite loops within the AML interpreter and thus the host OS 
1989 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 
1990 1,048,575).
1991
1992 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 
1993 acpixf.h file. This allows hosts to easily configure the maximum loop 
1994 count at runtime.
1995
1996 Removed an illegal character in the strtoul64.c file. This character 
1997 caused errors with some C compilers.
1998
1999 Example Code and Data Size: These are the sizes for the OS-independent 
2000 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2001 debug version of the code includes the debug output trace mechanism and 
2002 has a much larger code and data size.
2003
2004   Current Release:
2005     Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2006     Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2007   Previous Release:
2008     Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2009     Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2010
2011
2012 2) iASL Compiler/Disassembler and Tools:
2013
2014 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 
2015 the simpler ASL ElseIf keyword. During the conversion, a trailing If 
2016 block could be lost and missing from the disassembled output.
2017
2018 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 
2019 the missing rule caused a parse error when using the Index operator as an 
2020 operand to ObjectType. This construct now compiles properly. Example:
2021     ObjectType(PKG1[4]).
2022
2023 iASL: Correctly handle unresolved symbols in the hardware map file (-lm 
2024 option). Previously, unresolved symbols could cause a protection fault. 
2025 Such symbols are now marked as unresolved in the map file.
2026
2027 iASL: Implemented support to allow control method invocations as an 
2028 operand to the ASL DeRefOf operator. Example:
2029     DeRefOf(MTH1(Local0))
2030
2031 Disassembler: Improved support for the ToPLD ASL macro. Detection of a 
2032 possible _PLD buffer now includes examination of both the normal buffer 
2033 length (16 or 20) as well as the surrounding AML package length.
2034
2035 Disassembler: Fixed a problem with the decoding of complex expressions 
2036 within the Divide operator for ASL+. For the case where both the quotient 
2037 and remainder targets are specified, the entire statement cannot be 
2038 disassembled. Previously, the output incorrectly contained a mix of ASL- 
2039 and ASL+ operators. This mixed statement causes a syntax error when 
2040 compiled. Example:
2041     Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly 
2042 disassembled to:
2043     Divide (INT1 + 6, 128, RSLT, QUOT)
2044
2045 iASL/Tools: Added support to process AML and non-AML ACPI tables 
2046 consistently. For the disassembler and AcpiExec, allow all types of ACPI 
2047 tables (AML and data tables). For the iASL -e option, allow only AML 
2048 tables (DSDT/SSDT).
2049
2050 ----------------------------------------
2051 31 August 2016. Summary of changes for version 20160831:
2052
2053
2054 1) ACPICA kernel-resident subsystem:
2055
2056 Improve support for the so-called "module-level code", which is defined 
2057 to be math, logical and control AML opcodes that appear outside of any 
2058 control method. This change improves the support by adding more opcodes 
2059 that can be executed in the manner. Some other issues have been solved, 
2060 and the ASL grammar changes to support such code under all scope 
2061 operators (Device, etc.) are complete. Lv Zheng.
2062
2063 UEFI support: these OSL functions have been implemented. This is an 
2064 additional step toward supporting the AcpiExec utility natively (with 
2065 full hardware access) under UEFI. Marcelo Ferreira.
2066     AcpiOsReadPciConfiguration
2067     AcpiOsWritePciConfiguration
2068
2069 Fixed a possible mutex error during control method auto-serialization. Lv 
2070 Zheng. 
2071
2072 Updated support for the Generic Address Structure by fully implementing 
2073 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 
2074 Zheng.
2075
2076 Updated the return value for the internal _OSI method. Instead of 
2077 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 
2078 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 
2079 implementations, and will be reflected and clarified in the next version 
2080 of the ACPI specification.
2081
2082 Implemented two new table events that can be passed to an ACPICA table 
2083 handler. These events are used to indicate a table installation or 
2084 uninstallation. These events are used in addition to existed table load 
2085 and unload events. Lv Zheng.
2086
2087 Implemented a cleanup for all internal string-to-integer conversions. 
2088 Consolidate multiple versions of this functionality and limit possible 
2089 bases to either 10 or 16 to simplify the code. Adds a new file, 
2090 utstrtoul64.
2091
2092 Cleanup the inclusion order of the various compiler-specific headers. 
2093 This simplifies build configuration management. The compiler-specific 
2094 headers are now split out from the host-specific headers. Lv Zheng.
2095
2096 Example Code and Data Size: These are the sizes for the OS-independent 
2097 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2098 debug version of the code includes the debug output trace mechanism and 
2099 has a much larger code and data size.
2100
2101   Current Release:
2102     Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2103     Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2104
2105
2106 2) iASL Compiler/Disassembler and Tools:
2107
2108 iASL/AcpiExec: Added a command line option to display the build date/time 
2109 of the tool (-vd). This can be useful to verify that the correct version 
2110 of the tools are being used.
2111
2112 AML Debugger: Implemented a new subcommand ("execute predef") to execute 
2113 all predefined control methods and names within the current namespace. 
2114 This can be useful for debugging problems with ACPI tables and the ACPI 
2115 namespace.
2116
2117 ----------------------------------------
2118 29 July 2016. Summary of changes for version 20160729:
2119
2120
2121 1) ACPICA kernel-resident subsystem:
2122
2123 Implemented basic UEFI support for the various ACPICA tools. This 
2124 includes:
2125 1) An OSL to implement the various AcpiOs* interfaces on UEFI.
2126 2) Support to obtain the ACPI tables on UEFI.
2127 3) Local implementation of required C library functions not available on 
2128 UEFI.
2129 4) A front-end (main) function for the tools for UEFI-related 
2130 initialization.
2131
2132 The initial deployment of this support is the AcpiDump utility executing 
2133 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 
2134 Current environments supported are Linux/Unix. MSVC generation is not 
2135 supported at this time. See the generate/efi/README file for build 
2136 instructions. Lv Zheng.
2137
2138 Future plans include porting the AcpiExec utility to execute natively on 
2139 the platform with I/O and memory access. This will allow viewing/dump of 
2140 the platform namespace and native execution of ACPI control methods that 
2141 access the actual hardware. To fully implement this support, the OSL 
2142 functions below must be implemented with UEFI interfaces. Any community 
2143 help in the implementation of these functions would be appreciated:
2144     AcpiOsReadPort
2145     AcpiOsWritePort
2146     AcpiOsReadMemory
2147     AcpiOsWriteMemory
2148     AcpiOsReadPciConfiguration
2149     AcpiOsWritePciConfiguration
2150
2151 Restructured and standardized the C library configuration for ACPICA, 
2152 resulting in the various configuration options below. This includes a 
2153 global restructuring of the compiler-dependent and platform-dependent 
2154 include files. These changes may affect the existing platform-dependent 
2155 configuration files on some hosts. Lv Zheng. 
2156
2157 The current C library configuration options appear below. For any issues, 
2158 it may be helpful to examine the existing compiler-dependent and 
2159 platform-dependent files as examples. Lv Zheng. 
2160
2161 1) Linux kernel:
2162     ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 
2163 library.
2164     ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2165 2) Unix/Windows/BSD applications:
2166     ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 
2167 library.
2168     ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2169 3) UEFI applications:
2170     ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 
2171 library.
2172     ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
2173 4) UEFI applications (EDK2/StdLib):
2174     ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2175     ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2176
2177
2178 AML interpreter: "module-level code" support. Allows for execution of so-
2179 called "executable" AML code (math/logical operations, etc.) outside of 
2180 control methods not just at the module level (top level) but also within 
2181 any scope declared outside of a control method - Scope{}, Device{}, 
2182 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 
2183
2184 Simplified the configuration of the "maximum AML loops" global option by 
2185 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 
2186 modified at runtime.
2187
2188
2189 Example Code and Data Size: These are the sizes for the OS-independent 
2190 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2191 debug version of the code includes the debug output trace mechanism and 
2192 has a much larger code and data size.
2193
2194   Current Release:
2195     Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2196     Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2197
2198
2199 2) iASL Compiler/Disassembler and Tools:
2200
2201 iASL: Add full support for the RASF ACPI table (RAS Features Table). 
2202 Includes disassembler, data table compiler, and header support.
2203
2204 iASL Expand "module-level code" support. Allows for 
2205 compilation/disassembly of so-called "executable" AML code (math/logical 
2206 operations, etc.) outside of control methods not just at the module level 
2207 (top level) but also within any scope declared outside of a control 
2208 method - Scope{}, Device{}, Processor{}, PowerResource{}, and 
2209 ThermalZone{}.
2210
2211 AcpiDump: Added support for dumping all SSDTs on newer versions of 
2212 Windows. These tables are now easily available -- SSDTs are not available 
2213 through the registry on older versions.
2214
2215 ----------------------------------------
2216 27 May 2016. Summary of changes for version 20160527:
2217
2218
2219 1) ACPICA kernel-resident subsystem:
2220
2221 Temporarily reverted the new arbitrary bit length/alignment support in 
2222 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 
2223 a number of regressions with the new code that need to be fully resolved 
2224 and tested before this support can be finally integrated into ACPICA. 
2225 Apologies for any inconveniences these issues may have caused.
2226
2227 The ACPI message macros are not configurable (ACPI_MSG_ERROR, 
2228 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 
2229 and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2230
2231 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 
2232 option. Adds a new return macro, return_STR. Junk-uk Kim.
2233
2234 Example Code and Data Size: These are the sizes for the OS-independent 
2235 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2236 debug version of the code includes the debug output trace mechanism and 
2237 has a much larger code and data size.
2238
2239   Current Release:
2240     Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2241     Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2242   Previous Release:
2243     Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2244     Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2245
2246 ----------------------------------------
2247 22 April 2016. Summary of changes for version 20160422:
2248
2249 1) ACPICA kernel-resident subsystem:
2250
2251 Fixed a regression in the GAS (generic address structure) arbitrary bit 
2252 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 
2253 and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2254
2255 ACPI 6.0: Added support for new/renamed resource macros. One new argument 
2256 was added to each of these macros, and the original name has been 
2257 deprecated. The AML disassembler will always disassemble to the new 
2258 names. Support for the new macros was added to iASL, disassembler, 
2259 resource manager, and the acpihelp utility. ACPICA BZ 1274.
2260
2261     I2cSerialBus  -> I2cSerialBusV2
2262     SpiSerialBus  -> SpiSerialBusV2
2263     UartSerialBus -> UartSerialBusV2
2264
2265 ACPI 6.0: Added support for a new integer field that was appended to the 
2266 package object returned by the _BIX method. This adds iASL compile-time 
2267 and AML runtime error checking. ACPICA BZ 1273.
2268
2269 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 
2270 Subspace Type2" (Headers, Disassembler, and data table compiler).
2271
2272 Example Code and Data Size: These are the sizes for the OS-independent 
2273 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2274 debug version of the code includes the debug output trace mechanism and 
2275 has a much larger code and data size.
2276
2277   Current Release:
2278     Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2279     Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2280   Previous Release:
2281     Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2282     Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2283
2284
2285 2) iASL Compiler/Disassembler and Tools:
2286
2287 iASL: Implemented an ASL grammar extension to allow/enable executable 
2288 "module-level code" to be created and executed under the various 
2289 operators that create new scopes. This type of AML code is already 
2290 supported in all known AML interpreters, and the grammar change will 
2291 appear in the next version of the ACPI specification. Simplifies the 
2292 conditional runtime creation of named objects under these object types: 
2293
2294     Device
2295     PowerResource
2296     Processor
2297     Scope
2298     ThermalZone
2299
2300 iASL: Implemented a new ASL extension, a "For" loop macro to add greater 
2301 ease-of-use to the ASL language. The syntax is similar to the 
2302 corresponding C operator, and is implemented with the existing AML While 
2303 opcode -- thus requiring no changes to existing AML interpreters.
2304
2305     For (Initialize, Predicate, Update) {TermList}
2306
2307 Grammar:
2308     ForTerm :=
2309         For (
2310             Initializer    // Nothing | TermArg => ComputationalData
2311             Predicate      // Nothing | TermArg => ComputationalData
2312             Update         // Nothing | TermArg => ComputationalData
2313         ) {TermList}
2314
2315
2316 iASL: The _HID/_ADR detection and validation has been enhanced to search 
2317 under conditionals in order to allow these objects to be conditionally 
2318 created at runtime.
2319
2320 iASL: Fixed several issues with the constant folding feature. The 
2321 improvement allows better detection and resolution of statements that can 
2322 be folded at compile time. ACPICA BZ 1266. 
2323
2324 iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 
2325 conversion to the ASL ElseIf operator where incorrect ASL code could be 
2326 generated.
2327
2328 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 
2329 sometimes an extra (and extraneous) set of parentheses were emitted for 
2330 some combinations of operators. Although this did not cause any problems 
2331 with recompilation of the disassembled code, it made the code more 
2332 difficult to read. David Box. ACPICA BZ 1231.
2333
2334 iASL: Changed to ignore the unreferenced detection for predefined names 
2335 of resource descriptor elements, when the resource descriptor is 
2336 created/defined within a control method.
2337
2338 iASL: Disassembler: Fix a possible fault with externally declared Buffer 
2339 objects.
2340
2341 ----------------------------------------
2342 18 March 2016. Summary of changes for version 20160318:
2343
2344 1) ACPICA kernel-resident subsystem:
2345
2346 Added support for arbitrary bit lengths and bit offsets for registers 
2347 defined by the Generic Address Structure. Previously, only aligned bit 
2348 lengths of 8/16/32/64 were supported. This was sufficient for many years, 
2349 but recently some machines have been seen that require arbitrary bit-
2350 level support. ACPICA BZ 1240. Lv Zheng.
2351
2352 Fixed an issue where the \_SB._INI method sometimes must be evaluated 
2353 before any _REG methods are evaluated. Lv Zheng.
2354
2355 Implemented several changes related to ACPI table support 
2356 (Headers/Disassembler/TableCompiler):
2357 NFIT: For ACPI 6.1, updated to add some additional new fields and 
2358 constants.
2359 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 
2360 6).
2361 DMAR: Added new constants per the 10/2014 DMAR spec.
2362 IORT: Added new subtable per the 10/2015 IORT spec.
2363 HEST: For ACPI 6.1, added new constants and new subtable.
2364 DBG2: Added new constants per the 12/2015 DBG2 spec.
2365 FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 
2366 ACPICA BZ 1249.
2367 ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2368
2369 Updated header support for the DMAR table to match the current version of 
2370 the related spec.
2371
2372 Added extensions to the ASL Concatenate operator to allow any ACPI object 
2373 to be passed as an operand. Any object other than Integer/String/Buffer 
2374 simply returns a string containing the object type. This extends the 
2375 usefulness of the Printf macros. Previously, Concatenate would abort the 
2376 control method if a non-data object was encountered.
2377
2378 ACPICA source code: Deployed the C "const" keyword across the source code 
2379 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2380
2381 Example Code and Data Size: These are the sizes for the OS-independent 
2382 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2383 debug version of the code includes the debug output trace mechanism and 
2384 has a much larger code and data size.
2385
2386   Current Release:
2387     Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2388     Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2389   Previous Release:
2390     Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2391     Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2392
2393
2394 2) iASL Compiler/Disassembler and Tools:
2395
2396 iASL/Disassembler: Improved the heuristic used to determine the number of 
2397 arguments for an externally defined control method (a method in another 
2398 table). Although this is an improvement, there is no deterministic way to 
2399 "guess" the number of method arguments. Only the ACPI 6.0 External opcode 
2400 will completely solve this problem as it is deployed (automatically) in 
2401 newer BIOS code.
2402
2403 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 
2404 statements that could cause errors when the disassembled file is 
2405 compiled. ACPICA BZ 1243. David Box.
2406
2407 iASL: Fixed a regression caused by the merger of the two versions of the 
2408 local strtoul64. Because of a dependency on a global variable, strtoul64 
2409 could return an error for integers greater than a 32-bit value. ACPICA BZ 
2410 1260.
2411
2412 iASL: Fixed a regression where a fault could occur for an ASL Return 
2413 statement if it invokes a control method that is not resolved. ACPICA BZ 
2414 1264.
2415
2416 AcpiXtract: Improved input file validation: detection of binary files and 
2417 non-acpidump text files.
2418
2419 ----------------------------------------
2420 12 February 2016. Summary of changes for version 20160212:
2421
2422 1) ACPICA kernel-resident subsystem:
2423
2424 Implemented full support for the ACPI 6.1 specification (released in 
2425 January). This version of the specification is available at:  
2426 http://www.uefi.org/specifications
2427
2428 Only a relatively small number of changes were required in ACPICA to 
2429 support ACPI 6.1, in these areas:
2430 - New predefined names
2431 - New _HID values
2432 - A new subtable for HEST
2433 - A few other header changes for new values
2434
2435 Ensure \_SB_._INI is executed before any _REG methods are executed. There 
2436 appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2437
2438 Reverted a change made in version 20151218 which enabled method 
2439 invocations to be targets of various ASL operators (SuperName and Target 
2440 grammar elements). While the new behavior is supported by the ACPI 
2441 specification, other AML interpreters do not support this behavior and 
2442 never will. The ACPI specification will be updated for ACPI 6.2 to remove 
2443 this support. Therefore, the change was reverted to the original ACPICA 
2444 behavior.
2445
2446 ACPICA now supports the GCC 6 compiler.
2447
2448 Current Release: (Note: build changes increased sizes)
2449     Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2450     Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2451 Previous Release:
2452     Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2453     Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2454
2455
2456 2) iASL Compiler/Disassembler and Tools:
2457
2458 Completed full support for the ACPI 6.0 External() AML opcode. The 
2459 compiler emits an external AML opcode for each ASL External statement. 
2460 This opcode is used by the disassembler to assist with the disassembly of 
2461 external control methods by specifying the required number of arguments 
2462 for the method. AML interpreters do not use this opcode. To ensure that 
2463 interpreters do not even see the opcode, a block of one or more external 
2464 opcodes is surrounded by an "If(0)" construct. As this feature becomes 
2465 commonly deployed in BIOS code, the ability of disassemblers to correctly 
2466 disassemble AML code will be greatly improved. David Box.
2467
2468 iASL: Implemented support for an optional cross-reference output file. 
2469 The -lx option will create a the cross-reference file with the suffix 
2470 "xrf". Three different types of cross-reference are created in this file:
2471 - List of object references made from within each control method
2472 - Invocation (caller) list for each user-defined control method
2473 - List of references to each non-method object in the namespace
2474
2475 iASL: Method invocations as ASL Target operands are now disallowed and 
2476 flagged as errors in preparation for ACPI 6.2 (see the description of the 
2477 problem above).
2478
2479 ----------------------------------------
2480 8 January 2016. Summary of changes for version 20160108:
2481
2482 1) ACPICA kernel-resident subsystem:
2483
2484 Updated all ACPICA copyrights and signons to 2016: Added the 2016 
2485 copyright to all source code module headers and utility/tool signons. 
2486 This includes the standard Linux dual-license header. This affects 
2487 virtually every file in the ACPICA core subsystem, iASL compiler, all 
2488 ACPICA utilities, and the ACPICA test suite.
2489
2490 Fixed a regression introduced in version 20151218 concerning the 
2491 execution of so-called module-level ASL/AML code. Namespace objects 
2492 created under a module-level If() construct were not properly/fully 
2493 entered into the namespace and could cause an interpreter fault when 
2494 accessed.
2495
2496 Example Code and Data Size: These are the sizes for the OS-independent 
2497 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2498 debug version of the code includes the debug output trace mechanism and 
2499 has a much larger code and data size.
2500
2501 Current Release:
2502     Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2503     Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2504   Previous Release:
2505     Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2506     Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2507
2508
2509 2) iASL Compiler/Disassembler and Tools:
2510
2511 Fixed a problem with the compilation of the GpioIo and GpioInt resource 
2512 descriptors. The _PIN field name was incorrectly defined to be an array 
2513 of 32-bit values, but the _PIN values are in fact 16 bits each. This 
2514 would cause incorrect bit width warnings when using Word (16-bit) fields 
2515 to access the descriptors.
2516
2517
2518 ----------------------------------------
2519 18 December 2015. Summary of changes for version 20151218:
2520
2521 1) ACPICA kernel-resident subsystem:
2522
2523 Implemented per-AML-table execution of "module-level code" as individual 
2524 ACPI tables are loaded into the namespace during ACPICA initialization. 
2525 In other words, any module-level code within an AML table is executed 
2526 immediately after the table is loaded, instead of batched and executed 
2527 after all of the tables have been loaded. This provides compatibility 
2528 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 
2529 David Box.
2530
2531 To fully support the feature above, the default operation region handlers 
2532 for the SystemMemory, SystemIO, and PCI_Config address spaces are now 
2533 installed before any ACPI tables are loaded. This enables module-level 
2534 code to access these address spaces during the table load and module-
2535 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 
2536 Box.
2537
2538 Implemented several changes to the internal _REG support in conjunction 
2539 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 
2540 utilities for the changes above. Although these tools were changed, host 
2541 operating systems that simply use the default handlers for SystemMemory, 
2542 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2543
2544 For example, in the code below, DEV1 is conditionally added to the 
2545 namespace by the DSDT via module-level code that accesses an operation 
2546 region. The SSDT references DEV1 via the Scope operator. DEV1 must be 
2547 created immediately after the DSDT is loaded in order for the SSDT to 
2548 successfully reference DEV1. Previously, this code would cause an 
2549 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 
2550 fully supported by ACPICA.
2551
2552     DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2553     {
2554         OperationRegion (OPR1, SystemMemory, 0x400, 32)
2555         Field (OPR1, AnyAcc, NoLock, Preserve)
2556         {
2557             FLD1, 1
2558         }
2559         If (FLD1)
2560         {
2561             Device (\DEV1)
2562             {
2563             }
2564         }
2565     }
2566     DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2567     {
2568         External (\DEV1, DeviceObj)
2569         Scope (\DEV1)
2570         {
2571         }
2572     }
2573
2574 Fixed an AML interpreter problem where control method invocations were 
2575 not handled correctly when the invocation was itself a SuperName argument 
2576 to another ASL operator. In these cases, the method was not invoked. 
2577 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 
2578 argument:
2579     Store
2580     Acquire, Wait
2581     CondRefOf, RefOf
2582     Decrement, Increment
2583     Load, Unload
2584     Notify
2585     Signal, Release, Reset
2586     SizeOf
2587
2588 Implemented automatic String-to-ObjectReference conversion support for 
2589 packages returned by predefined names (such as _DEP). A common BIOS error 
2590 is to add double quotes around an ObjectReference namepath, which turns 
2591 the reference into an unexpected string object. This support detects the 
2592 problem and corrects it before the package is returned to the caller that 
2593 invoked the method. Lv Zheng.
2594
2595 Implemented extensions to the Concatenate operator. Concatenate now 
2596 accepts any type of object, it is not restricted to simply 
2597 Integer/String/Buffer. For objects other than these 3 basic data types, 
2598 the argument is treated as a string containing the name of the object 
2599 type. This expands the utility of Concatenate and the Printf/Fprintf 
2600 macros. ACPICA BZ 1222.
2601
2602 Cleaned up the output of the ASL Debug object. The timer() value is now 
2603 optional and no longer emitted by default. Also, the basic data types of 
2604 Integer/String/Buffer are simply emitted as their values, without a data 
2605 type string -- since the data type is obvious from the output. ACPICA BZ 
2606 1221.
2607
2608 Example Code and Data Size: These are the sizes for the OS-independent 
2609 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2610 debug version of the code includes the debug output trace mechanism and 
2611 has a much larger code and data size.
2612
2613   Current Release:
2614     Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2615     Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2616   Previous Release:
2617     Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2618     Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2619
2620
2621 2) iASL Compiler/Disassembler and Tools:
2622
2623 iASL: Fixed some issues with the ASL Include() operator. This operator 
2624 was incorrectly defined in the iASL parser rules, causing a new scope to 
2625 be opened for the code within the include file. This could lead to 
2626 several issues, including allowing ASL code that is technically illegal 
2627 and not supported by AML interpreters. Note, this does not affect the 
2628 related #include preprocessor operator. ACPICA BZ 1212.
2629
2630 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 
2631 operator is essentially an ASL macro since there is no AML opcode 
2632 associated with it. The code emitted by the iASL compiler for ElseIf is 
2633 an Else opcode followed immediately by an If opcode. The disassembler 
2634 will now emit an ElseIf if it finds an Else immediately followed by an 
2635 If. This simplifies the decoded ASL, especially for deeply nested 
2636 If..Else and large Switch constructs. Thus, the disassembled code more 
2637 closely follows the original source ASL. ACPICA BZ 1211. Example:
2638
2639     Old disassembly:
2640         Else
2641         {
2642             If (Arg0 == 0x02)
2643             {
2644                 Local0 = 0x05
2645             }
2646         }
2647
2648     New disassembly:
2649         ElseIf (Arg0 == 0x02)
2650         {
2651             Local0 = 0x05
2652         }
2653
2654 AcpiExec: Added support for the new module level code behavior and the 
2655 early region installation. This required a small change to the 
2656 initialization, since AcpiExec must install its own operation region 
2657 handlers.
2658
2659 AcpiExec: Added support to make the debug object timer optional. Default 
2660 is timer disabled. This cleans up the debug object output -- the timer 
2661 data is rarely used.
2662
2663 AcpiExec: Multiple ACPI tables are now loaded in the order that they 
2664 appear on the command line. This can be important when there are 
2665 interdependencies/references between the tables.
2666
2667 iASL/Templates. Add support to generate template files with multiple 
2668 SSDTs within a single output file. Also added ommand line support to 
2669 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 
2670 1223, 1225.
2671
2672
2673 ----------------------------------------
2674 24 November 2015. Summary of changes for version 20151124:
2675
2676 1) ACPICA kernel-resident subsystem:
2677
2678 Fixed a possible regression for a previous update to FADT handling. The 
2679 FADT no longer has a fixed table ID, causing some issues with code that 
2680 was hardwired to a specific ID. Lv Zheng.
2681
2682 Fixed a problem where the method auto-serialization could interfere with 
2683 the current SyncLevel. This change makes the auto-serialization support 
2684 transparent to the SyncLevel support and management.
2685
2686 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 
2687 interface is intended for early access to the namespace during the 
2688 initial namespace device discovery walk. The _SUB method has been seen to 
2689 access operation regions in some cases, causing errors because the 
2690 operation regions are not fully initialized.
2691
2692 AML Debugger: Fixed some issues with the terminate/quit/exit commands 
2693 that can cause faults. Lv Zheng.
2694
2695 AML Debugger: Add thread ID support so that single-step mode only applies 
2696 to the AML Debugger thread. This prevents runtime errors within some 
2697 kernels. Lv Zheng. 
2698
2699 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 
2700 methods that are invoked by this interface are optional, removed warnings 
2701 emitted for the case where one or more of these methods do not exist. 
2702 ACPICA BZ 1208, original change by Prarit Bhargava.
2703
2704 Made a major pass through the entire ACPICA source code base to 
2705 standardize formatting that has diverged a bit over time. There are no 
2706 functional changes, but this will of course cause quite a few code 
2707 differences from the previous ACPICA release.
2708
2709 Example Code and Data Size: These are the sizes for the OS-independent 
2710 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2711 debug version of the code includes the debug output trace mechanism and 
2712 has a much larger code and data size.
2713
2714   Current Release:
2715     Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2716     Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2717   Previous Release:
2718     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2719     Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2720
2721
2722 2) iASL Compiler/Disassembler and Tools:
2723
2724 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 
2725 definition blocks within a single ASL file and the resulting AML file. 
2726 Support for this type of file was also added to the various tools that 
2727 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 
2728 example code below shows two definition blocks within the same file:
2729
2730     DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 
2731 0x12345678)
2732     {
2733     }
2734     DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2735     {
2736     }
2737
2738 iASL: Enhanced typechecking for the Name() operator. All expressions for 
2739 the value of the named object must be reduced/folded to a single constant 
2740 at compile time, as per the ACPI specification (the AML definition of 
2741 Name()).
2742
2743 iASL: Fixed some code indentation issues for the -ic and -ia options (C 
2744 and assembly headers). Now all emitted code correctly begins in column 1.
2745
2746 iASL: Added an error message for an attempt to open a Scope() on an 
2747 object defined in an SSDT. The DSDT is always loaded into the namespace 
2748 first, so any attempt to open a Scope on an SSDT object will fail at 
2749 runtime.
2750
2751
2752 ----------------------------------------
2753 30 September 2015. Summary of changes for version 20150930:
2754
2755 1) ACPICA kernel-resident subsystem:
2756
2757 Debugger: Implemented several changes and bug fixes to assist support for 
2758 the in-kernel version of the AML debugger. Lv Zheng.
2759 - Fix the "predefined" command for in-kernel debugger.
2760 - Do not enter debug command loop for the help and version commands.
2761 - Disallow "execute" command during execution/single-step of a method.
2762
2763 Interpreter: Updated runtime typechecking for all operators that have 
2764 target operands. The operand is resolved and validated that it is legal. 
2765 For example, the target cannot be a non-data object such as a Device, 
2766 Mutex, ThermalZone, etc., as per the ACPI specification.
2767
2768 Debugger: Fixed the double-mutex user I/O handshake to work when local 
2769 deadlock detection is enabled.
2770
2771 Debugger: limited display of method locals and arguments (LocalX and 
2772 ArgX) to only those that have actually been initialized. This prevents 
2773 lines of extraneous output.
2774
2775 Updated the definition of the NFIT table to correct the bit polarity of 
2776 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2777
2778 Example Code and Data Size: These are the sizes for the OS-independent 
2779 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2780 debug version of the code includes the debug output trace mechanism and 
2781 has a much larger code and data size.
2782
2783   Current Release:
2784     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2785     Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2786   Previous Release:
2787     Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2788     Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2789
2790
2791 2) iASL Compiler/Disassembler and Tools:
2792
2793 iASL: Improved the compile-time typechecking for operands of many of the 
2794 ASL operators:
2795
2796 -- Added an option to disable compiler operand/operator typechecking (-
2797 ot).
2798
2799 -- For the following operators, the TermArg operands are now validated 
2800 when possible to be Integer data objects: BankField, OperationRegion, 
2801 DataTableRegion, Buffer, and Package.
2802
2803 -- Store (Source, Target): Both the source and target operands are 
2804 resolved and checked that the operands are both legal. For example, 
2805 neither operand can be a non-data object such as a Device, Mutex, 
2806 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 
2807 operator can be used to store an object to any type of target object.
2808
2809 -- Store (Source, Target): If the source is a Package object, the target 
2810 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 
2811 is a Package, the source must also be a Package.
2812
2813 -- Store (Source, Target): A warning is issued if the source and target 
2814 resolve to the identical named object.
2815
2816 -- Store (Source, <method invocation>): An error is generated for the 
2817 target method invocation, as this construct is not supported by the AML 
2818 interpreter.
2819
2820 -- For all ASL math and logic operators, the target operand must be a 
2821 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 
2822 includes the function return value also.
2823
2824 -- External declarations are also included in the typechecking where 
2825 possible. External objects defined using the UnknownObj keyword cannot be 
2826 typechecked, however.
2827
2828 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 
2829 operator:
2830 - Legacy code: Index(PKG1, 3)
2831 - New ASL+ code: PKG1[3]
2832 This completes the ACPI 6.0 ASL+ support as it was the only operator not 
2833 supported.
2834
2835 iASL: Fixed the file suffix for the preprocessor output file (.i). Two 
2836 spaces were inadvertently appended to the filename, causing file access 
2837 and deletion problems on some systems.
2838
2839 ASL Test Suite (ASLTS): Updated the master makefile to generate all 
2840 possible compiler output files when building the test suite -- thus 
2841 exercising these features of the compiler. These files are automatically 
2842 deleted when the test suite exits.
2843
2844
2845 ----------------------------------------
2846 18 August 2015. Summary of changes for version 20150818:
2847
2848 1) ACPICA kernel-resident subsystem:
2849
2850 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 
2851 Zheng. ACPICA BZ 1186.
2852
2853 Completed development to ensure that the ACPICA Disassembler and Debugger 
2854 are fully standalone components of ACPICA. Removed cross-component 
2855 dependences. Lv Zheng.
2856
2857 The max-number-of-AML-loops is now runtime configurable (previously was 
2858 compile-time only). This is essentially a loop timeout to force-abort 
2859 infinite AML loops. ACPCIA BZ 1192.
2860
2861 Debugger: Cleanup output to dump ACPI names and namepaths without any 
2862 trailing underscores. Lv Zheng. ACPICA BZ 1135.
2863
2864 Removed unnecessary conditional compilations across the Debugger and 
2865 Disassembler components where entire modules could be left uncompiled.
2866
2867 The aapits test is deprecated and has been removed from the ACPICA git 
2868 tree. The test has never been completed and has not been maintained, thus 
2869 becoming rather useless. ACPICA BZ 1015, 794.
2870
2871 A batch of small changes to close bugzilla and other reports:
2872 - Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2873 - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2874 - iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2875 - ACPI table support: general cleanup and simplification. Lv Zheng, Bob 
2876 Moore.
2877 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 
2878 ACPICA BZ 1184.
2879 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 
2880 operators.
2881 - Debugger: Split debugger initialization/termination interfaces. Lv 
2882 Zheng.
2883 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table 
2884 identification.
2885 - AcpiExec: Add debug message during _REG method phase during table 
2886 load/init.
2887 - AcpiNames: Fix a regression where some output was missing and no longer 
2888 emitted.
2889 - Debugger: General cleanup and simplification. Lv Zheng.
2890 - Disassembler: Cleanup use of several global option variables. Lv Zheng.
2891
2892 Example Code and Data Size: These are the sizes for the OS-independent 
2893 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2894 debug version of the code includes the debug output trace mechanism and 
2895 has a much larger code and data size.
2896
2897   Current Release:
2898     Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2899     Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2900   Previous Release:
2901     Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2902     Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2903
2904
2905 2) iASL Compiler/Disassembler and Tools:
2906
2907 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 
2908 were not handled properly and caused load errors. Now, properly invoke 
2909 and use the ACPICA auto-reallocate mechanism for ACPI table data 
2910 structures. ACPICA BZ 1188
2911
2912 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 
2913 BZ 1190.
2914
2915 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 
2916 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 
2917 executed during initialization. ACPICA BZ 1187, 1189.
2918
2919 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 
2920 that corresponds to each disassembled ASL statement, to simplify 
2921 debugging. ACPICA BZ 1191.
2922
2923 Debugger: Add option to the "objects" command to display a summary of the 
2924 current namespace objects (Object type and count). This is displayed if 
2925 the command is entered with no arguments.
2926
2927 AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2928
2929
2930 ----------------------------------------
2931 17 July 2015. Summary of changes for version 20150717:
2932
2933 1) ACPICA kernel-resident subsystem:
2934
2935 Improved the partitioning between the Debugger and Disassembler 
2936 components. This allows the Debugger to be used standalone within kernel 
2937 code without the Disassembler (which is used for single stepping also). 
2938 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2939
2940 Debugger: Implemented a new command to trace the execution of control 
2941 methods (Trace). This is especially useful for the in-kernel version of 
2942 the debugger when file I/O may not be available for method trace output. 
2943 See the ACPICA reference for more information. Lv Zheng.
2944
2945 Moved all C library prototypes (used for the local versions of these 
2946 functions when requested) to a new header, acclib.h
2947 Cleaned up the use of non-ANSI C library functions. These functions are 
2948 implemented locally in ACPICA. Moved all such functions to a common 
2949 source file, utnonansi.c
2950
2951 Debugger: Fixed a problem with the "!!" command (get last command 
2952 executed) where the debugger could enter an infinite loop and eventually 
2953 crash.
2954
2955 Removed the use of local macros that were used for some of the standard C 
2956 library functions to automatically cast input parameters. This mostly 
2957 affected the is* functions where the input parameter is defined to be an 
2958 int. This required a few modifications to the main ACPICA source code to 
2959 provide casting for these functions and eliminate possible compiler 
2960 warnings for these parameters.
2961
2962 Across the source code, added additional status/error checking to resolve 
2963 issues discovered by static source code analysis tools such as Coverity.
2964
2965 Example Code and Data Size: These are the sizes for the OS-independent 
2966 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2967 debug version of the code includes the debug output trace mechanism and 
2968 has a much larger code and data size.
2969
2970   Current Release:
2971     Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2972     Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2973   Previous Release:
2974     Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2975     Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2976
2977
2978 2) iASL Compiler/Disassembler and Tools:
2979
2980 iASL: Fixed a regression where the device map file feature no longer 
2981 worked properly when used in conjunction with the disassembler. It only 
2982 worked properly with the compiler itself.
2983
2984 iASL: Implemented a new warning for method LocalX variables that are set 
2985 but never used (similar to a C compiler such as gcc). This also applies 
2986 to ArgX variables that are not defined by the parent method, and are 
2987 instead (legally) used as local variables.
2988
2989 iASL/Preprocessor: Finished the pass-through of line numbers from the 
2990 preprocessor to the compiler. This ensures that compiler errors/warnings 
2991 have the correct original line numbers and filenames, regardless of any 
2992 #include files.
2993
2994 iASL/Preprocessor: Fixed a couple of issues with comment handling and the 
2995 pass-through of comments to the preprocessor output file (which becomes 
2996 the compiler input file). Also fixed a problem with // comments that 
2997 appear after a math expression.
2998
2999 iASL: Added support for the TCPA server table to the table compiler and 
3000 template generator. (The client table was already previously supported)
3001
3002 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 
3003 identify the iASL compiler.
3004
3005 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 
3006 multiple times. The new names are ACPI_SIGN_NEGATIVE and 
3007 ACPI_SIGN_POSITIVE.
3008
3009 AcpiHelp: Update to expand help messages for the iASL preprocessor 
3010 directives.
3011
3012
3013 ----------------------------------------
3014 19 June 2015. Summary of changes for version 20150619:
3015
3016 Two regressions in version 20150616 have been addressed:
3017
3018 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 
3019 etc.) This update changes ACPICA to only use the standard headers for 
3020 functions, or the prototypes for the local versions of the C library 
3021 functions. Across the source code, this required some additional casts 
3022 for some Clib invocations for portability. Moved all local prototypes to 
3023 a new file, acclib.h
3024
3025 Fixes several problems with recent changes to the handling of the FACS 
3026 table that could cause some systems not to boot.
3027
3028
3029 ----------------------------------------
3030 16 June 2015. Summary of changes for version 20150616:
3031
3032
3033 1) ACPICA kernel-resident subsystem:
3034
3035 Across the entire ACPICA source code base, the various macros for the C 
3036 library functions (such as ACPI_STRLEN, etc.) have been removed and 
3037 replaced by the standard C library names (strlen, etc.) The original 
3038 purpose for these macros is no longer applicable. This simplification 
3039 reduces the number of macros used in the ACPICA source code 
3040 significantly, improving readability and maintainability.
3041
3042 Implemented support for a new ACPI table, the OSDT. This table, the 
3043 "override" SDT, can be loaded directly by the host OS at boot time. It 
3044 enables the replacement of existing namespace objects that were installed 
3045 via the DSDT and/or SSDTs. The primary purpose for this is to replace 
3046 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 
3047 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 
3048 Moore.
3049
3050 Added support for systems with (improperly) two FACS tables -- a "32-bit" 
3051 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 
3052 X field). This change will support both automatically. There continues to 
3053 be systems found with this issue. This support requires a change to the 
3054 AcpiSetFirmwareWakingVector interface. Also, a public global variable has 
3055 been added to allow the host to select which FACS is desired 
3056 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 
3057 details Lv Zheng.
3058
3059 Added a new feature to allow for systems that do not contain an FACS. 
3060 Although this is already supported on hardware-reduced platforms, the 
3061 feature has been extended for all platforms. The reasoning is that we do 
3062 not want to abort the entire ACPICA initialization just because the 
3063 system is seriously buggy and has no FACS.
3064
3065 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 
3066 not correctly transcribed from the ACPI specification in ACPICA version 
3067 20150515.
3068
3069 Implemented support for the _CLS object in the AcpiGetObjectInfo external 
3070 interface.
3071
3072 Updated the definitions of the TCPA and TPM2 ACPI tables to the more 
3073 recent TCG ACPI Specification, December 14, 2014. Table disassembler and 
3074 compiler also updated. Note: The TCPA "server" table is not supported by 
3075 the disassembler/table-compiler at this time.
3076
3077 ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3078
3079 Example Code and Data Size: These are the sizes for the OS-independent 
3080 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3081 debug version of the code includes the debug output trace mechanism and 
3082 has a much larger code and data size.
3083
3084   Current Release:
3085     Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3086     Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3087   Previous Release:
3088     Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3089     Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3090
3091
3092 2) iASL Compiler/Disassembler and Tools:
3093
3094 Disassembler: Fixed a problem with the new symbolic operator disassembler 
3095 where incorrect ASL code could be emitted in some cases for the "non-
3096 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 
3097 ShiftRight. The actual problem cases seem to be rather unusual in common 
3098 ASL code, however. David Box.
3099
3100 Modified the linux version of acpidump to obtain ACPI tables from not 
3101 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 
3102 Zheng.
3103
3104 iASL: Fixed a problem where the user preprocessor output file (.i) 
3105 contained extra data that was not expected. The compiler was using this 
3106 file as a temporary file and passed through #line directives in order to 
3107 keep compiler error messages in sync with the input file and line number 
3108 across multiple include files. The (.i) is no longer a temporary file as 
3109 the compiler uses a new, different file for the original purpose.
3110
3111 iASL: Fixed a problem where comments within the original ASL source code 
3112 file were not passed through to the preprocessor output file, nor any 
3113 listing files.
3114
3115 iASL: Fixed some issues for the handling of the "#include" preprocessor 
3116 directive and the similar (but not the same) "Include" ASL operator.
3117
3118 iASL: Add support for the new OSDT in both the disassembler and compiler.
3119
3120 iASL: Fixed a problem with the constant folding support where a Buffer 
3121 object could be incorrectly generated (incorrectly formed) during a 
3122 conversion to a Store() operator.
3123
3124 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 
3125 description text for the _REV predefined name. _REV now permanently 
3126 returns 2, as per the ACPI 6.0 specification.
3127
3128 Debugger: Enhanced the output of the Debug ASL object for references 
3129 produced by the Index operator. For Buffers and strings, only output the 
3130 actual byte pointed to by the index. For packages, only print the single 
3131 package element decoded by the index. Previously, the entire 
3132 buffer/string/package was emitted.
3133
3134 iASL/Table-compiler: Fixed a regression where the "generic" data types 
3135 were no longer recognized, causing errors.
3136
3137
3138 ----------------------------------------
3139 15 May 2015. Summary of changes for version 20150515:
3140
3141 This release implements most of ACPI 6.0 as described below.
3142
3143 1) ACPICA kernel-resident subsystem:
3144
3145 Implemented runtime argument checking and return value checking for all 
3146 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 
3147 _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3148
3149 Example Code and Data Size: These are the sizes for the OS-independent 
3150 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3151 debug version of the code includes the debug output trace mechanism and 
3152 has a much larger code and data size.
3153
3154   Current Release:
3155     Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3156     Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3157   Previous Release:
3158     Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3159     Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3160
3161
3162 2) iASL Compiler/Disassembler and Tools:
3163
3164 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 
3165 names (argument count validation and return value typechecking.)
3166
3167 iASL disassembler and table compiler: implemented support for all new 
3168 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 
3169
3170 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 
3171 tables: FADT, MADT.
3172
3173 iASL preprocessor: Added a new directive to enable inclusion of binary 
3174 blobs into ASL code. The new directive is #includebuffer. It takes a 
3175 binary file as input and emits a named ascii buffer object into the ASL 
3176 code.
3177
3178 AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3179
3180 AcpiHelp: Added a new option, -d, to display all iASL preprocessor 
3181 directives.
3182
3183 AcpiHelp: Added a new option, -t, to display all known/supported ACPI 
3184 tables.
3185
3186
3187 ----------------------------------------
3188 10 April 2015. Summary of changes for version 20150410:
3189
3190 Reverted a change introduced in version 20150408 that caused
3191 a regression in the disassembler where incorrect operator
3192 symbols could be emitted.
3193
3194
3195 ----------------------------------------
3196 08 April 2015. Summary of changes for version 20150408:
3197
3198
3199 1) ACPICA kernel-resident subsystem:
3200
3201 Permanently set the return value for the _REV predefined name. It now 
3202 returns 2 (was 5). This matches other ACPI implementations. _REV will be 
3203 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 
3204 for ACPI 2.0 and later. It should never be used to differentiate or 
3205 identify operating systems.
3206
3207 Added the "Windows 2015" string to the _OSI support. ACPICA will now 
3208 return TRUE to a query with this string.
3209
3210 Fixed several issues with the local version of the printf function.
3211
3212 Added the C99 compiler option (-std=c99) to the Unix makefiles.
3213
3214   Current Release:
3215     Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3216     Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3217   Previous Release:
3218     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3219     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3220
3221
3222 2) iASL Compiler/Disassembler and Tools:
3223
3224 iASL: Implemented an enhancement to the constant folding feature to 
3225 transform the parse tree to a simple Store operation whenever possible:
3226     Add (2, 3, X) ==> is converted to: Store (5, X)
3227     X = 2 + 3     ==> is converted to: Store (5, X)
3228
3229 Updated support for the SLIC table (Software Licensing Description Table) 
3230 in both the Data Table compiler and the disassembler. The SLIC table 
3231 support now conforms to "Microsoft Software Licensing Tables (SLIC and 
3232 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 
3233 following the ACPI header is now defined to be "Proprietary Data", and as 
3234 such, can only be entered or displayed as a hex data block.
3235
3236 Implemented full support for the MSDM table as described in the document 
3237 above. Note: The format of MSDM is similar to SLIC. Any MSDM data 
3238 following the ACPI header is defined to be "Proprietary Data", and can 
3239 only be entered or displayed as a hex data block.
3240
3241 Implemented the -Pn option for the iASL Table Compiler (was only 
3242 implemented for the ASL compiler). This option disables the iASL 
3243 preprocessor.
3244
3245 Disassembler: For disassembly of Data Tables, added a comment field 
3246 around the Ascii equivalent data that is emitted as part of the "Raw 
3247 Table Data" block. This prevents the iASL Preprocessor from possible 
3248 confusion if/when the table is compiled.
3249
3250 Disassembler: Added an option (-df) to force the disassembler to assume 
3251 that the table being disassembled contains valid AML. This feature is 
3252 useful for disassembling AML files that contain ACPI signatures other 
3253 than DSDT or SSDT (such as OEMx or other signatures).
3254
3255 Changes for the EFI version of the tools:
3256 1) Fixed a build error/issue
3257 2) Fixed a cast warning
3258
3259 iASL: Fixed a path issue with the __FILE__ operator by making the 
3260 directory prefix optional within the internal SplitInputFilename 
3261 function.
3262
3263 Debugger: Removed some unused global variables.
3264
3265 Tests: Updated the makefile for proper generation of the AAPITS suite.
3266
3267
3268 ----------------------------------------
3269 04 February 2015. Summary of changes for version 20150204:
3270
3271 ACPICA kernel-resident subsystem:
3272
3273 Updated all ACPICA copyrights and signons to 2014. Added the 2014 
3274 copyright to all module headers and signons, including the standard Linux 
3275 header. This affects virtually every file in the ACPICA core subsystem, 
3276 iASL compiler, all ACPICA utilities, and the test suites.
3277
3278 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3279 A raw gpe handling mechanism was created to allow better handling of GPE
3280 storms that aren't easily managed by the normal handler. The raw handler
3281 allows disabling/renabling of the the GPE so that interrupt storms can be
3282 avoided in cases where events cannot be timely serviced. In this 
3283 scenario, handlers should use the AcpiSetGpe() API to disable/enable the 
3284 GPE. This API will leave the reference counts undisturbed, thereby 
3285 preventing unintentional clearing of the GPE when the intent in only to 
3286 temporarily disable it. Raw handlers allow enabling and disabling of a 
3287 GPE by removing GPE register locking. As such, raw handlers much provide 
3288 their own locks while using GPE API's to protect access to GPE data 
3289 structures.
3290 Lv Zheng
3291
3292 Events: Always modify GPE registers under the GPE lock.
3293 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3294 values. Reported as bug by joe.liu@apple.com.
3295
3296 Unix makefiles: Separate option to disable optimizations and 
3297 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 
3298 NOOPT disable option and creates a separate flag (NOFORTIFY) for this 
3299 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 
3300 errors when building ACPICA. This allows disabling the option without 
3301 also having to disable optimazations.
3302 David Box
3303
3304   Current Release:
3305     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3306     Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3307
3308 --
3309 --------------------------------------
3310 07 November 2014. Summary of changes for version 20141107:
3311
3312 This release is available at https://acpica.org/downloads
3313
3314 This release introduces and implements language extensions to ASL that 
3315 provide support for symbolic ("C-style") operators and expressions. These 
3316 language extensions are known collectively as ASL+.
3317
3318
3319 1) iASL Compiler/Disassembler and Tools:
3320
3321 Disassembler: Fixed a problem with disassembly of the UartSerialBus 
3322 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 
3323 Box.
3324
3325 Disassembler: Fixed the Unicode macro support to add escape sequences. 
3326 All non-printable ASCII values are emitted as escape sequences, as well 
3327 as the standard escapes for quote and backslash. Ensures that the 
3328 disassembled macro can be correctly recompiled.
3329
3330 iASL: Added Printf/Fprintf macros for formatted output. These macros are 
3331 translated to existing AML Concatenate and Store operations. Printf 
3332 writes to the ASL Debug object. Fprintf allows the specification of an 
3333 ASL name as the target. Only a single format specifier is required, %o, 
3334 since the AML interpreter dynamically converts objects to the required 
3335 type. David E. Box.
3336
3337     (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3338                  (Concatenate (Concatenate (Concatenate ("", Arg0),
3339                  ": Unexpected value for "), Arg1), ", "), Arg2),
3340                  " at line "), Arg3), Debug)
3341
3342     (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3343                  Arg0, Arg1, Arg2, Arg3)
3344
3345     (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3346                  ("", Arg1), ": "), Arg0), " Successful"), STR1)
3347
3348     (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3349
3350 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 
3351 ASL parse tree before the AML code is generated. This allows blocks of 
3352 ASL code to be removed in order to help locate and identify problem 
3353 devices and/or code. David E. Box.
3354
3355 AcpiExec: Added support (-fi) for an optional namespace object 
3356 initialization file. This file specifies initial values for namespace 
3357 objects as necessary for debugging and testing different ASL code paths 
3358 that may be taken as a result of BIOS options.
3359
3360
3361 2) Overview of symbolic operator support for ASL (ASL+)
3362 -------------------------------------------------------
3363
3364 As an extension to the ASL language, iASL implements support for symbolic 
3365 (C-style) operators for math and logical expressions. This can greatly 
3366 simplify ASL code as well as improve both readability and 
3367 maintainability. These language extensions can exist concurrently with 
3368 all legacy ASL code and expressions.
3369
3370 The symbolic extensions are 100% compatible with existing AML 
3371 interpreters, since no new AML opcodes are created. To implement the 
3372 extensions, the iASL compiler transforms the symbolic expressions into 
3373 the legacy ASL/AML equivalents at compile time.
3374
3375 Full symbolic expressions are supported, along with the standard C 
3376 precedence and associativity rules.
3377
3378 Full disassembler support for the symbolic expressions is provided, and 
3379 creates an automatic migration path for existing ASL code to ASL+ code 
3380 via the disassembly process. By default, the disassembler now emits ASL+ 
3381 code with symbolic expressions. An option (-dl) is provided to force the 
3382 disassembler to emit legacy ASL code if desired.
3383
3384 Below is the complete list of the currently supported symbolic operators 
3385 with examples. See the iASL User Guide for additional information.
3386
3387
3388 ASL+ Syntax      Legacy ASL Equivalent
3389 -----------      ---------------------
3390
3391     // Math operators
3392
3393 Z = X + Y        Add (X, Y, Z)
3394 Z = X - Y        Subtract (X, Y, Z)
3395 Z = X * Y        Multiply (X, Y, Z)
3396 Z = X / Y        Divide (X, Y, , Z)
3397 Z = X % Y        Mod (X, Y, Z)
3398 Z = X << Y       ShiftLeft (X, Y, Z)
3399 Z = X >> Y       ShiftRight (X, Y, Z)
3400 Z = X & Y        And (X, Y, Z)
3401 Z = X | Y        Or (X, Y, Z)
3402 Z = X ^ Y        Xor (X, Y, Z)
3403 Z = ~X           Not (X, Z)
3404 X++              Increment (X)
3405 X--              Decrement (X)
3406
3407     // Logical operators
3408
3409 (X == Y)         LEqual (X, Y)
3410 (X != Y)         LNotEqual (X, Y)
3411 (X < Y)          LLess (X, Y)
3412 (X > Y)          LGreater (X, Y)
3413 (X <= Y)         LLessEqual (X, Y)
3414 (X >= Y)         LGreaterEqual (X, Y)
3415 (X && Y)         LAnd (X, Y)
3416 (X || Y)         LOr (X, Y)
3417 (!X)             LNot (X)
3418
3419     // Assignment and compound assignment operations
3420
3421 X = Y           Store (Y, X)
3422 X += Y          Add (X, Y, X)
3423 X -= Y          Subtract (X, Y, X)
3424 X *= Y          Multiply (X, Y, X)
3425 X /= Y          Divide (X, Y, , X)
3426 X %= Y          Mod (X, Y, X)
3427 X <<= Y         ShiftLeft (X, Y, X)
3428 X >>= Y         ShiftRight (X, Y, X)
3429 X &= Y          And (X, Y, X)
3430 X |= Y          Or (X, Y, X)
3431 X ^= Y          Xor (X, Y, X)
3432
3433
3434 3) ASL+ Examples:
3435 -----------------
3436
3437 Legacy ASL:
3438         If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3439             And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 
3440 0x03FB), 
3441             0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3442         {
3443             And (MEMB, 0xFFFFFFF0, SRMB)
3444             Store (MEMB, Local2)
3445             Store (PDBM, Local1)
3446             And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3447             Store (SRMB, MEMB)
3448             Or (PDBM, 0x02, PDBM)
3449         }
3450
3451 ASL+ version:
3452         If (((R510 & 0x03FB) == 0x02E0) ||
3453             ((R520 & 0x03FB) == 0x02E0) ||
3454             ((R530 & 0x03FB) == 0x02E0) || 
3455             ((R540 & 0x03FB) == 0x02E0))
3456         {
3457             SRMB = (MEMB & 0xFFFFFFF0)
3458             Local2 = MEMB
3459             Local1 = PDBM
3460             PDBM &= 0xFFFFFFFFFFFFFFF9
3461             MEMB = SRMB
3462             PDBM |= 0x02
3463         }
3464
3465 Legacy ASL:
3466         Store (0x1234, Local1)
3467         Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3468         Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3469         Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3470         Store (Index (PKG1, 0x03), Local6)
3471         Store (Add (Local3, Local2), Debug)
3472         Add (Local1, 0x0F, Local2)
3473         Add (Local1, Multiply (Local2, Local3), Local2)
3474         Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3475
3476 ASL+ version:
3477         Local1 = 0x1234
3478         Local3 = (((Local1 + TEST) + 0x20) * Local2)
3479         Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3480         Local3 = (Local1 + (TEST + (0x20 * Local2)))
3481         Local6 = Index (PKG1, 0x03)
3482         Debug = (Local3 + Local2)
3483         Local2 = (Local1 + 0x0F)
3484         Local2 = (Local1 + (Local2 * Local3))
3485         Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3486
3487
3488 ----------------------------------------
3489 26 September 2014. Summary of changes for version 20140926:
3490
3491 1) ACPICA kernel-resident subsystem:
3492
3493 Updated the GPIO operation region handler interface (GeneralPurposeIo). 
3494 In order to support GPIO Connection objects with multiple pins, along 
3495 with the related Field objects, the following changes to the interface 
3496 have been made: The Address is now defined to be the offset in bits of 
3497 the field unit from the previous invocation of a Connection. It can be 
3498 viewed as a "Pin Number Index" into the connection resource descriptor. 
3499 The BitWidth is the exact bit width of the field. It is usually one bit, 
3500 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 
3501 additional information and examples.
3502
3503 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 
3504 corresponding _Lxx/_Exx methods are disabled (they may have been enabled 
3505 by the firmware), so that they cannot fire until they are enabled via 
3506 AcpiUpdateAllGpes. Rafael J. Wysocki.
3507
3508 Added a new return flag for the Event/GPE status interfaces -- 
3509 AcpiGetEventStatus and AcpiGetGpeStatus. The new 
3510 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 
3511 GPE currently has a handler associated with it, and can thus actually 
3512 affect the system. Lv Zheng.
3513
3514 Example Code and Data Size: These are the sizes for the OS-independent 
3515 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3516 debug version of the code includes the debug output trace mechanism and 
3517 has a much larger code and data size.
3518
3519   Current Release:
3520     Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3521     Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3522   Previous Release:
3523     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3524     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3525
3526 2) iASL Compiler/Disassembler and Tools:
3527
3528 iASL: Fixed a memory allocation/free regression introduced in 20140828 
3529 that could cause the compiler to crash. This was introduced inadvertently 
3530 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 
3531 1113.
3532
3533 iASL: Removed two error messages that have been found to create false 
3534 positives, until they can be fixed and fully validated (ACPICA BZ 1112):
3535 1) Illegal forward reference within a method
3536 2) Illegal reference across two methods
3537
3538 iASL: Implemented a new option (-lm) to create a hardware mapping file 
3539 that summarizes all GPIO, I2C, SPI, and UART connections. This option 
3540 works for both the compiler and disassembler. See the iASL compiler user 
3541 guide for additional information and examples (section 6.4.6).
3542
3543 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 
3544 version 2. This corrects the AE_BAD_HEADER exception seen on systems with 
3545 a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3546
3547 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 
3548 unless STDIN is actually a terminal. Assists with batch-mode processing. 
3549 ACPICA BZ 1114.
3550
3551 Disassembler/AcpiHelp: Added another large group of recognized _HID 
3552 values.
3553
3554
3555 ----------------------------------------
3556 28 August 2014. Summary of changes for version 20140828:
3557
3558 1) ACPICA kernel-resident subsystem:
3559
3560 Fixed a problem related to the internal use of the Timer() operator where 
3561 a 64-bit divide could cause an attempted link to a double-precision math 
3562 library. This divide is not actually necessary, so the code was 
3563 restructured to eliminate it. Lv Zheng.
3564
3565 ACPI 5.1: Added support for the runtime validation of the _DSD package 
3566 (similar to the iASL support).
3567
3568 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 
3569 SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3570
3571 Example Code and Data Size: These are the sizes for the OS-independent 
3572 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3573 debug version of the code includes the debug output trace mechanism and 
3574 has a much larger code and data size.
3575
3576   Current Release:
3577     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3578     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3579   Previous Release:
3580     Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
3581     Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3582
3583 2) iASL Compiler/Disassembler and Tools:
3584
3585 AcpiExec: Fixed a problem on unix systems where the original terminal 
3586 state was not always properly restored upon exit. Seen when using the -v 
3587 option. ACPICA BZ 1104.
3588
3589 iASL: Fixed a problem with the validation of the ranges/length within the 
3590 Memory24 resource descriptor. There was a boundary condition when the 
3591 range was equal to the (length -1) caused by the fact that these values 
3592 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3593
3594 Disassembler: Fixed a problem with the GpioInt descriptor interrupt 
3595 polarity 
3596 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 
3597 is 
3598 now supported properly.
3599
3600 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 
3601 in the disassembler, data table compiler, and table template generator.
3602
3603 iASL: Added a requirement for Device() objects that one of either a _HID 
3604 or _ADR must exist within the scope of a Device, as per the ACPI 
3605 specification. Remove a similar requirement that was incorrectly in place 
3606 for the _DSD object.
3607
3608 iASL: Added error detection for illegal named references within control 
3609 methods that would cause runtime failures. Now trapped as errors are: 1) 
3610 References to objects within a non-parent control method. 2) Forward 
3611 references (within a method) -- for control methods, AML interpreters use 
3612 a one-pass parse of control methods. ACPICA BZ 1008.
3613
3614 iASL: Added error checking for dependencies related to the _PSx power 
3615 methods. ACPICA BZ 1029.
3616 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 
3617 _PS3.
3618 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 
3619 scope.
3620
3621 iASL and table compiler: Cleanup miscellaneous memory leaks by fully 
3622 deploying the existing object and string caches and adding new caches for 
3623 the table compiler.
3624
3625 iASL: Split the huge parser source file into multiple subfiles to improve 
3626 manageability. Generation now requires the M4 macro preprocessor, which 
3627 is part of the Bison distribution on both unix and windows platforms.
3628
3629 AcpiSrc: Fixed and removed all extraneous warnings generated during 
3630 entire ACPICA source code scan and/or conversion.
3631
3632
3633 ----------------------------------------
3634
3635 24 July 2014. Summary of changes for version 20140724: 
3636
3637 The ACPI 5.1 specification has been released and is available at: 
3638 http://uefi.org/specs/access
3639
3640
3641 0) ACPI 5.1 support in ACPICA:
3642
3643 ACPI 5.1 is fully supported in ACPICA as of this release.
3644
3645 New predefined names. Support includes iASL and runtime ACPICA 
3646 validation.
3647     _CCA (Cache Coherency Attribute).
3648     _DSD (Device-Specific Data). David Box.
3649
3650 Modifications to existing ACPI tables. Support includes headers, iASL 
3651 Data Table compiler, disassembler, and the template generator.
3652     FADT - New fields and flags. Graeme Gregory.
3653     GTDT - One new subtable and new fields. Tomasz Nowicki.
3654     MADT - Two new subtables. Tomasz Nowicki.
3655     PCCT - One new subtable.
3656
3657 Miscellaneous.
3658     New notification type for System Resource Affinity change events.
3659
3660
3661 1) ACPICA kernel-resident subsystem:
3662
3663 Fixed a regression introduced in 20140627 where a fault can happen during 
3664 the deletion of Alias AML namespace objects. The problem affected both 
3665 the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3666
3667 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 
3668 simple mechanism to enable wake GPEs that have no associated handler or 
3669 control method. Rafael Wysocki.
3670
3671 Updated the AcpiEnableGpe interface to disallow the enable if there is no 
3672 handler or control method associated with the particular GPE. This will 
3673 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3674
3675 Updated GPE handling and dispatch by disabling the GPE before clearing 
3676 the status bit for edge-triggered GPEs. Lv Zheng.
3677
3678 Added Timer() support to the AML Debug object. The current timer value is 
3679 now displayed with each invocation of (Store to) the debug object to 
3680 enable simple generation of execution times for AML code (method 
3681 execution for example.) ACPICA BZ 1093.
3682
3683 Example Code and Data Size: These are the sizes for the OS-independent 
3684 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3685 debug version of the code includes the debug output trace mechanism and 
3686 has a much larger code and data size.
3687
3688   Current Release:
3689     Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
3690     Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3691   Previous Release:
3692     Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3693     Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3694
3695
3696 2) iASL Compiler/Disassembler and Tools:
3697
3698 Fixed an issue with the recently added local printf implementation, 
3699 concerning width/precision specifiers that could cause incorrect output. 
3700 Lv Zheng. ACPICA BZ 1094.
3701
3702 Disassembler: Added support to detect buffers that contain UUIDs and 
3703 disassemble them to an invocation of the ToUUID operator. Also emit 
3704 commented descriptions of known ACPI-related UUIDs.
3705
3706 AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 
3707 -u. Adds three new files. 
3708
3709 iASL: Update table compiler and disassembler for DMAR table changes that 
3710 were introduced in September 2013. With assistance by David Woodhouse.
3711
3712 ----------------------------------------
3713 27 June 2014. Summary of changes for version 20140627:
3714
3715 1) ACPICA kernel-resident subsystem:
3716
3717 Formatted Output: Implemented local versions of standard formatted output 
3718 utilities such as printf, etc. Over time, it has been discovered that 
3719 there are in fact many portability issues with printf, and the addition 
3720 of this feature will fix/prevent these issues once and for all. Some 
3721 known issues are summarized below:
3722
3723 1) Output of 64-bit values is not portable. For example, UINT64 is %ull 
3724 for the Linux kernel and is %uI64 for some MSVC versions.
3725 2) Invoking printf consistently in a manner that is portable across both 
3726 32-bit and 64-bit platforms is difficult at best in many situations.
3727 3) The output format for pointers varies from system to system (leading 
3728 zeros especially), and leads to inconsistent output from ACPICA across 
3729 platforms.
3730 4) Certain platform-specific printf formats may conflict with ACPICA use.
3731 5) If there is no local C library available, ACPICA now has local support 
3732 for printf.
3733
3734 -- To address these printf issues in a complete manner, ACPICA now 
3735 directly implements a small subset of printf format specifiers, only 
3736 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3737
3738 Implemented support for ACPICA generation within the EFI environment. 
3739 Initially, the AcpiDump utility is supported in the UEFI shell 
3740 environment. Lv Zheng.
3741
3742 Added a new external interface, AcpiLogError, to improve ACPICA 
3743 portability. This allows the host to redirect error messages from the 
3744 ACPICA utilities. Lv Zheng.
3745
3746 Added and deployed new OSL file I/O interfaces to improve ACPICA 
3747 portability:
3748   AcpiOsOpenFile
3749   AcpiOsCloseFile
3750   AcpiOsReadFile
3751   AcpiOsWriteFile
3752   AcpiOsGetFileOffset
3753   AcpiOsSetFileOffset
3754 There are C library implementations of these functions in the new file 
3755 service_layers/oslibcfs.c -- however, the functions can be implemented by 
3756 the local host in any way necessary. Lv Zheng.
3757
3758 Implemented a mechanism to disable/enable ACPI table checksum validation 
3759 at runtime. This can be useful when loading tables very early during OS 
3760 initialization when it may not be possible to map the entire table in 
3761 order to compute the checksum. Lv Zheng.
3762
3763 Fixed a buffer allocation issue for the Generic Serial Bus support. 
3764 Originally, a fixed buffer length was used. This change allows for 
3765 variable-length buffers based upon the protocol indicated by the field 
3766 access attributes. Reported by Lan Tianyu. Lv Zheng.
3767
3768 Fixed a problem where an object detached from a namespace node was not 
3769 properly terminated/cleared and could cause a circular list problem if 
3770 reattached. ACPICA BZ 1063. David Box.
3771
3772 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3773
3774 Fixed a possible memory leak in an error return path within the function 
3775 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3776
3777 Example Code and Data Size: These are the sizes for the OS-independent 
3778 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3779 debug version of the code includes the debug output trace mechanism and 
3780 has a much larger code and data size.
3781
3782   Current Release:
3783     Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3784     Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3785   Previous Release:
3786     Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3787     Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3788
3789
3790 2) iASL Compiler/Disassembler and Tools:
3791
3792 Disassembler: Add dump of ASCII equivalent text within a comment at the 
3793 end of each line of the output for the Buffer() ASL operator.
3794
3795 AcpiDump: Miscellaneous changes:
3796   Fixed repetitive table dump in -n mode.
3797   For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 
3798 the ACPI 2.0 GUID fails.
3799
3800 iASL: Fixed a problem where the compiler could fault if incorrectly given 
3801 an acpidump output file as input. ACPICA BZ 1088. David Box.
3802
3803 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 
3804 they are invoked without any arguments.
3805
3806 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 
3807 1086. Colin Ian King.
3808
3809 Disassembler: Cleaned up a block of code that extracts a parent Op 
3810 object. Added a comment that explains that the parent is guaranteed to be 
3811 valid in this case. ACPICA BZ 1069.
3812
3813
3814 ----------------------------------------
3815 24 April 2014. Summary of changes for version 20140424:
3816
3817 1) ACPICA kernel-resident subsystem:
3818
3819 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 
3820 Some of these tables are known to contain a trailing NULL entry. Lv 
3821 Zheng.
3822
3823 Removed an extraneous error message for the case where there are a large 
3824 number of system GPEs (> 124). This was the "32-bit FADT register is too 
3825 long to convert to GAS struct" message, which is irrelevant for GPEs 
3826 since the GPEx_BLK_LEN fields of the FADT are always used instead of the 
3827 (limited capacity) GAS bit length. Also, several changes to ensure proper 
3828 support for GPE numbers > 255, where some "GPE number" fields were 8-bits 
3829 internally.
3830
3831 Implemented and deployed additional configuration support for the public 
3832 ACPICA external interfaces. Entire classes of interfaces can now be 
3833 easily modified or configured out, replaced by stubbed inline functions 
3834 by default. Lv Zheng.
3835
3836 Moved all public ACPICA runtime configuration globals to the public 
3837 ACPICA external interface file for convenience. Also, removed some 
3838 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3839
3840 Documentation: Added a new section to the ACPICA reference describing the 
3841 maximum number of GPEs that can be supported by the FADT-defined GPEs in 
3842 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 
3843 reference.
3844
3845 Example Code and Data Size: These are the sizes for the OS-independent 
3846 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3847 debug version of the code includes the debug output trace mechanism and 
3848 has a much larger code and data size.
3849
3850   Current Release:
3851     Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3852     Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3853   Previous Release:
3854     Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3855     Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3856
3857
3858 2) iASL Compiler/Disassembler and Tools:
3859
3860 iASL and disassembler: Add full support for the LPIT table (Low Power 
3861 Idle Table). Includes support in the disassembler, data table compiler, 
3862 and template generator.
3863
3864 AcpiDump utility:
3865 1) Add option to force the use of the RSDT (over the XSDT).
3866 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
3867
3868 iASL: Add check for predefined packages that are too large.  For 
3869 predefined names that contain subpackages, check if each subpackage is 
3870 too large. (Check for too small already exists.)
3871
3872 Debugger: Updated the GPE command (which simulates a GPE by executing the 
3873 GPE code paths in ACPICA). The GPE device is now optional, and defaults 
3874 to the GPE 0/1 FADT-defined blocks.
3875
3876 Unix application OSL: Update line-editing support. Add additional error 
3877 checking and take care not to reset terminal attributes on exit if they 
3878 were never set. This should help guarantee that the terminal is always 
3879 left in the previous state on program exit.
3880
3881
3882 ----------------------------------------
3883 25 March 2014. Summary of changes for version 20140325:
3884
3885 1) ACPICA kernel-resident subsystem:
3886
3887 Updated the auto-serialize feature for control methods. This feature 
3888 automatically serializes all methods that create named objects in order 
3889 to prevent runtime errors. The update adds support to ignore the 
3890 currently executing AML SyncLevel when invoking such a method, in order 
3891 to prevent disruption of any existing SyncLevel priorities that may exist 
3892 in the AML code. Although the use of SyncLevels is relatively rare, this 
3893 change fixes a regression where an AE_AML_MUTEX_ORDER exception can 
3894 appear on some machines starting with the 20140214 release.
3895
3896 Added a new external interface to allow the host to install ACPI tables 
3897 very early, before the namespace is even created. AcpiInstallTable gives 
3898 the host additional flexibility for ACPI table management. Tables can be 
3899 installed directly by the host as if they had originally appeared in the 
3900 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 
3901 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along 
3902 with additional internal restructuring and cleanup. See the ACPICA 
3903 Reference for interface details. Lv Zheng.
3904
3905 Added validation of the checksum for all incoming dynamically loaded 
3906 tables (via external interfaces or via AML Load/LoadTable operators). Lv 
3907 Zheng.
3908
3909 Updated the use of the AcpiOsWaitEventsComplete interface during Notify 
3910 and GPE handler removal. Restructured calls to eliminate possible race 
3911 conditions. Lv Zheng.
3912
3913 Added a warning for the use/execution of the ASL/AML Unload (table) 
3914 operator. This will help detect and identify machines that use this 
3915 operator if and when it is ever used. This operator has never been seen 
3916 in the field and the usage model and possible side-effects of the drastic 
3917 runtime action of a full table removal are unknown.
3918
3919 Reverted the use of #pragma push/pop which was introduced in the 20140214 
3920 release. It appears that push and pop are not implemented by enough 
3921 compilers to make the use of this feature feasible for ACPICA at this 
3922 time. However, these operators may be deployed in a future ACPICA 
3923 release.
3924
3925 Added the missing EXPORT_SYMBOL macros for the install and remove SCI 
3926 handler interfaces.
3927
3928 Source code generation:
3929 1) Disabled the use of the "strchr" macro for the gcc-specific 
3930 generation. For some versions of gcc, this macro can periodically expose 
3931 a compiler bug which in turn causes compile-time error(s).
3932 2) Added support for PPC64 compilation. Colin Ian King.
3933
3934 Example Code and Data Size: These are the sizes for the OS-independent 
3935 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3936 debug version of the code includes the debug output trace mechanism and 
3937 has a much larger code and data size.
3938
3939   Current Release:
3940     Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3941     Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3942   Previous Release:
3943     Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3944     Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3945
3946
3947 2) iASL Compiler/Disassembler and Tools:
3948
3949 Disassembler: Added several new features to improve the readability of 
3950 the resulting ASL code. Extra information is emitted within comment 
3951 fields in the ASL code:
3952 1) Known _HID/_CID values are decoded to descriptive text.
3953 2) Standard values for the Notify() operator are decoded to descriptive 
3954 text.
3955 3) Target operands are expanded to full pathnames (in a comment) when 
3956 possible.
3957
3958 Disassembler: Miscellaneous updates for extern() handling:
3959 1) Abort compiler if file specified by -fe option does not exist.
3960 2) Silence unnecessary warnings about argument count mismatches.
3961 3) Update warning messages concerning unresolved method externals.
3962 4) Emit "UnknownObj" keyword for externals whose type cannot be 
3963 determined.
3964
3965 AcpiHelp utility:
3966 1) Added the -a option to display both the ASL syntax and the AML 
3967 encoding for an input ASL operator. This effectively displays all known 
3968 information about an ASL operator with one AcpiHelp invocation.
3969 2) Added substring match support (similar to a wildcard) for the -i 
3970 (_HID/PNP IDs) option.
3971
3972 iASL/Disassembler: Since this tool does not yet support execution on big-
3973 endian machines, added detection of endianness and an error message if 
3974 execution is attempted on big-endian. Support for big-endian within iASL 
3975 is a feature that is on the ACPICA to-be-done list.
3976
3977 AcpiBin utility:
3978 1) Remove option to extract binary files from an acpidump; this function 
3979 is made obsolete by the AcpiXtract utility.
3980 2) General cleanup of open files and allocated buffers.
3981
3982
3983 ----------------------------------------
3984 14 February 2014. Summary of changes for version 20140214:
3985
3986 1) ACPICA kernel-resident subsystem:
3987
3988 Implemented a new mechanism to proactively prevent problems with ill-
3989 behaved reentrant control methods that create named ACPI objects. This 
3990 behavior is illegal as per the ACPI specification, but is nonetheless 
3991 frequently seen in the field. Previously, this could lead to an 
3992 AE_ALREADY_EXISTS exception if the method was actually entered by more 
3993 than one thread. This new mechanism detects such methods at table load 
3994 time and marks them "serialized" to prevent reentrancy. A new global 
3995 option, AcpiGbl_AutoSerializeMethods, has been added to disable this 
3996 feature if desired. This mechanism and global option obsoletes and 
3997 supersedes the previous AcpiGbl_SerializeAllMethods option.
3998
3999 Added the "Windows 2013" string to the _OSI support. ACPICA will now 
4000 respond TRUE to _OSI queries with this string. It is the stated policy of 
4001 ACPICA to add new strings to the _OSI support as soon as possible after 
4002 they are defined. See the full ACPICA _OSI policy which has been added to 
4003 the utilities/utosi.c file.
4004
4005 Hardened/updated the _PRT return value auto-repair code:
4006 1) Do not abort the repair on a single subpackage failure, continue to 
4007 check all subpackages.
4008 2) Add check for the minimum subpackage length (4).
4009 3) Properly handle extraneous NULL package elements.
4010
4011 Added support to avoid the possibility of infinite loops when traversing 
4012 object linked lists. Never allow an infinite loop, even in the face of 
4013 corrupted object lists.
4014
4015 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 
4016 pack(pop) directives to ensure that the ACPICA headers are independent of 
4017 compiler settings or other host headers.
4018
4019 Example Code and Data Size: These are the sizes for the OS-independent 
4020 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4021 debug version of the code includes the debug output trace mechanism and 
4022 has a much larger code and data size.
4023
4024   Current Release:
4025     Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4026     Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4027   Previous Release:
4028     Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4029     Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4030
4031
4032 2) iASL Compiler/Disassembler and Tools:
4033
4034 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 
4035 first reserved field was incorrectly forced to have a value of zero. This 
4036 change correctly forces the field to have a value of one. ACPICA BZ 1081.
4037
4038 Debugger: Added missing support for the "Extra" and "Data" subobjects 
4039 when displaying object data.
4040
4041 Debugger: Added support to display entire object linked lists when 
4042 displaying object data.
4043
4044 iASL: Removed the obsolete -g option to obtain ACPI tables from the 
4045 Windows registry. This feature has been superseded by the acpidump 
4046 utility. 
4047
4048
4049 ----------------------------------------
4050 14 January 2014. Summary of changes for version 20140114:
4051
4052 1) ACPICA kernel-resident subsystem:
4053
4054 Updated all ACPICA copyrights and signons to 2014. Added the 2014 
4055 copyright to all module headers and signons, including the standard Linux 
4056 header. This affects virtually every file in the ACPICA core subsystem, 
4057 iASL compiler, all ACPICA utilities, and the test suites.
4058
4059 Improved parameter validation for AcpiInstallGpeBlock. Added the 
4060 following checks:
4061 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
4062 2) There is not already a GPE block attached to the device.
4063 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 
4064 device.
4065
4066 Correctly support "references" in the ACPI_OBJECT. This change fixes the 
4067 support to allow references (namespace nodes) to be passed as arguments 
4068 to control methods via the evaluate object interface. This is probably 
4069 most useful for testing purposes, however.
4070
4071 Improved support for 32/64 bit physical addresses in printf()-like 
4072 output. This change improves the support for physical addresses in printf 
4073 debug statements and other output on both 32-bit and 64-bit hosts. It 
4074 consistently outputs the appropriate number of bytes for each host. The 
4075 %p specifier is unsatisfactory since it does not emit uniform output on 
4076 all hosts/clib implementations (on some, leading zeros are not supported, 
4077 leading to difficult-to-read output).
4078
4079 Example Code and Data Size: These are the sizes for the OS-independent 
4080 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4081 debug version of the code includes the debug output trace mechanism and 
4082 has a much larger code and data size.
4083
4084   Current Release:
4085     Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4086     Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4087   Previous Release:
4088     Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4089     Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4090
4091
4092 2) iASL Compiler/Disassembler and Tools:
4093
4094 iASL: Fix a possible fault when using the Connection() operator. Fixes a 
4095 problem if the parent Field definition for the Connection operator refers 
4096 to an operation region that does not exist. ACPICA BZ 1064.
4097
4098 AcpiExec: Load of local test tables is now optional. The utility has the 
4099 capability to load some various tables to test features of ACPICA. 
4100 However, there are enough of them that the output of the utility became 
4101 confusing. With this change, only the required local tables are displayed 
4102 (RSDP, XSDT, etc.) along with the actual tables loaded via the command 
4103 line specification. This makes the default output simler and easier to 
4104 understand. The -el command line option restores the original behavior 
4105 for testing purposes.
4106
4107 AcpiExec: Added support for overlapping operation regions. This change 
4108 expands the simulation of operation regions by supporting regions that 
4109 overlap within the given address space. Supports SystemMemory and 
4110 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4111
4112 AcpiExec: Added region handler support for PCI_Config and EC spaces. This 
4113 allows AcpiExec to simulate these address spaces, similar to the current 
4114 support for SystemMemory and SystemIO.
4115
4116 Debugger: Added new command to read/write/compare all namespace objects. 
4117 The command "test objects" will exercise the entire namespace by writing 
4118 new values to each data object, and ensuring that the write was 
4119 successful. The original value is then restored and verified.
4120
4121 Debugger: Added the "test predefined" command. This change makes this 
4122 test public and puts it under the new "test" command. The test executes 
4123 each and every predefined name within the current namespace.
4124
4125
4126 ----------------------------------------
4127 18 December 2013. Summary of changes for version 20131218:
4128
4129 Global note: The ACPI 5.0A specification was released this month. There 
4130 are no changes needed for ACPICA since this release of ACPI is an 
4131 errata/clarification release. The specification is available at 
4132 acpi.info. 
4133
4134
4135 1) ACPICA kernel-resident subsystem:
4136
4137 Added validation of the XSDT root table if it is present. Some older 
4138 platforms contain an XSDT that is ill-formed or otherwise invalid (such 
4139 as containing some or all entries that are NULL pointers). This change 
4140 adds a new function to validate the XSDT before actually using it. If the 
4141 XSDT is found to be invalid, ACPICA will now automatically fall back to 
4142 using the RSDT instead. Original implementation by Zhao Yakui. Ported to 
4143 ACPICA and enhanced by Lv Zheng and Bob Moore.
4144
4145 Added a runtime option to ignore the XSDT and force the use of the RSDT. 
4146 This change adds a runtime option that will force ACPICA to use the RSDT 
4147 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 
4148 requires that an XSDT be used instead of the RSDT, the XSDT has been 
4149 found to be corrupt or ill-formed on some machines. Lv Zheng.
4150
4151 Added a runtime option to favor 32-bit FADT register addresses over the 
4152 64-bit addresses. This change adds an option to favor 32-bit FADT 
4153 addresses when there is a conflict between the 32-bit and 64-bit versions 
4154 of the same register. The default behavior is to use the 64-bit version 
4155 in accordance with the ACPI specification. This can now be overridden via 
4156 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4157
4158 During the change above, the internal "Convert FADT" and "Verify FADT" 
4159 functions have been merged to simplify the code, making it easier to 
4160 understand and maintain. ACPICA BZ 933.
4161
4162 Improve exception reporting and handling for GPE block installation. 
4163 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 
4164 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4165
4166 Added helper macros to extract bus/segment numbers from the HEST table. 
4167 This change adds two macros to extract the encoded bus and segment 
4168 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 
4169 Betty Dall <betty.dall@hp.com>
4170
4171 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 
4172 by ACPICA. It is not a public macro, so it should have no effect on 
4173 existing OSV code. Lv Zheng.
4174
4175 Example Code and Data Size: These are the sizes for the OS-independent 
4176 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4177 debug version of the code includes the debug output trace mechanism and 
4178 has a much larger code and data size.
4179
4180   Current Release:
4181     Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4182     Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4183   Previous Release:
4184     Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4185     Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4186
4187
4188 2) iASL Compiler/Disassembler and Tools:
4189
4190 Disassembler: Improved pathname support for emitted External() 
4191 statements. This change adds full pathname support for external names 
4192 that have been resolved internally by the inclusion of additional ACPI 
4193 tables (via the iASL -e option). Without this change, the disassembler 
4194 can emit multiple externals for the same object, or it become confused 
4195 when the Scope() operator is used on an external object. Overall, greatly 
4196 improves the ability to actually recompile the emitted ASL code when 
4197 objects a referenced across multiple ACPI tables. Reported by Michael 
4198 Tsirkin (mst@redhat.com).
4199
4200 Tests/ASLTS: Updated functional control suite to execute with no errors. 
4201 David Box. Fixed several errors related to the testing of the interpreter 
4202 slack mode. Lv Zheng.
4203
4204 iASL: Added support to detect names that are declared within a control 
4205 method, but are unused (these are temporary names that are only valid 
4206 during the time the method is executing). A remark is issued for these 
4207 cases. ACPICA BZ 1022.
4208
4209 iASL: Added full support for the DBG2 table. Adds full disassembler, 
4210 table compiler, and template generator support for the DBG2 table (Debug 
4211 Port 2 table).
4212
4213 iASL: Added full support for the PCCT table, update the table definition. 
4214 Updates the PCCT table definition in the actbl3.h header and adds table 
4215 compiler and template generator support.
4216
4217 iASL: Added an option to emit only error messages (no warnings/remarks). 
4218 The -ve option will enable only error messages, warnings and remarks are 
4219 suppressed. This can simplify debugging when only the errors are 
4220 important, such as when an ACPI table is disassembled and there are many 
4221 warnings and remarks -- but only the actual errors are of real interest.
4222
4223 Example ACPICA code (source/tools/examples): Updated the example code so 
4224 that it builds to an actual working program, not just example code. Added 
4225 ACPI tables and execution of an example control method in the DSDT. Added 
4226 makefile support for Unix generation.
4227
4228
4229 ----------------------------------------
4230 15 November 2013. Summary of changes for version 20131115:
4231
4232 This release is available at https://acpica.org/downloads
4233
4234
4235 1) ACPICA kernel-resident subsystem:
4236
4237 Resource Manager: Fixed loop termination for the "get AML length" 
4238 function. The loop previously had an error termination on a NULL resource 
4239 pointer, which can never happen since the loop simply increments a valid 
4240 resource pointer. This fix changes the loop to terminate with an error on 
4241 an invalid end-of-buffer condition. The problem can be seen as an 
4242 infinite loop by callers to AcpiSetCurrentResources with an invalid or 
4243 corrupted resource descriptor, or a resource descriptor that is missing 
4244 an END_TAG descriptor. Reported by Dan Carpenter 
4245 <dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4246
4247 Table unload and ACPICA termination: Delete all attached data objects 
4248 during namespace node deletion. This fix updates namespace node deletion 
4249 to delete the entire list of attached objects (attached via 
4250 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 
4251 1024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4252
4253 ACPICA termination: Added support to delete all objects attached to the 
4254 root namespace node. This fix deletes any and all objects that have been 
4255 attached to the root node via AcpiAttachData. Previously, none of these 
4256 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4257
4258 Debug output: Do not emit the function nesting level for the in-kernel 
4259 build. The nesting level is really only useful during a single-thread 
4260 execution. Therefore, only enable this output for the AcpiExec utility. 
4261 Also, only emit the thread ID when executing under AcpiExec (Context 
4262 switches are still always detected and a message is emitted). ACPICA BZ 
4263 972.
4264
4265 Example Code and Data Size: These are the sizes for the OS-independent 
4266 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4267 debug version of the code includes the debug output trace mechanism and 
4268 has a much larger code and data size.
4269
4270   Current Release:
4271     Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4272     Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4273   Previous Release:
4274     Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4275     Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4276
4277
4278 2) iASL Compiler/Disassembler and Tools:
4279
4280 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 
4281 correct portable POSIX header for terminal control functions.
4282
4283 Disassembler: Fixed control method invocation issues related to the use 
4284 of the CondRefOf() operator. The problem is seen in the disassembly where 
4285 control method invocations may not be disassembled properly if the 
4286 control method name has been used previously as an argument to CondRefOf. 
4287 The solution is to not attempt to emit an external declaration for the 
4288 CondRefOf target (it is not necessary in the first place). This prevents 
4289 disassembler object type confusion. ACPICA BZ 988.
4290
4291 Unix Makefiles: Added an option to disable compiler optimizations and the 
4292 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 
4293 with optimizations (reportedly, gcc 4.4 for example). This change adds a 
4294 command line option for make (NOOPT) that disables all compiler 
4295 optimizations and the _FORTIFY_SOURCE compiler flag. The default 
4296 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 
4297 1034. Lv Zheng, Bob Moore.
4298
4299 Tests/ASLTS: Added options to specify individual test cases and modes. 
4300 This allows testers running aslts.sh to optionally specify individual 
4301 test modes and test cases. Also added an option to disable the forced 
4302 generation of the ACPICA tools from source if desired. Lv Zheng.
4303
4304 ----------------------------------------
4305 27 September 2013. Summary of changes for version 20130927:
4306
4307 This release is available at https://acpica.org/downloads
4308
4309
4310 1) ACPICA kernel-resident subsystem:
4311
4312 Fixed a problem with store operations to reference objects. This change 
4313 fixes a problem where a Store operation to an ArgX object that contained 
4314
4315 reference to a field object did not complete the automatic dereference 
4316 and 
4317 then write to the actual field object. Instead, the object type of the 
4318 field object was inadvertently changed to match the type of the source 
4319 operand. The new behavior will actually write to the field object (buffer 
4320 field or field unit), thus matching the correct ACPI-defined behavior.
4321
4322 Implemented support to allow the host to redefine individual OSL 
4323 prototypes. This change enables the host to redefine OSL prototypes found 
4324 in the acpiosxf.h file. This allows the host to implement OSL interfaces 
4325 with a macro or inlined function. Further, it allows the host to add any 
4326 additional required modifiers such as __iomem, __init, __exit, etc., as 
4327 necessary on a per-interface basis. Enables maximum flexibility for the 
4328 OSL interfaces. Lv Zheng.
4329
4330 Hardcoded the access width for the FADT-defined reset register. The ACPI 
4331 specification requires the reset register width to be 8 bits. ACPICA now 
4332 hardcodes the width to 8 and ignores the FADT width value. This provides 
4333 compatibility with other ACPI implementations that have allowed BIOS code 
4334 with bad register width values to go unnoticed. Matthew Garett, Bob 
4335 Moore, 
4336 Lv Zheng.
4337
4338 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 
4339 used 
4340 in the OSL header (acpiosxf). The change modifies the position of this 
4341 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 
4342 build issues if the OSL defines the implementation of the interface to be 
4343 an inline stub function. Lv Zheng.
4344
4345 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 
4346 initialization interfaces. This change adds a new macro for the main init 
4347 and terminate external interfaces in order to support hosts that require 
4348 additional or different processing for these functions. Changed from 
4349 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 
4350 Zheng, Bob Moore.
4351
4352 Cleaned up the memory allocation macros for configurability. In the 
4353 common 
4354 case, the ACPI_ALLOCATE and related macros now resolve directly to their 
4355 respective AcpiOs* OSL interfaces. Two options:
4356 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 
4357 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
4358 2) For AcpiExec (and for debugging), the macros can optionally be 
4359 resolved 
4360 to the local ACPICA interfaces that track each allocation (local tracking 
4361 is used to immediately detect memory leaks).
4362 Lv Zheng.
4363
4364 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 
4365 to predefine this macro to either TRUE or FALSE during the system build.
4366
4367 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4368
4369 Example Code and Data Size: These are the sizes for the OS-independent 
4370 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4371 debug version of the code includes the debug output trace mechanism and 
4372 has a much larger code and data size.
4373
4374   Current Release:
4375     Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4376     Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4377   Previous Release:
4378     Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4379     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4380
4381
4382 2) iASL Compiler/Disassembler and Tools:
4383
4384 iASL: Implemented wildcard support for the -e option. This simplifies use 
4385 when there are many SSDTs that must be included to resolve external 
4386 method 
4387 declarations. ACPICA BZ 1041. Example:
4388     iasl -e ssdt*.dat -d dsdt.dat
4389
4390 AcpiExec: Add history/line-editing for Unix/Linux systems. This change 
4391 adds a portable module that implements full history and limited line 
4392 editing for Unix and Linux systems. It does not use readline() due to 
4393 portability issues. Instead it uses the POSIX termio interface to put the 
4394 terminal in raw input mode so that the various special keys can be 
4395 trapped 
4396 (such as up/down-arrow for history support and left/right-arrow for line 
4397 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4398
4399 AcpiXtract: Add support to handle (ignore) "empty" lines containing only 
4400 one or more spaces. This provides compatible with early or different 
4401 versions of the AcpiDump utility. ACPICA BZ 1044.
4402
4403 AcpiDump: Do not ignore tables that contain only an ACPI table header. 
4404 Apparently, some BIOSs create SSDTs that contain an ACPI table header but 
4405 no other data. This change adds support to dump these tables. Any tables 
4406 shorter than the length of an ACPI table header remain in error (an error 
4407 message is emitted). Reported by Yi Li.
4408
4409 Debugger: Echo actual command along with the "unknown command" message.
4410
4411 ----------------------------------------
4412 23 August 2013. Summary of changes for version 20130823:
4413
4414 1) ACPICA kernel-resident subsystem:
4415
4416 Implemented support for host-installed System Control Interrupt (SCI) 
4417 handlers. Certain ACPI functionality requires the host to handle raw 
4418 SCIs. For example, the "SCI Doorbell" that is defined for memory power 
4419 state support requires the host device driver to handle SCIs to examine 
4420 if the doorbell has been activated. Multiple SCI handlers can be 
4421 installed to allow for future expansion. New external interfaces are 
4422 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 
4423 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4424
4425 Operation region support: Never locally free the handler "context" 
4426 pointer. This change removes some dangerous code that attempts to free 
4427 the handler context pointer in some (rare) circumstances. The owner of 
4428 the handler owns this pointer and the ACPICA code should never touch it. 
4429 Although not seen to be an issue in any kernel, it did show up as a 
4430 problem (fault) under AcpiExec. Also, set the internal storage field for 
4431 the context pointer to zero when the region is deactivated, simply for 
4432 sanity. David Box. ACPICA BZ 1039.
4433
4434 AcpiRead: On error, do not modify the return value target location. If an 
4435 error happens in the middle of a split 32/32 64-bit I/O operation, do not 
4436 modify the target of the return value pointer. Makes the code consistent 
4437 with the rest of ACPICA. Bjorn Helgaas.
4438
4439 Example Code and Data Size: These are the sizes for the OS-independent 
4440 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4441 debug version of the code includes the debug output trace mechanism and 
4442 has a much larger code and data size.
4443
4444   Current Release:
4445     Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4446     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4447   Previous Release:
4448     Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4449     Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4450
4451
4452 2) iASL Compiler/Disassembler and Tools:
4453
4454 AcpiDump: Implemented several new features and fixed some problems:
4455 1) Added support to dump the RSDP, RSDT, and XSDT tables.
4456 2) Added support for multiple table instances (SSDT, UEFI).
4457 3) Added option to dump "customized" (overridden) tables (-c).
4458 4) Fixed a problem where some table filenames were improperly 
4459 constructed.
4460 5) Improved some error messages, removed some unnecessary messages.
4461
4462 iASL: Implemented additional support for disassembly of ACPI tables that 
4463 contain invocations of external control methods. The -fe<file> option 
4464 allows the import of a file that specifies the external methods along 
4465 with the required number of arguments for each -- allowing for the 
4466 correct disassembly of the table. This is a workaround for a limitation 
4467 of AML code where the disassembler often cannot determine the number of 
4468 arguments required for an external control method and generates incorrect 
4469 ASL code. See the iASL reference for details. ACPICA BZ 1030.
4470
4471 Debugger: Implemented a new command (paths) that displays the full 
4472 pathnames (namepaths) and object types of all objects in the namespace. 
4473 This is an alternative to the namespace command.
4474
4475 Debugger: Implemented a new command (sci) that invokes the SCI dispatch 
4476 mechanism and any installed handlers.
4477
4478 iASL: Fixed a possible segfault for "too many parent prefixes" condition. 
4479 This can occur if there are too many parent prefixes in a namepath (for 
4480 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4481
4482 Application OSLs: Set the return value for the PCI read functions. These 
4483 functions simply return AE_OK, but should set the return value to zero 
4484 also. This change implements this. ACPICA BZ 1038.
4485
4486 Debugger: Prevent possible command line buffer overflow. Increase the 
4487 size of a couple of the debugger line buffers, and ensure that overflow 
4488 cannot happen. ACPICA BZ 1037.
4489
4490 iASL: Changed to abort immediately on serious errors during the parsing 
4491 phase. Due to the nature of ASL, there is no point in attempting to 
4492 compile these types of errors, and they typically end up causing a 
4493 cascade of hundreds of errors which obscure the original problem.
4494
4495 ----------------------------------------
4496 25 July 2013. Summary of changes for version 20130725:
4497
4498 1) ACPICA kernel-resident subsystem:
4499
4500 Fixed a problem with the DerefOf operator where references to FieldUnits 
4501 and BufferFields incorrectly returned the parent object, not the actual 
4502 value of the object. After this change, a dereference of a FieldUnit 
4503 reference results in a read operation on the field to get the value, and 
4504 likewise, the appropriate BufferField value is extracted from the target 
4505 buffer.
4506
4507 Fixed a problem where the _WAK method could cause a fault under these 
4508 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 
4509 method returned no value. The problem is rarely seen because most kernels 
4510 run ACPICA in slack mode.
4511
4512 For the DerefOf operator, a fatal error now results if an attempt is made 
4513 to dereference a reference (created by the Index operator) to a NULL 
4514 package element. Provides compatibility with other ACPI implementations, 
4515 and this behavior will be added to a future version of the ACPI 
4516 specification.
4517
4518 The ACPI Power Management Timer (defined in the FADT) is now optional. 
4519 This provides compatibility with other ACPI implementations and will 
4520 appear in the next version of the ACPI specification. If there is no PM 
4521 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 
4522 zero in the FADT indicates no PM timer.
4523
4524 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 
4525 allows the host to globally enable/disable all vendor strings, all 
4526 feature strings, or both. Intended to be primarily used for debugging 
4527 purposes only. Lv Zheng.
4528
4529 Expose the collected _OSI data to the host via a global variable. This 
4530 data tracks the highest level vendor ID that has been invoked by the BIOS 
4531 so that the host (and potentially ACPICA itself) can change behaviors 
4532 based upon the age of the BIOS.
4533
4534 Example Code and Data Size: These are the sizes for the OS-independent 
4535 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4536 debug version of the code includes the debug output trace mechanism and 
4537 has a much larger code and data size.
4538
4539   Current Release:
4540     Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4541     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4542   Previous Release:
4543     Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4544     Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4545
4546
4547 2) iASL Compiler/Disassembler and Tools:
4548
4549 iASL: Created the following enhancements for the -so option (create 
4550 offset table):
4551 1)Add offsets for the last nameseg in each namepath for every supported 
4552 object type
4553 2)Add support for Processor, Device, Thermal Zone, and Scope objects
4554 3)Add the actual AML opcode for the parent object of every supported 
4555 object type
4556 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4557
4558 Disassembler: Emit all unresolved external symbols in a single block. 
4559 These are external references to control methods that could not be 
4560 resolved, and thus, the disassembler had to make a guess at the number of 
4561 arguments to parse.
4562
4563 iASL: The argument to the -T option (create table template) is now 
4564 optional. If not specified, the default table is a DSDT, typically the 
4565 most common case.
4566
4567 ----------------------------------------
4568 26 June 2013. Summary of changes for version 20130626:
4569
4570 1) ACPICA kernel-resident subsystem:
4571
4572 Fixed an issue with runtime repair of the _CST object. Null or invalid 
4573 elements were not always removed properly. Lv Zheng. 
4574
4575 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 
4576 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 
4577 the maximum number of GPEs is 1016. Use of multiple GPE block devices 
4578 makes the system-wide number of GPEs essentially unlimited.
4579
4580 Example Code and Data Size: These are the sizes for the OS-independent 
4581 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4582 debug version of the code includes the debug output trace mechanism and 
4583 has a much larger code and data size.
4584
4585   Current Release:
4586     Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4587     Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4588   Previous Release:
4589     Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4590     Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4591
4592
4593 2) iASL Compiler/Disassembler and Tools:
4594
4595 Portable AcpiDump: Implemented full support for the Linux and FreeBSD 
4596 hosts. Now supports Linux, FreeBSD, and Windows.
4597
4598 Disassembler: Added some missing types for the HEST and EINJ tables: "Set 
4599 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4600
4601 iASL/Preprocessor: Implemented full support for nested 
4602 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4603
4604 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 
4605 max. The original purpose of this constraint was to limit the amount of 
4606 debug output. However, the string function in question (UtPrintString) is 
4607 now used for the disassembler also, where 256 bytes is insufficient. 
4608 Reported by RehabMan@GitHub.
4609
4610 iASL/DataTables: Fixed some problems and issues with compilation of DMAR 
4611 tables. ACPICA BZ 999. Lv Zheng.
4612
4613 iASL: Fixed a couple of error exit issues that could result in a "Could 
4614 not delete <file>" message during ASL compilation.
4615
4616 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 
4617 the actual signatures for these tables are "FACP" and "APIC", 
4618 respectively.
4619
4620 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 
4621 tables are allowed to have multiple instances.
4622
4623 ----------------------------------------
4624 17 May 2013. Summary of changes for version 20130517:
4625
4626 1) ACPICA kernel-resident subsystem:
4627
4628 Fixed a regression introduced in version 20130328 for _INI methods. This 
4629 change fixes a problem introduced in 20130328 where _INI methods are no 
4630 longer executed properly because of a memory block that was not 
4631 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 
4632 <tomasz.nowicki@linaro.org>.
4633
4634 Fixed a possible problem with the new extended sleep registers in the 
4635 ACPI 
4636 5.0 FADT. Do not use these registers (even if populated) unless the HW-
4637 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 
4638 1020. Lv Zheng.
4639
4640 Implemented return value repair code for _CST predefined objects: Sort 
4641 the 
4642 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4643
4644 Implemented a debug-only option to disable loading of SSDTs from the 
4645 RSDT/XSDT during ACPICA initialization. This can be useful for debugging 
4646 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 
4647 acglobal.h - ACPICA BZ 1005. Lv Zheng.
4648
4649 Fixed some issues in the ACPICA initialization and termination code: 
4650 Tomasz Nowicki <tomasz.nowicki@linaro.org>
4651 1) Clear events initialized flag upon event component termination. ACPICA 
4652 BZ 1013.
4653 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 
4654 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
4655 4) Clear debug buffer global on termination to prevent possible multiple 
4656 delete. ACPICA BZ 1010.
4657
4658 Standardized all switch() blocks across the entire source base. After 
4659 many 
4660 years, different formatting for switch() had crept in. This change makes 
4661 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4662
4663 Split some files to enhance ACPICA modularity and configurability:
4664 1) Split buffer dump routines into utilities/utbuffer.c
4665 2) Split internal error message routines into utilities/uterror.c
4666 3) Split table print utilities into tables/tbprint.c
4667 4) Split iASL command-line option processing into asloptions.c
4668
4669 Makefile enhancements:
4670 1) Support for all new files above.
4671 2) Abort make on errors from any subcomponent. Chao Guan.
4672 3) Add build support for Apple Mac OS X. Liang Qi.
4673
4674 Example Code and Data Size: These are the sizes for the OS-independent 
4675 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4676 debug version of the code includes the debug output trace mechanism and 
4677 has a much larger code and data size.
4678
4679   Current Release:
4680     Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4681     Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4682   Previous Release:
4683     Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4684     Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4685
4686
4687 2) iASL Compiler/Disassembler and Tools:
4688
4689 New utility: Implemented an easily portable version of the acpidump 
4690 utility to extract ACPI tables from the system (or a file) in an ASCII 
4691 hex 
4692 dump format. The top-level code implements the various command line 
4693 options, file I/O, and table dump routines. To port to a new host, only 
4694 three functions need to be implemented to get tables -- since this 
4695 functionality is OS-dependent. See the tools/acpidump/apmain.c module and 
4696 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
4697 1) The Windows version obtains the ACPI tables from the Registry.
4698 2) The Linux version is under development.
4699 3) Other hosts - If an OS-dependent module is submitted, it will be 
4700 distributed with ACPICA.
4701
4702 iASL: Fixed a regression for -D preprocessor option (define symbol). A 
4703 restructuring/change to the initialization sequence caused this option to 
4704 no longer work properly.
4705
4706 iASL: Implemented a mechanism to disable specific warnings and remarks. 
4707 Adds a new command line option, "-vw <messageid> as well as "#pragma 
4708 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4709
4710 iASL: Fix for too-strict package object validation. The package object 
4711 validation for return values from the predefined names is a bit too 
4712 strict, it does not allow names references within the package (which will 
4713 be resolved at runtime.) These types of references cannot be validated at 
4714 compile time. This change ignores named references within package objects 
4715 for names that return or define static packages.
4716
4717 Debugger: Fixed the 80-character command line limitation for the History 
4718 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4719
4720 iASL: Added control method and package support for the -so option 
4721 (generates AML offset table for BIOS support.)
4722
4723 iASL: issue a remark if a non-serialized method creates named objects. If 
4724 a thread blocks within the method for any reason, and another thread 
4725 enters the method, the method will fail because an attempt will be made 
4726 to 
4727 create the same (named) object twice. In this case, issue a remark that 
4728 the method should be marked serialized. NOTE: may become a warning later. 
4729 ACPICA BZ 909.
4730
4731 ----------------------------------------
4732 18 April 2013. Summary of changes for version 20130418:
4733
4734 1) ACPICA kernel-resident subsystem:
4735
4736 Fixed a possible buffer overrun during some rare but specific field unit 
4737 read operations. This overrun can only happen if the DSDT version is 1 -- 
4738 meaning that all AML integers are 32 bits -- and the field length is 
4739 between 33 and 55 bits long. During the read, an internal buffer object 
4740 is 
4741 created for the field unit because the field is larger than an integer 
4742 (32 
4743 bits). However, in this case, the buffer will be incorrectly written 
4744 beyond the end because the buffer length is less than the internal 
4745 minimum 
4746 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 
4747 long, but a full 8 bytes will be written.
4748
4749 Updated the Embedded Controller "orphan" _REG method support. This refers 
4750 to _REG methods under the EC device that have no corresponding operation 
4751 region. This is allowed by the ACPI specification. This update removes a 
4752 dependency on the existence an ECDT table. It will execute an orphan _REG 
4753 method as long as the operation region handler for the EC is installed at 
4754 the EC device node and not the namespace root. Rui Zhang (original 
4755 update), Bob Moore (update/integrate).
4756
4757 Implemented run-time argument typechecking for all predefined ACPI names 
4758 (_STA, _BIF, etc.) This change performs object typechecking on all 
4759 incoming arguments for all predefined names executed via 
4760 AcpiEvaluateObject. This ensures that ACPI-related device drivers are 
4761 passing correct object types as well as the correct number of arguments 
4762 (therefore identifying any issues immediately). Also, the ASL/namespace 
4763 definition of the predefined name is checked against the ACPI 
4764 specification for the proper argument count. Adds one new file, 
4765 nsarguments.c
4766
4767 Changed an exception code for the ASL UnLoad() operator. Changed the 
4768 exception code for the case where the input DdbHandle is invalid, from 
4769 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4770
4771 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 
4772 global makefile. The use of this flag causes compiler errors on earlier 
4773 versions of GCC, so it has been removed for compatibility.
4774
4775 Miscellaneous cleanup:
4776 1) Removed some unused/obsolete macros
4777 2) Fixed a possible memory leak in the _OSI support
4778 3) Removed an unused variable in the predefined name support
4779 4) Windows OSL: remove obsolete reference to a memory list field
4780
4781 Example Code and Data Size: These are the sizes for the OS-independent 
4782 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4783 debug version of the code includes the debug output trace mechanism and 
4784 has a much larger code and data size.
4785
4786   Current Release:
4787     Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4788     Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4789   Previous Release:
4790     Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4791     Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4792
4793
4794 2) iASL Compiler/Disassembler and Tools:
4795
4796 AcpiExec: Added installation of a handler for the SystemCMOS address 
4797 space. This prevents control method abort if a method accesses this 
4798 space.
4799
4800 AcpiExec: Added support for multiple EC devices, and now install EC 
4801 operation region handler(s) at the actual EC device instead of the 
4802 namespace root. This reflects the typical behavior of host operating 
4803 systems.
4804
4805 AcpiExec: Updated to ensure that all operation region handlers are 
4806 installed before the _REG methods are executed. This prevents a _REG 
4807 method from aborting if it accesses an address space has no handler. 
4808 AcpiExec installs a handler for every possible address space.
4809
4810 Debugger: Enhanced the "handlers" command to display non-root handlers. 
4811 This change enhances the handlers command to display handlers associated 
4812 with individual devices throughout the namespace, in addition to the 
4813 currently supported display of handlers associated with the root 
4814 namespace 
4815 node.
4816
4817 ASL Test Suite: Several test suite errors have been identified and 
4818 resolved, reducing the total error count during execution. Chao Guan.
4819
4820 ----------------------------------------
4821 28 March 2013. Summary of changes for version 20130328:
4822
4823 1) ACPICA kernel-resident subsystem:
4824
4825 Fixed several possible race conditions with the internal object reference 
4826 counting mechanism. Some of the external ACPICA interfaces update object 
4827 reference counts without holding the interpreter or namespace lock. This 
4828 change adds a spinlock to protect reference count updates on the internal 
4829 ACPICA objects. Reported by and with assistance from Andriy Gapon 
4830 (avg@FreeBSD.org).
4831
4832 FADT support: Removed an extraneous warning for very large GPE register 
4833 sets. This change removes a size mismatch warning if the legacy length 
4834 field for a GPE register set is larger than the 64-bit GAS structure can 
4835 accommodate. GPE register sets can be larger than the 255-bit width 
4836 limitation of the GAS structure. Linn Crosetto (linn@hp.com).
4837
4838 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 
4839 return from this interface. Handles a possible timeout case if 
4840 ACPI_WAIT_FOREVER is modified by the host to be a value less than 
4841 "forever". Jung-uk Kim.
4842
4843 Predefined name support: Add allowed/required argument type information 
4844 to 
4845 the master predefined info table. This change adds the infrastructure to 
4846 enable typechecking on incoming arguments for all predefined 
4847 methods/objects. It does not actually contain the code that will fully 
4848 utilize this information, this is still under development. Also condenses 
4849 some duplicate code for the predefined names into a new module, 
4850 utilities/utpredef.c
4851
4852 Example Code and Data Size: These are the sizes for the OS-independent 
4853 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4854 debug version of the code includes the debug output trace mechanism and 
4855 has a much larger code and data size.
4856
4857   Previous Release:
4858     Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4859     Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4860   Current Release:
4861     Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4862     Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4863
4864
4865 2) iASL Compiler/Disassembler and Tools:
4866
4867 iASL: Implemented a new option to simplify the development of ACPI-
4868 related 
4869 BIOS code. Adds support for a new "offset table" output file. The -so 
4870 option will create a C table containing the AML table offsets of various 
4871 named objects in the namespace so that BIOS code can modify them easily 
4872 at 
4873 boot time. This can simplify BIOS runtime code by eliminating expensive 
4874 searches for "magic values", enhancing boot times and adding greater 
4875 reliability. With assistance from Lee Hamel.
4876
4877 iASL: Allow additional predefined names to return zero-length packages. 
4878 Now, all predefined names that are defined by the ACPI specification to 
4879 return a "variable-length package of packages" are allowed to return a 
4880 zero length top-level package. This allows the BIOS to tell the host that 
4881 the requested feature is not supported, and supports existing BIOS/ASL 
4882 code and practices.
4883
4884 iASL: Changed the "result not used" warning to an error. This is the case 
4885 where an ASL operator is effectively a NOOP because the result of the 
4886 operation is not stored anywhere. For example:
4887     Add (4, Local0)
4888 There is no target (missing 3rd argument), nor is the function return 
4889 value used. This is potentially a very serious problem -- since the code 
4890 was probably intended to do something, but for whatever reason, the value 
4891 was not stored. Therefore, this issue has been upgraded from a warning to 
4892 an error.
4893
4894 AcpiHelp: Added allowable/required argument types to the predefined names 
4895 info display. This feature utilizes the recent update to the predefined 
4896 names table (above).
4897
4898 ----------------------------------------
4899 14 February 2013. Summary of changes for version 20130214:
4900
4901 1) ACPICA Kernel-resident Subsystem:
4902
4903 Fixed a possible regression on some hosts: Reinstated the safe return 
4904 macros (return_ACPI_STATUS, etc.) that ensure that the argument is 
4905 evaluated only once. Although these macros are not needed for the ACPICA 
4906 code itself, they are often used by ACPI-related host device drivers 
4907 where 
4908 the safe feature may be necessary.
4909
4910 Fixed several issues related to the ACPI 5.0 reduced hardware support 
4911 (SOC): Now ensure that if the platform declares itself as hardware-
4912 reduced 
4913 via the FADT, the following functions become NOOPs (and always return 
4914 AE_OK) because ACPI is always enabled by definition on these machines:
4915   AcpiEnable
4916   AcpiDisable
4917   AcpiHwGetMode
4918   AcpiHwSetMode
4919
4920 Dynamic Object Repair: Implemented additional runtime repairs for 
4921 predefined name return values. Both of these repairs can simplify code in 
4922 the related device drivers that invoke these methods:
4923 1) For the _STR and _MLS names, automatically repair/convert an ASCII 
4924 string to a Unicode buffer. 
4925 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 
4926
4927 lone end tag descriptor in the following cases: A Return(0) was executed, 
4928 a null buffer was returned, or no object at all was returned (non-slack 
4929 mode only). Adds a new file, nsconvert.c
4930 ACPICA BZ 998. Bob Moore, Lv Zheng.
4931
4932 Resource Manager: Added additional code to prevent possible infinite 
4933 loops 
4934 while traversing corrupted or ill-formed resource template buffers. Check 
4935 for zero-length resource descriptors in all code that loops through 
4936 resource templates (the length field is used to index through the 
4937 template). This change also hardens the external AcpiWalkResources and 
4938 AcpiWalkResourceBuffer interfaces.
4939
4940 Local Cache Manager: Enhanced the main data structure to eliminate an 
4941 unnecessary mechanism to access the next object in the list. Actually 
4942 provides a small performance enhancement for hosts that use the local 
4943 ACPICA cache manager. Jung-uk Kim.
4944
4945 Example Code and Data Size: These are the sizes for the OS-independent 
4946 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4947 debug version of the code includes the debug output trace mechanism and 
4948 has a much larger code and data size.
4949
4950   Previous Release:
4951     Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4952     Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4953   Current Release:
4954     Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4955     Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4956
4957
4958 2) iASL Compiler/Disassembler and Tools:
4959
4960 iASL/Disassembler: Fixed several issues with the definition of the ACPI 
4961 5.0 RASF table (RAS Feature Table). This change incorporates late changes 
4962 that were made to the ACPI 5.0 specification.
4963
4964 iASL/Disassembler: Added full support for the following new ACPI tables:
4965   1) The MTMR table (MID Timer Table)
4966   2) The VRTC table (Virtual Real Time Clock Table).
4967 Includes header file, disassembler, table compiler, and template support 
4968 for both tables.
4969
4970 iASL: Implemented compile-time validation of package objects returned by 
4971 predefined names. This new feature validates static package objects 
4972 returned by the various predefined names defined to return packages. Both 
4973 object types and package lengths are validated, for both parent packages 
4974 and sub-packages, if any. The code is similar in structure and behavior 
4975 to 
4976 the runtime repair mechanism within the AML interpreter and uses the 
4977 existing predefined name information table. Adds a new file, aslprepkg.c. 
4978 ACPICA BZ 938.
4979
4980 iASL: Implemented auto-detection of binary ACPI tables for disassembly. 
4981 This feature detects a binary file with a valid ACPI table header and 
4982 invokes the disassembler automatically. Eliminates the need to 
4983 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4984
4985 iASL/Disassembler: Added several warnings for the case where there are 
4986 unresolved control methods during the disassembly. This can potentially 
4987 cause errors when the output file is compiled, because the disassembler 
4988 assumes zero method arguments in these cases (it cannot determine the 
4989 actual number of arguments without resolution/definition of the method).
4990
4991 Debugger: Added support to display all resources with a single command. 
4992 Invocation of the resources command with no arguments will now display 
4993 all 
4994 resources within the current namespace.
4995
4996 AcpiHelp: Added descriptive text for each ACPICA exception code displayed 
4997 via the -e option.
4998
4999 ----------------------------------------
5000 17 January 2013. Summary of changes for version 20130117:
5001
5002 1) ACPICA Kernel-resident Subsystem:
5003
5004 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 
5005 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 
5006 objects to return a package containing one integer, most BIOS code 
5007 returns 
5008 two integers and the previous code reflects that. However, we also need 
5009 to 
5010 support BIOS code that actually implements to the ACPI spec, and this 
5011 change reflects this.
5012
5013 Fixed two issues with the ACPI_DEBUG_PRINT macros:
5014 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 
5015 C compilers that require this support.
5016 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 
5017 ACPI_DEBUG is already used by many of the various hosts.
5018
5019 Updated all ACPICA copyrights and signons to 2013. Added the 2013 
5020 copyright to all module headers and signons, including the standard Linux 
5021 header. This affects virtually every file in the ACPICA core subsystem, 
5022 iASL compiler, all ACPICA utilities, and the test suites.
5023
5024 Example Code and Data Size: These are the sizes for the OS-independent 
5025 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5026 debug version of the code includes the debug output trace mechanism and 
5027 has a much larger code and data size.
5028
5029   Previous Release:
5030     Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5031     Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5032   Current Release:
5033     Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5034     Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5035
5036
5037 2) iASL Compiler/Disassembler and Tools:
5038
5039 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 
5040 prevent a possible fault on some hosts. Some C libraries modify the arg 
5041 pointer parameter to vfprintf making it difficult to call it twice in the 
5042 AcpiOsVprintf function. Use a local buffer to workaround this issue. This 
5043 does not affect the Windows OSL since the Win C library does not modify 
5044 the arg pointer. Chao Guan, Bob Moore.
5045
5046 iASL: Fixed a possible infinite loop when the maximum error count is 
5047 reached. If an output file other than the .AML file is specified (such as 
5048 a listing file), and the maximum number of errors is reached, do not 
5049 attempt to flush data to the output file(s) as the compiler is aborting. 
5050 This can cause an infinite loop as the max error count code essentially 
5051 keeps calling itself.
5052
5053 iASL/Disassembler: Added an option (-in) to ignore NOOP 
5054 opcodes/operators. 
5055 Implemented for both the compiler and the disassembler. Often, the NOOP 
5056 opcode is used as padding for packages that are changed dynamically by 
5057 the 
5058 BIOS. When disassembled and recompiled, these NOOPs will cause syntax 
5059 errors. This option causes the disassembler to ignore all NOOP opcodes 
5060 (0xA3), and it also causes the compiler to ignore all ASL source code 
5061 NOOP 
5062 statements as well.
5063
5064 Debugger: Enhanced the Sleep command to execute all sleep states. This 
5065 change allows Sleep to be invoked with no arguments and causes the 
5066 debugger to execute all of the sleep states, 0-5, automatically.
5067
5068 ----------------------------------------
5069 20 December 2012. Summary of changes for version 20121220:
5070
5071 1) ACPICA Kernel-resident Subsystem:
5072
5073 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 
5074 alternate entry point for AcpiWalkResources and improves the usability of 
5075 the resource manager by accepting as input a buffer containing the output 
5076 of either a _CRS, _PRS, or _AEI method. The key functionality is that the 
5077 input buffer is not deleted by this interface so that it can be used by 
5078 the host later. See the ACPICA reference for details.
5079
5080 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 
5081 (DSDT version < 2). The constant will be truncated and this warning 
5082 reflects that behavior.
5083
5084 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 
5085 ExtendedInterrupt, and GpioInt descriptors. This change adds support to 
5086 both get and set the new wake bit in these descriptors, separately from 
5087 the existing share bit. Reported by Aaron Lu.
5088
5089 Interpreter: Fix Store() when an implicit conversion is not possible. For 
5090 example, in the cases such as a store of a string to an existing package 
5091 object, implement the store as a CopyObject(). This is a small departure 
5092 from the ACPI specification which states that the control method should 
5093 be 
5094 aborted in this case. However, the ASLTS suite depends on this behavior.
5095
5096 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 
5097 macros: check if debug output is currently enabled as soon as possible to 
5098 minimize performance impact if debug is in fact not enabled.
5099
5100 Source code restructuring: Cleanup to improve modularity. The following 
5101 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 
5102 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 
5103 Associated makefiles and project files have been updated.
5104
5105 Changed an exception code for LoadTable operator. For the case where one 
5106 of the input strings is too long, change the returned exception code from 
5107 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5108
5109 Fixed a possible memory leak in dispatcher error path. On error, delete 
5110 the mutex object created during method mutex creation. Reported by 
5111 tim.gardner@canonical.com.
5112
5113 Example Code and Data Size: These are the sizes for the OS-independent 
5114 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5115 debug version of the code includes the debug output trace mechanism and 
5116 has a much larger code and data size.
5117
5118   Previous Release:
5119     Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5120     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5121   Current Release:
5122     Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5123     Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5124
5125
5126 2) iASL Compiler/Disassembler and Tools:
5127
5128 iASL: Disallow a method call as argument to the ObjectType ASL operator. 
5129 This change tracks an errata to the ACPI 5.0 document. The AML grammar 
5130 will not allow the interpreter to differentiate between a method and a 
5131 method invocation when these are used as an argument to the ObjectType 
5132 operator. The ACPI specification change is to disallow a method 
5133 invocation 
5134 (UserTerm) for the ObjectType operator.
5135
5136 Finish support for the TPM2 and CSRT tables in the headers, table 
5137 compiler, and disassembler.
5138
5139 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 
5140 always expires immediately if the semaphore is not available. The 
5141 original 
5142 code was using a relative-time timeout, but sem_timedwait requires the 
5143 use 
5144 of an absolute time.
5145
5146 iASL: Added a remark if the Timer() operator is used within a 32-bit 
5147 table. This operator returns a 64-bit time value that will be truncated 
5148 within a 32-bit table.
5149
5150 iASL Source code restructuring: Cleanup to improve modularity. The 
5151 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 
5152 aslmethod.c, and aslfileio.c. Associated makefiles and project files have 
5153 been updated.
5154
5155
5156 ----------------------------------------
5157 14 November 2012. Summary of changes for version 20121114:
5158
5159 1) ACPICA Kernel-resident Subsystem:
5160
5161 Implemented a performance enhancement for ACPI/AML Package objects. This 
5162 change greatly increases the performance of Package objects within the 
5163 interpreter. It changes the processing of reference counts for packages 
5164 by 
5165 optimizing for the most common case where the package sub-objects are 
5166 either Integers, Strings, or Buffers. Increases the overall performance 
5167 of 
5168 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 
5169 2X.) 
5170 Chao Guan. ACPICA BZ 943.
5171
5172 Implemented and deployed common macros to extract flag bits from resource 
5173 descriptors. Improves readability and maintainability of the code. Fixes 
5174
5175 problem with the UART serial bus descriptor for the number of data bits 
5176 flags (was incorrectly 2 bits, should be 3).
5177
5178 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 
5179 of the macros and changed the SETx macros to the style of (destination, 
5180 source). Also added ACPI_CASTx companion macros. Lv Zheng.
5181
5182 Example Code and Data Size: These are the sizes for the OS-independent 
5183 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5184 debug version of the code includes the debug output trace mechanism and 
5185 has a much larger code and data size.
5186
5187   Previous Release:
5188     Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5189     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5190   Current Release:
5191     Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5192     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5193
5194
5195 2) iASL Compiler/Disassembler and Tools:
5196
5197 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 
5198 adds the ShareAndWake and ExclusiveAndWake flags which were added to the 
5199 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5200
5201 Disassembler: Fixed a problem with external declaration generation. Fixes 
5202 a problem where an incorrect pathname could be generated for an external 
5203 declaration if the original reference to the object includes leading 
5204 carats (^). ACPICA BZ 984.
5205
5206 Debugger: Completed a major update for the Disassemble<method> command. 
5207 This command was out-of-date and did not properly disassemble control 
5208 methods that had any reasonable complexity. This fix brings the command 
5209 up 
5210 to the same level as the rest of the disassembler. Adds one new file, 
5211 dmdeferred.c, which is existing code that is now common with the main 
5212 disassembler and the debugger disassemble command. ACPICA MZ 978.
5213
5214 iASL: Moved the parser entry prototype to avoid a duplicate declaration. 
5215 Newer versions of Bison emit this prototype, so moved the prototype out 
5216 of 
5217 the iASL header to where it is actually used in order to avoid a 
5218 duplicate 
5219 declaration.
5220
5221 iASL/Tools: Standardized use of the stream I/O functions:
5222   1) Ensure check for I/O error after every fopen/fread/fwrite
5223   2) Ensure proper order of size/count arguments for fread/fwrite
5224   3) Use test of (Actual != Requested) after all fwrite, and most fread
5225   4) Standardize I/O error messages
5226 Improves reliability and maintainability of the code. Bob Moore, Lv 
5227 Zheng. 
5228 ACPICA BZ 981.
5229
5230 Disassembler: Prevent duplicate External() statements. During generation 
5231 of external statements, detect similar pathnames that are actually 
5232 duplicates such as these:
5233   External (\ABCD)
5234   External (ABCD)
5235 Remove all leading '\' characters from pathnames during the external 
5236 statement generation so that duplicates will be detected and tossed. 
5237 ACPICA BZ 985.
5238
5239 Tools: Replace low-level I/O with stream I/O functions. Replace 
5240 open/read/write/close with the stream I/O equivalents 
5241 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 
5242 Moore.
5243
5244 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 
5245 name header so that AcpiXtract recognizes the output file/table.
5246
5247 iASL: Remove obsolete -2 option flag. Originally intended to force the 
5248 compiler/disassembler into an ACPI 2.0 mode, this was never implemented 
5249 and the entire concept is now obsolete.
5250
5251 ----------------------------------------
5252 18 October 2012. Summary of changes for version 20121018:
5253
5254
5255 1) ACPICA Kernel-resident Subsystem:
5256
5257 Updated support for the ACPI 5.0 MPST table. Fixes some problems 
5258 introduced by late changes to the table as it was added to the ACPI 5.0 
5259 specification. Includes header, disassembler, and data table compiler 
5260 support as well as a new version of the MPST template.
5261
5262 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 
5263 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 
5264 methods: _HID, _CID, and _UID.
5265
5266 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 
5267 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 
5268 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 
5269 names for their various drivers. Affects the AcpiGetObjectInfo external 
5270 interface, and other internal interfaces as well.
5271
5272 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 
5273 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 
5274 on machines that support non-aligned transfers. Optimizes for this case 
5275 rather than using a strncpy. With assistance from Zheng Lv.
5276
5277 Resource Manager: Small fix for buffer size calculation. Fixed a one byte 
5278 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5279
5280 Added a new debug print message for AML mutex objects that are force-
5281 released. At control method termination, any currently acquired mutex 
5282 objects are force-released. Adds a new debug-only message for each one 
5283 that is released.
5284
5285 Audited/updated all ACPICA return macros and the function debug depth 
5286 counter: 1) Ensure that all functions that use the various TRACE macros 
5287 also use the appropriate ACPICA return macros. 2) Ensure that all normal 
5288 return statements surround the return expression (value) with parens to 
5289 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 
5290 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5291
5292 Global source code changes/maintenance: All extra lines at the start and 
5293 end of each source file have been removed for consistency. Also, within 
5294 comments, all new sentences start with a single space instead of a double 
5295 space, again for consistency across the code base.
5296
5297 Example Code and Data Size: These are the sizes for the OS-independent 
5298 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5299 debug version of the code includes the debug output trace mechanism and 
5300 has a much larger code and data size.
5301
5302   Previous Release:
5303     Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5304     Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5305   Current Release:
5306     Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5307     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5308
5309
5310 2) iASL Compiler/Disassembler and Tools:
5311
5312 AcpiExec: Improved the algorithm used for memory leak/corruption 
5313 detection. Added some intelligence to the code that maintains the global 
5314 list of allocated memory. The list is now ordered by allocated memory 
5315 address, significantly improving performance. When running AcpiExec on 
5316 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 
5317 on the platform and/or the environment. Note, this performance 
5318 enhancement affects the AcpiExec utility only, not the kernel-resident 
5319 ACPICA code.
5320
5321 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 
5322 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 
5323 incorrect table offset reported for invalid opcodes. Report the original 
5324 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5325
5326 Disassembler: Enhanced the -vt option to emit the binary table data in 
5327 hex format to assist with debugging.
5328
5329 Fixed a potential filename buffer overflow in osunixdir.c. Increased the 
5330 size of file structure. Colin Ian King.
5331
5332 ----------------------------------------
5333 13 September 2012. Summary of changes for version 20120913:
5334
5335
5336 1) ACPICA Kernel-resident Subsystem:
5337
5338 ACPI 5.0: Added two new notify types for the Hardware Error Notification 
5339 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 
5340 and 
5341 MCE(6).
5342  
5343 Table Manager: Merged/removed duplicate code in the root table resize 
5344 functions. One function is external, the other is internal. Lv Zheng, 
5345 ACPICA 
5346 BZ 846.
5347
5348 Makefiles: Completely removed the obsolete "Linux" makefiles under 
5349 acpica/generate/linux. These makefiles are obsolete and have been 
5350 replaced 
5351 by 
5352 the generic unix makefiles under acpica/generate/unix.
5353
5354 Makefiles: Ensure that binary files always copied properly. Minor rule 
5355 change 
5356 to ensure that the final binary output files are always copied up to the 
5357 appropriate binary directory (bin32 or bin64.)
5358
5359 Example Code and Data Size: These are the sizes for the OS-independent 
5360 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5361 debug 
5362 version of the code includes the debug output trace mechanism and has a 
5363 much 
5364 larger code and data size.
5365
5366   Previous Release:
5367     Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5368     Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5369   Current Release:
5370     Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5371     Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5372
5373
5374 2) iASL Compiler/Disassembler and Tools:
5375
5376 Disassembler: Fixed a possible fault during the disassembly of resource 
5377 descriptors when a second parse is required because of the invocation of 
5378 external control methods within the table. With assistance from 
5379 adq@lidskialf.net. ACPICA BZ 976.
5380
5381 iASL: Fixed a namepath optimization problem. An error can occur if the 
5382 parse 
5383 node that contains the namepath to be optimized does not have a parent 
5384 node 
5385 that is a named object. This change fixes the problem.
5386
5387 iASL: Fixed a regression where the AML file is not deleted on errors. The 
5388 AML 
5389 output file should be deleted if there are any errors during the 
5390 compiler. 
5391 The 
5392 only exception is if the -f (force output) option is used. ACPICA BZ 974.
5393
5394 iASL: Added a feature to automatically increase internal line buffer 
5395 sizes. 
5396 Via realloc(), automatically increase the internal line buffer sizes as 
5397 necessary to support very long source code lines. The current version of 
5398 the 
5399 preprocessor requires a buffer long enough to contain full source code 
5400 lines. 
5401 This change increases the line buffer(s) if the input lines go beyond the 
5402 current buffer size. This eliminates errors that occurred when a source 
5403 code 
5404 line was longer than the buffer.
5405
5406 iASL: Fixed a problem with constant folding in method declarations. The 
5407 SyncLevel term is a ByteConstExpr, and incorrect code would be generated 
5408 if a 
5409 Type3 opcode was used.
5410
5411 Debugger: Improved command help support. For incorrect argument count, 
5412 display 
5413 full help for the command. For help command itself, allow an argument to 
5414 specify a command.
5415
5416 Test Suites: Several bug fixes for the ASLTS suite reduces the number of 
5417 errors during execution of the suite. Guan Chao.
5418
5419 ----------------------------------------
5420 16 August 2012. Summary of changes for version 20120816:
5421
5422
5423 1) ACPICA Kernel-resident Subsystem:
5424
5425 Removed all use of the deprecated _GTS and _BFS predefined methods. The 
5426 _GTS 
5427 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially 
5428 deprecated and will probably be removed from the ACPI specification. 
5429 Windows 
5430 does not invoke them, and reportedly never will. The final nail in the 
5431 coffin 
5432 is that the ACPI specification states that these methods must be run with 
5433 interrupts off, which is not going to happen in a kernel interpreter. 
5434 Note: 
5435 Linux has removed all use of the methods also. It was discovered that 
5436 invoking these functions caused failures on some machines, probably 
5437 because 
5438 they were never tested since Windows does not call them. Affects two 
5439 external 
5440 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 
5441 ACPICA BZ 969.
5442
5443 Implemented support for complex bit-packed buffers returned from the _PLD 
5444 (Physical Location of Device) predefined method. Adds a new external 
5445 interface, AcpiDecodePldBuffer that parses the buffer into a more usable 
5446
5447 structure. Note: C Bitfields cannot be used for this type of predefined 
5448 structure since the memory layout of individual bitfields is not defined 
5449 by 
5450 the C language. In addition, there are endian concerns where a compiler 
5451 will 
5452 change the bitfield ordering based on the machine type. The new ACPICA 
5453 interface eliminates these issues, and should be called after _PLD is 
5454 executed. ACPICA BZ 954.
5455
5456 Implemented a change to allow a scope change to root (via "Scope (\)") 
5457 during 
5458 execution of module-level ASL code (code that is executed at table load 
5459 time.) Lin Ming.
5460
5461 Added the Windows8/Server2012 string for the _OSI method. This change 
5462 adds 
5463
5464 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 
5465 2012.
5466
5467 Added header support for the new ACPI tables DBG2 (Debug Port Table Type 
5468 2) 
5469 and CSRT (Core System Resource Table).
5470
5471 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 
5472 names. This simplifies access to the buffers returned by these predefined 
5473 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5474
5475 GPE support: Removed an extraneous parameter from the various low-level 
5476 internal GPE functions. Tang Feng.
5477
5478 Removed the linux makefiles from the unix packages. The generate/linux 
5479 makefiles are obsolete and have been removed from the unix tarball 
5480 release 
5481 packages. The replacement makefiles are under generate/unix, and there is 
5482
5483 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5484
5485 Updates for Unix makefiles:
5486 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
5487 2) Update linker flags (move to end of command line) for AcpiExec 
5488 utility. 
5489 Guan Chao.
5490
5491 Split ACPICA initialization functions to new file, utxfinit.c. Split from 
5492 utxface.c to improve modularity and reduce file size.
5493
5494 Example Code and Data Size: These are the sizes for the OS-independent 
5495 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5496 debug version of the code includes the debug output trace mechanism and 
5497 has a 
5498 much larger code and data size.
5499
5500   Previous Release:
5501     Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5502     Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5503   Current Release:
5504     Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5505     Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5506
5507
5508 2) iASL Compiler/Disassembler and Tools:
5509
5510 iASL: Fixed a problem with constant folding for fixed-length constant 
5511 expressions. The constant-folding code was not being invoked for constant 
5512 expressions that allow the use of type 3/4/5 opcodes to generate 
5513 constants 
5514 for expressions such as ByteConstExpr, WordConstExpr, etc. This could 
5515 result 
5516 in the generation of invalid AML bytecode. ACPICA BZ 970.
5517
5518 iASL: Fixed a generation issue on newer versions of Bison. Newer versions 
5519 apparently automatically emit some of the necessary externals. This 
5520 change 
5521 handles these versions in order to eliminate generation warnings.
5522
5523 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5524
5525 Disassembler: Add support to decode _PLD buffers. The decoded buffer 
5526 appears 
5527 within comments in the output file.
5528
5529 Debugger: Fixed a regression with the "Threads" command where 
5530 AE_BAD_PARAMETER was always returned.
5531
5532 ----------------------------------------
5533 11 July 2012. Summary of changes for version 20120711:
5534
5535 1) ACPICA Kernel-resident Subsystem:
5536
5537 Fixed a possible fault in the return package object repair code. Fixes a 
5538 problem that can occur when a lone package object is wrapped with an 
5539 outer 
5540 package object in order to force conformance to the ACPI specification. 
5541 Can 
5542 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 
5543 _DLM, 
5544 _CSD, _PSD, _TSD.
5545
5546 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 
5547 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 
5548 ARB_DIS bit must be implemented in the host-dependent C3 processor power 
5549 state 
5550 support. Note, ARB_DIS is obsolete and only applies to older chipsets, 
5551 both 
5552 Intel and other vendors. (for Intel: ICH4-M and earlier)
5553
5554 This change removes the code to disable/enable bus master arbitration 
5555 during 
5556 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 
5557 causes 
5558 resume problems on some machines. The change has been in use for over 
5559 seven 
5560 years within Linux.
5561
5562 Implemented two new external interfaces to support host-directed dynamic 
5563 ACPI 
5564 table load and unload. They are intended to simplify the host 
5565 implementation 
5566 of hot-plug support:
5567   AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5568   AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 
5569 table.
5570 See the ACPICA reference for additional details. Adds one new file, 
5571 components/tables/tbxfload.c
5572
5573 Implemented and deployed two new interfaces for errors and warnings that 
5574 are 
5575 known to be caused by BIOS/firmware issues:
5576   AcpiBiosError: Prints "ACPI Firmware Error" message.
5577   AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5578 Deployed these new interfaces in the ACPICA Table Manager code for ACPI 
5579 table 
5580 and FADT errors. Additional deployment to be completed as appropriate in 
5581 the 
5582 future. The associated conditional macros are ACPI_BIOS_ERROR and 
5583 ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 
5584 ACPICA 
5585 BZ 
5586 843.
5587
5588 Implicit notify support: ensure that no memory allocation occurs within a 
5589 critical region. This fix moves a memory allocation outside of the time 
5590 that a 
5591 spinlock is held. Fixes issues on systems that do not allow this 
5592 behavior. 
5593 Jung-uk Kim.
5594
5595 Split exception code utilities and tables into a new file, 
5596 utilities/utexcep.c
5597
5598 Example Code and Data Size: These are the sizes for the OS-independent 
5599 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5600 debug 
5601 version of the code includes the debug output trace mechanism and has a 
5602 much 
5603 larger code and data size.
5604
5605   Previous Release:
5606     Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5607     Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5608   Current Release:
5609     Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5610     Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5611
5612
5613 2) iASL Compiler/Disassembler and Tools:
5614
5615 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 
5616 of 
5617 0. Jung-uk Kim.
5618
5619 Debugger: Enhanced the "tables" command to emit additional information 
5620 about 
5621 the current set of ACPI tables, including the owner ID and flags decode.
5622
5623 Debugger: Reimplemented the "unload" command to use the new 
5624 AcpiUnloadParentTable external interface. This command was disable 
5625 previously 
5626 due to need for an unload interface.
5627
5628 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 
5629 option 
5630 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5631
5632 ----------------------------------------
5633 20 June 2012. Summary of changes for version 20120620:
5634
5635
5636 1) ACPICA Kernel-resident Subsystem:
5637
5638 Implemented support to expand the "implicit notify" feature to allow 
5639 multiple 
5640 devices to be notified by a single GPE. This feature automatically 
5641 generates a 
5642 runtime device notification in the absence of a BIOS-provided GPE control 
5643 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 
5644 notify is 
5645 provided by ACPICA for Windows compatibility, and is a workaround for 
5646 BIOS 
5647 AML 
5648 code errors. See the description of the AcpiSetupGpeForWake interface in 
5649 the 
5650 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5651
5652 Changed some comments and internal function names to simplify and ensure 
5653 correctness of the Linux code translation. No functional changes.
5654
5655 Example Code and Data Size: These are the sizes for the OS-independent 
5656 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5657 debug 
5658 version of the code includes the debug output trace mechanism and has a 
5659 much 
5660 larger code and data size.
5661
5662   Previous Release:
5663     Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5664     Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5665   Current Release:
5666     Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5667     Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5668
5669
5670 2) iASL Compiler/Disassembler and Tools:
5671
5672 Disassembler: Added support to emit short, commented descriptions for the 
5673 ACPI 
5674 predefined names in order to improve the readability of the disassembled 
5675 output. ACPICA BZ 959. Changes include:
5676   1) Emit descriptions for all standard predefined names (_INI, _STA, 
5677 _PRW, 
5678 etc.)
5679   2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5680   3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 
5681 etc.)
5682
5683 AcpiSrc: Fixed several long-standing Linux code translation issues. 
5684 Argument 
5685 descriptions in function headers are now translated properly to lower 
5686 case 
5687 and 
5688 underscores. ACPICA BZ 961. Also fixes translation problems such as 
5689 these: 
5690 (old -> new)
5691   i_aSL -> iASL
5692   00-7_f -> 00-7F
5693   16_k -> 16K
5694   local_fADT -> local_FADT
5695   execute_oSI -> execute_OSI
5696
5697 iASL: Fixed a problem where null bytes were inadvertently emitted into 
5698 some 
5699 listing files.
5700
5701 iASL: Added the existing debug options to the standard help screen. There 
5702 are 
5703 no longer two different help screens. ACPICA BZ 957.
5704
5705 AcpiHelp: Fixed some typos in the various predefined name descriptions. 
5706 Also 
5707 expand some of the descriptions where appropriate.
5708
5709 iASL: Fixed the -ot option (display compile times/statistics). Was not 
5710 working 
5711 properly for standard output; only worked for the debug file case.
5712
5713 ----------------------------------------
5714 18 May 2012. Summary of changes for version 20120518:
5715
5716
5717 1) ACPICA Core Subsystem:
5718
5719 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 
5720 defined 
5721 to block until asynchronous events such as notifies and GPEs have 
5722 completed. 
5723 Within ACPICA, it is only called before a notify or GPE handler is 
5724 removed/uninstalled. It also may be useful for the host OS within related 
5725 drivers such as the Embedded Controller driver. See the ACPICA reference 
5726 for 
5727 additional information. ACPICA BZ 868.
5728
5729 ACPI Tables: Added a new error message for a possible overflow failure 
5730 during 
5731 the conversion of FADT 32-bit legacy register addresses to internal 
5732 common 
5733 64-
5734 bit GAS structure representation. The GAS has a one-byte "bit length" 
5735 field, 
5736 thus limiting the register length to 255 bits. ACPICA BZ 953.
5737
5738 Example Code and Data Size: These are the sizes for the OS-independent 
5739 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5740 debug 
5741 version of the code includes the debug output trace mechanism and has a 
5742 much 
5743 larger code and data size.
5744
5745   Previous Release:
5746     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5747     Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5748   Current Release:
5749     Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5750     Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5751
5752
5753 2) iASL Compiler/Disassembler and Tools:
5754
5755 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 
5756 macro. 
5757 This keyword was added late in the ACPI 5.0 release cycle and was not 
5758 implemented until now.
5759
5760 Disassembler: Added support for Operation Region externals. Adds missing 
5761 support for operation regions that are defined in another table, and 
5762 referenced locally via a Field or BankField ASL operator. Now generates 
5763 the 
5764 correct External statement.
5765
5766 Disassembler: Several additional fixes for the External() statement 
5767 generation 
5768 related to some ASL operators. Also, order the External() statements 
5769 alphabetically in the disassembler output. Fixes the External() 
5770 generation 
5771 for 
5772 the Create* field, Alias, and Scope operators:
5773  1) Create* buffer field operators - fix type mismatch warning on 
5774 disassembly
5775  2) Alias - implement missing External support
5776  3) Scope - fix to make sure all necessary externals are emitted.
5777
5778 iASL: Improved pathname support. For include files, merge the prefix 
5779 pathname 
5780 with the file pathname and eliminate unnecessary components. Convert 
5781 backslashes in all pathnames to forward slashes, for readability. Include 
5782 file 
5783 pathname changes affect both #include and Include() type operators.
5784
5785 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 
5786 end 
5787 of a valid line by inserting a newline and then returning the EOF during 
5788 the 
5789 next call to GetNextLine. Prevents the line from being ignored due to EOF 
5790 condition.
5791
5792 iASL: Implemented some changes to enhance the IDE support (-vi option.) 
5793 Error 
5794 and Warning messages are now correctly recognized for both the source 
5795 code 
5796 browser and the global error and warning counts.
5797
5798 ----------------------------------------
5799 20 April 2012. Summary of changes for version 20120420:
5800
5801
5802 1) ACPICA Core Subsystem:
5803
5804 Implemented support for multiple notify handlers. This change adds 
5805 support 
5806 to 
5807 allow multiple system and device notify handlers on Device, Thermal Zone, 
5808 and 
5809 Processor objects. This can simplify the host OS notification 
5810 implementation. 
5811 Also re-worked and restructured the entire notify support code to 
5812 simplify 
5813 handler installation, handler removal, notify event queuing, and notify 
5814 dispatch to handler(s). Note: there can still only be two global notify 
5815 handlers - one for system notifies and one for device notifies. There are 
5816 no 
5817 changes to the existing handler install/remove interfaces. Lin Ming, Bob 
5818 Moore, Rafael Wysocki.
5819
5820 Fixed a regression in the package repair code where the object reference 
5821 count was calculated incorrectly. Regression was introduced in the commit 
5822 "Support to add Package wrappers".
5823
5824 Fixed a couple possible memory leaks in the AML parser, in the error 
5825 recovery 
5826 path. Jesper Juhl, Lin Ming.
5827
5828 Example Code and Data Size: These are the sizes for the OS-independent 
5829 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5830 debug version of the code includes the debug output trace mechanism and 
5831 has a 
5832 much larger code and data size.
5833
5834   Previous Release:
5835     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5836     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5837   Current Release:
5838     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5839     Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5840
5841
5842 2) iASL Compiler/Disassembler and Tools:
5843
5844 iASL: Fixed a problem with the resource descriptor support where the 
5845 length 
5846 of the StartDependentFn and StartDependentFnNoPrio descriptors were not 
5847 included in cumulative descriptor offset, resulting in incorrect values 
5848 for 
5849 resource tags within resource descriptors appearing after a 
5850 StartDependent* 
5851 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5852
5853 iASL and Preprocessor: Implemented full support for the #line directive 
5854 to 
5855 correctly track original source file line numbers through the .i 
5856 preprocessor 
5857 output file - for error and warning messages.
5858
5859 iASL: Expand the allowable byte constants for address space IDs. 
5860 Previously, 
5861 the allowable range was 0x80-0xFF (user-defined spaces), now the range is 
5862 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
5863
5864 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5865
5866 iASL: Add option to completely disable the preprocessor (-Pn).
5867
5868 iASL: Now emit all error/warning messages to standard error (stderr) by 
5869 default (instead of the previous stdout).
5870
5871 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 
5872 Update 
5873 for resource descriptor offset fix above. Update/cleanup error output 
5874 routines. Enable and send iASL errors/warnings to an error logfile 
5875 (error.txt). Send all other iASL output to a logfile (compiler.txt). 
5876 Fixed 
5877 several extraneous "unrecognized operator" messages.
5878
5879 ----------------------------------------
5880 20 March 2012. Summary of changes for version 20120320:
5881
5882
5883 1) ACPICA Core Subsystem:
5884
5885 Enhanced the sleep/wake interfaces to optionally execute the _GTS method 
5886 (Going To Sleep) and the _BFS method (Back From Sleep). Windows 
5887 apparently 
5888 does not execute these methods, and therefore these methods are often 
5889 untested. It has been seen on some systems where the execution of these 
5890 methods causes errors and also prevents the machine from entering S5. It 
5891 is 
5892 therefore suggested that host operating systems do not execute these 
5893 methods 
5894 by default. In the future, perhaps these methods can be optionally 
5895 executed 
5896 based on the age of the system and/or what is the newest version of 
5897 Windows 
5898 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 
5899 and 
5900 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 
5901 Ming.
5902
5903 Fixed a problem where the length of the local/common FADT was set too 
5904 early. 
5905 The local FADT table length cannot be set to the common length until the 
5906 original length has been examined. There is code that checks the table 
5907 length 
5908 and sets various fields appropriately. This can affect older machines 
5909 with 
5910 early FADT versions. For example, this can cause inadvertent writes to 
5911 the 
5912 CST_CNT register. Julian Anastasov.
5913
5914 Fixed a mapping issue related to a physical table override. Use the 
5915 deferred 
5916 mapping mechanism for tables loaded via the physical override OSL 
5917 interface. 
5918 This allows for early mapping before the virtual memory manager is 
5919 available. 
5920 Thomas Renninger, Bob Moore.
5921
5922 Enhanced the automatic return-object repair code: Repair a common problem 
5923 with 
5924 predefined methods that are defined to return a variable-length Package 
5925 of 
5926 sub-objects. If there is only one sub-object, some BIOS ASL code 
5927 mistakenly 
5928 simply returns the single object instead of a Package with one sub-
5929 object. 
5930 This new support will repair this error by wrapping a Package object 
5931 around 
5932 the original object, creating the correct and expected Package with one 
5933 sub-
5934 object. Names that can be repaired in this manner include: _ALR, _CSD, 
5935 _HPX, 
5936 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 
5937 939.
5938
5939 Changed the exception code returned for invalid ACPI paths passed as 
5940 parameters to external interfaces such as AcpiEvaluateObject. Was 
5941 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
5942
5943 Example Code and Data Size: These are the sizes for the OS-independent 
5944 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5945 debug 
5946 version of the code includes the debug output trace mechanism and has a 
5947 much 
5948 larger code and data size.
5949
5950   Previous Release:
5951     Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5952     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5953   Current Release:
5954     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5955     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5956
5957
5958 2) iASL Compiler/Disassembler and Tools:
5959
5960 iASL: Added the infrastructure and initial implementation of a integrated 
5961 C-
5962 like preprocessor. This will simplify BIOS development process by 
5963 eliminating 
5964 the need for a separate preprocessing step during builds. On Windows, it 
5965 also 
5966 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 
5967 features including full #define() macro support are still under 
5968 development. 
5969 These preprocessor directives are supported:
5970     #define
5971     #elif
5972     #else
5973     #endif
5974     #error
5975     #if
5976     #ifdef
5977     #ifndef
5978     #include
5979     #pragma message
5980     #undef
5981     #warning
5982 In addition, these new command line options are supported:
5983     -D <symbol> Define symbol for preprocessor use
5984     -li         Create preprocessed output file (*.i)
5985     -P          Preprocess only and create preprocessor output file (*.i)
5986
5987 Table Compiler: Fixed a problem where the equals operator within an 
5988 expression 
5989 did not work properly.
5990
5991 Updated iASL to use the current versions of Bison/Flex. Updated the 
5992 Windows 
5993 project file to invoke these tools from the standard location. ACPICA BZ 
5994 904. 
5995 Versions supported:
5996     Flex for Windows:  V2.5.4
5997     Bison for Windows: V2.4.1
5998
5999 ----------------------------------------
6000 15 February 2012. Summary of changes for version 20120215:
6001
6002
6003 1) ACPICA Core Subsystem:
6004
6005 There have been some major changes to the sleep/wake support code, as 
6006 described below (a - e).
6007
6008 a) The AcpiLeaveSleepState has been split into two interfaces, similar to 
6009 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 
6010 AcpiLeaveSleepStatePrep. This allows the host to perform actions between 
6011 the 
6012 time the _BFS method is called and the _WAK method is called. NOTE: all 
6013 hosts 
6014 must update their wake/resume code or else sleep/wake will not work 
6015 properly. 
6016 Rafael Wysocki.
6017
6018 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 
6019 _WAK 
6020 method. Some machines require that the GPEs are enabled before the _WAK 
6021 method 
6022 is executed. Thomas Renninger.
6023
6024 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 
6025 bit. 
6026 Some BIOS code assumes that WAK_STS will be cleared on resume and use it 
6027 to 
6028 determine whether the system is rebooting or resuming. Matthew Garrett.
6029
6030 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 
6031 Sleep) to 
6032 match the ACPI specification requirement. Rafael Wysocki.
6033
6034 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 
6035 registers within the V5 FADT. This support adds two new files: 
6036 hardware/hwesleep.c implements the support for the new registers. Moved 
6037 all 
6038 sleep/wake external interfaces to hardware/hwxfsleep.c.
6039
6040
6041 Added a new OSL interface for ACPI table overrides, 
6042 AcpiOsPhysicalTableOverride. This interface allows the host to override a 
6043 table via a physical address, instead of the logical address required by 
6044 AcpiOsTableOverride. This simplifies the host implementation. Initial 
6045 implementation by Thomas Renninger. The ACPICA implementation creates a 
6046 single 
6047 shared function for table overrides that attempts both a logical and a 
6048 physical override.
6049
6050 Expanded the OSL memory read/write interfaces to 64-bit data 
6051 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 
6052 transfer support for GAS register structures passed to AcpiRead and 
6053 AcpiWrite.
6054
6055 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 
6056 custom 
6057 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 
6058 model. 
6059 See the ACPICA reference for details. ACPICA BZ 942. This option removes 
6060 about 
6061 10% of the code and 5% of the static data, and the following hardware 
6062 ACPI 
6063 features become unavailable:
6064     PM Event and Control registers
6065     SCI interrupt (and handler)
6066     Fixed Events
6067     General Purpose Events (GPEs)
6068     Global Lock
6069     ACPI PM timer
6070     FACS table (Waking vectors and Global Lock)
6071
6072 Updated the unix tarball directory structure to match the ACPICA git 
6073 source 
6074 tree. This ensures that the generic unix makefiles work properly (in 
6075 generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ 
6076 867.
6077
6078 Updated the return value of the _REV predefined method to integer value 5 
6079 to 
6080 reflect ACPI 5.0 support.
6081
6082 Moved the external ACPI PM timer interface prototypes to the public 
6083 acpixf.h 
6084 file where they belong.
6085
6086 Example Code and Data Size: These are the sizes for the OS-independent 
6087 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
6088 debug 
6089 version of the code includes the debug output trace mechanism and has a 
6090 much 
6091 larger code and data size.
6092
6093   Previous Release:
6094     Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6095     Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6096   Current Release:
6097     Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6098     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6099
6100
6101 2) iASL Compiler/Disassembler and Tools:
6102
6103 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 
6104 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 
6105 incorrectly displayed.
6106
6107 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 
6108 specification.
6109
6110 ----------------------------------------
6111 11 January 2012. Summary of changes for version 20120111:
6112
6113
6114 1) ACPICA Core Subsystem:
6115
6116 Implemented a new mechanism to allow host device drivers to check for 
6117 address 
6118 range conflicts with ACPI Operation Regions. Both SystemMemory and 
6119 SystemIO 
6120 address spaces are supported. A new external interface, 
6121 AcpiCheckAddressRange, 
6122 allows drivers to check an address range against the ACPI namespace. See 
6123 the 
6124 ACPICA reference for additional details. Adds one new file, 
6125 utilities/utaddress.c. Lin Ming, Bob Moore.
6126
6127 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 
6128 Control 
6129 and 
6130 Status registers, update the ACPI 5.0 flags, and update internal data 
6131 structures to handle an FADT larger than 256 bytes. The size of the ACPI 
6132 5.0 
6133 FADT is 268 bytes.
6134
6135 Updated all ACPICA copyrights and signons to 2012. Added the 2012 
6136 copyright to 
6137 all module headers and signons, including the standard Linux header. This 
6138 affects virtually every file in the ACPICA core subsystem, iASL compiler, 
6139 and 
6140 all ACPICA utilities.
6141
6142 Example Code and Data Size: These are the sizes for the OS-independent 
6143 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
6144 debug 
6145 version of the code includes the debug output trace mechanism and has a 
6146 much 
6147 larger code and data size.
6148
6149   Previous Release:
6150     Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6151     Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6152   Current Release:
6153     Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6154     Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6155
6156
6157 2) iASL Compiler/Disassembler and Tools:
6158
6159 Disassembler: fixed a problem with the automatic resource tag generation 
6160 support. Fixes a problem where the resource tags are inadvertently not 
6161 constructed if the table being disassembled contains external references 
6162 to 
6163 control methods. Moved the actual construction of the tags to after the 
6164 final 
6165 namespace is constructed (after 2nd parse is invoked due to external 
6166 control 
6167 method references.) ACPICA BZ 941.
6168
6169 Table Compiler: Make all "generic" operators caseless. These are the 
6170 operators 
6171 like UINT8, String, etc. Making these caseless improves ease-of-use. 
6172 ACPICA BZ 
6173 934.
6174
6175 ----------------------------------------
6176 23 November 2011. Summary of changes for version 20111123:
6177
6178 0) ACPI 5.0 Support:
6179
6180 This release contains full support for the ACPI 5.0 specification, as 
6181 summarized below.
6182
6183 Reduced Hardware Support:
6184 -------------------------
6185
6186 This support allows for ACPI systems without the usual ACPI hardware. 
6187 This 
6188 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 
6189 will 
6190 not attempt to initialize or use any of the usual ACPI hardware. Note, 
6191 when 
6192 this flag is set, all of the following ACPI hardware is assumed to be not 
6193 present and is not initialized or accessed:
6194
6195     General Purpose Events (GPEs)
6196     Fixed Events (PM1a/PM1b and PM Control)
6197     Power Management Timer and Console Buttons (power/sleep)
6198     Real-time Clock Alarm
6199     Global Lock
6200     System Control Interrupt (SCI)
6201     The FACS is assumed to be non-existent
6202
6203 ACPI Tables:
6204 ------------
6205
6206 All new tables and updates to existing tables are fully supported in the 
6207 ACPICA headers (for use by device drivers), the disassembler, and the 
6208 iASL 
6209 Data Table Compiler. ACPI 5.0 defines these new tables:
6210
6211     BGRT        /* Boot Graphics Resource Table */
6212     DRTM        /* Dynamic Root of Trust for Measurement table */
6213     FPDT        /* Firmware Performance Data Table */
6214     GTDT        /* Generic Timer Description Table */
6215     MPST        /* Memory Power State Table */
6216     PCCT        /* Platform Communications Channel Table */
6217     PMTT        /* Platform Memory Topology Table */
6218     RASF        /* RAS Feature table */
6219
6220 Operation Regions/SpaceIDs:
6221 ---------------------------
6222
6223 All new operation regions are fully supported by the iASL compiler, the 
6224 disassembler, and the ACPICA runtime code (for dispatch to region 
6225 handlers.) 
6226 The new operation region Space IDs are:
6227
6228     GeneralPurposeIo
6229     GenericSerialBus
6230
6231 Resource Descriptors:
6232 ---------------------
6233
6234 All new ASL resource descriptors are fully supported by the iASL 
6235 compiler, 
6236 the 
6237 ASL/AML disassembler, and the ACPICA runtime Resource Manager code 
6238 (including 
6239 all new predefined resource tags). New descriptors are:
6240
6241     FixedDma
6242     GpioIo
6243     GpioInt
6244     I2cSerialBus
6245     SpiSerialBus
6246     UartSerialBus
6247
6248 ASL/AML Operators, New and Modified:
6249 ------------------------------------
6250
6251 One new operator is added, the Connection operator, which is used to 
6252 associate 
6253 a GeneralPurposeIo or GenericSerialBus resource descriptor with 
6254 individual 
6255 field objects within an operation region. Several new protocols are 
6256 associated 
6257 with the AccessAs operator. All are fully supported by the iASL compiler, 
6258 disassembler, and runtime ACPICA AML interpreter:
6259
6260     Connection                      // Declare Field Connection 
6261 attributes
6262     AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6263     AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes 
6264 Protocol
6265     AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6266     RawDataBuffer                       // Data type for Vendor Data 
6267 fields
6268
6269 Predefined ASL/AML Objects:
6270 ---------------------------
6271
6272 All new predefined objects/control-methods are supported by the iASL 
6273 compiler 
6274 and the ACPICA runtime validation/repair (arguments and return values.) 
6275 New 
6276 predefined names include the following:
6277
6278 Standard Predefined Names (Objects or Control Methods):
6279     _AEI, _CLS, _CPC, _CWS, _DEP,
6280     _DLM, _EVT, _GCP, _CRT, _GWS,
6281     _HRV, _PRE, _PSE, _SRT, _SUB.
6282
6283 Resource Tags (Names used to access individual fields within resource 
6284 descriptors):
6285     _DBT, _DPL, _DRS, _END, _FLC,
6286     _IOR, _LIN, _MOD, _PAR, _PHA,
6287     _PIN, _PPI, _POL, _RXL, _SLV,
6288     _SPE, _STB, _TXL, _VEN.
6289
6290 ACPICA External Interfaces:
6291 ---------------------------
6292
6293 Several new interfaces have been defined for use by ACPI-related device 
6294 drivers and other host OS services:
6295
6296 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 
6297 to 
6298 acquire and release AML mutexes that are defined in the DSDT/SSDT tables 
6299 provided by the BIOS. They are intended to be used in conjunction with 
6300 the 
6301 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 
6302 mutual exclusion with the AML code/interpreter.
6303
6304 AcpiGetEventResources: Returns the (formatted) resource descriptors as 
6305 defined 
6306 by the ACPI 5.0 _AEI object (ACPI Event Information).  This object 
6307 provides 
6308 resource descriptors associated with hardware-reduced platform events, 
6309 similar 
6310 to the AcpiGetCurrentResources interface.
6311
6312 Operation Region Handlers: For General Purpose IO and Generic Serial Bus 
6313 operation regions, information about the Connection() object and any 
6314 optional 
6315 length information is passed to the region handler within the Context 
6316 parameter.
6317
6318 AcpiBufferToResource: This interface converts a raw AML buffer containing 
6319
6320 resource template or resource descriptor to the ACPI_RESOURCE internal 
6321 format 
6322 suitable for use by device drivers. Can be used by an operation region 
6323 handler 
6324 to convert the Connection() buffer object into a ACPI_RESOURCE.
6325
6326 Miscellaneous/Tools/TestSuites: 
6327 -------------------------------
6328
6329 Support for extended _HID names (Four alpha characters instead of three).
6330 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6331 Support for ACPI 5.0 features in the ASLTS test suite.
6332 Fully updated documentation (ACPICA and iASL reference documents.)
6333
6334 ACPI Table Definition Language:
6335 -------------------------------
6336
6337 Support for this language was implemented and released as a subsystem of 
6338 the 
6339 iASL compiler in 2010. (See the iASL compiler User Guide.)
6340
6341
6342 Non-ACPI 5.0 changes for this release:
6343 --------------------------------------
6344
6345 1) ACPICA Core Subsystem:
6346
6347 Fix a problem with operation region declarations where a failure can 
6348 occur 
6349 if 
6350 the region name and an argument that evaluates to an object (such as the 
6351 region address) are in different namespace scopes. Lin Ming, ACPICA BZ 
6352 937.
6353
6354 Do not abort an ACPI table load if an invalid space ID is found within. 
6355 This 
6356 will be caught later if the offending method is executed. ACPICA BZ 925.
6357
6358 Fixed an issue with the FFixedHW space ID where the ID was not always 
6359 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6360
6361 Fixed a problem with the 32-bit generation of the unix-specific OSL 
6362 (osunixxf.c). Lin Ming, ACPICA BZ 936.
6363
6364 Several changes made to enable generation with the GCC 4.6 compiler. 
6365 ACPICA BZ 
6366 935.
6367
6368 New error messages: Unsupported I/O requests (not 8/16/32 bit), and 
6369 Index/Bank 
6370 field registers out-of-range.
6371
6372 2) iASL Compiler/Disassembler and Tools:
6373
6374 iASL: Implemented the __PATH__ operator, which returns the full pathname 
6375 of 
6376 the current source file.
6377
6378 AcpiHelp: Automatically display expanded keyword information for all ASL 
6379 operators.
6380
6381 Debugger: Add "Template" command to disassemble/dump resource template 
6382 buffers.
6383
6384 Added a new master script to generate and execute the ASLTS test suite. 
6385 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6386
6387 iASL: Fix problem with listing generation during processing of the 
6388 Switch() 
6389 operator where AML listing was disabled until the entire Switch block was 
6390 completed.
6391
6392 iASL: Improve support for semicolon statement terminators. Fix "invalid 
6393 character" message for some cases when the semicolon is used. Semicolons 
6394 are 
6395 now allowed after every <Term> grammar element. ACPICA BZ 927.
6396
6397 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 
6398 923.
6399
6400 Disassembler: Fix problem with disassembly of the DataTableRegion 
6401 operator 
6402 where an inadvertent "Unhandled deferred opcode" message could be 
6403 generated.
6404
6405 3) Example Code and Data Size
6406
6407 These are the sizes for the OS-independent acpica.lib produced by the 
6408 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
6409 includes the debug output trace mechanism and has a much larger code and 
6410 data 
6411 size.
6412
6413   Previous Release:
6414     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6415     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6416   Current Release:
6417     Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6418     Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6419
6420 ----------------------------------------
6421 22 September 2011. Summary of changes for version 20110922:
6422
6423 0) ACPI 5.0 News:
6424
6425 Support for ACPI 5.0 in ACPICA has been underway for several months and 
6426 will 
6427 be released at the same time that ACPI 5.0 is officially released.
6428
6429 The ACPI 5.0 specification is on track for release in the next few 
6430 months.
6431  
6432 1) ACPICA Core Subsystem:
6433
6434 Fixed a problem where the maximum sleep time for the Sleep() operator was 
6435 intended to be limited to two seconds, but was inadvertently limited to 
6436 20 
6437 seconds instead.
6438
6439 Linux and Unix makefiles: Added header file dependencies to ensure 
6440 correct 
6441 generation of ACPICA core code and utilities. Also simplified the 
6442 makefiles 
6443 considerably through the use of the vpath variable to specify search 
6444 paths. 
6445 ACPICA BZ 924.
6446
6447 2) iASL Compiler/Disassembler and Tools:
6448
6449 iASL: Implemented support to check the access length for all fields 
6450 created to 
6451 access named Resource Descriptor fields. For example, if a resource field 
6452 is 
6453 defined to be two bits, a warning is issued if a CreateXxxxField() is 
6454 used 
6455 with an incorrect bit length. This is implemented for all current 
6456 resource 
6457 descriptor names. ACPICA BZ 930.
6458   
6459 Disassembler: Fixed a byte ordering problem with the output of 24-bit and 
6460 56-
6461 bit integers.
6462
6463 iASL: Fixed a couple of issues associated with variable-length package 
6464 objects. 1) properly handle constants like One, Ones, Zero -- do not make 
6465
6466 VAR_PACKAGE when these are used as a package length. 2) Allow the 
6467 VAR_PACKAGE 
6468 opcode (in addition to PACKAGE) when validating object types for 
6469 predefined 
6470 names.
6471
6472 iASL: Emit statistics for all output files (instead of just the ASL input 
6473 and 
6474 AML output). Includes listings, hex files, etc.
6475
6476 iASL: Added -G option to the table compiler to allow the compilation of 
6477 custom 
6478 ACPI tables. The only part of a table that is required is the standard 
6479 36-
6480 byte 
6481 ACPI header.
6482
6483 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 
6484 headers), 
6485 which also adds correct 64-bit support. Also, now all output filenames 
6486 are 
6487 completely lower case.
6488
6489 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 
6490 loading table files. A warning is issued for any such tables. The only 
6491 exception is an FADT. This also fixes a possible fault when attempting to 
6492 load 
6493 non-AML tables. ACPICA BZ 932.
6494
6495 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 
6496
6497 missing table terminator could cause a fault when using the -p option.
6498
6499 AcpiSrc: Fixed a possible divide-by-zero fault when generating file 
6500 statistics.
6501
6502 3) Example Code and Data Size
6503
6504 These are the sizes for the OS-independent acpica.lib produced by the 
6505 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
6506 includes the debug output trace mechanism and has a much larger code and 
6507 data 
6508 size.
6509
6510   Previous Release (VC 9.0):
6511     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6512     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6513   Current Release (VC 9.0):
6514     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6515     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6516
6517
6518 ----------------------------------------
6519 23 June 2011. Summary of changes for version 20110623:
6520
6521 1) ACPI CA Core Subsystem:
6522
6523 Updated the predefined name repair mechanism to not attempt repair of a 
6524 _TSS 
6525 return object if a _PSS object is present. We can only sort the _TSS 
6526 return 
6527 package if there is no _PSS within the same scope. This is because if 
6528 _PSS 
6529 is 
6530 present, the ACPI specification dictates that the _TSS Power Dissipation 
6531 field 
6532 is to be ignored, and therefore some BIOSs leave garbage values in the 
6533 _TSS 
6534 Power field(s). In this case, it is best to just return the _TSS package 
6535 as-
6536 is. Reported by, and fixed with assistance from Fenghua Yu.
6537
6538 Added an option to globally disable the control method return value 
6539 validation 
6540 and repair. This runtime option can be used to disable return value 
6541 repair 
6542 if 
6543 this is causing a problem on a particular machine. Also added an option 
6544 to 
6545 AcpiExec (-dr) to set this disable flag.
6546
6547 All makefiles and project files: Major changes to improve generation of 
6548 ACPICA 
6549 tools. ACPICA BZ 912:
6550     Reduce default optimization levels to improve compatibility
6551     For Linux, add strict-aliasing=0 for gcc 4
6552     Cleanup and simplify use of command line defines
6553     Cleanup multithread library support
6554     Improve usage messages
6555
6556 Linux-specific header: update handling of THREAD_ID and pthread. For the 
6557 32-
6558 bit case, improve casting to eliminate possible warnings, especially with 
6559 the 
6560 acpica tools.
6561
6562 Example Code and Data Size: These are the sizes for the OS-independent 
6563 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
6564 debug 
6565 version of the code includes the debug output trace mechanism and has a 
6566 much 
6567 larger code and data size.
6568
6569   Previous Release (VC 9.0):
6570     Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6571     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6572   Current Release (VC 9.0):
6573     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6574     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6575
6576 2) iASL Compiler/Disassembler and Tools:
6577
6578 With this release, a new utility named "acpihelp" has been added to the 
6579 ACPICA 
6580 package. This utility summarizes the ACPI specification chapters for the 
6581 ASL 
6582 and AML languages. It generates under Linux/Unix as well as Windows, and 
6583 provides the following functionality:
6584     Find/display ASL operator(s) -- with description and syntax.
6585     Find/display ASL keyword(s) -- with exact spelling and descriptions.
6586     Find/display ACPI predefined name(s) -- with description, number
6587         of arguments, and the return value data type.
6588     Find/display AML opcode name(s) -- with opcode, arguments, and 
6589 grammar.
6590     Decode/display AML opcode -- with opcode name, arguments, and 
6591 grammar.
6592
6593 Service Layers: Make multi-thread support configurable. Conditionally 
6594 compile 
6595 the multi-thread support so that threading libraries will not be linked 
6596 if 
6597 not 
6598 necessary. The only tool that requires multi-thread support is AcpiExec.
6599
6600 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 
6601 of 
6602 Bison appear to want the interface to yyerror to be a const char * (or at 
6603 least this is a problem when generating iASL on some systems.) ACPICA BZ 
6604 923 
6605 Pierre Lejeune.
6606
6607 Tools: Fix for systems where O_BINARY is not defined. Only used for 
6608 Windows 
6609 versions of the tools.
6610
6611 ----------------------------------------
6612 27 May 2011. Summary of changes for version 20110527:
6613
6614 1) ACPI CA Core Subsystem:
6615
6616 ASL Load() operator: Reinstate most restrictions on the incoming ACPI 
6617 table 
6618 signature. Now, only allow SSDT, OEMx, and a null signature. History:
6619     1) Originally, we checked the table signature for "SSDT" or "PSDT".
6620        (PSDT is now obsolete.)
6621     2) We added support for OEMx tables, signature "OEM" plus a fourth
6622        "don't care" character.
6623     3) Valid tables were encountered with a null signature, so we just
6624        gave up on validating the signature, (05/2008).
6625     4) We encountered non-AML tables such as the MADT, which caused
6626        interpreter errors and kernel faults. So now, we once again allow
6627        only SSDT, OEMx, and now, also a null signature. (05/2011).
6628
6629 Added the missing _TDL predefined name to the global name list in order 
6630 to 
6631 enable validation. Affects both the core ACPICA code and the iASL 
6632 compiler.
6633
6634 Example Code and Data Size: These are the sizes for the OS-independent 
6635 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
6636 debug 
6637 version of the code includes the debug output trace mechanism and has a 
6638 much 
6639 larger code and data size.
6640
6641   Previous Release (VC 9.0):
6642     Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6643     Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6644   Current Release (VC 9.0):
6645     Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6646     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6647
6648 2) iASL Compiler/Disassembler and Tools:
6649
6650 Debugger/AcpiExec: Implemented support for "complex" method arguments on 
6651 the 
6652 debugger command line. This adds support beyond simple integers -- 
6653 including 
6654 Strings, Buffers, and Packages. Includes support for nested packages. 
6655 Increased the default command line buffer size to accommodate these 
6656 arguments. 
6657 See the ACPICA reference for details and syntax. ACPICA BZ 917.
6658  
6659 Debugger/AcpiExec: Implemented support for "default" method arguments for 
6660 the 
6661 Execute/Debug command. Now, the debugger will always invoke a control 
6662 method 
6663 with the required number of arguments -- even if the command line 
6664 specifies 
6665 none or insufficient arguments. It uses default integer values for any 
6666 missing 
6667 arguments. Also fixes a bug where only six method arguments maximum were 
6668 supported instead of the required seven.
6669
6670 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 
6671 and 
6672 also return status in order to prevent buffer overruns. See the ACPICA 
6673 reference for details and syntax. ACPICA BZ 921
6674
6675 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 
6676 makefiles to simplify support for the two different but similar parser 
6677 generators, bison and yacc.
6678
6679 Updated the generic unix makefile for gcc 4. The default gcc version is 
6680 now 
6681 expected to be 4 or greater, since options specific to gcc 4 are used.
6682
6683 ----------------------------------------
6684 13 April 2011. Summary of changes for version 20110413:
6685
6686 1) ACPI CA Core Subsystem:
6687
6688 Implemented support to execute a so-called "orphan" _REG method under the 
6689 EC 
6690 device. This change will force the execution of a _REG method underneath 
6691 the 
6692 EC 
6693 device even if there is no corresponding operation region of type 
6694 EmbeddedControl. Fixes a problem seen on some machines and apparently is 
6695 compatible with Windows behavior. ACPICA BZ 875.
6696
6697 Added more predefined methods that are eligible for automatic NULL 
6698 package 
6699 element removal. This change adds another group of predefined names to 
6700 the 
6701 list 
6702 of names that can be repaired by having NULL package elements dynamically 
6703 removed. This group are those methods that return a single variable-
6704 length 
6705 package containing simple data types such as integers, buffers, strings. 
6706 This 
6707 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 
6708 _PSL, 
6709 _Sx, 
6710 and _TZD. ACPICA BZ 914.
6711
6712 Split and segregated all internal global lock functions to a new file, 
6713 evglock.c.
6714
6715 Updated internal address SpaceID for DataTable regions. Moved this 
6716 internal 
6717 space 
6718 id in preparation for ACPI 5.0 changes that will include some new space 
6719 IDs. 
6720 This 
6721 change should not affect user/host code.
6722
6723 Example Code and Data Size: These are the sizes for the OS-independent 
6724 acpica.lib 
6725 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
6726 version of 
6727 the code includes the debug output trace mechanism and has a much larger 
6728 code 
6729 and 
6730 data size.
6731
6732   Previous Release (VC 9.0):
6733     Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6734     Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6735   Current Release (VC 9.0):
6736     Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6737     Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6738
6739 2) iASL Compiler/Disassembler and Tools:
6740
6741 iASL/DTC: Major update for new grammar features. Allow generic data types 
6742 in 
6743 custom ACPI tables. Field names are now optional. Any line can be split 
6744 to 
6745 multiple lines using the continuation char (\). Large buffers now use 
6746 line-
6747 continuation character(s) and no colon on the continuation lines. See the 
6748 grammar 
6749 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 
6750 Moore.
6751
6752 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 
6753 statements. 
6754 Since the parser stuffs a "zero" as the return value for these statements 
6755 (due 
6756 to 
6757 the underlying AML grammar), they were seen as "return with value" by the 
6758 iASL 
6759 semantic checking. They are now seen correctly as "null" return 
6760 statements.
6761
6762 iASL: Check if a_REG declaration has a corresponding Operation Region. 
6763 Adds a 
6764 check for each _REG to ensure that there is in fact a corresponding 
6765 operation 
6766 region declaration in the same scope. If not, the _REG method is not very 
6767 useful 
6768 since it probably won't be executed. ACPICA BZ 915.
6769
6770 iASL/DTC: Finish support for expression evaluation. Added a new 
6771 expression 
6772 parser 
6773 that implements c-style operator precedence and parenthesization. ACPICA 
6774 bugzilla 
6775 908.
6776
6777 Disassembler/DTC: Remove support for () and <> style comments in data 
6778 tables. 
6779 Now 
6780 that DTC has full expression support, we don't want to have comment 
6781 strings 
6782 that 
6783 start with a parentheses or a less-than symbol. Now, only the standard /* 
6784 and 
6785 // 
6786 comments are supported, as well as the bracket [] comments.
6787
6788 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 
6789 "unusual" 
6790 headers in the acpidump file. Update the header validation to support 
6791 these 
6792 tables. Problem introduced in previous AcpiXtract version in the change 
6793 to 
6794 support "wrong checksum" error messages emitted by acpidump utility.
6795
6796 iASL: Add a * option to generate all template files (as a synonym for 
6797 ALL) 
6798 as 
6799 in 
6800 "iasl -T *" or "iasl -T ALL".
6801
6802 iASL/DTC: Do not abort compiler on fatal errors. We do not want to 
6803 completely 
6804 abort the compiler on "fatal" errors, simply should abort the current 
6805 compile. 
6806 This allows multiple compiles with a single (possibly wildcard) compiler 
6807 invocation.
6808
6809 ----------------------------------------
6810 16 March 2011. Summary of changes for version 20110316:
6811
6812 1) ACPI CA Core Subsystem:
6813
6814 Fixed a problem caused by a _PRW method appearing at the namespace root 
6815 scope 
6816 during the setup of wake GPEs. A fault could occur if a _PRW directly 
6817 under 
6818 the 
6819 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
6820
6821 Implemented support for "spurious" Global Lock interrupts. On some 
6822 systems, a 
6823 global lock interrupt can occur without the pending flag being set. Upon 
6824
6825 GL 
6826 interrupt, we now ensure that a thread is actually waiting for the lock 
6827 before 
6828 signaling GL availability. Rafael Wysocki, Bob Moore.
6829
6830 Example Code and Data Size: These are the sizes for the OS-independent 
6831 acpica.lib 
6832 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
6833 version of 
6834 the code includes the debug output trace mechanism and has a much larger 
6835 code 
6836 and 
6837 data size.
6838
6839   Previous Release (VC 9.0):
6840     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6841     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6842   Current Release (VC 9.0):
6843     Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6844     Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6845
6846 2) iASL Compiler/Disassembler and Tools:
6847
6848 Implemented full support for the "SLIC" ACPI table. Includes support in 
6849 the 
6850 header files, disassembler, table compiler, and template generator. Bob 
6851 Moore, 
6852 Lin Ming.
6853
6854 AcpiXtract: Correctly handle embedded comments and messages from 
6855 AcpiDump. 
6856 Apparently some or all versions of acpidump will occasionally emit a 
6857 comment 
6858 like 
6859 "Wrong checksum", etc., into the dump file. This was causing problems for 
6860 AcpiXtract. ACPICA BZ 905.
6861
6862 iASL: Fix the Linux makefile by removing an inadvertent double file 
6863 inclusion. 
6864 ACPICA BZ 913.
6865
6866 AcpiExec: Update installation of operation region handlers. Install one 
6867 handler 
6868 for a user-defined address space. This is used by the ASL test suite 
6869 (ASLTS).
6870
6871 ----------------------------------------
6872 11 February 2011. Summary of changes for version 20110211:
6873
6874 1) ACPI CA Core Subsystem:
6875
6876 Added a mechanism to defer _REG methods for some early-installed 
6877 handlers. 
6878 Most user handlers should be installed before call to 
6879 AcpiEnableSubsystem. 
6880 However, Event handlers and region handlers should be installed after 
6881 AcpiInitializeObjects. Override handlers for the "default" regions should 
6882 be 
6883 installed early, however. This change executes all _REG methods for the 
6884 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 
6885 chicken/egg issues between them. ACPICA BZ 848.
6886
6887 Implemented an optimization for GPE detection. This optimization will 
6888 simply 
6889 ignore GPE registers that contain no enabled GPEs -- there is no need to 
6890 read the register since this information is available internally. This 
6891 becomes more important on machines with a large GPE space. ACPICA 
6892 bugzilla 
6893 884. Lin Ming. Suggestion from Joe Liu.
6894
6895 Removed all use of the highly unreliable FADT revision field. The 
6896 revision 
6897 number in the FADT has been found to be completely unreliable and cannot 
6898 be 
6899 trusted. Only the actual table length can be used to infer the version. 
6900 This 
6901 change updates the ACPICA core and the disassembler so that both no 
6902 longer 
6903 even look at the FADT version and instead depend solely upon the FADT 
6904 length.
6905
6906 Fix an unresolved name issue for the no-debug and no-error-message source 
6907 generation cases. The _AcpiModuleName was left undefined in these cases, 
6908 but 
6909 it is actually needed as a parameter to some interfaces. Define 
6910 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
6911
6912 Split several large files (makefiles and project files updated)
6913   utglobal.c   -> utdecode.c
6914   dbcomds.c    -> dbmethod.c dbnames.c
6915   dsopcode.c   -> dsargs.c dscontrol.c
6916   dsload.c     -> dsload2.c
6917   aslanalyze.c -> aslbtypes.c aslwalks.c
6918
6919 Example Code and Data Size: These are the sizes for the OS-independent 
6920 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
6921 debug version of the code includes the debug output trace mechanism and 
6922 has 
6923 a much larger code and data size.
6924
6925   Previous Release (VC 9.0):
6926     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6927     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6928   Current Release (VC 9.0):
6929     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6930     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6931
6932 2) iASL Compiler/Disassembler and Tools:
6933
6934 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 
6935 These are useful C-style macros with the standard definitions. ACPICA 
6936 bugzilla 898.
6937
6938 iASL/DTC: Added support for integer expressions and labels. Support for 
6939 full 
6940 expressions for all integer fields in all ACPI tables. Support for labels 
6941 in 
6942 "generic" portions of tables such as UEFI. See the iASL reference manual.
6943
6944 Debugger: Added a command to display the status of global handlers. The 
6945 "handlers" command will display op region, fixed event, and miscellaneous 
6946 global handlers. installation status -- and for op regions, whether 
6947 default 
6948 or user-installed handler will be used.
6949
6950 iASL: Warn if reserved method incorrectly returns a value. Many 
6951 predefined 
6952 names are defined such that they do not return a value. If implemented as 
6953
6954 method, issue a warning if such a name explicitly returns a value. ACPICA 
6955 Bugzilla 855.
6956
6957 iASL: Added detection of GPE method name conflicts. Detects a conflict 
6958 where 
6959 there are two GPE methods of the form _Lxy and _Exy in the same scope. 
6960 (For 
6961 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6962
6963 iASL/DTC: Fixed a couple input scanner issues with comments and line 
6964 numbers. Comment remover could get confused and miss a comment ending. 
6965 Fixed 
6966 a problem with line counter maintenance.
6967
6968 iASL/DTC: Reduced the severity of some errors from fatal to error. There 
6969 is 
6970 no need to abort on simple errors within a field definition.
6971
6972 Debugger: Simplified the output of the help command. All help output now 
6973 in 
6974 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6975
6976 ----------------------------------------
6977 12 January 2011. Summary of changes for version 20110112:
6978
6979 1) ACPI CA Core Subsystem:
6980
6981 Fixed a race condition between method execution and namespace walks that 
6982 can 
6983 possibly cause a fault. The problem was apparently introduced in version 
6984 20100528 as a result of a performance optimization that reduces the 
6985 number 
6986 of 
6987 namespace walks upon method exit by using the delete_namespace_subtree 
6988 function instead of the delete_namespace_by_owner function used 
6989 previously. 
6990 Bug is a missing namespace lock in the delete_namespace_subtree function. 
6991 dana.myers@oracle.com
6992
6993 Fixed several issues and a possible fault with the automatic "serialized" 
6994 method support. History: This support changes a method to "serialized" on 
6995 the 
6996 fly if the method generates an AE_ALREADY_EXISTS error, indicating the 
6997 possibility that it cannot handle reentrancy. This fix repairs a couple 
6998 of 
6999 issues seen in the field, especially on machines with many cores:
7000
7001     1) Delete method children only upon the exit of the last thread,
7002        so as to not delete objects out from under other running threads
7003       (and possibly causing a fault.)
7004     2) Set the "serialized" bit for the method only upon the exit of the
7005        Last thread, so as to not cause deadlock when running threads
7006        attempt to exit.
7007     3) Cleanup the use of the AML "MethodFlags" and internal method flags
7008        so that there is no longer any confusion between the two.
7009
7010     Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7011
7012 Debugger: Now lock the namespace for duration of a namespace dump. 
7013 Prevents 
7014 issues if the namespace is changing dynamically underneath the debugger. 
7015 Especially affects temporary namespace nodes, since the debugger displays 
7016 these also.
7017
7018 Updated the ordering of include files. The ACPICA headers should appear 
7019 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 
7020 set 
7021 any necessary compiler-specific defines, etc. Affects the ACPI-related 
7022 tools 
7023 and utilities.
7024
7025 Updated all ACPICA copyrights and signons to 2011. Added the 2011 
7026 copyright 
7027 to all module headers and signons, including the Linux header. This 
7028 affects 
7029 virtually every file in the ACPICA core subsystem, iASL compiler, and all 
7030 utilities.
7031
7032 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 
7033 project files for VC++ 6.0 are now obsolete. New project files can be 
7034 found 
7035 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 
7036 details.
7037
7038 Example Code and Data Size: These are the sizes for the OS-independent 
7039 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
7040 debug version of the code includes the debug output trace mechanism and 
7041 has a 
7042 much larger code and data size.
7043
7044   Previous Release (VC 6.0):
7045     Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7046     Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7047   Current Release (VC 9.0):
7048     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7049     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7050
7051 2) iASL Compiler/Disassembler and Tools:
7052
7053 iASL: Added generic data types to the Data Table compiler. Add "generic" 
7054 data 
7055 types such as UINT32, String, Unicode, etc., to simplify the generation 
7056 of 
7057 platform-defined tables such as UEFI. Lin Ming.
7058
7059 iASL: Added listing support for the Data Table Compiler. Adds listing 
7060 support 
7061 (-l) to display actual binary output for each line of input code.
7062
7063 ----------------------------------------
7064 09 December 2010. Summary of changes for version 20101209:
7065
7066 1) ACPI CA Core Subsystem:
7067
7068 Completed the major overhaul of the GPE support code that was begun in 
7069 July 
7070 2010. Major features include: removal of _PRW execution in ACPICA (host 
7071 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 
7072 changes to existing interfaces, simplification of GPE handler operation, 
7073 and 
7074 a handful of new interfaces:
7075
7076     AcpiUpdateAllGpes
7077     AcpiFinishGpe
7078     AcpiSetupGpeForWake
7079     AcpiSetGpeWakeMask
7080     One new file, evxfgpe.c to consolidate all external GPE interfaces.
7081
7082 See the ACPICA Programmer Reference for full details and programming 
7083 information. See the new section 4.4 "General Purpose Event (GPE) 
7084 Support" 
7085 for a full overview, and section 8.7 "ACPI General Purpose Event 
7086 Management" 
7087 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 
7088 Ming, 
7089 Bob Moore, Rafael Wysocki.
7090
7091 Implemented a new GPE feature for Windows compatibility, the "Implicit 
7092 Wake 
7093 GPE Notify". This feature will automatically issue a Notify(2) on a 
7094 device 
7095 when a Wake GPE is received if there is no corresponding GPE method or 
7096 handler. ACPICA BZ 870.
7097
7098 Fixed a problem with the Scope() operator during table parse and load 
7099 phase. 
7100 During load phase (table load or method execution), the scope operator 
7101 should 
7102 not enter the target into the namespace. Instead, it should open a new 
7103 scope 
7104 at the target location. Linux BZ 19462, ACPICA BZ 882.
7105
7106 Example Code and Data Size: These are the sizes for the OS-independent 
7107 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7108 debug version of the code includes the debug output trace mechanism and 
7109 has a 
7110 much larger code and data size.
7111
7112   Previous Release:
7113     Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7114     Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7115   Current Release:
7116     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7117     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7118
7119 2) iASL Compiler/Disassembler and Tools:
7120
7121 iASL: Relax the alphanumeric restriction on _CID strings. These strings 
7122 are 
7123 "bus-specific" per the ACPI specification, and therefore any characters 
7124 are 
7125 acceptable. The only checks that can be performed are for a null string 
7126 and 
7127 perhaps for a leading asterisk. ACPICA BZ 886.
7128
7129 iASL: Fixed a problem where a syntax error that caused a premature EOF 
7130 condition on the source file emitted a very confusing error message. The 
7131 premature EOF is now detected correctly. ACPICA BZ 891.
7132
7133 Disassembler: Decode the AccessSize within a Generic Address Structure 
7134 (byte 
7135 access, word access, etc.) Note, this field does not allow arbitrary bit 
7136 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7137
7138 New: AcpiNames utility - Example namespace dump utility. Shows an example 
7139 of 
7140 ACPICA configuration for a minimal namespace dump utility. Uses table and 
7141 namespace managers, but no AML interpreter. Does not add any 
7142 functionality 
7143 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 
7144 partition and configure ACPICA. ACPICA BZ 883.
7145
7146 AML Debugger: Increased the debugger buffer size for method return 
7147 objects. 
7148 Was 4K, increased to 16K. Also enhanced error messages for debugger 
7149 method 
7150 execution, including the buffer overflow case.
7151
7152 ----------------------------------------
7153 13 October 2010. Summary of changes for version 20101013:
7154
7155 1) ACPI CA Core Subsystem:
7156
7157 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 
7158 now 
7159 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 
7160 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7161
7162 Changed the type of the predefined namespace object _TZ from ThermalZone 
7163 to 
7164 Device. This was found to be confusing to the host software that 
7165 processes 
7166 the various thermal zones, since _TZ is not really a ThermalZone. 
7167 However, 
7168
7169 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 
7170 Zhang.
7171
7172 Added Windows Vista SP2 to the list of supported _OSI strings. The actual 
7173 string is "Windows 2006 SP2".
7174
7175 Eliminated duplicate code in AcpiUtExecute* functions. Now that the 
7176 nsrepair 
7177 code automatically repairs _HID-related strings, this type of code is no 
7178 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 
7179 878.
7180
7181 Example Code and Data Size: These are the sizes for the OS-independent 
7182 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7183 debug version of the code includes the debug output trace mechanism and 
7184 has a 
7185 much larger code and data size.
7186
7187   Previous Release:
7188     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7189     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7190   Current Release:
7191     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7192     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7193
7194 2) iASL Compiler/Disassembler and Tools:
7195
7196 iASL: Implemented additional compile-time validation for _HID strings. 
7197 The 
7198 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 
7199 length 
7200 of 
7201 the string must be exactly seven or eight characters. For both _HID and 
7202 _CID 
7203 strings, all characters must be alphanumeric. ACPICA BZ 874.
7204
7205 iASL: Allow certain "null" resource descriptors. Some BIOS code creates 
7206 descriptors that are mostly or all zeros, with the expectation that they 
7207 will 
7208 be filled in at runtime. iASL now allows this as long as there is a 
7209 "resource 
7210 tag" (name) associated with the descriptor, which gives the ASL a handle 
7211 needed to modify the descriptor. ACPICA BZ 873.
7212
7213 Added single-thread support to the generic Unix application OSL. 
7214 Primarily 
7215 for iASL support, this change removes the use of semaphores in the 
7216 single-
7217 threaded ACPICA tools/applications - increasing performance. The 
7218 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 
7219 option. ACPICA BZ 879.
7220
7221 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 
7222 support 
7223 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7224
7225 iASL: Moved all compiler messages to a new file, aslmessages.h.
7226
7227 ----------------------------------------
7228 15 September 2010. Summary of changes for version 20100915:
7229
7230 1) ACPI CA Core Subsystem:
7231
7232 Removed the AcpiOsDerivePciId OSL interface. The various host 
7233 implementations 
7234 of this function were not OS-dependent and are now obsolete and can be 
7235 removed from all host OSLs. This function has been replaced by 
7236 AcpiHwDerivePciId, which is now part of the ACPICA core code. 
7237 AcpiHwDerivePciId has been implemented without recursion. Adds one new 
7238 module, hwpci.c. ACPICA BZ 857.
7239
7240 Implemented a dynamic repair for _HID and _CID strings. The following 
7241 problems are now repaired at runtime: 1) Remove a leading asterisk in the 
7242 string, and 2) the entire string is uppercased. Both repairs are in 
7243 accordance with the ACPI specification and will simplify host driver 
7244 code. 
7245 ACPICA BZ 871.
7246
7247 The ACPI_THREAD_ID type is no longer configurable, internally it is now 
7248 always UINT64. This simplifies the ACPICA code, especially any printf 
7249 output. 
7250 UINT64 is the only common data type for all thread_id types across all 
7251 operating systems. It is now up to the host OSL to cast the native 
7252 thread_id 
7253 type to UINT64 before returning the value to ACPICA (via 
7254 AcpiOsGetThreadId). 
7255 Lin Ming, Bob Moore.
7256
7257 Added the ACPI_INLINE type to enhance the ACPICA configuration. The 
7258 "inline" 
7259 keyword is not standard across compilers, and this type allows inline to 
7260 be 
7261 configured on a per-compiler basis. Lin Ming.
7262
7263 Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7264 available. 
7265 Added an extern for this boolean in acpixf.h. Some hosts utilize this 
7266 value 
7267 during suspend/restore operations. ACPICA BZ 869.
7268
7269 All code that implements error/warning messages with the "ACPI:" prefix 
7270 has 
7271 been moved to a new module, utxferror.c.
7272
7273 The UINT64_OVERLAY was moved to utmath.c, which is the only module where 
7274 it 
7275 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7276
7277 Example Code and Data Size: These are the sizes for the OS-independent 
7278 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7279 debug version of the code includes the debug output trace mechanism and 
7280 has a 
7281 much larger code and data size.
7282
7283   Previous Release:
7284     Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7285     Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7286   Current Release:
7287     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7288     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7289
7290 2) iASL Compiler/Disassembler and Tools:
7291
7292 iASL/Disassembler: Write ACPI errors to stderr instead of the output 
7293 file. 
7294 This keeps the output files free of random error messages that may 
7295 originate 
7296 from within the namespace/interpreter code. Used this opportunity to 
7297 merge 
7298 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 
7299 866. Lin Ming, Bob Moore.
7300
7301 Tools: update some printfs for ansi warnings on size_t. Handle width 
7302 change 
7303 of size_t on 32-bit versus 64-bit generations. Lin Ming.
7304
7305 ----------------------------------------
7306 06 August 2010. Summary of changes for version 20100806:
7307
7308 1) ACPI CA Core Subsystem:
7309
7310 Designed and implemented a new host interface to the _OSI support code. 
7311 This 
7312 will allow the host to dynamically add or remove multiple _OSI strings, 
7313 as 
7314 well as install an optional handler that is called for each _OSI 
7315 invocation. 
7316 Also added a new AML debugger command, 'osi' to display and modify the 
7317 global 
7318 _OSI string table, and test support in the AcpiExec utility. See the 
7319 ACPICA 
7320 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7321 New Functions:
7322     AcpiInstallInterface - Add an _OSI string.
7323     AcpiRemoveInterface - Delete an _OSI string.
7324     AcpiInstallInterfaceHandler - Install optional _OSI handler.
7325 Obsolete Functions:
7326     AcpiOsValidateInterface - no longer used.
7327 New Files:
7328     source/components/utilities/utosi.c
7329
7330 Re-introduced the support to enable multi-byte transfers for Embedded 
7331 Controller (EC) operation regions. A reported problem was found to be a 
7332 bug 
7333 in the host OS, not in the multi-byte support. Previously, the maximum 
7334 data 
7335 size passed to the EC operation region handler was a single byte. There 
7336 are 
7337 often EC Fields larger than one byte that need to be transferred, and it 
7338 is 
7339 useful for the EC driver to lock these as a single transaction. This 
7340 change 
7341 enables single transfers larger than 8 bits. This effectively changes the 
7342 access to the EC space from ByteAcc to AnyAcc, and will probably require 
7343 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7344 bit 
7345 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7346
7347 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 
7348 prototype in acpiosxf.h had the output value pointer as a (void *).
7349 It should be a (UINT64 *). This may affect some host OSL code.
7350
7351 Fixed a couple problems with the recently modified Linux makefiles for 
7352 iASL 
7353 and AcpiExec. These new makefiles place the generated object files in the 
7354 local directory so that there can be no collisions between the files that 
7355 are 
7356 shared between them that are compiled with different options.
7357
7358 Example Code and Data Size: These are the sizes for the OS-independent 
7359 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7360 debug version of the code includes the debug output trace mechanism and 
7361 has a 
7362 much larger code and data size.
7363
7364   Previous Release:
7365     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7366     Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7367   Current Release:
7368     Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7369     Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7370
7371 2) iASL Compiler/Disassembler and Tools:
7372
7373 iASL/Disassembler: Added a new option (-da, "disassemble all") to load 
7374 the 
7375 namespace from and disassemble an entire group of AML files. Useful for 
7376 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 
7377 and 
7378 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7379
7380 iASL: Allow multiple invocations of -e option. This change allows 
7381 multiple 
7382 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 
7383 834. 
7384 Lin Ming.
7385
7386 ----------------------------------------
7387 02 July 2010. Summary of changes for version 20100702:
7388
7389 1) ACPI CA Core Subsystem:
7390
7391 Implemented several updates to the recently added GPE reference count 
7392 support. The model for "wake" GPEs is changing to give the host OS 
7393 complete 
7394 control of these GPEs. Eventually, the ACPICA core will not execute any 
7395 _PRW 
7396 methods, since the host already must execute them. Also, additional 
7397 changes 
7398 were made to help ensure that the reference counts are kept in proper 
7399 synchronization with reality. Rafael J. Wysocki.
7400
7401 1) Ensure that GPEs are not enabled twice during initialization.
7402 2) Ensure that GPE enable masks stay in sync with the reference count.
7403 3) Do not inadvertently enable GPEs when writing GPE registers.
7404 4) Remove the internal wake reference counter and add new AcpiGpeWakeup 
7405 interface. This interface will set or clear individual GPEs for wakeup.
7406 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These 
7407 interfaces 
7408 are now used for "runtime" GPEs only.
7409
7410 Changed the behavior of the GPE install/remove handler interfaces. The 
7411 GPE 
7412 is 
7413 no longer disabled during this process, as it was found to cause problems 
7414 on 
7415 some machines. Rafael J. Wysocki.
7416
7417 Reverted a change introduced in version 20100528 to enable Embedded 
7418 Controller multi-byte transfers. This change was found to cause problems 
7419 with 
7420 Index Fields and possibly Bank Fields. It will be reintroduced when these 
7421 problems have been resolved.
7422
7423 Fixed a problem with references to Alias objects within Package Objects. 
7424
7425 reference to an Alias within the definition of a Package was not always 
7426 resolved properly. Aliases to objects like Processors, Thermal zones, 
7427 etc. 
7428 were resolved to the actual object instead of a reference to the object 
7429 as 
7430 it 
7431 should be. Package objects are only allowed to contain integer, string, 
7432 buffer, package, and reference objects. Redhat bugzilla 608648.
7433
7434 Example Code and Data Size: These are the sizes for the OS-independent 
7435 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7436 debug version of the code includes the debug output trace mechanism and 
7437 has a 
7438 much larger code and data size.
7439
7440   Previous Release:
7441     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7442     Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7443   Current Release:
7444     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7445     Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7446
7447 2) iASL Compiler/Disassembler and Tools:
7448
7449 iASL: Implemented a new compiler subsystem to allow definition and 
7450 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 
7451 These 
7452 are called "ACPI Data Tables", and the new compiler is the "Data Table 
7453 Compiler". This compiler is intended to simplify the existing error-prone 
7454 process of creating these tables for the BIOS, as well as allowing the 
7455 disassembly, modification, recompilation, and override of existing ACPI 
7456 data 
7457 tables. See the iASL User Guide for detailed information.
7458
7459 iASL: Implemented a new Template Generator option in support of the new 
7460 Data 
7461 Table Compiler. This option will create examples of all known ACPI tables 
7462 that can be used as the basis for table development. See the iASL 
7463 documentation and the -T option.
7464
7465 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 
7466 Descriptor Table).
7467
7468 Updated the Linux makefiles for iASL and AcpiExec to place the generated 
7469 object files in the local directory so that there can be no collisions 
7470 between the shared files between them that are generated with different 
7471 options.
7472
7473 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 
7474 Use 
7475 the #define __APPLE__ to enable this support.
7476
7477 ----------------------------------------
7478 28 May 2010. Summary of changes for version 20100528:
7479
7480 Note: The ACPI 4.0a specification was released on April 5, 2010 and is 
7481 available at www.acpi.info. This is primarily an errata release.
7482
7483 1) ACPI CA Core Subsystem:
7484
7485 Undefined ACPI tables: We are looking for the definitions for the 
7486 following 
7487 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7488
7489 Implemented support to enable multi-byte transfers for Embedded 
7490 Controller 
7491 (EC) operation regions. Previously, the maximum data size passed to the 
7492 EC 
7493 operation region handler was a single byte. There are often EC Fields 
7494 larger 
7495 than one byte that need to be transferred, and it is useful for the EC 
7496 driver 
7497 to lock these as a single transaction. This change enables single 
7498 transfers 
7499 larger than 8 bits. This effectively changes the access to the EC space 
7500 from 
7501 ByteAcc to AnyAcc, and will probably require changes to the host OS 
7502 Embedded 
7503 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7504 bit 
7505 transfers. Alexey Starikovskiy, Lin Ming
7506
7507 Implemented a performance enhancement for namespace search and access. 
7508 This 
7509 change enhances the performance of namespace searches and walks by adding 
7510
7511 backpointer to the parent in each namespace node. On large namespaces, 
7512 this 
7513 change can improve overall ACPI performance by up to 9X. Adding a pointer 
7514 to 
7515 each namespace node increases the overall size of the internal namespace 
7516 by 
7517 about 5%, since each namespace entry usually consists of both a namespace 
7518 node and an ACPI operand object. However, this is the first growth of the 
7519 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7520
7521 Implemented a performance optimization that reduces the number of 
7522 namespace 
7523 walks. On control method exit, only walk the namespace if the method is 
7524 known 
7525 to have created namespace objects outside of its local scope. Previously, 
7526 the 
7527 entire namespace was traversed on each control method exit. This change 
7528 can 
7529 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 
7530 Moore.
7531
7532 Added support to truncate I/O addresses to 16 bits for Windows 
7533 compatibility. 
7534 Some ASL code has been seen in the field that inadvertently has bits set 
7535 above bit 15. This feature is optional and is enabled if the BIOS 
7536 requests 
7537 any Windows OSI strings. It can also be enabled by the host OS. Matthew 
7538 Garrett, Bob Moore.
7539
7540 Added support to limit the maximum time for the ASL Sleep() operator. To 
7541 prevent accidental deep sleeps, limit the maximum time that Sleep() will 
7542 actually sleep. Configurable, the default maximum is two seconds. ACPICA 
7543 bugzilla 854.
7544
7545 Added run-time validation support for the _WDG and_WED Microsoft 
7546 predefined 
7547 methods. These objects are defined by "Windows Instrumentation", and are 
7548 not 
7549 part of the ACPI spec. ACPICA BZ 860.
7550
7551 Expanded all statistic counters used during namespace and device 
7552 initialization from 16 to 32 bits in order to support very large 
7553 namespaces.
7554
7555 Replaced all instances of %d in printf format specifiers with %u since 
7556 nearly 
7557 all integers in ACPICA are unsigned.
7558
7559 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 
7560 returned 
7561 as AE_NO_HANDLER.
7562
7563 Example Code and Data Size: These are the sizes for the OS-independent 
7564 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7565 debug version of the code includes the debug output trace mechanism and 
7566 has a 
7567 much larger code and data size.
7568
7569   Previous Release:
7570     Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7571     Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7572   Current Release:
7573     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7574     Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7575
7576 2) iASL Compiler/Disassembler and Tools:
7577
7578 iASL: Added compiler support for the _WDG and_WED Microsoft predefined 
7579 methods. These objects are defined by "Windows Instrumentation", and are 
7580 not 
7581 part of the ACPI spec. ACPICA BZ 860.
7582
7583 AcpiExec: added option to disable the memory tracking mechanism. The -dt 
7584 option will disable the tracking mechanism, which improves performance 
7585 considerably.
7586
7587 AcpiExec: Restructured the command line options into -d (disable) and -e 
7588 (enable) options.
7589
7590 ----------------------------------------
7591 28 April 2010. Summary of changes for version 20100428:
7592
7593 1) ACPI CA Core Subsystem:
7594
7595 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 
7596 including FADT-based and GPE Block Devices, execute any _PRW methods in 
7597 the 
7598 new table, and process any _Lxx/_Exx GPE methods in the new table. Any 
7599 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 
7600 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 
7601 Devices. Provides compatibility with other ACPI implementations. Two new 
7602 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 
7603 Moore.
7604
7605 Fixed a regression introduced in version 20100331 within the table 
7606 manager 
7607 where initial table loading could fail. This was introduced in the fix 
7608 for 
7609 AcpiReallocateRootTable. Also, renamed some of fields in the table 
7610 manager 
7611 data structures to clarify their meaning and use.
7612
7613 Fixed a possible allocation overrun during internal object copy in 
7614 AcpiUtCopySimpleObject. The original code did not correctly handle the 
7615 case 
7616 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 
7617 847.
7618
7619 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 
7620 possible access beyond end-of-allocation. Also, now fully validate 
7621 descriptor 
7622 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7623
7624 Example Code and Data Size: These are the sizes for the OS-independent 
7625 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7626 debug version of the code includes the debug output trace mechanism and 
7627 has a 
7628 much larger code and data size.
7629
7630   Previous Release:
7631     Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7632     Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7633   Current Release:
7634     Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7635     Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7636
7637 2) iASL Compiler/Disassembler and Tools:
7638
7639 iASL: Implemented Min/Max/Len/Gran validation for address resource 
7640 descriptors. This change implements validation for the address fields 
7641 that 
7642 are common to all address-type resource descriptors. These checks are 
7643 implemented: Checks for valid Min/Max, length within the Min/Max window, 
7644 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 
7645 per 
7646 table 6-40 in the ACPI 4.0a specification. Also split the large 
7647 aslrestype1.c 
7648 and aslrestype2.c files into five new files. ACPICA BZ 840.
7649
7650 iASL: Added support for the _Wxx predefined names. This support was 
7651 missing 
7652 and these names were not recognized by the compiler as valid predefined 
7653 names. ACPICA BZ 851.
7654
7655 iASL: Added an error for all predefined names that are defined to return 
7656 no 
7657 value and thus must be implemented as Control Methods. These include all 
7658 of 
7659 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 
7660 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7661
7662 iASL: Implemented the -ts option to emit hex AML data in ASL format, as 
7663 an 
7664 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 
7665 be 
7666 dynamically loaded via the Load() operator. Also cleaned up output for 
7667 the 
7668 -
7669 ta and -tc options. ACPICA BZ 853.
7670
7671 Tests: Added a new file with examples of extended iASL error checking. 
7672 Demonstrates the advanced error checking ability of the iASL compiler. 
7673 Available at tests/misc/badcode.asl.
7674
7675 ----------------------------------------
7676 31 March 2010. Summary of changes for version 20100331:
7677
7678 1) ACPI CA Core Subsystem:
7679
7680 Completed a major update for the GPE support in order to improve support 
7681 for 
7682 shared GPEs and to simplify both host OS and ACPICA code. Added a 
7683 reference 
7684 count mechanism to support shared GPEs that require multiple device 
7685 drivers. 
7686 Several external interfaces have changed. One external interface has been 
7687 removed. One new external interface was added. Most of the GPE external 
7688 interfaces now use the GPE spinlock instead of the events mutex (and the 
7689 Flags parameter for many GPE interfaces has been removed.) See the 
7690 updated 
7691 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 
7692 Rafael 
7693 Wysocki. ACPICA BZ 831.
7694
7695 Changed:
7696     AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7697 Removed:
7698     AcpiSetGpeType
7699 New:
7700     AcpiSetGpe
7701
7702 Implemented write support for DataTable operation regions. These regions 
7703 are 
7704 defined via the DataTableRegion() operator. Previously, only read support 
7705 was 
7706 implemented. The ACPI specification allows DataTableRegions to be 
7707 read/write, 
7708 however.
7709
7710 Implemented a new subsystem option to force a copy of the DSDT to local 
7711 memory. Optionally copy the entire DSDT to local memory (instead of 
7712 simply 
7713 mapping it.) There are some (albeit very rare) BIOSs that corrupt or 
7714 replace 
7715 the original DSDT, creating the need for this option. Default is FALSE, 
7716 do 
7717 not copy the DSDT.
7718
7719 Implemented detection of a corrupted or replaced DSDT. This change adds 
7720 support to detect a DSDT that has been corrupted and/or replaced from 
7721 outside 
7722 the OS (by firmware). This is typically catastrophic for the system, but 
7723 has 
7724 been seen on some machines. Once this problem has been detected, the DSDT 
7725 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7726
7727 Fixed two problems with AcpiReallocateRootTable during the root table 
7728 copy. 
7729 When copying the root table to the new allocation, the length used was 
7730 incorrect. The new size was used instead of the current table size, 
7731 meaning 
7732 too much data was copied. Also, the count of available slots for ACPI 
7733 tables 
7734 was not set correctly. Alexey Starikovskiy, Bob Moore.
7735
7736 Example Code and Data Size: These are the sizes for the OS-independent 
7737 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7738 debug version of the code includes the debug output trace mechanism and 
7739 has a 
7740 much larger code and data size.
7741
7742   Previous Release:
7743     Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7744     Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7745   Current Release:
7746     Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7747     Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7748
7749 2) iASL Compiler/Disassembler and Tools:
7750
7751 iASL: Implement limited typechecking for values returned from predefined 
7752 control methods. The type of any returned static (unnamed) object is now 
7753 validated. For example, Return(1). ACPICA BZ 786.
7754
7755 iASL: Fixed a predefined name object verification regression. Fixes a 
7756 problem 
7757 introduced in version 20100304. An error is incorrectly generated if a 
7758 predefined name is declared as a static named object with a value defined 
7759 using the keywords "Zero", "One", or "Ones". Lin Ming.
7760
7761 iASL: Added Windows 7 support for the -g option (get local ACPI tables) 
7762 by 
7763 reducing the requested registry access rights. ACPICA BZ 842.
7764
7765 Disassembler: fixed a possible fault when generating External() 
7766 statements. 
7767 Introduced in commit ae7d6fd: Properly handle externals with parent-
7768 prefix 
7769 (carat). Fixes a string length allocation calculation. Lin Ming.
7770
7771 ----------------------------------------
7772 04 March 2010. Summary of changes for version 20100304:
7773
7774 1) ACPI CA Core Subsystem:
7775
7776 Fixed a possible problem with the AML Mutex handling function 
7777 AcpiExReleaseMutex where the function could fault under the very rare 
7778 condition when the interpreter has blocked, the interpreter lock is 
7779 released, 
7780 the interpreter is then reentered via the same thread, and attempts to 
7781 acquire an AML mutex that was previously acquired. FreeBSD report 140979. 
7782 Lin 
7783 Ming.
7784
7785 Implemented additional configuration support for the AML "Debug Object". 
7786 Output from the debug object can now be enabled via a global variable, 
7787 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 
7788 debugging. 
7789 This debug output is now available in the release version of ACPICA 
7790 instead 
7791 of just the debug version. Also, the entire debug output module can now 
7792 be 
7793 configured out of the ACPICA build if desired. One new file added, 
7794 executer/exdebug.c. Lin Ming, Bob Moore.
7795
7796 Added header support for the ACPI MCHI table (Management Controller Host 
7797 Interface Table). This table was added in ACPI 4.0, but the defining 
7798 document 
7799 has only recently become available.
7800
7801 Standardized output of integer values for ACPICA warnings/errors. Always 
7802 use 
7803 0x prefix for hex output, always use %u for unsigned integer decimal 
7804 output. 
7805 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 
7806 400 
7807 invocations.) These invocations were converted from the original 
7808 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
7809
7810 Example Code and Data Size: These are the sizes for the OS-independent 
7811 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7812 debug version of the code includes the debug output trace mechanism and 
7813 has a 
7814 much larger code and data size.
7815
7816   Previous Release:
7817     Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7818     Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7819   Current Release:
7820     Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7821     Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7822
7823 2) iASL Compiler/Disassembler and Tools:
7824
7825 iASL: Implemented typechecking support for static (non-control method) 
7826 predefined named objects that are declared with the Name() operator. For 
7827 example, the type of this object is now validated to be of type Integer: 
7828 Name(_BBN, 1). This change migrates the compiler to using the core 
7829 predefined 
7830 name table instead of maintaining a local version. Added a new file, 
7831 aslpredef.c. ACPICA BZ 832.
7832
7833 Disassembler: Added support for the ACPI 4.0 MCHI table.
7834
7835 ----------------------------------------
7836 21 January 2010. Summary of changes for version 20100121:
7837
7838 1) ACPI CA Core Subsystem:
7839
7840 Added the 2010 copyright to all module headers and signons. This affects 
7841 virtually every file in the ACPICA core subsystem, the iASL compiler, the 
7842 tools/utilities, and the test suites.
7843
7844 Implemented a change to the AcpiGetDevices interface to eliminate 
7845 unnecessary 
7846 invocations of the _STA method. In the case where a specific _HID is 
7847 requested, do not run _STA until a _HID match is found. This eliminates 
7848 potentially dozens of _STA calls during a search for a particular 
7849 device/HID, 
7850 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7851
7852 Implemented an additional repair for predefined method return values. 
7853 Attempt 
7854 to repair unexpected NULL elements within returned Package objects. 
7855 Create 
7856 an 
7857 Integer of value zero, a NULL String, or a zero-length Buffer as 
7858 appropriate. 
7859 ACPICA BZ 818. Lin Ming, Bob Moore.
7860
7861 Removed the obsolete ACPI_INTEGER data type. This type was introduced as 
7862 the 
7863 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 
7864 (with 
7865 64-bit AML integers). It is now obsolete and this change removes it from 
7866 the 
7867 ACPICA code base, replaced by UINT64. The original typedef has been 
7868 retained 
7869 for now for compatibility with existing device driver code. ACPICA BZ 
7870 824.
7871
7872 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 
7873 in 
7874 the parse tree object.
7875
7876 Added additional warning options for the gcc-4 generation. Updated the 
7877 source 
7878 accordingly. This includes some code restructuring to eliminate 
7879 unreachable 
7880 code, elimination of some gotos, elimination of unused return values, 
7881 some 
7882 additional casting, and removal of redundant declarations.
7883
7884 Example Code and Data Size: These are the sizes for the OS-independent 
7885 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7886 debug version of the code includes the debug output trace mechanism and 
7887 has a 
7888 much larger code and data size.
7889
7890   Previous Release:
7891     Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7892     Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7893   Current Release:
7894     Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7895     Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7896
7897 2) iASL Compiler/Disassembler and Tools:
7898
7899 No functional changes for this release.
7900
7901 ----------------------------------------
7902 14 December 2009. Summary of changes for version 20091214:
7903
7904 1) ACPI CA Core Subsystem:
7905
7906 Enhanced automatic data type conversions for predefined name repairs. 
7907 This 
7908 change expands the automatic repairs/conversions for predefined name 
7909 return 
7910 values to make Integers, Strings, and Buffers fully interchangeable. 
7911 Also, 
7912
7913 Buffer can be converted to a Package of Integers if necessary. The 
7914 nsrepair.c 
7915 module was completely restructured. Lin Ming, Bob Moore.
7916
7917 Implemented automatic removal of null package elements during predefined 
7918 name 
7919 repairs. This change will automatically remove embedded and trailing NULL 
7920 package elements from returned package objects that are defined to 
7921 contain 
7922
7923 variable number of sub-packages. The driver is then presented with a 
7924 package 
7925 with no null elements to deal with. ACPICA BZ 819.
7926
7927 Implemented a repair for the predefined _FDE and _GTM names. The expected 
7928 return value for both names is a Buffer of 5 DWORDs. This repair fixes 
7929 two 
7930 possible problems (both seen in the field), where a package of integers 
7931 is 
7932 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 
7933 Kim.
7934
7935 Implemented additional module-level code support. This change will 
7936 properly 
7937 execute module-level code that is not at the root of the namespace (under 
7938
7939 Device object, etc.). Now executes the code within the current scope 
7940 instead 
7941 of the root. ACPICA BZ 762. Lin Ming.
7942
7943 Fixed possible mutex acquisition errors when running _REG methods. Fixes 
7944
7945 problem where mutex errors can occur when running a _REG method that is 
7946 in 
7947 the same scope as a method-defined operation region or an operation 
7948 region 
7949 under a module-level IF block. This type of code is rare, so the problem 
7950 has 
7951 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7952
7953 Fixed a possible memory leak during module-level code execution. An 
7954 object 
7955 could be leaked for each block of executed module-level code if the 
7956 interpreter slack mode is enabled This change deletes any implicitly 
7957 returned 
7958 object from the module-level code block. Lin Ming.
7959
7960 Removed messages for successful predefined repair(s). The repair 
7961 mechanism 
7962 was considered too wordy. Now, messages are only unconditionally emitted 
7963 if 
7964 the return object cannot be repaired. Existing messages for successful 
7965 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 
7966 827.
7967
7968 Example Code and Data Size: These are the sizes for the OS-independent 
7969 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7970 debug version of the code includes the debug output trace mechanism and 
7971 has a 
7972 much larger code and data size.
7973
7974   Previous Release:
7975     Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7976     Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7977   Current Release:
7978     Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7979     Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7980
7981 2) iASL Compiler/Disassembler and Tools:
7982
7983 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 
7984 files 
7985 were no longer automatically removed at the termination of the compile.
7986
7987 acpiexec: Implemented the -f option to specify default region fill value. 
7988 This option specifies the value used to initialize buffers that simulate 
7989 operation regions. Default value is zero. Useful for debugging problems 
7990 that 
7991 depend on a specific initial value for a region or field.
7992
7993 ----------------------------------------
7994 12 November 2009. Summary of changes for version 20091112:
7995
7996 1) ACPI CA Core Subsystem:
7997
7998 Implemented a post-order callback to AcpiWalkNamespace. The existing 
7999 interface only has a pre-order callback. This change adds an additional 
8000 parameter for a post-order callback which will be more useful for bus 
8001 scans. 
8002 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8003
8004 Modified the behavior of the operation region memory mapping cache for 
8005 SystemMemory. Ensure that the memory mappings created for operation 
8006 regions 
8007 do not cross 4K page boundaries. Crossing a page boundary while mapping 
8008 regions can cause kernel warnings on some hosts if the pages have 
8009 different 
8010 attributes. Such regions are probably BIOS bugs, and this is the 
8011 workaround. 
8012 Linux BZ 14445. Lin Ming.
8013
8014 Implemented an automatic repair for predefined methods that must return 
8015 sorted lists. This change will repair (by sorting) packages returned by 
8016 _ALR, 
8017 _PSS, and _TSS. Drivers can now assume that the packages are correctly 
8018 sorted 
8019 and do not contain NULL package elements. Adds one new file, 
8020 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8021
8022 Fixed a possible fault during predefined name validation if a return 
8023 Package 
8024 object contains NULL elements. Also adds a warning if a NULL element is 
8025 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 
8026 may 
8027 include repair or removal of all such NULL elements where possible.
8028
8029 Implemented additional module-level executable AML code support. This 
8030 change 
8031 will execute module-level code that is not at the root of the namespace 
8032 (under a Device object, etc.) at table load time. Module-level executable 
8033 AML 
8034 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8035
8036 Implemented a new internal function to create Integer objects. This 
8037 function 
8038 simplifies miscellaneous object creation code. ACPICA BZ 823.
8039
8040 Reduced the severity of predefined repair messages, Warning to Info. 
8041 Since 
8042 the object was successfully repaired, a warning is too severe. Reduced to 
8043 an 
8044 info message for now. These messages may eventually be changed to debug-
8045 only. 
8046 ACPICA BZ 812.
8047
8048 Example Code and Data Size: These are the sizes for the OS-independent 
8049 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8050 debug version of the code includes the debug output trace mechanism and 
8051 has a 
8052 much larger code and data size.
8053
8054   Previous Release:
8055     Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8056     Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8057   Current Release:
8058     Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8059     Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8060
8061 2) iASL Compiler/Disassembler and Tools:
8062
8063 iASL: Implemented Switch() with While(1) so that Break works correctly. 
8064 This 
8065 change correctly implements the Switch operator with a surrounding 
8066 While(1) 
8067 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8068
8069 iASL: Added a message if a package initializer list is shorter than 
8070 package 
8071 length. Adds a new remark for a Package() declaration if an initializer 
8072 list 
8073 exists, but is shorter than the declared length of the package. Although 
8074 technically legal, this is probably a coding error and it is seen in the 
8075 field. ACPICA BZ 815. Lin Ming, Bob Moore.
8076
8077 iASL: Fixed a problem where the compiler could fault after the maximum 
8078 number 
8079 of errors was reached (200).
8080
8081 acpixtract: Fixed a possible warning for pointer cast if the compiler 
8082 warning 
8083 level set very high.
8084
8085 ----------------------------------------
8086 13 October 2009. Summary of changes for version 20091013:
8087
8088 1) ACPI CA Core Subsystem:
8089
8090 Fixed a problem where an Operation Region _REG method could be executed 
8091 more 
8092 than once. If a custom address space handler is installed by the host 
8093 before 
8094 the "initialize operation regions" phase of the ACPICA initialization, 
8095 any 
8096 _REG methods for that address space could be executed twice. This change 
8097 fixes the problem. ACPICA BZ 427. Lin Ming.
8098
8099 Fixed a possible memory leak for the Scope() ASL operator. When the exact 
8100 invocation of "Scope(\)" is executed (change scope to root), one internal 
8101 operand object was leaked. Lin Ming.
8102
8103 Implemented a run-time repair for the _MAT predefined method. If the _MAT 
8104 return value is defined as a Field object in the AML, and the field
8105 size is less than or equal to the default width of an integer (32 or 
8106 64),_MAT 
8107 can incorrectly return an Integer instead of a Buffer. ACPICA now 
8108 automatically repairs this problem. ACPICA BZ 810.
8109
8110 Implemented a run-time repair for the _BIF and _BIX predefined methods. 
8111 The 
8112 "OEM Information" field is often incorrectly returned as an Integer with 
8113 value zero if the field is not supported by the platform. This is due to 
8114 an 
8115 ambiguity in the ACPI specification. The field should always be a string. 
8116 ACPICA now automatically repairs this problem by returning a NULL string 
8117 within the returned Package. ACPICA BZ 807.
8118
8119 Example Code and Data Size: These are the sizes for the OS-independent 
8120 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8121 debug version of the code includes the debug output trace mechanism and 
8122 has a 
8123 much larger code and data size.
8124
8125   Previous Release:
8126     Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8127     Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8128   Current Release:
8129     Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8130     Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8131
8132 2) iASL Compiler/Disassembler and Tools:
8133
8134 Disassembler: Fixed a problem where references to external symbols that 
8135 contained one or more parent-prefixes (carats) were not handled 
8136 correctly, 
8137 possibly causing a fault. ACPICA BZ 806. Lin Ming.
8138
8139 Disassembler: Restructured the code so that all functions that handle 
8140 external symbols are in a single module. One new file is added, 
8141 common/dmextern.c.
8142
8143 AML Debugger: Added a max count argument for the Batch command (which 
8144 executes multiple predefined methods within the namespace.)
8145
8146 iASL: Updated the compiler documentation (User Reference.) Available at 
8147 http://www.acpica.org/documentation/. ACPICA BZ 750.
8148
8149 AcpiXtract: Updated for Lint and other formatting changes. Close all open 
8150 files.
8151
8152 ----------------------------------------
8153 03 September 2009. Summary of changes for version 20090903:
8154
8155 1) ACPI CA Core Subsystem:
8156
8157 For Windows Vista compatibility, added the automatic execution of an _INI 
8158 method located at the namespace root (\_INI). This method is executed at 
8159 table load time. This support is in addition to the automatic execution 
8160 of 
8161 \_SB._INI. Lin Ming.
8162
8163 Fixed a possible memory leak in the interpreter for AML package objects 
8164 if 
8165 the package initializer list is longer than the defined size of the 
8166 package. 
8167 This apparently can only happen if the BIOS changes the package size on 
8168 the 
8169 fly (seen in a _PSS object), as ASL compilers do not allow this. The 
8170 interpreter will truncate the package to the defined size (and issue an 
8171 error 
8172 message), but previously could leave the extra objects undeleted if they 
8173 were 
8174 pre-created during the argument processing (such is the case if the 
8175 package 
8176 consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8177
8178 Fixed a problem seen when a Buffer or String is stored to itself via ASL. 
8179 This has been reported in the field. Previously, ACPICA would zero out 
8180 the 
8181 buffer/string. Now, the operation is treated as a noop. Provides Windows 
8182 compatibility. ACPICA BZ 803. Lin Ming.
8183
8184 Removed an extraneous error message for ASL constructs of the form 
8185 Store(LocalX,LocalX) when LocalX is uninitialized. These curious 
8186 statements 
8187 are seen in many BIOSs and are once again treated as NOOPs and no error 
8188 is 
8189 emitted when they are encountered. ACPICA BZ 785.
8190
8191 Fixed an extraneous warning message if a _DSM reserved method returns a 
8192 Package object. _DSM can return any type of object, so validation on the 
8193 return type cannot be performed. ACPICA BZ 802.
8194
8195 Example Code and Data Size: These are the sizes for the OS-independent 
8196 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8197 debug version of the code includes the debug output trace mechanism and 
8198 has a 
8199 much larger code and data size.
8200
8201   Previous Release:
8202     Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8203     Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8204   Current Release:
8205     Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8206     Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8207
8208 2) iASL Compiler/Disassembler and Tools:
8209
8210 iASL: Fixed a problem with the use of the Alias operator and Resource 
8211 Templates. The correct alias is now constructed and no error is emitted. 
8212 ACPICA BZ 738.
8213
8214 iASL: Implemented the -I option to specify additional search directories 
8215 for 
8216 include files. Allows multiple additional search paths for include files. 
8217 Directories are searched in the order specified on the command line 
8218 (after 
8219 the local directory is searched.) ACPICA BZ 800.
8220
8221 iASL: Fixed a problem where the full pathname for include files was not 
8222 emitted for warnings/errors. This caused the IDE support to not work 
8223 properly. ACPICA BZ 765.
8224
8225 iASL: Implemented the -@ option to specify a Windows-style response file 
8226 containing additional command line options. ACPICA BZ 801.
8227
8228 AcpiExec: Added support to load multiple AML files simultaneously (such 
8229 as 
8230
8231 DSDT and multiple SSDTs). Also added support for wildcards within the AML 
8232 pathname. These features allow all machine tables to be easily loaded and 
8233 debugged together. ACPICA BZ 804.
8234
8235 Disassembler: Added missing support for disassembly of HEST table Error 
8236 Bank 
8237 subtables. 
8238
8239 ----------------------------------------
8240 30 July 2009. Summary of changes for version 20090730:
8241
8242 The ACPI 4.0 implementation for ACPICA is complete with this release.
8243
8244 1) ACPI CA Core Subsystem:
8245
8246 ACPI 4.0: Added header file support for all new and changed ACPI tables. 
8247 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 
8248 new 
8249 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 
8250 BERT, 
8251 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 
8252 There 
8253 have been some ACPI 4.0 changes to other existing tables. Split the large 
8254 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8255
8256 ACPI 4.0: Implemented predefined name validation for all new names. There 
8257 are 
8258 31 new names in ACPI 4.0. The predefined validation module was split into 
8259 two 
8260 files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8261
8262 Implemented support for so-called "module-level executable code". This is 
8263 executable AML code that exists outside of any control method and is 
8264 intended 
8265 to be executed at table load time. Although illegal since ACPI 2.0, this 
8266 type 
8267 of code still exists and is apparently still being created. Blocks of 
8268 this 
8269 code are now detected and executed as intended. Currently, the code 
8270 blocks 
8271 must exist under either an If, Else, or While construct; these are the 
8272 typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8273
8274 Implemented an automatic dynamic repair for predefined names that return 
8275 nested Package objects. This applies to predefined names that are defined 
8276 to 
8277 return a variable-length Package of sub-packages. If the number of sub-
8278 packages is one, BIOS code is occasionally seen that creates a simple 
8279 single 
8280 package with no sub-packages. This code attempts to fix the problem by 
8281 wrapping a new package object around the existing package. These methods 
8282 can 
8283 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 
8284 BZ 
8285 790.
8286
8287 Fixed a regression introduced in 20090625 for the AcpiGetDevices 
8288 interface. 
8289 The _HID/_CID matching was broken and no longer matched IDs correctly. 
8290 ACPICA 
8291 BZ 793.
8292
8293 Fixed a problem with AcpiReset where the reset would silently fail if the 
8294 register was one of the protected I/O ports. AcpiReset now bypasses the 
8295 port 
8296 validation mechanism. This may eventually be driven into the 
8297 AcpiRead/Write 
8298 interfaces.
8299
8300 Fixed a regression related to the recent update of the AcpiRead/Write 
8301 interfaces. A sleep/suspend could fail if the optional PM2 Control 
8302 register 
8303 does not exist during an attempt to write the Bus Master Arbitration bit. 
8304 (However, some hosts already delete the code that writes this bit, and 
8305 the 
8306 code may in fact be obsolete at this date.) ACPICA BZ 799.
8307
8308 Fixed a problem where AcpiTerminate could fault if inadvertently called 
8309 twice 
8310 in succession. ACPICA BZ 795.
8311
8312 Example Code and Data Size: These are the sizes for the OS-independent 
8313 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8314 debug version of the code includes the debug output trace mechanism and 
8315 has a 
8316 much larger code and data size.
8317
8318   Previous Release:
8319     Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8320     Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8321   Current Release:
8322     Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8323     Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8324
8325 2) iASL Compiler/Disassembler and Tools:
8326
8327 ACPI 4.0: Implemented disassembler support for all new ACPI tables and 
8328 changes to existing tables. ACPICA BZ 775.
8329
8330 ----------------------------------------
8331 25 June 2009. Summary of changes for version 20090625:
8332
8333 The ACPI 4.0 Specification was released on June 16 and is available at 
8334 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 
8335 continue for the next few releases.
8336
8337 1) ACPI CA Core Subsystem:
8338
8339 ACPI 4.0: Implemented interpreter support for the IPMI operation region 
8340 address space. Includes support for bi-directional data buffers and an 
8341 IPMI 
8342 address space handler (to be installed by an IPMI device driver.) ACPICA 
8343 BZ 
8344 773. Lin Ming.
8345
8346 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 
8347 Includes 
8348 support in both the header files and the disassembler.
8349
8350 Completed a major update for the AcpiGetObjectInfo external interface. 
8351 Changes include:
8352  - Support for variable, unlimited length HID, UID, and CID strings.
8353  - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 
8354 etc.)
8355  - Call the _SxW power methods on behalf of a device object.
8356  - Determine if a device is a PCI root bridge.
8357  - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8358 These changes will require an update to all callers of this interface. 
8359 See 
8360 the updated ACPICA Programmer Reference for details. One new source file 
8361 has 
8362 been added - utilities/utids.c. ACPICA BZ 368, 780.
8363
8364 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 
8365 transfers. The Value parameter has been extended from 32 bits to 64 bits 
8366 in 
8367 order to support new ACPI 4.0 tables. These changes will require an 
8368 update 
8369 to 
8370 all callers of these interfaces. See the ACPICA Programmer Reference for 
8371 details. ACPICA BZ 768.
8372
8373 Fixed several problems with AcpiAttachData. The handler was not invoked 
8374 when 
8375 the host node was deleted. The data sub-object was not automatically 
8376 deleted 
8377 when the host node was deleted. The interface to the handler had an 
8378 unused 
8379 parameter, this was removed. ACPICA BZ 778.
8380
8381 Enhanced the function that dumps ACPI table headers. All non-printable 
8382 characters in the string fields are now replaced with '?' (Signature, 
8383 OemId, 
8384 OemTableId, and CompilerId.) ACPI tables with non-printable characters in 
8385 these fields are occasionally seen in the field. ACPICA BZ 788.
8386
8387 Fixed a problem with predefined method repair code where the code that 
8388 attempts to repair/convert an object of incorrect type is only executed 
8389 on 
8390 the first time the predefined method is called. The mechanism that 
8391 disables 
8392 warnings on subsequent calls was interfering with the repair mechanism. 
8393 ACPICA BZ 781.
8394
8395 Fixed a possible memory leak in the predefined validation/repair code 
8396 when 
8397
8398 buffer is automatically converted to an expected string object.
8399
8400 Removed obsolete 16-bit files from the distribution and from the current 
8401 git 
8402 tree head. ACPICA BZ 776.
8403
8404 Example Code and Data Size: These are the sizes for the OS-independent 
8405 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8406 debug version of the code includes the debug output trace mechanism and 
8407 has a 
8408 much larger code and data size.
8409
8410   Previous Release:
8411     Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8412     Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8413   Current Release:
8414     Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8415     Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8416
8417 2) iASL Compiler/Disassembler and Tools:
8418
8419 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 
8420 operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8421
8422 ACPI 4.0: iASL - implemented compile-time validation support for all new 
8423 predefined names and control methods (31 total). ACPICA BZ 769.
8424
8425 ----------------------------------------
8426 21 May 2009. Summary of changes for version 20090521:
8427
8428 1) ACPI CA Core Subsystem:
8429
8430 Disabled the preservation of the SCI enable bit in the PM1 control 
8431 register. 
8432 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 
8433 to 
8434 be 
8435 a "preserved" bit - "OSPM always preserves this bit position", section 
8436 4.7.3.2.1. However, some machines fail if this bit is in fact preserved 
8437 because the bit needs to be explicitly set by the OS as a workaround. No 
8438 machines fail if the bit is not preserved. Therefore, ACPICA no longer 
8439 attempts to preserve this bit.
8440
8441 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 
8442 incorrectly formed _PRT package could cause a fault. Added validation to 
8443 ensure that each package element is actually a sub-package.
8444
8445 Implemented a new interface to install or override a single control 
8446 method, 
8447 AcpiInstallMethod. This interface is useful when debugging in order to 
8448 repair 
8449 an existing method or to install a missing method without having to 
8450 override 
8451 the entire ACPI table. See the ACPICA Programmer Reference for use and 
8452 examples. Lin Ming, Bob Moore.
8453
8454 Fixed several reference count issues with the DdbHandle object that is 
8455 created from a Load or LoadTable operator. Prevent premature deletion of 
8456 the 
8457 object. Also, mark the object as invalid once the table has been 
8458 unloaded. 
8459 This is needed because the handle itself may not be deleted after the 
8460 table 
8461 unload, depending on whether it has been stored in a named object by the 
8462 caller. Lin Ming.
8463
8464 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 
8465 mutexes of the same sync level are acquired but then not released in 
8466 strict 
8467 opposite order, the internally maintained Current Sync Level becomes 
8468 confused 
8469 and can cause subsequent execution errors. ACPICA BZ 471.
8470
8471 Changed the allowable release order for ASL mutex objects. The ACPI 4.0 
8472 specification has been changed to make the SyncLevel for mutex objects 
8473 more 
8474 useful. When releasing a mutex, the SyncLevel of the mutex must now be 
8475 the 
8476 same as the current sync level. This makes more sense than the previous 
8477 rule 
8478 (SyncLevel less than or equal). This change updates the code to match the 
8479 specification.
8480
8481 Fixed a problem with the local version of the AcpiOsPurgeCache function. 
8482 The 
8483 (local) cache must be locked during all cache object deletions. Andrew 
8484 Baumann.
8485
8486 Updated the Load operator to use operation region interfaces. This 
8487 replaces 
8488 direct memory mapping with region access calls. Now, all region accesses 
8489 go 
8490 through the installed region handler as they should.
8491
8492 Simplified and optimized the NsGetNextNode function. Reduced parameter 
8493 count 
8494 and reduced code for this frequently used function.
8495
8496 Example Code and Data Size: These are the sizes for the OS-independent 
8497 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8498 debug version of the code includes the debug output trace mechanism and 
8499 has a 
8500 much larger code and data size.
8501
8502   Previous Release:
8503     Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8504     Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8505   Current Release:
8506     Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8507     Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8508
8509 2) iASL Compiler/Disassembler and Tools:
8510
8511 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 
8512 problems 
8513 with sub-table disassembly and handling invalid sub-tables. Attempt 
8514 recovery 
8515 after an invalid sub-table ID.
8516
8517 ----------------------------------------
8518 22 April 2009. Summary of changes for version 20090422:
8519
8520 1) ACPI CA Core Subsystem:
8521
8522 Fixed a compatibility issue with the recently released I/O port 
8523 protection 
8524 mechanism. For windows compatibility, 1) On a port protection violation, 
8525 simply ignore the request and do not return an exception (allow the 
8526 control 
8527 method to continue execution.) 2) If only part of the request overlaps a 
8528 protected port, read/write the individual ports that are not protected. 
8529 Linux 
8530 BZ 13036. Lin Ming
8531
8532 Enhanced the execution of the ASL/AML BreakPoint operator so that it 
8533 actually 
8534 breaks into the AML debugger if the debugger is present. This matches the 
8535 ACPI-defined behavior.
8536
8537 Fixed several possible warnings related to the use of the configurable 
8538 ACPI_THREAD_ID. This type can now be configured as either an integer or a 
8539 pointer with no warnings. Also fixes several warnings in printf-like 
8540 statements for the 64-bit build when the type is configured as a pointer. 
8541 ACPICA BZ 766, 767.
8542
8543 Fixed a number of possible warnings when compiling with gcc 4+ (depending 
8544 on 
8545 warning options.) Examples include printf formats, aliasing, unused 
8546 globals, 
8547 missing prototypes, missing switch default statements, use of non-ANSI 
8548 library functions, use of non-ANSI constructs. See generate/unix/Makefile 
8549 for 
8550 a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8551
8552 Example Code and Data Size: These are the sizes for the OS-independent 
8553 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8554 debug version of the code includes the debug output trace mechanism and 
8555 has a 
8556 much larger code and data size.
8557
8558   Previous Release:
8559     Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8560     Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8561   Current Release:
8562     Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8563     Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8564
8565 2) iASL Compiler/Disassembler and Tools:
8566
8567 iASL: Fixed a generation warning from Bison 2.3 and fixed several 
8568 warnings 
8569 on 
8570 the 64-bit build.
8571
8572 iASL: Fixed a problem where the Unix/Linux versions of the compiler could 
8573 not 
8574 correctly digest Windows/DOS formatted files (with CR/LF).
8575
8576 iASL: Added a new option for "quiet mode" (-va) that produces only the 
8577 compilation summary, not individual errors and warnings. Useful for large 
8578 batch compilations.
8579
8580 AcpiExec: Implemented a new option (-z) to enable a forced 
8581 semaphore/mutex 
8582 timeout that can be used to detect hang conditions during execution of 
8583 AML 
8584 code (includes both internal semaphores and AML-defined mutexes and 
8585 events.)
8586
8587 Added new makefiles for the generation of acpica in a generic unix-like 
8588 environment. These makefiles are intended to generate the acpica tools 
8589 and 
8590 utilities from the original acpica git source tree structure.
8591
8592 Test Suites: Updated and cleaned up the documentation files. Updated the 
8593 copyrights to 2009, affecting all source files. Use the new version of 
8594 iASL 
8595 with quiet mode. Increased the number of available semaphores in the 
8596 Windows 
8597 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 
8598 added 
8599 an alternate implementation of the semaphore timeout to allow aslts to 
8600 execute fully on Cygwin.
8601
8602 ----------------------------------------
8603 20 March 2009. Summary of changes for version 20090320:
8604
8605 1) ACPI CA Core Subsystem:
8606
8607 Fixed a possible race condition between AcpiWalkNamespace and dynamic 
8608 table 
8609 unloads. Added a reader/writer locking mechanism to allow multiple 
8610 concurrent 
8611 namespace walks (readers), but block a dynamic table unload until it can 
8612 gain 
8613 exclusive write access to the namespace. This fixes a problem where a 
8614 table 
8615 unload could (possibly catastrophically) delete the portion of the 
8616 namespace 
8617 that is currently being examined by a walk. Adds a new file, utlock.c, 
8618 that 
8619 implements the reader/writer lock mechanism. ACPICA BZ 749.
8620
8621 Fixed a regression introduced in version 20090220 where a change to the 
8622 FADT 
8623 handling could cause the ACPICA subsystem to access non-existent I/O 
8624 ports.
8625
8626 Modified the handling of FADT register and table (FACS/DSDT) addresses. 
8627 The 
8628 FADT can contain both 32-bit and 64-bit versions of these addresses. 
8629 Previously, the 64-bit versions were favored, meaning that if both 32 and 
8630 64 
8631 versions were valid, but not equal, the 64-bit version was used. This was 
8632 found to cause some machines to fail. Now, in this case, the 32-bit 
8633 version 
8634 is used instead. This now matches the Windows behavior.
8635
8636 Implemented a new mechanism to protect certain I/O ports. Provides 
8637 Microsoft 
8638 compatibility and protects the standard PC I/O ports from access via AML 
8639 code. Adds a new file, hwvalid.c
8640
8641 Fixed a possible extraneous warning message from the FADT support. The 
8642 message warns of a 32/64 length mismatch between the legacy and GAS 
8643 definitions for a register.
8644
8645 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 
8646 is 
8647 made obsolete by the port protection mechanism above. It was previously 
8648 used 
8649 to validate the entire address range of an operation region, which could 
8650 be 
8651 incorrect if the range included illegal ports, but fields within the 
8652 operation region did not actually access those ports. Validation is now 
8653 performed on a per-field basis instead of the entire region.
8654
8655 Modified the handling of the PM1 Status Register ignored bit (bit 11.) 
8656 Ignored bits must be "preserved" according to the ACPI spec. Usually, 
8657 this 
8658 means a read/modify/write when writing to the register. However, for 
8659 status 
8660 registers, writing a one means clear the event. Writing a zero means 
8661 preserve 
8662 the event (do not clear.) This behavior is clarified in the ACPI 4.0 
8663 spec, 
8664 and the ACPICA code now simply always writes a zero to the ignored bit.
8665
8666 Modified the handling of ignored bits for the PM1 A/B Control Registers. 
8667 As 
8668 per the ACPI specification, for the control registers, preserve 
8669 (read/modify/write) all bits that are defined as either reserved or 
8670 ignored.
8671
8672 Updated the handling of write-only bits in the PM1 A/B Control Registers. 
8673 When reading the register, zero the write-only bits as per the ACPI spec. 
8674 ACPICA BZ 443. Lin Ming.
8675
8676 Removed "Linux" from the list of supported _OSI strings. Linux no longer 
8677 wants to reply true to this request. The Windows strings are the only 
8678 paths 
8679 through the AML that are tested and known to work properly.
8680
8681   Previous Release:
8682     Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8683     Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8684   Current Release:
8685     Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8686     Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8687
8688 2) iASL Compiler/Disassembler and Tools:
8689
8690 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 
8691 and 
8692 aetables.c
8693
8694 ----------------------------------------
8695 20 February 2009. Summary of changes for version 20090220:
8696
8697 1) ACPI CA Core Subsystem:
8698
8699 Optimized the ACPI register locking. Removed locking for reads from the 
8700 ACPI 
8701 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 
8702 is 
8703 not required when reading the single-bit registers. The 
8704 AcpiGetRegisterUnlocked function is no longer needed and has been 
8705 removed. 
8706 This will improve performance for reads on these registers. ACPICA BZ 
8707 760.
8708
8709 Fixed the parameter validation for AcpiRead/Write. Now return 
8710 AE_BAD_PARAMETER if the input register pointer is null, and 
8711 AE_BAD_ADDRESS 
8712 if 
8713 the register has an address of zero. Previously, these cases simply 
8714 returned 
8715 AE_OK. For optional registers such as PM1B status/enable/control, the 
8716 caller 
8717 should check for a valid register address before calling. ACPICA BZ 748.
8718
8719 Renamed the external ACPI bit register access functions. Renamed 
8720 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 
8721 functions. The new names are AcpiReadBitRegister and 
8722 AcpiWriteBitRegister. 
8723 Also, restructured the code for these functions by simplifying the code 
8724 path 
8725 and condensing duplicate code to reduce code size.
8726
8727 Added new functions to transparently handle the possibly split PM1 A/B 
8728 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 
8729 functions 
8730 now handle the split registers for PM1 Status, Enable, and Control. 
8731 ACPICA 
8732 BZ 
8733 746.
8734
8735 Added a function to handle the PM1 control registers, 
8736 AcpiHwWritePm1Control. 
8737 This function writes both of the PM1 control registers (A/B). These 
8738 registers 
8739 are different than the PM1 A/B status and enable registers in that 
8740 different 
8741 values can be written to the A/B registers. Most notably, the SLP_TYP 
8742 bits 
8743 can be different, as per the values returned from the _Sx predefined 
8744 methods.
8745
8746 Removed an extra register write within AcpiHwClearAcpiStatus. This 
8747 function 
8748 was writing an optional PM1B status register twice. The existing call to 
8749 the 
8750 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 
8751 A/B 
8752 register. ACPICA BZ 751.
8753
8754 Split out the PM1 Status registers from the FADT. Added new globals for 
8755 these 
8756 registers (A/B), similar to the way the PM1 Enable registers are handled. 
8757 Instead of overloading the FADT Event Register blocks. This makes the 
8758 code 
8759 clearer and less prone to error.
8760
8761 Fixed the warning message for when the platform contains too many ACPI 
8762 tables 
8763 for the default size of the global root table data structure. The 
8764 calculation 
8765 for the truncation value was incorrect.
8766
8767 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 
8768 obsolete macro, since it is now a simple reference to ->common.type. 
8769 There 
8770 were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8771
8772 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 
8773 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 
8774 simply SLEEP_TYPE. ACPICA BZ 754.
8775
8776 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 
8777 function is only needed on 64-bit host operating systems and is thus not 
8778 included for 32-bit hosts.
8779
8780 Debug output: print the input and result for invocations of the _OSI 
8781 reserved 
8782 control method via the ACPI_LV_INFO debug level. Also, reduced some of 
8783 the 
8784 verbosity of this debug level. Len Brown.
8785
8786 Example Code and Data Size: These are the sizes for the OS-independent 
8787 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8788 debug version of the code includes the debug output trace mechanism and 
8789 has a 
8790 much larger code and data size.
8791
8792   Previous Release:
8793     Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8794     Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8795   Current Release:
8796     Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8797     Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8798
8799 2) iASL Compiler/Disassembler and Tools:
8800
8801 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 
8802 various legal performance profiles.
8803
8804 ----------------------------------------
8805 23 January 2009. Summary of changes for version 20090123:
8806
8807 1) ACPI CA Core Subsystem:
8808
8809 Added the 2009 copyright to all module headers and signons. This affects 
8810 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
8811 the tools/utilities.
8812
8813 Implemented a change to allow the host to override any ACPI table, 
8814 including 
8815 dynamically loaded tables. Previously, only the DSDT could be replaced by 
8816 the 
8817 host. With this change, the AcpiOsTableOverride interface is called for 
8818 each 
8819 table found in the RSDT/XSDT during ACPICA initialization, and also 
8820 whenever 
8821 a table is dynamically loaded via the AML Load operator.
8822
8823 Updated FADT flag definitions, especially the Boot Architecture flags.
8824
8825 Debugger: For the Find command, automatically pad the input ACPI name 
8826 with 
8827 underscores if the name is shorter than 4 characters. This enables a 
8828 match 
8829 with the actual namespace entry which is itself padded with underscores.
8830
8831 Example Code and Data Size: These are the sizes for the OS-independent 
8832 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8833 debug version of the code includes the debug output trace mechanism and 
8834 has a 
8835 much larger code and data size.
8836
8837   Previous Release:
8838     Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8839     Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8840   Current Release:
8841     Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8842     Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8843
8844 2) iASL Compiler/Disassembler and Tools:
8845
8846 Fix build error under Bison-2.4.
8847
8848 Dissasembler: Enhanced FADT support. Added decoding of the Boot 
8849 Architecture 
8850 flags. Now decode all flags, regardless of the FADT version. Flag output 
8851 includes the FADT version which first defined each flag.
8852
8853 The iASL -g option now dumps the RSDT to a file (in addition to the FADT 
8854 and 
8855 DSDT). Windows only.
8856
8857 ----------------------------------------
8858 04 December 2008. Summary of changes for version 20081204:
8859
8860 1) ACPI CA Core Subsystem:
8861
8862 The ACPICA Programmer Reference has been completely updated and revamped 
8863 for 
8864 this release. This includes updates to the external interfaces, OSL 
8865 interfaces, the overview sections, and the debugger reference.
8866
8867 Several new ACPICA interfaces have been implemented and documented in the 
8868 programmer reference:
8869 AcpiReset - Writes the reset value to the FADT-defined reset register.
8870 AcpiDisableAllGpes - Disable all available GPEs.
8871 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8872 AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8873 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8874 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8875 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8876
8877 Most of the public ACPI hardware-related interfaces have been moved to a 
8878 new 
8879 file, components/hardware/hwxface.c
8880
8881 Enhanced the FADT parsing and low-level ACPI register access: The ACPI 
8882 register lengths within the FADT are now used, and the low level ACPI 
8883 register access no longer hardcodes the ACPI register lengths. Given that 
8884 there may be some risk in actually trusting the FADT register lengths, a 
8885 run-
8886 time option was added to fall back to the default hardcoded lengths if 
8887 the 
8888 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 
8889 option is set to true for now, and a warning is issued if a suspicious 
8890 FADT 
8891 register length is overridden with the default value.
8892
8893 Fixed a reference count issue in NsRepairObject. This problem was 
8894 introduced 
8895 in version 20081031 as part of a fix to repair Buffer objects within 
8896 Packages. Lin Ming.
8897
8898 Added semaphore support to the Linux/Unix application OS-services layer 
8899 (OSL). ACPICA BZ 448. Lin Ming.
8900
8901 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 
8902 will 
8903 be implemented in the OSL, or will binary semaphores be used instead.
8904
8905 Example Code and Data Size: These are the sizes for the OS-independent 
8906 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8907 debug version of the code includes the debug output trace mechanism and 
8908 has a 
8909 much larger code and data size.
8910
8911   Previous Release:
8912     Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8913     Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8914   Current Release:
8915     Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8916     Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8917
8918 2) iASL Compiler/Disassembler and Tools:
8919
8920 iASL: Completed the '-e' option to include additional ACPI tables in 
8921 order 
8922 to 
8923 aid with disassembly and External statement generation. ACPICA BZ 742. 
8924 Lin 
8925 Ming.
8926
8927 iASL: Removed the "named object in while loop" error. The compiler cannot 
8928 determine how many times a loop will execute. ACPICA BZ 730.
8929
8930 Disassembler: Implemented support for FADT revision 2 (MS extension). 
8931 ACPICA 
8932 BZ 743.
8933
8934 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 
8935 MCFG).
8936
8937 ----------------------------------------
8938 31 October 2008. Summary of changes for version 20081031:
8939
8940 1) ACPI CA Core Subsystem:
8941
8942 Restructured the ACPICA header files into public/private. acpi.h now 
8943 includes 
8944 only the "public" acpica headers. All other acpica headers are "private" 
8945 and 
8946 should not be included by acpica users. One new file, accommon.h is used 
8947 to 
8948 include the commonly used private headers for acpica code generation. 
8949 Future 
8950 plans include moving all private headers to a new subdirectory.
8951
8952 Implemented an automatic Buffer->String return value conversion for 
8953 predefined ACPI methods. For these methods (such as _BIF), added 
8954 automatic 
8955 conversion for return objects that are required to be a String, but a 
8956 Buffer 
8957 was found instead. This can happen when reading string battery data from 
8958 an 
8959 operation region, because it used to be difficult to convert the data 
8960 from 
8961 buffer to string from within the ASL. Ensures that the host OS is 
8962 provided 
8963 with a valid null-terminated string. Linux BZ 11822.
8964
8965 Updated the FACS waking vector interfaces. Split 
8966 AcpiSetFirmwareWakingVector 
8967 into two: one for the 32-bit vector, another for the 64-bit vector. This 
8968 is 
8969 required because the host OS must setup the wake much differently for 
8970 each 
8971 vector (real vs. protected mode, etc.) and the interface itself should 
8972 not 
8973 be 
8974 deciding which vector to use. Also, eliminated the 
8975 GetFirmwareWakingVector 
8976 interface, as it served no purpose (only the firmware reads the vector, 
8977 OS 
8978 only writes the vector.) ACPICA BZ 731.
8979
8980 Implemented a mechanism to escape infinite AML While() loops. Added a 
8981 loop 
8982 counter to force exit from AML While loops if the count becomes too 
8983 large. 
8984 This can occur in poorly written AML when the hardware does not respond 
8985 within a while loop and the loop does not implement a timeout. The 
8986 maximum 
8987 loop count is configurable. A new exception code is returned when a loop 
8988 is 
8989 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8990
8991 Optimized the execution of AML While loops. Previously, a control state 
8992 object was allocated and freed for each execution of the loop. The 
8993 optimization is to simply reuse the control state for each iteration. 
8994 This 
8995 speeds up the raw loop execution time by about 5%.
8996
8997 Enhanced the implicit return mechanism. For Windows compatibility, return 
8998 an 
8999 implicit integer of value zero for methods that contain no executable 
9000 code. 
9001 Such methods are seen in the field as stubs (presumably), and can cause 
9002 drivers to fail if they expect a return value. Lin Ming.
9003
9004 Allow multiple backslashes as root prefixes in namepaths. In a fully 
9005 qualified namepath, allow multiple backslash prefixes. This can happen 
9006 (and 
9007 is seen in the field) because of the use of a double-backslash in strings 
9008 (since backslash is the escape character) causing confusion. ACPICA BZ 
9009 739 
9010 Lin Ming.
9011
9012 Emit a warning if two different FACS or DSDT tables are discovered in the 
9013 FADT. Checks if there are two valid but different addresses for the FACS 
9014 and 
9015 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9016
9017 Consolidated the method argument count validation code. Merged the code 
9018 that 
9019 validates control method argument counts into the predefined validation 
9020 module. Eliminates possible multiple warnings for incorrect argument 
9021 counts.
9022
9023 Implemented ACPICA example code. Includes code for ACPICA initialization, 
9024 handler installation, and calling a control method. Available at 
9025 source/tools/examples.
9026
9027 Added a global pointer for FACS table to simplify internal FACS access. 
9028 Use 
9029 the global pointer instead of using AcpiGetTableByIndex for each FACS 
9030 access. 
9031 This simplifies the code for the Global Lock and the Firmware Waking 
9032 Vector(s).
9033
9034 Example Code and Data Size: These are the sizes for the OS-independent 
9035 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9036 debug version of the code includes the debug output trace mechanism and 
9037 has a 
9038 much larger code and data size.
9039
9040   Previous Release:
9041     Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9042     Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9043   Current Release:
9044     Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9045     Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9046
9047 2) iASL Compiler/Disassembler and Tools:
9048
9049 iASL: Improved disassembly of external method calls. Added the -e option 
9050 to 
9051 allow the inclusion of additional ACPI tables to help with the 
9052 disassembly 
9053 of 
9054 method invocations and the generation of external declarations during the 
9055 disassembly. Certain external method invocations cannot be disassembled 
9056 properly without the actual declaration of the method. Use the -e option 
9057 to 
9058 include the table where the external method(s) are actually declared. 
9059 Most 
9060 useful for disassembling SSDTs that make method calls back to the master 
9061 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl 
9062 -d 
9063 -e dsdt.aml ssdt1.aml
9064
9065 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 
9066 problem where the use of an alias within a namepath would result in a not 
9067 found error or cause the compiler to fault. Also now allows forward 
9068 references from the Alias operator itself. ACPICA BZ 738.
9069
9070 ----------------------------------------
9071 26 September 2008. Summary of changes for version 20080926:
9072
9073 1) ACPI CA Core Subsystem:
9074
9075 Designed and implemented a mechanism to validate predefined ACPI methods 
9076 and 
9077 objects. This code validates the predefined ACPI objects (objects whose 
9078 names 
9079 start with underscore) that appear in the namespace, at the time they are 
9080 evaluated. The argument count and the type of the returned object are 
9081 validated against the ACPI specification. The purpose of this validation 
9082 is 
9083 to detect problems with the BIOS-implemented predefined ACPI objects 
9084 before 
9085 the results are returned to the ACPI-related drivers. Future enhancements 
9086 may 
9087 include actual repair of incorrect return objects where possible. Two new 
9088 files are nspredef.c and acpredef.h.
9089
9090 Fixed a fault in the AML parser if a memory allocation fails during the 
9091 Op 
9092 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9093
9094 Fixed an issue with implicit return compatibility. This change improves 
9095 the 
9096 implicit return mechanism to be more compatible with the MS interpreter. 
9097 Lin 
9098 Ming, ACPICA BZ 349.
9099
9100 Implemented support for zero-length buffer-to-string conversions. Allow 
9101 zero 
9102 length strings during interpreter buffer-to-string conversions. For 
9103 example, 
9104 during the ToDecimalString and ToHexString operators, as well as implicit 
9105 conversions. Fiodor Suietov, ACPICA BZ 585.
9106
9107 Fixed two possible memory leaks in the error exit paths of 
9108 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 
9109 are 
9110 similar in that they use a stack of state objects in order to eliminate 
9111 recursion. The stack must be fully unwound and deallocated if an error 
9112 occurs. Lin Ming. ACPICA BZ 383.
9113
9114 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 
9115 global 
9116 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 
9117 Moore ACPICA BZ 442.
9118
9119 Removed the obsolete version number in module headers. Removed the 
9120 "$Revision" number that appeared in each module header. This version 
9121 number 
9122 was useful under SourceSafe and CVS, but has no meaning under git. It is 
9123 not 
9124 only incorrect, it could also be misleading.
9125
9126 Example Code and Data Size: These are the sizes for the OS-independent 
9127 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9128 debug version of the code includes the debug output trace mechanism and 
9129 has a 
9130 much larger code and data size.
9131
9132   Previous Release:
9133     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9134     Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9135   Current Release:
9136     Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9137     Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9138
9139 ----------------------------------------
9140 29 August 2008. Summary of changes for version 20080829:
9141
9142 1) ACPI CA Core Subsystem:
9143
9144 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 
9145 Reference. Changes include the elimination of cheating on the Object 
9146 field 
9147 for the DdbHandle subtype, addition of a reference class field to 
9148 differentiate the various reference types (instead of an AML opcode), and 
9149 the 
9150 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9151
9152 Reduce an error to a warning for an incorrect method argument count. 
9153 Previously aborted with an error if too few arguments were passed to a 
9154 control method via the external ACPICA interface. Now issue a warning 
9155 instead 
9156 and continue. Handles the case where the method inadvertently declares 
9157 too 
9158 many arguments, but does not actually use the extra ones. Applies mainly 
9159 to 
9160 the predefined methods. Lin Ming. Linux BZ 11032.
9161
9162 Disallow the evaluation of named object types with no intrinsic value. 
9163 Return 
9164 AE_TYPE for objects that have no value and therefore evaluation is 
9165 undefined: 
9166 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 
9167 of 
9168 these types were allowed, but an exception would be generated at some 
9169 point 
9170 during the evaluation. Now, the error is generated up front.
9171
9172 Fixed a possible memory leak in the AcpiNsGetExternalPathname function 
9173 (nsnames.c). Fixes a leak in the error exit path.
9174
9175 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 
9176 debug 
9177 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 
9178 ACPI_EXCEPTION 
9179 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 
9180 ACPI_LV_EVENTS.
9181
9182 Removed obsolete and/or unused exception codes from the acexcep.h header. 
9183 There is the possibility that certain device drivers may be affected if 
9184 they 
9185 use any of these exceptions.
9186
9187 The ACPICA documentation has been added to the public git source tree, 
9188 under 
9189 acpica/documents. Included are the ACPICA programmer reference, the iASL 
9190 compiler reference, and the changes.txt release logfile.
9191
9192 Example Code and Data Size: These are the sizes for the OS-independent 
9193 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9194 debug version of the code includes the debug output trace mechanism and 
9195 has a 
9196 much larger code and data size.
9197
9198   Previous Release:
9199     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9200     Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9201   Current Release:
9202     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9203     Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9204
9205 2) iASL Compiler/Disassembler and Tools:
9206
9207 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 
9208 defines _SCP with 3 arguments. Previous versions defined it with only 1 
9209 argument. iASL now allows both definitions.
9210
9211 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 
9212 zero-
9213 length subtables when disassembling ACPI tables. Also fixed a couple of 
9214 errors where a full 16-bit table type field was not extracted from the 
9215 input 
9216 properly.
9217
9218 acpisrc: Improve comment counting mechanism for generating source code 
9219 statistics. Count first and last lines of multi-line comments as 
9220 whitespace, 
9221 not comment lines. Handle Linux legal header in addition to standard 
9222 acpica 
9223 header.
9224
9225 ----------------------------------------
9226
9227 29 July 2008. Summary of changes for version 20080729:
9228
9229 1) ACPI CA Core Subsystem:
9230
9231 Fix a possible deadlock in the GPE dispatch. Remove call to 
9232 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 
9233 attempt 
9234 to acquire the GPE lock but can deadlock since the GPE lock is already 
9235 held 
9236 at dispatch time. This code was introduced in version 20060831 as a 
9237 response 
9238 to Linux BZ 6881 and has since been removed from Linux.
9239
9240 Add a function to dereference returned reference objects. Examines the 
9241 return 
9242 object from a call to AcpiEvaluateObject. Any Index or RefOf references 
9243 are 
9244 automatically dereferenced in an attempt to return something useful 
9245 (these 
9246 reference types cannot be converted into an external ACPI_OBJECT.) 
9247 Provides 
9248 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9249
9250 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 
9251 subtables for the MADT and one new subtable for the SRAT. Includes 
9252 disassembler and AcpiSrc support. Data from the Intel 64 Architecture 
9253 x2APIC 
9254 Specification, June 2008.
9255
9256 Additional error checking for pathname utilities. Add error check after 
9257 all 
9258 calls to AcpiNsGetPathnameLength. Add status return from 
9259 AcpiNsBuildExternalPath and check after all calls. Add parameter 
9260 validation 
9261 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9262
9263 Return status from the global init function AcpiUtGlobalInitialize. This 
9264 is 
9265 used by both the kernel subsystem and the utilities such as iASL 
9266 compiler. 
9267 The function could possibly fail when the caches are initialized. Yang 
9268 Yi.
9269
9270 Add a function to decode reference object types to strings. Created for 
9271 improved error messages. 
9272
9273 Improve object conversion error messages. Better error messages during 
9274 object 
9275 conversion from internal to the external ACPI_OBJECT. Used for external 
9276 calls 
9277 to AcpiEvaluateObject.
9278
9279 Example Code and Data Size: These are the sizes for the OS-independent 
9280 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9281 debug version of the code includes the debug output trace mechanism and 
9282 has a 
9283 much larger code and data size.
9284
9285   Previous Release:
9286     Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9287     Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9288   Current Release:
9289     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9290     Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9291
9292 2) iASL Compiler/Disassembler and Tools:
9293
9294 Debugger: fix a possible hang when evaluating non-methods. Fixes a 
9295 problem 
9296 introduced in version 20080701. If the object being evaluated (via 
9297 execute 
9298 command) is not a method, the debugger can hang while trying to obtain 
9299 non-
9300 existent parameters.
9301
9302 iASL: relax error for using reserved "_T_x" identifiers. These names can 
9303 appear in a disassembled ASL file if they were emitted by the original 
9304 compiler. Instead of issuing an error or warning and forcing the user to 
9305 manually change these names, issue a remark instead.
9306
9307 iASL: error if named object created in while loop. Emit an error if any 
9308 named 
9309 object is created within a While loop. If allowed, this code will 
9310 generate 
9311
9312 run-time error on the second iteration of the loop when an attempt is 
9313 made 
9314 to 
9315 create the same named object twice. ACPICA bugzilla 730.
9316
9317 iASL: Support absolute pathnames for include files. Add support for 
9318 absolute 
9319 pathnames within the Include operator. previously, only relative 
9320 pathnames 
9321 were supported.
9322
9323 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 
9324 Descriptor. 
9325 The ACPI spec requires one interrupt minimum. BZ 423
9326
9327 iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 
9328 Handles the case for the Interrupt Resource Descriptor where
9329 the ResourceSource argument is omitted but ResourceSourceIndex
9330 is present. Now leave room for the Index. BZ 426
9331
9332 iASL: Prevent error message if CondRefOf target does not exist. Fixes 
9333 cases 
9334 where an error message is emitted if the target does not exist. BZ 516
9335
9336 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 
9337 (get ACPI tables on Windows). This was apparently broken in version 
9338 20070919.
9339
9340 AcpiXtract: Handle EOF while extracting data. Correctly handle the case 
9341 where 
9342 the EOF happens immediately after the last table in the input file. Print 
9343 completion message. Previously, no message was displayed in this case.
9344
9345 ----------------------------------------
9346 01 July 2008. Summary of changes for version 20080701:
9347
9348 0) Git source tree / acpica.org
9349
9350 Fixed a problem where a git-clone from http would not transfer the entire 
9351 source tree.
9352
9353 1) ACPI CA Core Subsystem:
9354
9355 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 
9356 enable bit. Now performs a read-change-write of the enable register 
9357 instead 
9358 of simply writing out the cached enable mask. This will prevent 
9359 inadvertent 
9360 enabling of GPEs if a rogue GPE is received during initialization (before 
9361 GPE 
9362 handlers are installed.)
9363
9364 Implemented a copy for dynamically loaded tables. Previously, dynamically 
9365 loaded tables were simply mapped - but on some machines this memory is 
9366 corrupted after suspend. Now copy the table to a local buffer. For the 
9367 OpRegion case, added checksum verify. Use the table length from the table 
9368 header, not the region length. For the Buffer case, use the table length 
9369 also. Dennis Noordsij, Bob Moore. BZ 10734
9370
9371 Fixed a problem where the same ACPI table could not be dynamically loaded 
9372 and 
9373 unloaded more than once. Without this change, a table cannot be loaded 
9374 again 
9375 once it has been loaded/unloaded one time. The current mechanism does not 
9376 unregister a table upon an unload. During a load, if the same table is 
9377 found, 
9378 this no longer returns an exception. BZ 722
9379
9380 Fixed a problem where the wrong descriptor length was calculated for the 
9381 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 
9382 EndTag 
9383 are calculated as 12 bytes long, but the actual length in the internal 
9384 descriptor is 16 because of the round-up to 8 on the 64-bit build. 
9385 Reported 
9386 by Linn Crosetto. BZ 728
9387
9388 Fixed a possible memory leak in the Unload operator. The DdbHandle 
9389 returned 
9390 by Load() did not have its reference count decremented during unload, 
9391 leading 
9392 to a memory leak. Lin Ming. BZ 727
9393
9394 Fixed a possible memory leak when deleting thermal/processor objects. Any 
9395 associated notify handlers (and objects) were not being deleted. Fiodor 
9396 Suietov. BZ 506
9397
9398 Fixed the ordering of the ASCII names in the global mutex table to match 
9399 the 
9400 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 
9401 only. 
9402 Vegard Nossum. BZ 726
9403
9404 Enhanced the AcpiGetObjectInfo interface to return the number of required 
9405 arguments if the object is a control method. Added this call to the 
9406 debugger 
9407 so the proper number of default arguments are passed to a method. This 
9408 prevents a warning when executing methods from AcpiExec.
9409
9410 Added a check for an invalid handle in AcpiGetObjectInfo. Return 
9411 AE_BAD_PARAMETER if input handle is invalid. BZ 474
9412
9413 Fixed an extraneous warning from exconfig.c on the 64-bit build.
9414
9415 Example Code and Data Size: These are the sizes for the OS-independent 
9416 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9417 debug version of the code includes the debug output trace mechanism and 
9418 has a 
9419 much larger code and data size.
9420
9421   Previous Release:
9422     Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9423     Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9424   Current Release:
9425     Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9426     Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9427
9428 2) iASL Compiler/Disassembler and Tools:
9429
9430 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 
9431 resource descriptor names.
9432
9433 iASL: Detect invalid ASCII characters in input (windows version). Removed 
9434 the 
9435 "-CF" flag from the flex compile, enables correct detection of non-ASCII 
9436 characters in the input. BZ 441
9437
9438 iASL: Eliminate warning when result of LoadTable is not used. Eliminate 
9439 the 
9440 "result of operation not used" warning when the DDB handle returned from 
9441 LoadTable is not used. The warning is not needed. BZ 590
9442
9443 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 
9444 method 
9445 to 
9446 pass address of table to the AML. Added option to disable OpRegion 
9447 simulation 
9448 to allow creation of an OpRegion with a real address that was passed to 
9449 _CFG. 
9450 All of this allows testing of the Load and Unload operators from 
9451 AcpiExec.
9452
9453 Debugger: update tables command for unloaded tables. Handle unloaded 
9454 tables 
9455 and use the standard table header output routine.
9456
9457 ----------------------------------------
9458 09 June 2008. Summary of changes for version 20080609:
9459
9460 1) ACPI CA Core Subsystem:
9461
9462 Implemented a workaround for reversed _PRT entries. A significant number 
9463 of 
9464 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 
9465 change dynamically detects and repairs this problem. Provides 
9466 compatibility 
9467 with MS ACPI. BZ 6859
9468
9469 Simplified the internal ACPI hardware interfaces to eliminate the locking 
9470 flag parameter from Register Read/Write. Added a new external interface, 
9471 AcpiGetRegisterUnlocked.
9472
9473 Fixed a problem where the invocation of a GPE control method could hang. 
9474 This 
9475 was a regression introduced in 20080514. The new method argument count 
9476 validation mechanism can enter an infinite loop when a GPE method is 
9477 dispatched. Problem fixed by removing the obsolete code that passed GPE 
9478 block 
9479 information to the notify handler via the control method parameter 
9480 pointer.
9481
9482 Fixed a problem where the _SST execution status was incorrectly returned 
9483 to 
9484 the caller of AcpiEnterSleepStatePrep. This was a regression introduced 
9485 in 
9486 20080514. _SST is optional and a NOT_FOUND exception should never be 
9487 returned. BZ 716
9488
9489 Fixed a problem where a deleted object could be accessed from within the 
9490 AML 
9491 parser. This was a regression introduced in version 20080123 as a fix for 
9492 the 
9493 Unload operator. Lin Ming. BZ 10669
9494
9495 Cleaned up the debug operand dump mechanism. Eliminated unnecessary 
9496 operands 
9497 and eliminated the use of a negative index in a loop. Operands are now 
9498 displayed in the correct order, not backwards. This also fixes a 
9499 regression 
9500 introduced in 20080514 on 64-bit systems where the elimination of 
9501 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 
9502 715
9503
9504 Fixed a possible memory leak in EvPciConfigRegionSetup where the error 
9505 exit 
9506 path did not delete a locally allocated structure.
9507
9508 Updated definitions for the DMAR and SRAT tables to synchronize with the 
9509 current specifications. Includes disassembler support.
9510
9511 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 
9512 loop termination value was used. Loop terminated on iteration early, 
9513 missing 
9514 one mutex. Linn Crosetto
9515
9516 Example Code and Data Size: These are the sizes for the OS-independent 
9517 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9518 debug version of the code includes the debug output trace mechanism and 
9519 has a 
9520 much larger code and data size.
9521
9522   Previous Release:
9523     Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9524     Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9525   Current Release:
9526     Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9527     Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9528
9529 2) iASL Compiler/Disassembler and Tools:
9530
9531 Disassembler: Implemented support for EisaId() within _CID objects. Now 
9532 disassemble integer _CID objects back to EisaId invocations, including 
9533 multiple integers within _CID packages. Includes single-step support for 
9534 debugger also.
9535
9536 Disassembler: Added support for DMAR and SRAT table definition changes.
9537
9538 ----------------------------------------
9539 14 May 2008. Summary of changes for version 20080514:
9540
9541 1) ACPI CA Core Subsystem:
9542
9543 Fixed a problem where GPEs were enabled too early during the ACPICA 
9544 initialization. This could lead to "handler not installed" errors on some 
9545 machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 
9546 This 
9547 ensures that all operation regions and devices throughout the namespace 
9548 have 
9549 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9550
9551 Implemented a change to the enter sleep code. Moved execution of the _GTS 
9552 method to just before setting sleep enable bit. The execution was moved 
9553 from 
9554 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 
9555 immediately before the SLP_EN bit is set, as per the ACPI specification. 
9556 Luming Yu, BZ 1653.
9557
9558 Implemented a fix to disable unknown GPEs (2nd version). Now always 
9559 disable 
9560 the GPE, even if ACPICA thinks that that it is already disabled. It is 
9561 possible that the AML or some other code has enabled the GPE unbeknownst 
9562 to 
9563 the ACPICA code.
9564
9565 Fixed a problem with the Field operator where zero-length fields would 
9566 return 
9567 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 
9568 ASL 
9569 field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9570
9571 Implemented a fix for the Load operator, now load the table at the 
9572 namespace 
9573 root. This reverts a change introduced in version 20071019. The table is 
9574 now 
9575 loaded at the namespace root even though this goes against the ACPI 
9576 specification. This provides compatibility with other ACPI 
9577 implementations. 
9578 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 
9579 Ming.
9580
9581 Fixed a problem where ACPICA would not Load() tables with unusual 
9582 signatures. 
9583 Now ignore ACPI table signature for Load() operator. Only "SSDT" is 
9584 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 
9585 Therefore, signature validation is worthless. Apparently MS ACPI accepts 
9586 such 
9587 signatures, ACPICA must be compatible. BZ 10454.
9588
9589 Fixed a possible negative array index in AcpiUtValidateException. Added 
9590 NULL 
9591 fields to the exception string arrays to eliminate a -1 subtraction on 
9592 the 
9593 SubStatus field.
9594
9595 Updated the debug tracking macros to reduce overall code and data size. 
9596 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 
9597 instead of pointers to static strings. Jan Beulich and Bob Moore.
9598
9599 Implemented argument count checking in control method invocation via 
9600 AcpiEvaluateObject. Now emit an error if too few arguments, warning if 
9601 too 
9602 many. This applies only to extern programmatic control method execution, 
9603 not 
9604 method-to-method calls within the AML. Lin Ming.
9605
9606 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 
9607 no 
9608 longer needed, especially with the removal of 16-bit support. It was 
9609 replaced 
9610 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 
9611 bit 
9612 on 
9613 32/64-bit platforms is required.
9614
9615 Added the C const qualifier for appropriate string constants -- mostly 
9616 MODULE_NAME and printf format strings. Jan Beulich.
9617
9618 Example Code and Data Size: These are the sizes for the OS-independent 
9619 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9620 debug version of the code includes the debug output trace mechanism and 
9621 has a 
9622 much larger code and data size.
9623
9624   Previous Release:
9625     Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9626     Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9627   Current Release:
9628     Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9629     Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9630
9631 2) iASL Compiler/Disassembler and Tools:
9632
9633 Implemented ACPI table revision ID validation in the disassembler. Zero 
9634 is 
9635 always invalid. For DSDTs, the ID controls the interpreter integer width. 
9636
9637 means 32-bit and this is unusual. 2 or greater is 64-bit.
9638
9639 ----------------------------------------
9640 21 March 2008. Summary of changes for version 20080321:
9641
9642 1) ACPI CA Core Subsystem:
9643
9644 Implemented an additional change to the GPE support in order to suppress 
9645 spurious or stray GPEs. The AcpiEvDisableGpe function will now 
9646 permanently 
9647 disable incoming GPEs that are neither enabled nor disabled -- meaning 
9648 that 
9649 the GPE is unknown to the system. This should prevent future interrupt 
9650 floods 
9651 from that GPE. BZ 6217 (Zhang Rui)
9652
9653 Fixed a problem where NULL package elements were not returned to the 
9654 AcpiEvaluateObject interface correctly. The element was simply ignored 
9655 instead of returning a NULL ACPI_OBJECT package element, potentially 
9656 causing 
9657 a buffer overflow and/or confusing the caller who expected a fixed number 
9658 of 
9659 elements. BZ 10132 (Lin Ming, Bob Moore)
9660
9661 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 
9662 Dword, 
9663 Qword), Field, BankField, and IndexField operators when invoked from 
9664 inside 
9665 an executing control method. In this case, these operators created 
9666 namespace 
9667 nodes that were incorrectly left marked as permanent nodes instead of 
9668 temporary nodes. This could cause a problem if there is race condition 
9669 between an exiting control method and a running namespace walk. (Reported 
9670 by 
9671 Linn Crosetto)
9672
9673 Fixed a problem where the CreateField and CreateXXXField operators would 
9674 incorrectly allow duplicate names (the name of the field) with no 
9675 exception 
9676 generated.
9677
9678 Implemented several changes for Notify handling. Added support for new 
9679 Notify 
9680 values (ACPI 2.0+) and improved the Notify debug output. Notify on 
9681 PowerResource objects is no longer allowed, as per the ACPI 
9682 specification. 
9683 (Bob Moore, Zhang Rui)
9684
9685 All Reference Objects returned via the AcpiEvaluateObject interface are 
9686 now 
9687 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 
9688 for 
9689 NULL objects - either NULL package elements or unresolved named 
9690 references.
9691
9692 Fixed a problem where an extraneous debug message was produced for 
9693 package 
9694 objects (when debugging enabled). The message "Package List length larger 
9695 than NumElements count" is now produced in the correct case, and is now 
9696 an 
9697 error message rather than a debug message. Added a debug message for the 
9698 opposite case, where NumElements is larger than the Package List (the 
9699 package 
9700 will be padded out with NULL elements as per the ACPI spec.)
9701
9702 Implemented several improvements for the output of the ASL "Debug" object 
9703 to 
9704 clarify and keep all data for a given object on one output line.
9705
9706 Fixed two size calculation issues with the variable-length Start 
9707 Dependent 
9708 resource descriptor.
9709
9710 Example Code and Data Size: These are the sizes for the OS-independent 
9711 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9712 debug version of the code includes the debug output trace mechanism and 
9713 has 
9714 a much larger code and data size.
9715
9716   Previous Release:
9717     Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9718     Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9719   Current Release:
9720     Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9721     Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9722
9723 2) iASL Compiler/Disassembler and Tools:
9724
9725 Fixed a problem with the use of the Switch operator where execution of 
9726 the 
9727 containing method by multiple concurrent threads could cause an 
9728 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 
9729 actual Switch opcode, it must be simulated with local named temporary 
9730 variables and if/else pairs. The solution chosen was to mark any method 
9731 that 
9732 uses Switch as Serialized, thus preventing multiple thread entries. BZ 
9733 469.
9734
9735 ----------------------------------------
9736 13 February 2008. Summary of changes for version 20080213:
9737
9738 1) ACPI CA Core Subsystem:
9739
9740 Implemented another MS compatibility design change for GPE/Notify 
9741 handling. 
9742 GPEs are now cleared/enabled asynchronously to allow all pending notifies 
9743 to 
9744 complete first. It is expected that the OSL will queue the enable request 
9745 behind all pending notify requests (may require changes to the local host 
9746 OSL 
9747 in AcpiOsExecute). Alexey Starikovskiy.
9748
9749 Fixed a problem where buffer and package objects passed as arguments to a 
9750 control method via the external AcpiEvaluateObject interface could cause 
9751 an 
9752 AE_AML_INTERNAL exception depending on the order and type of operators 
9753 executed by the target control method.
9754
9755 Fixed a problem where resource descriptor size optimization could cause a 
9756 problem when a _CRS resource template is passed to a _SRS method. The 
9757 _SRS 
9758 resource template must use the same descriptors (with the same size) as 
9759 returned from _CRS. This change affects the following resource 
9760 descriptors: 
9761 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 
9762 9487)
9763
9764 Fixed a problem where a CopyObject to RegionField, BankField, and 
9765 IndexField 
9766 objects did not perform an implicit conversion as it should. These types 
9767 must 
9768 retain their initial type permanently as per the ACPI specification. 
9769 However, 
9770 a CopyObject to all other object types should not perform an implicit 
9771 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9772
9773 Fixed a problem with the AcpiGetDevices interface where the mechanism to 
9774 match device CIDs did not examine the entire list of available CIDs, but 
9775 instead aborted on the first non-matching CID. Andrew Patterson.
9776
9777 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 
9778 was 
9779 inadvertently changed to return a 16-bit value instead of a 32-bit value, 
9780 truncating the upper dword of a 64-bit value. This macro is only used to 
9781 display debug output, so no incorrect calculations were made. Also, 
9782 reimplemented the macro so that a 64-bit shift is not performed by 
9783 inefficient compilers.
9784
9785 Added missing va_end statements that should correspond with each va_start 
9786 statement.
9787
9788 Example Code and Data Size: These are the sizes for the OS-independent 
9789 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9790 debug version of the code includes the debug output trace mechanism and 
9791 has 
9792 a much larger code and data size.
9793
9794   Previous Release:
9795     Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9796     Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9797   Current Release:
9798     Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9799     Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9800
9801 2) iASL Compiler/Disassembler and Tools:
9802
9803 Implemented full disassembler support for the following new ACPI tables: 
9804 BERT, EINJ, and ERST. Implemented partial disassembler support for the 
9805 complicated HEST table. These tables support the Windows Hardware Error 
9806 Architecture (WHEA).
9807
9808 ----------------------------------------
9809 23 January 2008. Summary of changes for version 20080123:
9810
9811 1) ACPI CA Core Subsystem:
9812
9813 Added the 2008 copyright to all module headers and signons. This affects 
9814 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
9815 the tools/utilities.
9816
9817 Fixed a problem with the SizeOf operator when used with Package and 
9818 Buffer 
9819 objects. These objects have deferred execution for some arguments, and 
9820 the 
9821 execution is now completed before the SizeOf is executed. This problem 
9822 caused 
9823 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 
9824 BZ 
9825 9558
9826
9827 Implemented an enhancement to the interpreter "slack mode". In the 
9828 absence 
9829 of 
9830 an explicit return or an implicitly returned object from the last 
9831 executed 
9832 opcode, a control method will now implicitly return an integer of value 0 
9833 for 
9834 Microsoft compatibility. (Lin Ming) BZ 392
9835
9836 Fixed a problem with the Load operator where an exception was not 
9837 returned 
9838 in 
9839 the case where the table is already loaded. (Lin Ming) BZ 463
9840
9841 Implemented support for the use of DDBHandles as an Indexed Reference, as 
9842 per 
9843 the ACPI spec. (Lin Ming) BZ 486
9844
9845 Implemented support for UserTerm (Method invocation) for the Unload 
9846 operator 
9847 as per the ACPI spec. (Lin Ming) BZ 580
9848
9849 Fixed a problem with the LoadTable operator where the OemId and 
9850 OemTableId 
9851 input strings could cause unexpected failures if they were shorter than 
9852 the 
9853 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9854
9855 Implemented support for UserTerm (Method invocation) for the Unload 
9856 operator 
9857 as per the ACPI spec. (Lin Ming) BZ 580
9858
9859 Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 
9860 HEST, 
9861 IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9862
9863 Example Code and Data Size: These are the sizes for the OS-independent 
9864 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9865 debug version of the code includes the debug output trace mechanism and 
9866 has 
9867 a much larger code and data size.
9868
9869   Previous Release:
9870     Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9871     Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9872   Current Release:
9873     Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9874     Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9875
9876 2) iASL Compiler/Disassembler and Tools:
9877
9878 Implemented support in the disassembler for checksum validation on 
9879 incoming 
9880 binary DSDTs and SSDTs. If incorrect, a message is displayed within the 
9881 table 
9882 header dump at the start of the disassembly.
9883
9884 Implemented additional debugging information in the namespace listing 
9885 file 
9886 created during compilation. In addition to the namespace hierarchy, the 
9887 full 
9888 pathname to each namespace object is displayed.
9889
9890 Fixed a problem with the disassembler where invalid ACPI tables could 
9891 cause 
9892 faults or infinite loops.
9893
9894 Fixed an unexpected parse error when using the optional "parameter types" 
9895 list in a control method declaration. (Lin Ming) BZ 397
9896
9897 Fixed a problem where two External declarations with the same name did 
9898 not 
9899 cause an error (Lin Ming) BZ 509
9900
9901 Implemented support for full TermArgs (adding Argx, Localx and method 
9902 invocation) for the ParameterData parameter to the LoadTable operator. 
9903 (Lin 
9904 Ming) BZ 583,587
9905
9906 ----------------------------------------
9907 19 December 2007. Summary of changes for version 20071219:
9908
9909 1) ACPI CA Core Subsystem:
9910
9911 Implemented full support for deferred execution for the TermArg string 
9912 arguments for DataTableRegion. This enables forward references and full 
9913 operand resolution for the three string arguments. Similar to 
9914 OperationRegion 
9915 deferred argument execution.) Lin Ming. BZ 430
9916
9917 Implemented full argument resolution support for the BankValue argument 
9918 to 
9919 BankField. Previously, only constants were supported, now any TermArg may 
9920 be 
9921 used. Lin Ming BZ 387, 393
9922
9923 Fixed a problem with AcpiGetDevices where the search of a branch of the 
9924 device tree could be terminated prematurely. In accordance with the ACPI 
9925 specification, the search down the current branch is terminated if a 
9926 device 
9927 is both not present and not functional (instead of just not present.) 
9928 Yakui 
9929 Zhao.
9930
9931 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 
9932 if 
9933 the underlying AML code changed the GPE enable registers. Now, any 
9934 unknown 
9935 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 
9936 disabled 
9937 instead of simply ignored. Rui Zhang.
9938
9939 Fixed a problem with Index Fields where the Index register was 
9940 incorrectly 
9941 limited to a maximum of 32 bits. Now any size may be used.
9942
9943 Fixed a couple memory leaks associated with "implicit return" objects 
9944 when 
9945 the AML Interpreter slack mode is enabled. Lin Ming BZ 349
9946
9947 Example Code and Data Size: These are the sizes for the OS-independent 
9948 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9949 debug version of the code includes the debug output trace mechanism and 
9950 has 
9951 a much larger code and data size.
9952
9953   Previous Release:
9954     Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9955     Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9956   Current Release:
9957     Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9958     Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9959
9960 ----------------------------------------
9961 14 November 2007. Summary of changes for version 20071114:
9962
9963 1) ACPI CA Core Subsystem:
9964
9965 Implemented event counters for each of the Fixed Events, the ACPI SCI 
9966 (interrupt) itself, and control methods executed. Named 
9967 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 
9968 These 
9969 should be useful for debugging and statistics.
9970
9971 Implemented a new external interface, AcpiGetStatistics, to retrieve the 
9972 contents of the various event counters. Returns the current values for 
9973 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 
9974 AcpiMethodCount. The interface can be expanded in the future if new 
9975 counters 
9976 are added. Device drivers should use this interface rather than access 
9977 the 
9978 counters directly.
9979
9980 Fixed a problem with the FromBCD and ToBCD operators. With some 
9981 compilers, 
9982 the ShortDivide function worked incorrectly, causing problems with the 
9983 BCD 
9984 functions with large input values. A truncation from 64-bit to 32-bit 
9985 inadvertently occurred. Internal BZ 435. Lin Ming
9986
9987 Fixed a problem with Index references passed as method arguments. 
9988 References 
9989 passed as arguments to control methods were dereferenced immediately 
9990 (before 
9991 control was passed to the called method). The references are now 
9992 correctly 
9993 passed directly to the called method. BZ 5389. Lin Ming
9994
9995 Fixed a problem with CopyObject used in conjunction with the Index 
9996 operator. 
9997 The reference was incorrectly dereferenced before the copy. The reference 
9998 is 
9999 now correctly copied. BZ 5391. Lin Ming
10000
10001 Fixed a problem with Control Method references within Package objects. 
10002 These 
10003 references are now correctly generated. This completes the package 
10004 construction overhaul that began in version 20071019.
10005
10006 Example Code and Data Size: These are the sizes for the OS-independent 
10007 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10008 debug version of the code includes the debug output trace mechanism and 
10009 has 
10010 a much larger code and data size.
10011
10012   Previous Release:
10013     Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10014     Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10015   Current Release:
10016     Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10017     Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10018
10019
10020 2) iASL Compiler/Disassembler and Tools:
10021
10022 The AcpiExec utility now installs handlers for all of the predefined 
10023 Operation Region types. New types supported are: PCI_Config, CMOS, and 
10024 PCIBARTarget.
10025
10026 Fixed a problem with the 64-bit version of AcpiExec where the extended 
10027 (64-
10028 bit) address fields for the DSDT and FACS within the FADT were not being 
10029 used, causing truncation of the upper 32-bits of these addresses. Lin 
10030 Ming 
10031 and Bob Moore
10032
10033 ----------------------------------------
10034 19 October 2007. Summary of changes for version 20071019:
10035
10036 1) ACPI CA Core Subsystem:
10037
10038 Fixed a problem with the Alias operator when the target of the alias is a 
10039 named ASL operator that opens a new scope -- Scope, Device, 
10040 PowerResource, 
10041 Processor, and ThermalZone. In these cases, any children of the original 
10042 operator could not be accessed via the alias, potentially causing 
10043 unexpected 
10044 AE_NOT_FOUND exceptions. (BZ 9067)
10045
10046 Fixed a problem with the Package operator where all named references were 
10047 created as object references and left otherwise unresolved. According to 
10048 the 
10049 ACPI specification, a Package can only contain Data Objects or references 
10050 to 
10051 control methods. The implication is that named references to Data Objects 
10052 (Integer, Buffer, String, Package, BufferField, Field) should be resolved 
10053 immediately upon package creation. This is the approach taken with this 
10054 change. References to all other named objects (Methods, Devices, Scopes, 
10055 etc.) are all now properly created as reference objects. (BZ 5328)
10056
10057 Reverted a change to Notify handling that was introduced in version 
10058 20070508. This version changed the Notify handling from asynchronous to 
10059 fully synchronous (Device driver Notify handling with respect to the 
10060 Notify 
10061 ASL operator). It was found that this change caused more problems than it 
10062 solved and was removed by most users.
10063
10064 Fixed a problem with the Increment and Decrement operators where the type 
10065 of 
10066 the target object could be unexpectedly and incorrectly changed. (BZ 353) 
10067 Lin Ming.
10068
10069 Fixed a problem with the Load and LoadTable operators where the table 
10070 location within the namespace was ignored. Instead, the table was always 
10071 loaded into the root or current scope. Lin Ming.
10072
10073 Fixed a problem with the Load operator when loading a table from a buffer 
10074 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10075
10076 Fixed a problem with the Debug object where a store of a DdbHandle 
10077 reference 
10078 object to the Debug object could cause a fault.
10079
10080 Added a table checksum verification for the Load operator, in the case 
10081 where 
10082 the load is from a buffer. (BZ 578).
10083
10084 Implemented additional parameter validation for the LoadTable operator. 
10085 The 
10086 length of the input strings SignatureString, OemIdString, and OemTableId 
10087 are 
10088 now checked for maximum lengths. (BZ 582) Lin Ming.
10089
10090 Example Code and Data Size: These are the sizes for the OS-independent 
10091 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10092 debug version of the code includes the debug output trace mechanism and 
10093 has 
10094 a much larger code and data size.
10095
10096   Previous Release:
10097     Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10098     Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10099   Current Release:
10100     Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10101     Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10102
10103
10104 2) iASL Compiler/Disassembler:
10105
10106 Fixed a problem where if a single file was specified and the file did not 
10107 exist, no error message was emitted. (Introduced with wildcard support in 
10108 version 20070917.)
10109
10110 ----------------------------------------
10111 19 September 2007. Summary of changes for version 20070919:
10112
10113 1) ACPI CA Core Subsystem:
10114
10115 Designed and implemented new external interfaces to install and remove 
10116 handlers for ACPI table-related events. Current events that are defined 
10117 are 
10118 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 
10119 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 
10120 AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10121
10122 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 
10123 (acpi_serialized option on Linux) could cause some systems to hang during 
10124 initialization. (Bob Moore) BZ 8171
10125
10126 Fixed a problem where objects of certain types (Device, ThermalZone, 
10127 Processor, PowerResource) can be not found if they are declared and 
10128 referenced from within the same control method (Lin Ming) BZ 341
10129
10130 Example Code and Data Size: These are the sizes for the OS-independent 
10131 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10132 debug version of the code includes the debug output trace mechanism and 
10133 has 
10134 a much larger code and data size.
10135
10136   Previous Release:
10137     Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10138     Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10139   Current Release:
10140     Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10141     Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10142
10143
10144 2) iASL Compiler/Disassembler:
10145
10146 Implemented support to allow multiple files to be compiled/disassembled 
10147 in 
10148
10149 single invocation. This includes command line wildcard support for both 
10150 the 
10151 Windows and Unix versions of the compiler. This feature simplifies the 
10152 disassembly and compilation of multiple ACPI tables in a single 
10153 directory.
10154
10155 ----------------------------------------
10156 08 May 2007. Summary of changes for version 20070508:
10157
10158 1) ACPI CA Core Subsystem:
10159
10160 Implemented a Microsoft compatibility design change for the handling of 
10161 the 
10162 Notify AML operator. Previously, notify handlers were dispatched and 
10163 executed completely asynchronously in a deferred thread. The new design 
10164 still executes the notify handlers in a different thread, but the 
10165 original 
10166 thread that executed the Notify() now waits at a synchronization point 
10167 for 
10168 the notify handler to complete. Some machines depend on a synchronous 
10169 Notify 
10170 operator in order to operate correctly.
10171
10172 Implemented support to allow Package objects to be passed as method 
10173 arguments to the external AcpiEvaluateObject interface. Previously, this 
10174 would return the AE_NOT_IMPLEMENTED exception. This feature had not been 
10175 implemented since there were no reserved control methods that required it 
10176 until recently.
10177
10178 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 
10179 that 
10180 contained invalid non-zero values in reserved fields could cause later 
10181 failures because these fields have meaning in later revisions of the 
10182 FADT. 
10183 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 
10184 fields 
10185 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10186
10187 Fixed a problem where the Global Lock handle was not properly updated if 
10188
10189 thread that acquired the Global Lock via executing AML code then 
10190 attempted 
10191 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 
10192 Joe 
10193 Liu.
10194
10195 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 
10196 could be corrupted if the interrupt being removed was at the head of the 
10197 list. Reported by Linn Crosetto.
10198
10199 Example Code and Data Size: These are the sizes for the OS-independent 
10200 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10201 debug version of the code includes the debug output trace mechanism and 
10202 has 
10203 a much larger code and data size.
10204
10205   Previous Release:
10206     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10207     Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10208   Current Release:
10209     Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10210     Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10211
10212 ----------------------------------------
10213 20 March 2007. Summary of changes for version 20070320:
10214
10215 1) ACPI CA Core Subsystem:
10216
10217 Implemented a change to the order of interpretation and evaluation of AML 
10218 operand objects within the AML interpreter. The interpreter now evaluates 
10219 operands in the order that they appear in the AML stream (and the 
10220 corresponding ASL code), instead of in the reverse order (after the 
10221 entire 
10222 operand list has been parsed). The previous behavior caused several 
10223 subtle 
10224 incompatibilities with the Microsoft AML interpreter as well as being 
10225 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10226
10227 Implemented a change to the ACPI Global Lock support. All interfaces to 
10228 the 
10229 global lock now allow the same thread to acquire the lock multiple times. 
10230 This affects the AcpiAcquireGlobalLock external interface to the global 
10231 lock 
10232 as well as the internal use of the global lock to support AML fields -- a 
10233 control method that is holding the global lock can now simultaneously 
10234 access 
10235 AML fields that require global lock protection. Previously, in both 
10236 cases, 
10237 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 
10238 to 
10239 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 
10240 Controller. There is no change to the behavior of the AML Acquire 
10241 operator, 
10242 as this can already be used to acquire a mutex multiple times by the same 
10243 thread. BZ 8066. With assistance from Alexey Starikovskiy.
10244
10245 Fixed a problem where invalid objects could be referenced in the AML 
10246 Interpreter after error conditions. During operand evaluation, ensure 
10247 that 
10248 the internal "Return Object" field is cleared on error and only valid 
10249 pointers are stored there. Caused occasional access to deleted objects 
10250 that 
10251 resulted in "large reference count" warning messages. Valery Podrezov.
10252
10253 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 
10254 on 
10255 deeply nested control method invocations. BZ 7873, local BZ 487. Valery 
10256 Podrezov.
10257
10258 Fixed an internal problem with the handling of result objects on the 
10259 interpreter result stack. BZ 7872. Valery Podrezov.
10260
10261 Removed obsolete code that handled the case where AML_NAME_OP is the 
10262 target 
10263 of a reference (Reference.Opcode). This code was no longer necessary. BZ 
10264 7874. Valery Podrezov.
10265
10266 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 
10267 was 
10268
10269 remnant from the previously discontinued 16-bit support.
10270
10271 Example Code and Data Size: These are the sizes for the OS-independent 
10272 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10273 debug version of the code includes the debug output trace mechanism and 
10274 has 
10275 a much larger code and data size.
10276
10277   Previous Release:
10278     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10279     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10280   Current Release:
10281     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10282     Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10283
10284 ----------------------------------------
10285 26 January 2007. Summary of changes for version 20070126:
10286
10287 1) ACPI CA Core Subsystem:
10288
10289 Added the 2007 copyright to all module headers and signons. This affects 
10290 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
10291 the utilities.
10292
10293 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 
10294 during a table load. A bad pointer was passed in the case where the DSDT 
10295 is 
10296 overridden, causing a fault in this case.
10297
10298 Example Code and Data Size: These are the sizes for the OS-independent 
10299 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10300 debug version of the code includes the debug output trace mechanism and 
10301 has 
10302 a much larger code and data size.
10303
10304   Previous Release:
10305     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10306     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10307   Current Release:
10308     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10309     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10310
10311 ----------------------------------------
10312 15 December 2006. Summary of changes for version 20061215:
10313
10314 1) ACPI CA Core Subsystem:
10315
10316 Support for 16-bit ACPICA has been completely removed since it is no 
10317 longer 
10318 necessary and it clutters the code. All 16-bit macros, types, and 
10319 conditional compiles have been removed, cleaning up and simplifying the 
10320 code 
10321 across the entire subsystem. DOS support is no longer needed since the 
10322 bootable Linux firmware kit is now available.
10323
10324 The handler for the Global Lock is now removed during AcpiTerminate to 
10325 enable a clean subsystem restart, via the implementation of the 
10326 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 
10327 HP)
10328
10329 Implemented enhancements to the multithreading support within the 
10330 debugger 
10331 to enable improved multithreading debugging and evaluation of the 
10332 subsystem. 
10333 (Valery Podrezov)
10334
10335 Debugger: Enhanced the Statistics/Memory command to emit the total 
10336 (maximum) 
10337 memory used during the execution, as well as the maximum memory consumed 
10338 by 
10339 each of the various object types. (Valery Podrezov)
10340
10341 Example Code and Data Size: These are the sizes for the OS-independent 
10342 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10343 debug version of the code includes the debug output trace mechanism and 
10344 has 
10345 a much larger code and data size.
10346
10347   Previous Release:
10348     Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10349     Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10350   Current Release:
10351     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10352     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10353
10354
10355 2) iASL Compiler/Disassembler and Tools:
10356
10357 AcpiExec: Implemented a new option (-m) to display full memory use 
10358 statistics upon subsystem/program termination. (Valery Podrezov)
10359
10360 ----------------------------------------
10361 09 November 2006. Summary of changes for version 20061109:
10362
10363 1) ACPI CA Core Subsystem:
10364
10365 Optimized the Load ASL operator in the case where the source operand is 
10366 an 
10367 operation region. Simply map the operation region memory, instead of 
10368 performing a bytewise read. (Region must be of type SystemMemory, see 
10369 below.)
10370
10371 Fixed the Load ASL operator for the case where the source operand is a 
10372 region field. A buffer object is also allowed as the source operand. BZ 
10373 480
10374
10375 Fixed a problem where the Load ASL operator allowed the source operand to 
10376 be 
10377 an operation region of any type. It is now restricted to regions of type 
10378 SystemMemory, as per the ACPI specification. BZ 481
10379
10380 Additional cleanup and optimizations for the new Table Manager code.
10381
10382 AcpiEnable will now fail if all of the required ACPI tables are not 
10383 loaded 
10384 (FADT, FACS, DSDT). BZ 477
10385
10386 Added #pragma pack(8/4) to acobject.h to ensure that the structures in 
10387 this 
10388 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 
10389 manually optimized to be aligned and will not work if it is byte-packed. 
10390
10391 Example Code and Data Size: These are the sizes for the OS-independent 
10392 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10393 debug version of the code includes the debug output trace mechanism and 
10394 has 
10395 a much larger code and data size.
10396
10397   Previous Release:
10398     Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10399     Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10400   Current Release:
10401     Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10402     Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10403
10404
10405 2) iASL Compiler/Disassembler and Tools:
10406
10407 Fixed a problem where the presence of the _OSI predefined control method 
10408 within complex expressions could cause an internal compiler error.
10409
10410 AcpiExec: Implemented full region support for multiple address spaces. 
10411 SpaceId is now part of the REGION object. BZ 429
10412
10413 ----------------------------------------
10414 11 October 2006. Summary of changes for version 20061011:
10415
10416 1) ACPI CA Core Subsystem:
10417
10418 Completed an AML interpreter performance enhancement for control method 
10419 execution. Previously a 2-pass parse/execution, control methods are now 
10420 completely parsed and executed in a single pass. This improves overall 
10421 interpreter performance by ~25%, reduces code size, and reduces CPU stack 
10422 use. (Valery Podrezov + interpreter changes in version 20051202 that 
10423 eliminated namespace loading during the pass one parse.)
10424
10425 Implemented _CID support for PCI Root Bridge detection. If the _HID does 
10426 not 
10427 match the predefined PCI Root Bridge IDs, the _CID list (if present) is 
10428 now 
10429 obtained and also checked for an ID match.
10430
10431 Implemented additional support for the PCI _ADR execution: upsearch until 
10432
10433 device scope is found before executing _ADR. This allows PCI_Config 
10434 operation regions to be declared locally within control methods 
10435 underneath 
10436 PCI device objects.
10437
10438 Fixed a problem with a possible race condition between threads executing 
10439 AcpiWalkNamespace and the AML interpreter. This condition was removed by 
10440 modifying AcpiWalkNamespace to (by default) ignore all temporary 
10441 namespace 
10442 entries created during any concurrent control method execution. An 
10443 additional namespace race condition is known to exist between 
10444 AcpiWalkNamespace and the Load/Unload ASL operators and is still under 
10445 investigation.
10446
10447 Restructured the AML ParseLoop function, breaking it into several 
10448 subfunctions in order to reduce CPU stack use and improve 
10449 maintainability. 
10450 (Mikhail Kouzmich)
10451
10452 AcpiGetHandle: Fix for parameter validation to detect invalid 
10453 combinations 
10454 of prefix handle and pathname. BZ 478
10455
10456 Example Code and Data Size: These are the sizes for the OS-independent 
10457 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10458 debug version of the code includes the debug output trace mechanism and 
10459 has 
10460 a much larger code and data size.
10461
10462   Previous Release:
10463     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10464     Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10465   Current Release:
10466     Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10467     Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10468
10469 2) iASL Compiler/Disassembler and Tools:
10470
10471 Ported the -g option (get local ACPI tables) to the new ACPICA Table 
10472 Manager 
10473 to restore original behavior.
10474
10475 ----------------------------------------
10476 27 September 2006. Summary of changes for version 20060927:
10477
10478 1) ACPI CA Core Subsystem:
10479
10480 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 
10481 These functions now use a spinlock for mutual exclusion and the interrupt 
10482 level indication flag is not needed.
10483
10484 Fixed a problem with the Global Lock where the lock could appear to be 
10485 obtained before it is actually obtained. The global lock semaphore was 
10486 inadvertently created with one unit instead of zero units. (BZ 464) 
10487 Fiodor 
10488 Suietov.
10489
10490 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 
10491 during 
10492 a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10493
10494 Example Code and Data Size: These are the sizes for the OS-independent 
10495 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10496 debug version of the code includes the debug output trace mechanism and 
10497 has 
10498 a much larger code and data size.
10499
10500   Previous Release:
10501     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10502     Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10503   Current Release:
10504     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10505     Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10506
10507
10508 2) iASL Compiler/Disassembler and Tools:
10509
10510 Fixed a compilation problem with the pre-defined Resource Descriptor 
10511 field 
10512 names where an "object does not exist" error could be incorrectly 
10513 generated 
10514 if the parent ResourceTemplate pathname places the template within a 
10515 different namespace scope than the current scope. (BZ 7212)
10516
10517 Fixed a problem where the compiler could hang after syntax errors 
10518 detected 
10519 in an ElseIf construct. (BZ 453)
10520
10521 Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 
10522 operator. An incorrect output filename was produced when this parameter 
10523 was 
10524 a null string (""). Now, the original input filename is used as the AML 
10525 output filename, with an ".aml" extension.
10526
10527 Implemented a generic batch command mode for the AcpiExec utility 
10528 (execute 
10529 any AML debugger command) (Valery Podrezov).
10530
10531 ----------------------------------------
10532 12 September 2006. Summary of changes for version 20060912:
10533
10534 1) ACPI CA Core Subsystem:
10535
10536 Enhanced the implementation of the "serialized mode" of the interpreter 
10537 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 
10538 specified, instead of creating a serialization semaphore per control 
10539 method, 
10540 the interpreter lock is simply no longer released before a blocking 
10541 operation during control method execution. This effectively makes the AML 
10542 Interpreter single-threaded. The overhead of a semaphore per-method is 
10543 eliminated.
10544
10545 Fixed a regression where an error was no longer emitted if a control 
10546 method 
10547 attempts to create 2 objects of the same name. This once again returns 
10548 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 
10549 that 
10550 will dynamically serialize the control method to possible prevent future 
10551 errors. (BZ 440)
10552
10553 Integrated a fix for a problem with PCI Express HID detection in the PCI 
10554 Config Space setup procedure. (BZ 7145)
10555
10556 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 
10557 AcpiHwInitialize function - the FADT registers are now validated when the 
10558 table is loaded.
10559
10560 Added two new warnings during FADT verification - 1) if the FADT is 
10561 larger 
10562 than the largest known FADT version, and 2) if there is a mismatch 
10563 between 
10564
10565 32-bit block address and the 64-bit X counterpart (when both are non-
10566 zero.)
10567
10568 Example Code and Data Size: These are the sizes for the OS-independent 
10569 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10570 debug version of the code includes the debug output trace mechanism and 
10571 has 
10572 a much larger code and data size.
10573
10574   Previous Release:
10575     Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10576     Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10577   Current Release:
10578     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10579     Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10580
10581
10582 2) iASL Compiler/Disassembler and Tools:
10583
10584 Fixed a problem with the implementation of the Switch() operator where 
10585 the 
10586 temporary variable was declared too close to the actual Switch, instead 
10587 of 
10588 at method level. This could cause a problem if the Switch() operator is 
10589 within a while loop, causing an error on the second iteration. (BZ 460)
10590
10591 Disassembler - fix for error emitted for unknown type for target of scope 
10592 operator. Now, ignore it and continue.
10593
10594 Disassembly of an FADT now verifies the input FADT and reports any errors 
10595 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10596
10597 Disassembly of raw data buffers with byte initialization data now 
10598 prefixes 
10599 each output line with the current buffer offset.
10600
10601 Disassembly of ASF! table now includes all variable-length data fields at 
10602 the end of some of the subtables.
10603
10604 The disassembler now emits a comment if a buffer appears to be a 
10605 ResourceTemplate, but cannot be disassembled as such because the EndTag 
10606 does 
10607 not appear at the very end of the buffer.
10608
10609 AcpiExec - Added the "-t" command line option to enable the serialized 
10610 mode 
10611 of the AML interpreter.
10612
10613 ----------------------------------------
10614 31 August 2006. Summary of changes for version 20060831:
10615
10616 1) ACPI CA Core Subsystem:
10617
10618 Miscellaneous fixes for the Table Manager:
10619 - Correctly initialize internal common FADT for all 64-bit "X" fields
10620 - Fixed a couple table mapping issues during table load
10621 - Fixed a couple alignment issues for IA64
10622 - Initialize input array to zero in AcpiInitializeTables
10623 - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 
10624 AcpiGetTableByIndex
10625
10626 Change for GPE support: when a "wake" GPE is received, all wake GPEs are 
10627 now 
10628 immediately disabled to prevent the waking GPE from firing again and to 
10629 prevent other wake GPEs from interrupting the wake process.
10630
10631 Added the AcpiGpeCount global that tracks the number of processed GPEs, 
10632 to 
10633 be used for debugging systems with a large number of ACPI interrupts.
10634
10635 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 
10636 both the ACPICA headers and the disassembler.
10637
10638 Example Code and Data Size: These are the sizes for the OS-independent 
10639 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10640 debug version of the code includes the debug output trace mechanism and 
10641 has 
10642 a much larger code and data size.
10643
10644   Previous Release:
10645     Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10646     Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10647   Current Release:
10648     Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10649     Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10650
10651
10652 2) iASL Compiler/Disassembler and Tools:
10653
10654 Disassembler support for the DMAR ACPI table.
10655
10656 ----------------------------------------
10657 23 August 2006. Summary of changes for version 20060823:
10658
10659 1) ACPI CA Core Subsystem:
10660
10661 The Table Manager component has been completely redesigned and 
10662 reimplemented. The new design is much simpler, and reduces the overall 
10663 code 
10664 and data size of the kernel-resident ACPICA by approximately 5%. Also, it 
10665 is 
10666 now possible to obtain the ACPI tables very early during kernel 
10667 initialization, even before dynamic memory management is initialized. 
10668 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10669
10670 Obsolete ACPICA interfaces:
10671
10672 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 
10673 init 
10674 time).
10675 - AcpiLoadTable: Not needed.
10676 - AcpiUnloadTable: Not needed.
10677
10678 New ACPICA interfaces:
10679
10680 - AcpiInitializeTables: Must be called before the table manager can be 
10681 used.
10682 - AcpiReallocateRootTable: Used to transfer the root table to dynamically 
10683 allocated memory after it becomes available.
10684 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 
10685 tables 
10686 in the RSDT/XSDT.
10687
10688 Other ACPICA changes:
10689
10690 - AcpiGetTableHeader returns the actual mapped table header, not a copy. 
10691 Use 
10692 AcpiOsUnmapMemory to free this mapping.
10693 - AcpiGetTable returns the actual mapped table. The mapping is managed 
10694 internally and must not be deleted by the caller. Use of this interface 
10695 causes no additional dynamic memory allocation.
10696 - AcpiFindRootPointer: Support for physical addressing has been 
10697 eliminated, 
10698 it appeared to be unused.
10699 - The interface to AcpiOsMapMemory has changed to be consistent with the 
10700 other allocation interfaces.
10701 - The interface to AcpiOsGetRootPointer has changed to eliminate 
10702 unnecessary 
10703 parameters.
10704 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 
10705 64-
10706 bit platforms. Was previously 64 bits on all platforms.
10707 - The interface to the ACPI Global Lock acquire/release macros have 
10708 changed 
10709 slightly since ACPICA no longer keeps a local copy of the FACS with a 
10710 constructed pointer to the actual global lock.
10711
10712 Porting to the new table manager:
10713
10714 - AcpiInitializeTables: Must be called once, and can be called anytime 
10715 during the OS initialization process. It allows the host to specify an 
10716 area 
10717 of memory to be used to store the internal version of the RSDT/XSDT (root 
10718 table). This allows the host to access ACPI tables before memory 
10719 management 
10720 is initialized and running.
10721 - AcpiReallocateRootTable: Can be called after memory management is 
10722 running 
10723 to copy the root table to a dynamically allocated array, freeing up the 
10724 scratch memory specified in the call to AcpiInitializeTables.
10725 - AcpiSubsystemInitialize: This existing interface is independent of the 
10726 Table Manager, and does not have to be called before the Table Manager 
10727 can 
10728 be used, it only must be called before the rest of ACPICA can be used.
10729 - ACPI Tables: Some changes have been made to the names and structure of 
10730 the 
10731 actbl.h and actbl1.h header files and may require changes to existing 
10732 code. 
10733 For example, bitfields have been completely removed because of their lack 
10734 of 
10735 portability across C compilers.
10736 - Update interfaces to the Global Lock acquire/release macros if local 
10737 versions are used. (see acwin.h)
10738
10739 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10740
10741 New files: tbfind.c
10742
10743 Example Code and Data Size: These are the sizes for the OS-independent 
10744 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10745 debug version of the code includes the debug output trace mechanism and 
10746 has 
10747 a much larger code and data size.
10748
10749   Previous Release:
10750     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10751     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10752   Current Release:
10753     Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10754     Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10755
10756
10757 2) iASL Compiler/Disassembler and Tools:
10758
10759 No changes for this release.
10760
10761 ----------------------------------------
10762 21 July 2006. Summary of changes for version 20060721:
10763
10764 1) ACPI CA Core Subsystem:
10765
10766 The full source code for the ASL test suite used to validate the iASL 
10767 compiler and the ACPICA core subsystem is being released with the ACPICA 
10768 source for the first time. The source is contained in a separate package 
10769 and 
10770 consists of over 1100 files that exercise all ASL/AML operators. The 
10771 package 
10772 should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 
10773 Fiodor 
10774 Suietov)
10775
10776 Completed a new design and implementation for support of the ACPI Global 
10777 Lock. On the OS side, the global lock is now treated as a standard AML 
10778 mutex. Previously, multiple OS threads could "acquire" the global lock 
10779 simultaneously. However, this could cause the BIOS to be starved out of 
10780 the 
10781 lock - especially in cases such as the Embedded Controller driver where 
10782 there is a tight coupling between the OS and the BIOS.
10783
10784 Implemented an optimization for the ACPI Global Lock interrupt mechanism. 
10785 The Global Lock interrupt handler no longer queues the execution of a 
10786 separate thread to signal the global lock semaphore. Instead, the 
10787 semaphore 
10788 is signaled directly from the interrupt handler.
10789
10790 Implemented support within the AML interpreter for package objects that 
10791 contain a larger AML length (package list length) than the package 
10792 element 
10793 count. In this case, the length of the package is truncated to match the 
10794 package element count. Some BIOS code apparently modifies the package 
10795 length 
10796 on the fly, and this change supports this behavior. Provides 
10797 compatibility 
10798 with the MS AML interpreter. (With assistance from Fiodor Suietov)
10799
10800 Implemented a temporary fix for the BankValue parameter of a Bank Field 
10801 to 
10802 support all constant values, now including the Zero and One opcodes. 
10803 Evaluation of this parameter must eventually be converted to a full 
10804 TermArg 
10805 evaluation. A not-implemented error is now returned (temporarily) for 
10806 non-
10807 constant values for this parameter.
10808
10809 Fixed problem reports (Fiodor Suietov) integrated:
10810 - Fix for premature object deletion after CopyObject on Operation Region 
10811 (BZ 
10812 350)
10813
10814 Example Code and Data Size: These are the sizes for the OS-independent 
10815 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10816 debug version of the code includes the debug output trace mechanism and 
10817 has 
10818 a much larger code and data size.
10819
10820   Previous Release:
10821     Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
10822     Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
10823   Current Release:
10824     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10825     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10826
10827
10828 2) iASL Compiler/Disassembler and Tools:
10829
10830 No changes for this release.
10831
10832 ----------------------------------------
10833 07 July 2006. Summary of changes for version 20060707:
10834
10835 1) ACPI CA Core Subsystem:
10836
10837 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 
10838 that do not allow the initialization of address pointers within packed 
10839 structures - even though the hardware itself may support misaligned 
10840 transfers. Some of the debug data structures are packed by default to 
10841 minimize size.
10842
10843 Added an error message for the case where AcpiOsGetThreadId() returns 
10844 zero. 
10845 A non-zero value is required by the core ACPICA code to ensure the proper 
10846 operation of AML mutexes and recursive control methods.
10847
10848 The DSDT is now the only ACPI table that determines whether the AML 
10849 interpreter is in 32-bit or 64-bit mode. Not really a functional change, 
10850 but 
10851 the hooks for per-table 32/64 switching have been removed from the code. 
10852
10853 clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10854
10855 Fixed a possible leak of an OwnerID in the error path of 
10856 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 
10857 deletion to a single place in AcpiTbUninstallTable to correct possible 
10858 leaks 
10859 when using the AcpiTbDeleteTablesByType interface (with assistance from 
10860 Lance Ortiz.)
10861
10862 Fixed a problem with Serialized control methods where the semaphore 
10863 associated with the method could be over-signaled after multiple method 
10864 invocations.
10865
10866 Fixed two issues with the locking of the internal namespace data 
10867 structure. 
10868 Both the Unload() operator and AcpiUnloadTable interface now lock the 
10869 namespace during the namespace deletion associated with the table unload 
10870 (with assistance from Linn Crosetto.)
10871
10872 Fixed problem reports (Valery Podrezov) integrated:
10873 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10874
10875 Fixed problem reports (Fiodor Suietov) integrated:
10876 - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
10877 - On Address Space handler deletion, needless deactivation call (BZ 374)
10878 - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 
10879 375)
10880 - Possible memory leak, Notify sub-objects of Processor, Power, 
10881 ThermalZone 
10882 (BZ 376)
10883 - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
10884 - Minimum Length of RSDT should be validated (BZ 379)
10885 - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 
10886 Handler (BZ (380)
10887 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 
10888 loaded 
10889 (BZ 381)
10890
10891 Example Code and Data Size: These are the sizes for the OS-independent 
10892 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10893 debug version of the code includes the debug output trace mechanism and 
10894 has 
10895 a much larger code and data size.
10896
10897   Previous Release:
10898     Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10899     Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10900   Current Release:
10901     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10902     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10903
10904
10905 2) iASL Compiler/Disassembler and Tools:
10906
10907 Fixed problem reports:
10908 Compiler segfault when ASL contains a long (>1024) String declaration (BZ 
10909 436)
10910
10911 ----------------------------------------
10912 23 June 2006. Summary of changes for version 20060623:
10913
10914 1) ACPI CA Core Subsystem:
10915
10916 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 
10917 allows the type to be customized to the host OS for improved efficiency 
10918 (since a spinlock is usually a very small object.)
10919
10920 Implemented support for "ignored" bits in the ACPI registers. According 
10921 to 
10922 the ACPI specification, these bits should be preserved when writing the 
10923 registers via a read/modify/write cycle. There are 3 bits preserved in 
10924 this 
10925 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
10926
10927 Implemented the initial deployment of new OSL mutex interfaces. Since 
10928 some 
10929 host operating systems have separate mutex and semaphore objects, this 
10930 feature was requested. The base code now uses mutexes (and the new mutex 
10931 interfaces) wherever a binary semaphore was used previously. However, for 
10932 the current release, the mutex interfaces are defined as macros to map 
10933 them 
10934 to the existing semaphore interfaces. Therefore, no OSL changes are 
10935 required 
10936 at this time. (See acpiosxf.h)
10937
10938 Fixed several problems with the support for the control method SyncLevel 
10939 parameter. The SyncLevel now works according to the ACPI specification 
10940 and 
10941 in concert with the Mutex SyncLevel parameter, since the current 
10942 SyncLevel 
10943 is a property of the executing thread. Mutual exclusion for control 
10944 methods 
10945 is now implemented with a mutex instead of a semaphore.
10946
10947 Fixed three instances of the use of the C shift operator in the bitfield 
10948 support code (exfldio.c) to avoid the use of a shift value larger than 
10949 the 
10950 target data width. The behavior of C compilers is undefined in this case 
10951 and 
10952 can cause unpredictable results, and therefore the case must be detected 
10953 and 
10954 avoided. (Fiodor Suietov)
10955
10956 Added an info message whenever an SSDT or OEM table is loaded dynamically 
10957 via the Load() or LoadTable() ASL operators. This should improve 
10958 debugging 
10959 capability since it will show exactly what tables have been loaded 
10960 (beyond 
10961 the tables present in the RSDT/XSDT.)
10962
10963 Example Code and Data Size: These are the sizes for the OS-independent 
10964 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
10965 debug version of the code includes the debug output trace mechanism and 
10966 has 
10967 a much larger code and data size.
10968
10969   Previous Release:
10970     Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10971     Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10972   Current Release:
10973     Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10974     Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10975
10976
10977 2) iASL Compiler/Disassembler and Tools:
10978
10979 No changes for this release.
10980
10981 ----------------------------------------
10982 08 June 2006. Summary of changes for version 20060608:
10983
10984 1) ACPI CA Core Subsystem:
10985
10986 Converted the locking mutex used for the ACPI hardware to a spinlock. 
10987 This 
10988 change should eliminate all problems caused by attempting to acquire a 
10989 semaphore at interrupt level, and it means that all ACPICA external 
10990 interfaces that directly access the ACPI hardware can be safely called 
10991 from 
10992 interrupt level. OSL code that implements the semaphore interfaces should 
10993 be 
10994 able to eliminate any workarounds for being called at interrupt level.
10995
10996 Fixed a regression introduced in 20060526 where the ACPI device 
10997 initialization could be prematurely aborted with an AE_NOT_FOUND if a 
10998 device 
10999 did not have an optional _INI method.
11000
11001 Fixed an IndexField issue where a write to the Data Register should be 
11002 limited in size to the AccessSize (width) of the IndexField itself. (BZ 
11003 433, 
11004 Fiodor Suietov)
11005
11006 Fixed problem reports (Valery Podrezov) integrated:
11007 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11008
11009 Fixed problem reports (Fiodor Suietov) integrated:
11010 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11011
11012 Removed four global mutexes that were obsolete and were no longer being 
11013 used.
11014
11015 Example Code and Data Size: These are the sizes for the OS-independent 
11016 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
11017 debug version of the code includes the debug output trace mechanism and 
11018 has 
11019 a much larger code and data size.
11020
11021   Previous Release:
11022     Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11023     Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11024   Current Release:
11025     Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11026     Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11027
11028
11029 2) iASL Compiler/Disassembler and Tools:
11030
11031 Fixed a fault when using -g option (get tables from registry) on Windows 
11032 machines.
11033
11034 Fixed problem reports integrated:
11035 - Generate error if CreateField NumBits parameter is zero. (BZ 405)
11036 - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 
11037 Suietov)
11038 - Global table revision override (-r) is ignored (BZ 413)
11039
11040 ----------------------------------------
11041 26 May 2006. Summary of changes for version 20060526:
11042
11043 1) ACPI CA Core Subsystem:
11044
11045 Restructured, flattened, and simplified the internal interfaces for 
11046 namespace object evaluation - resulting in smaller code, less CPU stack 
11047 use, 
11048 and fewer interfaces. (With assistance from Mikhail Kouzmich)
11049
11050 Fixed a problem with the CopyObject operator where the first parameter 
11051 was 
11052 not typed correctly for the parser, interpreter, compiler, and 
11053 disassembler. 
11054 Caused various errors and unexpected behavior.
11055
11056 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 
11057 produced incorrect results with some C compilers. Since the behavior of C 
11058 compilers when the shift value is larger than the datatype width is 
11059 apparently not well defined, the interpreter now detects this condition 
11060 and 
11061 simply returns zero as expected in all such cases. (BZ 395)
11062
11063 Fixed problem reports (Valery Podrezov) integrated:
11064 - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11065 - Allow interpreter to handle nested method declarations (BZ 5361)
11066
11067 Fixed problem reports (Fiodor Suietov) integrated:
11068 - AcpiTerminate doesn't free debug memory allocation list objects (BZ 
11069 355)
11070 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 
11071 356)
11072 - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11073 - Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11074 - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11075 - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11076 - Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11077 - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11078 - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 
11079 365)
11080 - Status of the Global Initialization Handler call not used (BZ 366)
11081 - Incorrect object parameter to Global Initialization Handler (BZ 367)
11082
11083 Example Code and Data Size: These are the sizes for the OS-independent 
11084 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
11085 debug version of the code includes the debug output trace mechanism and 
11086 has 
11087 a much larger code and data size.
11088
11089   Previous Release:
11090     Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11091     Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11092   Current Release:
11093     Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11094     Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11095
11096
11097 2) iASL Compiler/Disassembler and Tools:
11098
11099 Modified the parser to allow the names IO, DMA, and IRQ to be used as 
11100 namespace identifiers with no collision with existing resource descriptor 
11101 macro names. This provides compatibility with other ASL compilers and is 
11102 most useful for disassembly/recompilation of existing tables without 
11103 parse 
11104 errors. (With assistance from Thomas Renninger)
11105
11106 Disassembler: fixed an incorrect disassembly problem with the 
11107 DataTableRegion and CopyObject operators. Fixed a possible fault during 
11108 disassembly of some Alias operators.
11109
11110 ----------------------------------------
11111 12 May 2006. Summary of changes for version 20060512:
11112
11113 1) ACPI CA Core Subsystem:
11114
11115 Replaced the AcpiOsQueueForExecution interface with a new interface named 
11116 AcpiOsExecute. The major difference is that the new interface does not 
11117 have 
11118 a Priority parameter, this appeared to be useless and has been replaced 
11119 by 
11120
11121 Type parameter. The Type tells the host what type of execution is being 
11122 requested, such as global lock handler, notify handler, GPE handler, etc. 
11123 This allows the host to queue and execute the request as appropriate for 
11124 the 
11125 request type, possibly using different work queues and different 
11126 priorities 
11127 for the various request types. This enables fixes for multithreading 
11128 deadlock problems such as BZ #5534, and will require changes to all 
11129 existing 
11130 OS interface layers. (Alexey Starikovskiy and Bob Moore)
11131
11132 Fixed a possible memory leak associated with the support for the so-
11133 called 
11134 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 
11135 Suietov)
11136
11137 Fixed a problem with the Load() operator where a table load from an 
11138 operation region could overwrite an internal table buffer by up to 7 
11139 bytes 
11140 and cause alignment faults on IPF systems. (With assistance from Luming 
11141 Yu)
11142
11143 Example Code and Data Size: These are the sizes for the OS-independent 
11144 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
11145 debug version of the code includes the debug output trace mechanism and 
11146 has 
11147 a much larger code and data size.
11148
11149   Previous Release:
11150     Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11151     Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11152   Current Release:
11153     Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11154     Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11155
11156
11157
11158 2) iASL Compiler/Disassembler and Tools:
11159
11160 Disassembler: Implemented support to cross reference the internal 
11161 namespace 
11162 and automatically generate ASL External() statements for symbols not 
11163 defined 
11164 within the current table being disassembled. This will simplify the 
11165 disassembly and recompilation of interdependent tables such as SSDTs 
11166 since 
11167 these statements will no longer have to be added manually.
11168
11169 Disassembler: Implemented experimental support to automatically detect 
11170 invocations of external control methods and generate appropriate 
11171 External() 
11172 statements. This is problematic because the AML cannot be correctly 
11173 parsed 
11174 until the number of arguments for each control method is known. 
11175 Currently, 
11176 standalone method invocations and invocations as the source operand of a 
11177 Store() statement are supported.
11178
11179 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 
11180 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 
11181 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 
11182 more readable and likely closer to the original ASL source.
11183
11184 ----------------------------------------
11185 21 April 2006. Summary of changes for version 20060421:
11186
11187 1) ACPI CA Core Subsystem:
11188
11189 Removed a device initialization optimization introduced in 20051216 where 
11190 the _STA method was not run unless an _INI was also present for the same 
11191 device. This optimization could cause problems because it could allow 
11192 _INI 
11193 methods to be run within a not-present device subtree. (If a not-present 
11194 device had no _INI, _STA would not be run, the not-present status would 
11195 not 
11196 be discovered, and the children of the device would be incorrectly 
11197 traversed.)
11198
11199 Implemented a new _STA optimization where namespace subtrees that do not 
11200 contain _INI are identified and ignored during device initialization. 
11201 Selectively running _STA can significantly improve boot time on large 
11202 machines (with assistance from Len Brown.)
11203
11204 Implemented support for the device initialization case where the returned 
11205 _STA flags indicate a device not-present but functioning. In this case, 
11206 _INI 
11207 is not run, but the device children are examined for presence, as per the 
11208 ACPI specification.
11209
11210 Implemented an additional change to the IndexField support in order to 
11211 conform to MS behavior. The value written to the Index Register is not 
11212 simply a byte offset, it is a byte offset in units of the access width of 
11213 the parent Index Field. (Fiodor Suietov)
11214
11215 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 
11216 interface is called during the creation of all AML operation regions, and 
11217 allows the host OS to exert control over what addresses it will allow the 
11218 AML code to access. Operation Regions whose addresses are disallowed will 
11219 cause a runtime exception when they are actually accessed (will not 
11220 affect 
11221 or abort table loading.) See oswinxf or osunixxf for an example 
11222 implementation.
11223
11224 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 
11225 interface allows the host OS to match the various "optional" 
11226 interface/behavior strings for the _OSI predefined control method as 
11227 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 
11228 for an example implementation.
11229
11230 Restructured and corrected various problems in the exception handling 
11231 code 
11232 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 
11233 (with assistance from Takayoshi Kochi.)
11234
11235 Modified the Linux source converter to ignore quoted string literals 
11236 while 
11237 converting identifiers from mixed to lower case. This will correct 
11238 problems 
11239 with the disassembler and other areas where such strings must not be 
11240 modified.
11241
11242 The ACPI_FUNCTION_* macros no longer require quotes around the function 
11243 name. This allows the Linux source converter to convert the names, now 
11244 that 
11245 the converter ignores quoted strings.
11246
11247 Example Code and Data Size: These are the sizes for the OS-independent 
11248 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
11249 debug version of the code includes the debug output trace mechanism and 
11250 has 
11251 a much larger code and data size.
11252
11253   Previous Release:
11254
11255     Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11256     Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11257   Current Release:
11258     Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11259     Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11260
11261
11262 2) iASL Compiler/Disassembler and Tools:
11263
11264 Implemented 3 new warnings for iASL, and implemented multiple warning 
11265 levels 
11266 (w2 flag).
11267
11268 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 
11269 not 
11270 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 
11271 check for the possible timeout, a warning is issued.
11272
11273 2) Useless operators: If an ASL operator does not specify an optional 
11274 target 
11275 operand and it also does not use the function return value from the 
11276 operator, a warning is issued since the operator effectively does 
11277 nothing.
11278
11279 3) Unreferenced objects: If a namespace object is created, but never 
11280 referenced, a warning is issued. This is a warning level 2 since there 
11281 are 
11282 cases where this is ok, such as when a secondary table is loaded that 
11283 uses 
11284 the unreferenced objects. Even so, care is taken to only flag objects 
11285 that 
11286 don't look like they will ever be used. For example, the reserved methods 
11287 (starting with an underscore) are usually not referenced because it is 
11288 expected that the OS will invoke them.
11289
11290 ----------------------------------------
11291 31 March 2006. Summary of changes for version 20060331:
11292
11293 1) ACPI CA Core Subsystem:
11294
11295 Implemented header file support for the following additional ACPI tables: 
11296 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 
11297 support, 
11298 all current and known ACPI tables are now defined in the ACPICA headers 
11299 and 
11300 are available for use by device drivers and other software.
11301
11302 Implemented support to allow tables that contain ACPI names with invalid 
11303 characters to be loaded. Previously, this would cause the table load to 
11304 fail, but since there are several known cases of such tables on existing 
11305 machines, this change was made to enable ACPI support for them. Also, 
11306 this 
11307 matches the behavior of the Microsoft ACPI implementation.
11308
11309 Fixed a couple regressions introduced during the memory optimization in 
11310 the 
11311 20060317 release. The namespace node definition required additional 
11312 reorganization and an internal datatype that had been changed to 8-bit 
11313 was 
11314 restored to 32-bit. (Valery Podrezov)
11315
11316 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 
11317 could be passed through to AcpiOsReleaseObject which is unexpected. Such 
11318 null pointers are now trapped and ignored, matching the behavior of the 
11319 previous implementation before the deployment of AcpiOsReleaseObject.
11320 (Valery Podrezov, Fiodor Suietov)
11321
11322 Fixed a memory mapping leak during the deletion of a SystemMemory 
11323 operation 
11324 region where a cached memory mapping was not deleted. This became a 
11325 noticeable problem for operation regions that are defined within 
11326 frequently 
11327 used control methods. (Dana Meyers)
11328
11329 Reorganized the ACPI table header files into two main files: one for the 
11330 ACPI tables consumed by the ACPICA core, and another for the 
11331 miscellaneous 
11332 ACPI tables that are consumed by the drivers and other software. The 
11333 various 
11334 FADT definitions were merged into one common section and three different 
11335 tables (ACPI 1.0, 1.0+, and 2.0)
11336
11337 Example Code and Data Size: These are the sizes for the OS-independent 
11338 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
11339 debug version of the code includes the debug output trace mechanism and 
11340 has 
11341 a much larger code and data size.
11342
11343   Previous Release:
11344     Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11345     Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11346   Current Release:
11347     Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11348     Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11349
11350
11351 2) iASL Compiler/Disassembler and Tools:
11352
11353 Disassembler: Implemented support to decode and format all non-AML ACPI 
11354 tables (tables other than DSDTs and SSDTs.) This includes the new tables 
11355 added to the ACPICA headers, therefore all current and known ACPI tables 
11356 are 
11357 supported.
11358
11359 Disassembler: The change to allow ACPI names with invalid characters also 
11360 enables the disassembly of such tables. Invalid characters within names 
11361 are 
11362 changed to '*' to make the name printable; the iASL compiler will still 
11363 generate an error for such names, however, since this is an invalid ACPI 
11364 character.
11365
11366 Implemented an option for AcpiXtract (-a) to extract all tables found in 
11367 the 
11368 input file. The default invocation extracts only the DSDTs and SSDTs.
11369
11370 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 
11371 makefile for the AcpiXtract utility.
11372
11373 ----------------------------------------
11374 17 March 2006. Summary of changes for version 20060317:
11375
11376 1) ACPI CA Core Subsystem:
11377
11378 Implemented the use of a cache object for all internal namespace nodes. 
11379 Since there are about 1000 static nodes in a typical system, this will 
11380 decrease memory use for cache implementations that minimize per-
11381 allocation 
11382 overhead (such as a slab allocator.)
11383
11384 Removed the reference count mechanism for internal namespace nodes, since 
11385 it 
11386 was deemed unnecessary. This reduces the size of each namespace node by 
11387 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 
11388 case, 
11389 and 32 bytes for the 64-bit case.
11390
11391 Optimized several internal data structures to reduce object size on 64-
11392 bit 
11393 platforms by packing data within the 64-bit alignment. This includes the 
11394 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 
11395 instances corresponding to the namespace objects.
11396
11397 Added two new strings for the predefined _OSI method: "Windows 2001.1 
11398 SP1" 
11399 and "Windows 2006".
11400
11401 Split the allocation tracking mechanism out to a separate file, from 
11402 utalloc.c to uttrack.c. This mechanism appears to be only useful for 
11403 application-level code. Kernels may wish to not include uttrack.c in 
11404 distributions.
11405
11406 Removed all remnants of the obsolete ACPI_REPORT_* macros and the 
11407 associated 
11408 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 
11409 macros.)
11410
11411 Code and Data Size: These are the sizes for the acpica.lib produced by 
11412 the 
11413 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
11414 ACPI 
11415 driver or OSPM code. The debug version of the code includes the debug 
11416 output 
11417 trace mechanism and has a much larger code and data size. Note that these 
11418 values will vary depending on the efficiency of the compiler and the 
11419 compiler options used during generation.
11420
11421   Previous Release:
11422     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11423     Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11424   Current Release:
11425     Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11426     Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11427
11428
11429 2) iASL Compiler/Disassembler and Tools:
11430
11431 Implemented an ANSI C version of the acpixtract utility. This version 
11432 will 
11433 automatically extract the DSDT and all SSDTs from the input acpidump text 
11434 file and dump the binary output to separate files. It can also display a 
11435 summary of the input file including the headers for each table found and 
11436 will extract any single ACPI table, with any signature. (See 
11437 source/tools/acpixtract)
11438
11439 ----------------------------------------
11440 10 March 2006. Summary of changes for version 20060310:
11441
11442 1) ACPI CA Core Subsystem:
11443
11444 Tagged all external interfaces to the subsystem with the new 
11445 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 
11446 assist 
11447 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 
11448 macro. The default definition is NULL.
11449
11450 Added the ACPI_THREAD_ID type for the return value from 
11451 AcpiOsGetThreadId. 
11452 This allows the host to define this as necessary to simplify kernel 
11453 integration. The default definition is ACPI_NATIVE_UINT.
11454
11455 Fixed two interpreter problems related to error processing, the deletion 
11456 of 
11457 objects, and placing invalid pointers onto the internal operator result 
11458 stack. BZ 6028, 6151 (Valery Podrezov)
11459
11460 Increased the reference count threshold where a warning is emitted for 
11461 large 
11462 reference counts in order to eliminate unnecessary warnings on systems 
11463 with 
11464 large namespaces (especially 64-bit.) Increased the value from 0x400 to 
11465 0x800.
11466
11467 Due to universal disagreement as to the meaning of the 'c' in the 
11468 calloc() 
11469 function, the ACPI_MEM_CALLOCATE macro has been renamed to 
11470 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 
11471 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 
11472 ACPI_FREE.
11473
11474 Code and Data Size: These are the sizes for the acpica.lib produced by 
11475 the 
11476 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
11477 ACPI 
11478 driver or OSPM code. The debug version of the code includes the debug 
11479 output 
11480 trace mechanism and has a much larger code and data size. Note that these 
11481 values will vary depending on the efficiency of the compiler and the 
11482 compiler options used during generation.
11483
11484   Previous Release:
11485     Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11486     Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11487   Current Release:
11488     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11489     Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11490
11491
11492 2) iASL Compiler/Disassembler:
11493
11494 Disassembler: implemented support for symbolic resource descriptor 
11495 references. If a CreateXxxxField operator references a fixed offset 
11496 within 
11497
11498 resource descriptor, a name is assigned to the descriptor and the offset 
11499 is 
11500 translated to the appropriate resource tag and pathname. The addition of 
11501 this support brings the disassembled code very close to the original ASL 
11502 source code and helps eliminate run-time errors when the disassembled 
11503 code 
11504 is modified (and recompiled) in such a way as to invalidate the original 
11505 fixed offsets.
11506
11507 Implemented support for a Descriptor Name as the last parameter to the 
11508 ASL 
11509 Register() macro. This parameter was inadvertently left out of the ACPI 
11510 specification, and will be added for ACPI 3.0b.
11511
11512 Fixed a problem where the use of the "_OSI" string (versus the full path 
11513 "\_OSI") caused an internal compiler error. ("No back ptr to op")
11514
11515 Fixed a problem with the error message that occurs when an invalid string 
11516 is 
11517 used for a _HID object (such as one with an embedded asterisk: 
11518 "*PNP010A".) 
11519 The correct message is now displayed.
11520
11521 ----------------------------------------
11522 17 February 2006. Summary of changes for version 20060217:
11523
11524 1) ACPI CA Core Subsystem:
11525
11526 Implemented a change to the IndexField support to match the behavior of 
11527 the 
11528 Microsoft AML interpreter. The value written to the Index register is now 
11529
11530 byte offset, no longer an index based upon the width of the Data 
11531 register. 
11532 This should fix IndexField problems seen on some machines where the Data 
11533 register is not exactly one byte wide. The ACPI specification will be 
11534 clarified on this point.
11535
11536 Fixed a problem where several resource descriptor types could overrun the 
11537 internal descriptor buffer due to size miscalculation: VendorShort, 
11538 VendorLong, and Interrupt. This was noticed on IA64 machines, but could 
11539 affect all platforms.
11540
11541 Fixed a problem where individual resource descriptors were misaligned 
11542 within 
11543 the internal buffer, causing alignment faults on IA64 platforms.
11544
11545 Code and Data Size: These are the sizes for the acpica.lib produced by 
11546 the 
11547 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
11548 ACPI 
11549 driver or OSPM code. The debug version of the code includes the debug 
11550 output 
11551 trace mechanism and has a much larger code and data size. Note that these 
11552 values will vary depending on the efficiency of the compiler and the 
11553 compiler options used during generation.
11554
11555   Previous Release:
11556     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11557     Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11558   Current Release:
11559     Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11560     Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11561
11562
11563 2) iASL Compiler/Disassembler:
11564
11565 Implemented support for new reserved names: _WDG and _WED are Microsoft 
11566 extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11567 defined method (Throttling Depth Limit.)
11568
11569 Fixed a problem where a zero-length VendorShort or VendorLong resource 
11570 descriptor was incorrectly emitted as a descriptor of length one.
11571
11572 ----------------------------------------
11573 10 February 2006. Summary of changes for version 20060210:
11574
11575 1) ACPI CA Core Subsystem:
11576
11577 Removed a couple of extraneous ACPI_ERROR messages that appeared during 
11578 normal execution. These became apparent after the conversion from 
11579 ACPI_DEBUG_PRINT.
11580
11581 Fixed a problem where the CreateField operator could hang if the BitIndex 
11582 or 
11583 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11584
11585 Fixed a problem where a DeRefOf operation on a buffer object incorrectly 
11586 failed with an exception. This also fixes a couple of related RefOf and 
11587 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11588
11589 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 
11590 of 
11591 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 
11592 BZ 
11593 5480)
11594
11595 Implemented a memory cleanup at the end of the execution of each 
11596 iteration 
11597 of an AML While() loop, preventing the accumulation of outstanding 
11598 objects. 
11599 (Valery Podrezov, BZ 5427)
11600
11601 Eliminated a chunk of duplicate code in the object resolution code. 
11602 (Valery 
11603 Podrezov, BZ 5336)
11604
11605 Fixed several warnings during the 64-bit code generation.
11606
11607 The AcpiSrc source code conversion tool now inserts one line of 
11608 whitespace 
11609 after an if() statement that is followed immediately by a comment, 
11610 improving 
11611 readability of the Linux code.
11612
11613 Code and Data Size: The current and previous library sizes for the core 
11614 subsystem are shown below. These are the code and data sizes for the 
11615 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
11616 These 
11617 values do not include any ACPI driver or OSPM code. The debug version of 
11618 the 
11619 code includes the debug output trace mechanism and has a much larger code 
11620 and data size. Note that these values will vary depending on the 
11621 efficiency 
11622 of the compiler and the compiler options used during generation.
11623
11624   Previous Release:
11625     Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11626     Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11627   Current Release:
11628     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11629     Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11630
11631
11632 2) iASL Compiler/Disassembler:
11633
11634 Fixed a problem with the disassembly of a BankField operator with a 
11635 complex 
11636 expression for the BankValue parameter.
11637
11638 ----------------------------------------
11639 27 January 2006. Summary of changes for version 20060127:
11640
11641 1) ACPI CA Core Subsystem:
11642
11643 Implemented support in the Resource Manager to allow unresolved 
11644 namestring 
11645 references within resource package objects for the _PRT method. This 
11646 support 
11647 is in addition to the previously implemented unresolved reference support 
11648 within the AML parser. If the interpreter slack mode is enabled, these 
11649 unresolved references will be passed through to the caller as a NULL 
11650 package 
11651 entry.
11652
11653 Implemented and deployed new macros and functions for error and warning 
11654 messages across the subsystem. These macros are simpler and generate less 
11655 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 
11656 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 
11657 macros remain defined to allow ACPI drivers time to migrate to the new 
11658 macros.
11659
11660 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 
11661 the 
11662 Acquire/Release Lock OSL interfaces.
11663
11664 Fixed a problem where Alias ASL operators are sometimes not correctly 
11665 resolved, in both the interpreter and the iASL compiler.
11666
11667 Fixed several problems with the implementation of the 
11668 ConcatenateResTemplate 
11669 ASL operator. As per the ACPI specification, zero length buffers are now 
11670 treated as a single EndTag. One-length buffers always cause a fatal 
11671 exception. Non-zero length buffers that do not end with a full 2-byte 
11672 EndTag 
11673 cause a fatal exception.
11674
11675 Fixed a possible structure overwrite in the AcpiGetObjectInfo external 
11676 interface. (With assistance from Thomas Renninger)
11677
11678 Code and Data Size: The current and previous library sizes for the core 
11679 subsystem are shown below. These are the code and data sizes for the 
11680 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
11681 These 
11682 values do not include any ACPI driver or OSPM code. The debug version of 
11683 the 
11684 code includes the debug output trace mechanism and has a much larger code 
11685 and data size. Note that these values will vary depending on the 
11686 efficiency 
11687 of the compiler and the compiler options used during generation.
11688
11689   Previous Release:
11690     Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11691     Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11692   Current Release:
11693     Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11694     Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11695
11696
11697 2) iASL Compiler/Disassembler:
11698
11699 Fixed an internal error that was generated for any forward references to 
11700 ASL 
11701 Alias objects.
11702
11703 ----------------------------------------
11704 13 January 2006. Summary of changes for version 20060113:
11705
11706 1) ACPI CA Core Subsystem:
11707
11708 Added 2006 copyright to all module headers and signons. This affects 
11709 virtually every file in the ACPICA core subsystem, iASL compiler, and the 
11710 utilities.
11711  
11712 Enhanced the ACPICA error reporting in order to simplify user migration 
11713 to 
11714 the non-debug version of ACPICA. Replaced all instances of the 
11715 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 
11716 debug 
11717 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 
11718 respectively. This preserves all error and warning messages in the non-
11719 debug 
11720 version of the ACPICA code (this has been referred to as the "debug lite" 
11721 option.) Over 200 cases were converted to create a total of over 380 
11722 error/warning messages across the ACPICA code. This increases the code 
11723 and 
11724 data size of the default non-debug version of the code somewhat (about 
11725 13K), 
11726 but all error/warning reporting may be disabled if desired (and code 
11727 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 
11728 configuration option. The size of the debug version of ACPICA remains 
11729 about 
11730 the same.
11731
11732 Fixed a memory leak within the AML Debugger "Set" command. One object was 
11733 not properly deleted for every successful invocation of the command.
11734
11735 Code and Data Size: The current and previous library sizes for the core 
11736 subsystem are shown below. These are the code and data sizes for the 
11737 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
11738 These 
11739 values do not include any ACPI driver or OSPM code. The debug version of 
11740 the 
11741 code includes the debug output trace mechanism and has a much larger code 
11742 and data size. Note that these values will vary depending on the 
11743 efficiency 
11744 of the compiler and the compiler options used during generation.
11745
11746   Previous Release:
11747     Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11748     Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11749   Current Release:
11750     Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11751     Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11752
11753
11754 2) iASL Compiler/Disassembler:
11755
11756 The compiler now officially supports the ACPI 3.0a specification that was 
11757 released on December 30, 2005. (Specification is available at 
11758 www.acpi.info)
11759
11760 ----------------------------------------
11761 16 December 2005. Summary of changes for version 20051216:
11762
11763 1) ACPI CA Core Subsystem:
11764
11765 Implemented optional support to allow unresolved names within ASL Package 
11766 objects. A null object is inserted in the package when a named reference 
11767 cannot be located in the current namespace. Enabled via the interpreter 
11768 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 
11769 machines 
11770 that contain such code.
11771
11772 Implemented an optimization to the initialization sequence that can 
11773 improve 
11774 boot time. During ACPI device initialization, the _STA method is now run 
11775 if 
11776 and only if the _INI method exists. The _STA method is used to determine 
11777 if 
11778 the device is present; An _INI can only be run if _STA returns present, 
11779 but 
11780 it is a waste of time to run the _STA method if the _INI does not exist. 
11781 (Prototype and assistance from Dong Wei)
11782
11783 Implemented use of the C99 uintptr_t for the pointer casting macros if it 
11784 is 
11785 available in the current compiler. Otherwise, the default (void *) cast 
11786 is 
11787 used as before.
11788
11789 Fixed some possible memory leaks found within the execution path of the 
11790 Break, Continue, If, and CreateField operators. (Valery Podrezov)
11791
11792 Fixed a problem introduced in the 20051202 release where an exception is 
11793 generated during method execution if a control method attempts to declare 
11794 another method.
11795
11796 Moved resource descriptor string constants that are used by both the AML 
11797 disassembler and AML debugger to the common utilities directory so that 
11798 these components are independent.
11799
11800 Implemented support in the AcpiExec utility (-e switch) to globally 
11801 ignore 
11802 exceptions during control method execution (method is not aborted.)
11803
11804 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 
11805 generation.
11806
11807 Code and Data Size: The current and previous library sizes for the core 
11808 subsystem are shown below. These are the code and data sizes for the 
11809 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
11810 These 
11811 values do not include any ACPI driver or OSPM code. The debug version of 
11812 the 
11813 code includes the debug output trace mechanism and has a much larger code 
11814 and data size. Note that these values will vary depending on the 
11815 efficiency 
11816 of the compiler and the compiler options used during generation.
11817
11818   Previous Release:
11819     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11820     Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11821   Current Release:
11822     Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11823     Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11824
11825
11826 2) iASL Compiler/Disassembler:
11827
11828 Fixed a problem where a CPU stack overflow fault could occur if a 
11829 recursive 
11830 method call was made from within a Return statement.
11831
11832 ----------------------------------------
11833 02 December 2005. Summary of changes for version 20051202:
11834
11835 1) ACPI CA Core Subsystem:
11836
11837 Modified the parsing of control methods to no longer create namespace 
11838 objects during the first pass of the parse. Objects are now created only 
11839 during the execute phase, at the moment the namespace creation operator 
11840 is 
11841 encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 
11842 This 
11843 should eliminate ALREADY_EXISTS exceptions seen on some machines where 
11844 reentrant control methods are protected by an AML mutex. The mutex will 
11845 now 
11846 correctly block multiple threads from attempting to create the same 
11847 object 
11848 more than once.
11849
11850 Increased the number of available Owner Ids for namespace object tracking 
11851 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 
11852 on 
11853 some machines with a large number of ACPI tables (either static or 
11854 dynamic).
11855
11856 Fixed a problem with the AcpiExec utility where a fault could occur when 
11857 the 
11858 -b switch (batch mode) is used.
11859
11860 Enhanced the namespace dump routine to output the owner ID for each 
11861 namespace object.
11862
11863 Code and Data Size: The current and previous library sizes for the core 
11864 subsystem are shown below. These are the code and data sizes for the 
11865 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
11866 These 
11867 values do not include any ACPI driver or OSPM code. The debug version of 
11868 the 
11869 code includes the debug output trace mechanism and has a much larger code 
11870 and data size. Note that these values will vary depending on the 
11871 efficiency 
11872 of the compiler and the compiler options used during generation.
11873
11874   Previous Release:
11875     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11876     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11877   Current Release:
11878     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11879     Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11880
11881
11882 2) iASL Compiler/Disassembler:
11883
11884 Fixed a parse error during compilation of certain Switch/Case constructs. 
11885 To 
11886 simplify the parse, the grammar now allows for multiple Default 
11887 statements 
11888 and this error is now detected and flagged during the analysis phase.
11889
11890 Disassembler: The disassembly now includes the contents of the original 
11891 table header within a comment at the start of the file. This includes the 
11892 name and version of the original ASL compiler.
11893
11894 ----------------------------------------
11895 17 November 2005. Summary of changes for version 20051117:
11896
11897 1) ACPI CA Core Subsystem:
11898
11899 Fixed a problem in the AML parser where the method thread count could be 
11900 decremented below zero if any errors occurred during the method parse 
11901 phase. 
11902 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 
11903 machines. 
11904 This also fixed a related regression with the mechanism that detects and 
11905 corrects methods that cannot properly handle reentrancy (related to the 
11906 deployment of the new OwnerId mechanism.)
11907
11908 Eliminated the pre-parsing of control methods (to detect errors) during 
11909 table load. Related to the problem above, this was causing unwind issues 
11910 if 
11911 any errors occurred during the parse, and it seemed to be overkill. A 
11912 table 
11913 load should not be aborted if there are problems with any single control 
11914 method, thus rendering this feature rather pointless.
11915
11916 Fixed a problem with the new table-driven resource manager where an 
11917 internal 
11918 buffer overflow could occur for small resource templates.
11919
11920 Implemented a new external interface, AcpiGetVendorResource. This 
11921 interface 
11922 will find and return a vendor-defined resource descriptor within a _CRS 
11923 or 
11924 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 
11925 Helgaas.
11926
11927 Removed the length limit (200) on string objects as per the upcoming ACPI 
11928 3.0A specification. This affects the following areas of the interpreter: 
11929 1) 
11930 any implicit conversion of a Buffer to a String, 2) a String object
11931 result 
11932 of the ASL Concatenate operator, 3) the String object result of the ASL
11933 ToString operator.
11934
11935 Fixed a problem in the Windows OS interface layer (OSL) where a 
11936 WAIT_FOREVER 
11937 on a semaphore object would incorrectly timeout. This allows the 
11938 multithreading features of the AcpiExec utility to work properly under 
11939 Windows.
11940
11941 Updated the Linux makefiles for the iASL compiler and AcpiExec to include 
11942 the recently added file named "utresrc.c".
11943
11944 Code and Data Size: The current and previous library sizes for the core 
11945 subsystem are shown below. These are the code and data sizes for the 
11946 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
11947 These 
11948 values do not include any ACPI driver or OSPM code. The debug version of 
11949 the 
11950 code includes the debug output trace mechanism and has a much larger code 
11951 and data size. Note that these values will vary depending on the 
11952 efficiency 
11953 of the compiler and the compiler options used during generation.
11954
11955   Previous Release:
11956     Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11957     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11958   Current Release:
11959     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11960     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11961
11962
11963 2) iASL Compiler/Disassembler:
11964
11965 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 
11966 specification. For the iASL compiler, this means that string literals 
11967 within 
11968 the source ASL can be of any length. 
11969
11970 Enhanced the listing output to dump the AML code for resource descriptors 
11971 immediately after the ASL code for each descriptor, instead of in a block 
11972 at 
11973 the end of the entire resource template.
11974
11975 Enhanced the compiler debug output to dump the entire original parse tree 
11976 constructed during the parse phase, before any transforms are applied to 
11977 the 
11978 tree. The transformed tree is dumped also.
11979
11980 ----------------------------------------
11981 02 November 2005. Summary of changes for version 20051102:
11982
11983 1) ACPI CA Core Subsystem:
11984
11985 Modified the subsystem initialization sequence to improve GPE support. 
11986 The 
11987 GPE initialization has been split into two parts in order to defer 
11988 execution 
11989 of the _PRW methods (Power Resources for Wake) until after the hardware 
11990 is 
11991 fully initialized and the SCI handler is installed. This allows the _PRW 
11992 methods to access fields protected by the Global Lock. This will fix 
11993 systems 
11994 where a NO_GLOBAL_LOCK exception has been seen during initialization.
11995
11996 Converted the ACPI internal object disassemble and display code within 
11997 the 
11998 AML debugger to fully table-driven operation, reducing code size and 
11999 increasing maintainability.
12000
12001 Fixed a regression with the ConcatenateResTemplate() ASL operator 
12002 introduced 
12003 in the 20051021 release.
12004
12005 Implemented support for "local" internal ACPI object types within the 
12006 debugger "Object" command and the AcpiWalkNamespace external interfaces. 
12007 These local types include RegionFields, BankFields, IndexFields, Alias, 
12008 and 
12009 reference objects.
12010
12011 Moved common AML resource handling code into a new file, "utresrc.c". 
12012 This 
12013 code is shared by both the Resource Manager and the AML Debugger.
12014
12015 Code and Data Size: The current and previous library sizes for the core 
12016 subsystem are shown below. These are the code and data sizes for the 
12017 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
12018 These 
12019 values do not include any ACPI driver or OSPM code. The debug version of 
12020 the 
12021 code includes the debug output trace mechanism and has a much larger code 
12022 and data size. Note that these values will vary depending on the 
12023 efficiency 
12024 of the compiler and the compiler options used during generation.
12025
12026   Previous Release:
12027     Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12028     Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12029   Current Release:
12030     Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12031     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12032
12033
12034 2) iASL Compiler/Disassembler:
12035
12036 Fixed a problem with very large initializer lists (more than 4000 
12037 elements) 
12038 for both Buffer and Package objects where the parse stack could overflow.
12039
12040 Enhanced the pre-compile source code scan for non-ASCII characters to 
12041 ignore 
12042 characters within comment fields. The scan is now always performed and is 
12043 no 
12044 longer optional, detecting invalid characters within a source file 
12045 immediately rather than during the parse phase or later.
12046
12047 Enhanced the ASL grammar definition to force early reductions on all 
12048 list-
12049 style grammar elements so that the overall parse stack usage is greatly 
12050 reduced. This should improve performance and reduce the possibility of 
12051 parse 
12052 stack overflow.
12053
12054 Eliminated all reduce/reduce conflicts in the iASL parser generation. 
12055 Also, 
12056 with the addition of a %expected statement, the compiler generates from 
12057 source with no warnings.
12058
12059 Fixed a possible segment fault in the disassembler if the input filename 
12060 does not contain a "dot" extension (Thomas Renninger).
12061
12062 ----------------------------------------
12063 21 October 2005. Summary of changes for version 20051021:
12064
12065 1) ACPI CA Core Subsystem:
12066
12067 Implemented support for the EM64T and other x86-64 processors. This 
12068 essentially entails recognizing that these processors support non-aligned 
12069 memory transfers. Previously, all 64-bit processors were assumed to lack 
12070 hardware support for non-aligned transfers.
12071
12072 Completed conversion of the Resource Manager to nearly full table-driven 
12073 operation. Specifically, the resource conversion code (convert AML to 
12074 internal format and the reverse) and the debug code to dump internal 
12075 resource descriptors are fully table-driven, reducing code and data size 
12076 and 
12077 improving maintainability.
12078
12079 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 
12080 word 
12081 on 64-bit processors instead of a fixed 32-bit word. (With assistance 
12082 from 
12083 Alexey Starikovskiy)
12084
12085 Implemented support within the resource conversion code for the Type-
12086 Specific byte within the various ACPI 3.0 *WordSpace macros.
12087
12088 Fixed some issues within the resource conversion code for the type-
12089 specific 
12090 flags for both Memory and I/O address resource descriptors. For Memory, 
12091 implemented support for the MTP and TTP flags. For I/O, split the TRS and 
12092 TTP flags into two separate fields.
12093
12094 Code and Data Size: The current and previous library sizes for the core 
12095 subsystem are shown below. These are the code and data sizes for the 
12096 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
12097 These 
12098 values do not include any ACPI driver or OSPM code. The debug version of 
12099 the 
12100 code includes the debug output trace mechanism and has a much larger code 
12101 and data size. Note that these values will vary depending on the 
12102 efficiency 
12103 of the compiler and the compiler options used during generation.
12104
12105   Previous Release:
12106     Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12107     Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12108   Current Release:
12109     Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12110     Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12111
12112
12113
12114 2) iASL Compiler/Disassembler:
12115
12116 Relaxed a compiler restriction that disallowed a ResourceIndex byte if 
12117 the 
12118 corresponding ResourceSource string was not also present in a resource 
12119 descriptor declaration. This restriction caused problems with existing 
12120 AML/ASL code that includes the Index byte without the string. When such 
12121 AML 
12122 was disassembled, it could not be compiled without modification. Further, 
12123 the modified code created a resource template with a different size than 
12124 the 
12125 original, breaking code that used fixed offsets into the resource 
12126 template 
12127 buffer.
12128
12129 Removed a recent feature of the disassembler to ignore a lone 
12130 ResourceIndex 
12131 byte. This byte is now emitted if present so that the exact AML can be 
12132 reproduced when the disassembled code is recompiled.
12133
12134 Improved comments and text alignment for the resource descriptor code 
12135 emitted by the disassembler.
12136
12137 Implemented disassembler support for the ACPI 3.0 AccessSize field within 
12138
12139 Register() resource descriptor.
12140
12141 ----------------------------------------
12142 30 September 2005. Summary of changes for version 20050930:
12143
12144 1) ACPI CA Core Subsystem:
12145
12146 Completed a major overhaul of the Resource Manager code - specifically, 
12147 optimizations in the area of the AML/internal resource conversion code. 
12148 The 
12149 code has been optimized to simplify and eliminate duplicated code, CPU 
12150 stack 
12151 use has been decreased by optimizing function parameters and local 
12152 variables, and naming conventions across the manager have been 
12153 standardized 
12154 for clarity and ease of maintenance (this includes function, parameter, 
12155 variable, and struct/typedef names.) The update may force changes in some 
12156 driver code, depending on how resources are handled by the host OS.
12157
12158 All Resource Manager dispatch and information tables have been moved to a 
12159 single location for clarity and ease of maintenance. One new file was 
12160 created, named "rsinfo.c".
12161
12162 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 
12163 guarantee that the argument is not evaluated twice, making them less 
12164 prone 
12165 to macro side-effects. However, since there exists the possibility of 
12166 additional stack use if a particular compiler cannot optimize them (such 
12167 as 
12168 in the debug generation case), the original macros are optionally 
12169 available.  
12170 Note that some invocations of the return_VALUE macro may now cause size 
12171 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 
12172 to 
12173 eliminate these. (From Randy Dunlap)
12174
12175 Implemented a new mechanism to enable debug tracing for individual 
12176 control 
12177 methods. A new external interface, AcpiDebugTrace, is provided to enable 
12178 this mechanism. The intent is to allow the host OS to easily enable and 
12179 disable tracing for problematic control methods. This interface can be 
12180 easily exposed to a user or debugger interface if desired. See the file 
12181 psxface.c for details.
12182
12183 AcpiUtCallocate will now return a valid pointer if a length of zero is 
12184 specified - a length of one is used and a warning is issued. This matches 
12185 the behavior of AcpiUtAllocate.
12186
12187 Code and Data Size: The current and previous library sizes for the core 
12188 subsystem are shown below. These are the code and data sizes for the 
12189 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
12190 These 
12191 values do not include any ACPI driver or OSPM code. The debug version of 
12192 the 
12193 code includes the debug output trace mechanism and has a much larger code 
12194 and data size. Note that these values will vary depending on the 
12195 efficiency 
12196 of the compiler and the compiler options used during generation.
12197
12198   Previous Release:
12199     Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12200     Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12201   Current Release:
12202     Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12203     Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12204
12205
12206 2) iASL Compiler/Disassembler:
12207
12208 A remark is issued if the effective compile-time length of a package or 
12209 buffer is zero. Previously, this was a warning.
12210
12211 ----------------------------------------
12212 16 September 2005. Summary of changes for version 20050916:
12213
12214 1) ACPI CA Core Subsystem:
12215
12216 Fixed a problem within the Resource Manager where support for the Generic 
12217 Register descriptor was not fully implemented. This descriptor is now 
12218 fully 
12219 recognized, parsed, disassembled, and displayed.
12220
12221 Completely restructured the Resource Manager code to utilize table-driven 
12222 dispatch and lookup, eliminating many of the large switch() statements. 
12223 This 
12224 reduces overall subsystem code size and code complexity. Affects the 
12225 resource parsing and construction, disassembly, and debug dump output.
12226
12227 Cleaned up and restructured the debug dump output for all resource 
12228 descriptors. Improved readability of the output and reduced code size.
12229
12230 Fixed a problem where changes to internal data structures caused the 
12231 optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12232
12233 Code and Data Size: The current and previous library sizes for the core 
12234 subsystem are shown below. These are the code and data sizes for the 
12235 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
12236 These 
12237 values do not include any ACPI driver or OSPM code. The debug version of 
12238 the 
12239 code includes the debug output trace mechanism and has a much larger code 
12240 and data size. Note that these values will vary depending on the 
12241 efficiency 
12242 of the compiler and the compiler options used during generation.
12243
12244   Previous Release:
12245     Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12246     Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12247   Current Release:
12248     Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12249     Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12250
12251
12252 2) iASL Compiler/Disassembler:
12253
12254 Updated the disassembler to automatically insert an EndDependentFn() 
12255 macro 
12256 into the ASL stream if this macro is missing in the original AML code, 
12257 simplifying compilation of the resulting ASL module.
12258
12259 Fixed a problem in the disassembler where a disassembled ResourceSource 
12260 string (within a large resource descriptor) was not surrounded by quotes 
12261 and 
12262 not followed by a comma, causing errors when the resulting ASL module was 
12263 compiled. Also, escape sequences within a ResourceSource string are now 
12264 handled correctly (especially "\\")
12265
12266 ----------------------------------------
12267 02 September 2005. Summary of changes for version 20050902:
12268
12269 1) ACPI CA Core Subsystem:
12270
12271 Fixed a problem with the internal Owner ID allocation and deallocation 
12272 mechanisms for control method execution and recursive method invocation. 
12273 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 
12274 messages seen on some systems. Recursive method invocation depth is 
12275 currently limited to 255. (Alexey Starikovskiy)
12276
12277 Completely eliminated all vestiges of support for the "module-level 
12278 executable code" until this support is fully implemented and debugged. 
12279 This 
12280 should eliminate the NO_RETURN_VALUE exceptions seen during table load on 
12281 some systems that invoke this support.
12282
12283 Fixed a problem within the resource manager code where the transaction 
12284 flags 
12285 for a 64-bit address descriptor were handled incorrectly in the type-
12286 specific flag byte.
12287
12288 Consolidated duplicate code within the address descriptor resource 
12289 manager 
12290 code, reducing overall subsystem code size.
12291
12292 Fixed a fault when using the AML debugger "disassemble" command to 
12293 disassemble individual control methods.
12294
12295 Removed references to the "release_current" directory within the Unix 
12296 release package.
12297
12298 Code and Data Size: The current and previous core subsystem library sizes 
12299 are shown below. These are the code and data sizes for the acpica.lib 
12300 produced by the Microsoft Visual C++ 6.0 compiler. These values do not 
12301 include any ACPI driver or OSPM code. The debug version of the code 
12302 includes 
12303 the debug output trace mechanism and has a much larger code and data 
12304 size. 
12305 Note that these values will vary depending on the efficiency of the 
12306 compiler 
12307 and the compiler options used during generation.
12308
12309   Previous Release:
12310     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12311     Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12312   Current Release:
12313     Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12314     Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12315
12316
12317 2) iASL Compiler/Disassembler:
12318
12319 Implemented an error check for illegal duplicate values in the interrupt 
12320 and 
12321 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 
12322 Interrupt().
12323
12324 Implemented error checking for the Irq() and IrqNoFlags() macros to 
12325 detect 
12326 too many values in the interrupt list (16 max) and invalid values in the 
12327 list (range 0 - 15)
12328
12329 The maximum length string literal within an ASL file is now restricted to 
12330 200 characters as per the ACPI specification.
12331
12332 Fixed a fault when using the -ln option (generate namespace listing).
12333
12334 Implemented an error check to determine if a DescriptorName within a 
12335 resource descriptor has already been used within the current scope.
12336
12337 ----------------------------------------
12338 15 August 2005.  Summary of changes for version 20050815:
12339  
12340 1) ACPI CA Core Subsystem:
12341  
12342 Implemented a full bytewise compare to determine if a table load request 
12343 is 
12344 attempting to load a duplicate table. The compare is performed if the 
12345 table 
12346 signatures and table lengths match. This will allow different tables with 
12347 the same OEM Table ID and revision to be loaded - probably against the 
12348 ACPI 
12349 specification, but discovered in the field nonetheless.
12350  
12351 Added the changes.txt logfile to each of the zipped release packages.
12352  
12353 Code and Data Size: Current and previous core subsystem library sizes are 
12354 shown below. These are the code and data sizes for the acpica.lib 
12355 produced 
12356 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12357 any ACPI driver or OSPM code. The debug version of the code includes the 
12358 debug output trace mechanism and has a much larger code and data size. 
12359 Note 
12360 that these values will vary depending on the efficiency of the compiler 
12361 and 
12362 the compiler options used during generation.
12363  
12364   Previous Release:
12365     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12366     Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12367   Current Release:
12368     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12369     Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12370  
12371  
12372 2) iASL Compiler/Disassembler:
12373  
12374 Fixed a problem where incorrect AML code could be generated for Package 
12375 objects if optimization is disabled (via the -oa switch).
12376  
12377 Fixed a problem with where incorrect AML code is generated for variable-
12378 length packages when the package length is not specified and the number 
12379 of 
12380 initializer values is greater than 255.
12381  
12382
12383 ----------------------------------------
12384 29 July 2005.  Summary of changes for version 20050729:
12385
12386 1) ACPI CA Core Subsystem:
12387
12388 Implemented support to ignore an attempt to install/load a particular 
12389 ACPI 
12390 table more than once. Apparently there exists BIOS code that repeatedly 
12391 attempts to load the same SSDT upon certain events. With assistance from 
12392 Venkatesh Pallipadi.
12393
12394 Restructured the main interface to the AML parser in order to correctly 
12395 handle all exceptional conditions. This will prevent leakage of the 
12396 OwnerId 
12397 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 
12398 some 
12399 machines. With assistance from Alexey Starikovskiy.
12400
12401 Support for "module level code" has been disabled in this version due to 
12402
12403 number of issues that have appeared on various machines. The support can 
12404 be 
12405 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 
12406 compilation. When the issues are fully resolved, the code will be enabled 
12407 by 
12408 default again.
12409
12410 Modified the internal functions for debug print support to define the 
12411 FunctionName parameter as a (const char *) for compatibility with 
12412 compiler 
12413 built-in macros such as __FUNCTION__, etc.
12414
12415 Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12416
12417 Implemented support to display an object count summary for the AML 
12418 Debugger 
12419 commands Object and Methods.
12420
12421 Code and Data Size: Current and previous core subsystem library sizes are 
12422 shown below. These are the code and data sizes for the acpica.lib 
12423 produced 
12424 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12425 any ACPI driver or OSPM code. The debug version of the code includes the 
12426 debug output trace mechanism and has a much larger code and data size. 
12427 Note 
12428 that these values will vary depending on the efficiency of the compiler 
12429 and 
12430 the compiler options used during generation.
12431
12432   Previous Release:
12433     Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12434     Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12435   Current Release:
12436     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12437     Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12438
12439
12440 2) iASL Compiler/Disassembler:
12441
12442 Fixed a regression that appeared in the 20050708 version of the compiler 
12443 where an error message was inadvertently emitted for invocations of the 
12444 _OSI 
12445 reserved control method.
12446
12447 ----------------------------------------
12448 08 July 2005.  Summary of changes for version 20050708:
12449
12450 1) ACPI CA Core Subsystem:
12451
12452 The use of the CPU stack in the debug version of the subsystem has been 
12453 considerably reduced. Previously, a debug structure was declared in every 
12454 function that used the debug macros. This structure has been removed in 
12455 favor of declaring the individual elements as parameters to the debug 
12456 functions. This reduces the cumulative stack use during nested execution 
12457 of 
12458 ACPI function calls at the cost of a small increase in the code size of 
12459 the 
12460 debug version of the subsystem. With assistance from Alexey Starikovskiy 
12461 and 
12462 Len Brown.
12463
12464 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 
12465 headers to define a macro that will return the current function name at 
12466 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 
12467 by 
12468 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 
12469 compiler-dependent header, the function name is saved on the CPU stack 
12470 (one 
12471 pointer per function.) This mechanism is used because apparently there 
12472 exists no standard ANSI-C defined macro that that returns the function 
12473 name.
12474
12475 Redesigned and reimplemented the "Owner ID" mechanism used to track 
12476 namespace objects created/deleted by ACPI tables and control method 
12477 execution. A bitmap is now used to allocate and free the IDs, thus 
12478 solving 
12479 the wraparound problem present in the previous implementation. The size 
12480 of 
12481 the namespace node descriptor was reduced by 2 bytes as a result (Alexey 
12482 Starikovskiy).
12483
12484 Removed the UINT32_BIT and UINT16_BIT types that were used for the 
12485 bitfield 
12486 flag definitions within the headers for the predefined ACPI tables. These 
12487 have been replaced by UINT8_BIT in order to increase the code portability 
12488 of 
12489 the subsystem. If the use of UINT8 remains a problem, we may be forced to 
12490 eliminate bitfields entirely because of a lack of portability.
12491
12492 Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 
12493 This 
12494 is a frequently used function and this improvement increases the 
12495 performance 
12496 of the entire subsystem (Alexey Starikovskiy).
12497
12498 Fixed several possible memory leaks and the inverse - premature object 
12499 deletion (Alexey Starikovskiy).
12500
12501 Code and Data Size: Current and previous core subsystem library sizes are 
12502 shown below. These are the code and data sizes for the acpica.lib 
12503 produced 
12504 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12505 any ACPI driver or OSPM code. The debug version of the code includes the 
12506 debug output trace mechanism and has a much larger code and data size. 
12507 Note 
12508 that these values will vary depending on the efficiency of the compiler 
12509 and 
12510 the compiler options used during generation.
12511
12512   Previous Release:
12513     Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12514     Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12515   Current Release:
12516     Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12517     Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12518
12519 ----------------------------------------
12520 24 June 2005.  Summary of changes for version 20050624:
12521
12522 1) ACPI CA Core Subsystem:
12523
12524 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 
12525 the host-defined cache object. This allows the OSL implementation to 
12526 define 
12527 and type this object in any manner desired, simplifying the OSL 
12528 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 
12529 Linux, and should be defined in the OS-specific header file for other 
12530 operating systems as required.
12531
12532 Changed the interface to AcpiOsAcquireObject to directly return the 
12533 requested object as the function return (instead of ACPI_STATUS.) This 
12534 change was made for performance reasons, since this is the purpose of the 
12535 interface in the first place. AcpiOsAcquireObject is now similar to the 
12536 AcpiOsAllocate interface.
12537
12538 Implemented a new AML debugger command named Businfo. This command 
12539 displays 
12540 information about all devices that have an associate _PRT object. The 
12541 _ADR, 
12542 _HID, _UID, and _CID are displayed for these devices.
12543
12544 Modified the initialization sequence in AcpiInitializeSubsystem to call 
12545 the 
12546 OSL interface AcpiOslInitialize first, before any local initialization. 
12547 This 
12548 change was required because the global initialization now calls OSL 
12549 interfaces.
12550
12551 Enhanced the Dump command to display the entire contents of Package 
12552 objects 
12553 (including all sub-objects and their values.) 
12554
12555 Restructured the code base to split some files because of size and/or 
12556 because the code logically belonged in a separate file. New files are 
12557 listed 
12558 below. All makefiles and project files included in the ACPI CA release 
12559 have 
12560 been updated.
12561     utilities/utcache.c           /* Local cache interfaces */
12562     utilities/utmutex.c           /* Local mutex support */
12563     utilities/utstate.c           /* State object support */
12564     interpreter/parser/psloop.c   /* Main AML parse loop */
12565
12566 Code and Data Size: Current and previous core subsystem library sizes are 
12567 shown below. These are the code and data sizes for the acpica.lib 
12568 produced 
12569 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12570 any ACPI driver or OSPM code. The debug version of the code includes the 
12571 debug output trace mechanism and has a much larger code and data size. 
12572 Note 
12573 that these values will vary depending on the efficiency of the compiler 
12574 and 
12575 the compiler options used during generation.
12576
12577   Previous Release:
12578     Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12579     Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12580   Current Release:
12581     Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12582     Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12583
12584
12585 2) iASL Compiler/Disassembler:
12586
12587 Fixed a regression introduced in version 20050513 where the use of a 
12588 Package 
12589 object within a Case() statement caused a compile time exception. The 
12590 original behavior has been restored (a Match() operator is emitted.)
12591
12592 ----------------------------------------
12593 17 June 2005.  Summary of changes for version 20050617:
12594
12595 1) ACPI CA Core Subsystem:
12596
12597 Moved the object cache operations into the OS interface layer (OSL) to 
12598 allow 
12599 the host OS to handle these operations if desired (for example, the Linux 
12600 OSL will invoke the slab allocator). This support is optional; the 
12601 compile 
12602 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 
12603 cache 
12604 code in the ACPI CA core. The new OSL interfaces are shown below. See 
12605 utalloc.c for an example implementation, and acpiosxf.h for the exact 
12606 interface definitions. With assistance from Alexey Starikovskiy.
12607     AcpiOsCreateCache
12608     AcpiOsDeleteCache
12609     AcpiOsPurgeCache
12610     AcpiOsAcquireObject
12611     AcpiOsReleaseObject
12612
12613 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 
12614 return 
12615 and restore a flags parameter. This fits better with many OS lock models. 
12616 Note: the current execution state (interrupt handler or not) is no longer 
12617 passed to these interfaces. If necessary, the OSL must determine this 
12618 state 
12619 by itself, a simple and fast operation. With assistance from Alexey 
12620 Starikovskiy.
12621
12622 Fixed a problem in the ACPI table handling where a valid XSDT was assumed 
12623 present if the revision of the RSDP was 2 or greater. According to the 
12624 ACPI 
12625 specification, the XSDT is optional in all cases, and the table manager 
12626 therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 
12627 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 
12628 contain 
12629 only the RSDT.
12630
12631 Fixed an interpreter problem with the Mid() operator in the case of an 
12632 input 
12633 string where the resulting output string is of zero length. It now 
12634 correctly 
12635 returns a valid, null terminated string object instead of a string object 
12636 with a null pointer.
12637
12638 Fixed a problem with the control method argument handling to allow a 
12639 store 
12640 to an Arg object that already contains an object of type Device. The 
12641 Device 
12642 object is now correctly overwritten. Previously, an error was returned.
12643
12644
12645 Enhanced the debugger Find command to emit object values in addition to 
12646 the 
12647 found object pathnames. The output format is the same as the dump 
12648 namespace 
12649 command.
12650
12651 Enhanced the debugger Set command. It now has the ability to set the 
12652 value 
12653 of any Named integer object in the namespace (Previously, only method 
12654 locals 
12655 and args could be set.)
12656
12657 Code and Data Size: Current and previous core subsystem library sizes are 
12658 shown below. These are the code and data sizes for the acpica.lib 
12659 produced 
12660 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12661 any ACPI driver or OSPM code. The debug version of the code includes the 
12662 debug output trace mechanism and has a much larger code and data size. 
12663 Note 
12664 that these values will vary depending on the efficiency of the compiler 
12665 and 
12666 the compiler options used during generation.
12667
12668   Previous Release:
12669     Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12670     Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12671   Current Release:
12672     Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12673     Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12674
12675
12676 2) iASL Compiler/Disassembler:
12677
12678 Fixed a regression in the disassembler where if/else/while constructs 
12679 were 
12680 output incorrectly. This problem was introduced in the previous release 
12681 (20050526). This problem also affected the single-step disassembly in the 
12682 debugger.
12683
12684 Fixed a problem where compiling the reserved _OSI method would randomly 
12685 (but 
12686 rarely) produce compile errors.
12687
12688 Enhanced the disassembler to emit compilable code in the face of 
12689 incorrect 
12690 AML resource descriptors. If the optional ResourceSourceIndex is present, 
12691 but the ResourceSource is not, do not emit the ResourceSourceIndex in the 
12692 disassembly. Otherwise, the resulting code cannot be compiled without 
12693 errors.
12694
12695 ----------------------------------------
12696 26 May 2005.  Summary of changes for version 20050526:
12697
12698 1) ACPI CA Core Subsystem:
12699
12700 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 
12701 the module level (not within a control method.) These opcodes are 
12702 executed 
12703 exactly once at the time the table is loaded. This type of code was legal 
12704 up 
12705 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 
12706 in 
12707 order to provide backwards compatibility with earlier BIOS 
12708 implementations. 
12709 This eliminates the "Encountered executable code at module level" warning 
12710 that was previously generated upon detection of such code.
12711
12712 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 
12713 inadvertently be generated during the lookup of namespace objects in the 
12714 second pass parse of ACPI tables and control methods. It appears that 
12715 this 
12716 problem could occur during the resolution of forward references to 
12717 namespace 
12718 objects.
12719
12720 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 
12721 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 
12722 allows the deadlock detection debug code to be compiled out in the normal 
12723 case, improving mutex performance (and overall subsystem performance) 
12724 considerably.
12725
12726 Implemented a handful of miscellaneous fixes for possible memory leaks on 
12727 error conditions and error handling control paths. These fixes were 
12728 suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12729
12730 Added a check for a null RSDT pointer in AcpiGetFirmwareTable 
12731 (tbxfroot.c) 
12732 to prevent a fault in this error case.
12733
12734 Code and Data Size: Current and previous core subsystem library sizes are 
12735 shown below. These are the code and data sizes for the acpica.lib 
12736 produced 
12737 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12738 any ACPI driver or OSPM code. The debug version of the code includes the 
12739 debug output trace mechanism and has a much larger code and data size. 
12740 Note 
12741 that these values will vary depending on the efficiency of the compiler 
12742 and 
12743 the compiler options used during generation.
12744
12745   Previous Release:
12746     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12747     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12748   Current Release:
12749     Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12750     Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12751
12752
12753 2) iASL Compiler/Disassembler:
12754
12755 Implemented support to allow Type 1 and Type 2 ASL operators to appear at 
12756 the module level (not within a control method.) These operators will be 
12757 executed once at the time the table is loaded. This type of code was 
12758 legal 
12759 up until the release of ACPI 2.0B (2002) and is now supported by the iASL 
12760 compiler in order to provide backwards compatibility with earlier BIOS 
12761 ASL 
12762 code.
12763
12764 The ACPI integer width (specified via the table revision ID or the -r 
12765 override, 32 or 64 bits) is now used internally during compile-time 
12766 constant 
12767 folding to ensure that constants are truncated to 32 bits if necessary. 
12768 Previously, the revision ID value was only emitted in the AML table 
12769 header.
12770
12771 An error message is now generated for the Mutex and Method operators if 
12772 the 
12773 SyncLevel parameter is outside the legal range of 0 through 15.
12774
12775 Fixed a problem with the Method operator ParameterTypes list handling 
12776 (ACPI 
12777 3.0). Previously, more than 2 types or 2 arguments generated a syntax 
12778 error.  
12779 The actual underlying implementation of method argument typechecking is 
12780 still under development, however.
12781
12782 ----------------------------------------
12783 13 May 2005.  Summary of changes for version 20050513:
12784
12785 1) ACPI CA Core Subsystem:
12786
12787 Implemented support for PCI Express root bridges -- added support for 
12788 device 
12789 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12790
12791 The interpreter now automatically truncates incoming 64-bit constants to 
12792 32 
12793 bits if currently executing out of a 32-bit ACPI table (Revision < 2). 
12794 This 
12795 also affects the iASL compiler constant folding. (Note: as per below, the 
12796 iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12797
12798 Fixed a problem where string and buffer objects with "static" pointers 
12799 (pointers to initialization data within an ACPI table) were not handled 
12800 consistently. The internal object copy operation now always copies the 
12801 data 
12802 to a newly allocated buffer, regardless of whether the source object is 
12803 static or not.
12804
12805 Fixed a problem with the FromBCD operator where an implicit result 
12806 conversion was improperly performed while storing the result to the 
12807 target 
12808 operand. Since this is an "explicit conversion" operator, the implicit 
12809 conversion should never be performed on the output.
12810
12811 Fixed a problem with the CopyObject operator where a copy to an existing 
12812 named object did not always completely overwrite the existing object 
12813 stored 
12814 at name. Specifically, a buffer-to-buffer copy did not delete the 
12815 existing 
12816 buffer.
12817
12818 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 
12819 and 
12820 structs for consistency.
12821
12822 Code and Data Size: Current and previous core subsystem library sizes are 
12823 shown below. These are the code and data sizes for the acpica.lib 
12824 produced 
12825 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12826 any ACPI driver or OSPM code. The debug version of the code includes the 
12827 debug output trace mechanism and has a much larger code and data size. 
12828 Note 
12829 that these values will vary depending on the efficiency of the compiler 
12830 and 
12831 the compiler options used during generation.
12832
12833   Previous Release:
12834     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12835     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12836   Current Release: (Same sizes)
12837     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12838     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12839
12840
12841 2) iASL Compiler/Disassembler:
12842
12843 The compiler now emits a warning if an attempt is made to generate a 64-
12844 bit 
12845 integer constant from within a 32-bit ACPI table (Revision < 2). The 
12846 integer 
12847 is truncated to 32 bits.
12848
12849 Fixed a problem with large package objects: if the static length of the 
12850 package is greater than 255, the "variable length package" opcode is 
12851 emitted. Previously, this caused an error. This requires an update to the 
12852 ACPI spec, since it currently (incorrectly) states that packages larger 
12853 than 
12854 255 elements are not allowed.
12855
12856 The disassembler now correctly handles variable length packages and 
12857 packages 
12858 larger than 255 elements.
12859
12860 ----------------------------------------
12861 08 April 2005.  Summary of changes for version 20050408:
12862
12863 1) ACPI CA Core Subsystem:
12864
12865 Fixed three cases in the interpreter where an "index" argument to an ASL 
12866 function was still (internally) 32 bits instead of the required 64 bits. 
12867 This was the Index argument to the Index, Mid, and Match operators.
12868
12869 The "strupr" function is now permanently local (AcpiUtStrupr), since this 
12870 is 
12871 not a POSIX-defined function and not present in most kernel-level C 
12872 libraries. All references to the C library strupr function have been 
12873 removed 
12874 from the headers.
12875
12876 Completed the deployment of static functions/prototypes. All prototypes 
12877 with 
12878 the static attribute have been moved from the headers to the owning C 
12879 file.
12880
12881 Implemented an extract option (-e) for the AcpiBin utility (AML binary 
12882 utility). This option allows the utility to extract individual ACPI 
12883 tables 
12884 from the output of AcpiDmp. It provides the same functionality of the 
12885 acpixtract.pl perl script without the worry of setting the correct perl 
12886 options. AcpiBin runs on Windows and has not yet been generated/validated 
12887 in 
12888 the Linux/Unix environment (but should be soon).
12889  
12890 Updated and fixed the table dump option for AcpiBin (-d). This option 
12891 converts a single ACPI table to a hex/ascii file, similar to the output 
12892 of 
12893 AcpiDmp.
12894
12895 Code and Data Size: Current and previous core subsystem library sizes are 
12896 shown below. These are the code and data sizes for the acpica.lib 
12897 produced 
12898 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12899 any ACPI driver or OSPM code. The debug version of the code includes the 
12900 debug output trace mechanism and has a much larger code and data size. 
12901 Note 
12902 that these values will vary depending on the efficiency of the compiler 
12903 and 
12904 the compiler options used during generation.
12905
12906   Previous Release:
12907     Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12908     Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12909   Current Release:
12910     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12911     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12912
12913
12914 2) iASL Compiler/Disassembler:
12915
12916 Disassembler fix: Added a check to ensure that the table length found in 
12917 the 
12918 ACPI table header within the input file is not longer than the actual 
12919 input 
12920 file size. This indicates some kind of file or table corruption.
12921
12922 ----------------------------------------
12923 29 March 2005.  Summary of changes for version 20050329:
12924
12925 1) ACPI CA Core Subsystem:
12926
12927 An error is now generated if an attempt is made to create a Buffer Field 
12928 of 
12929 length zero (A CreateField with a length operand of zero.)
12930
12931 The interpreter now issues a warning whenever executable code at the 
12932 module 
12933 level is detected during ACPI table load. This will give some idea of the 
12934 prevalence of this type of code.
12935
12936 Implemented support for references to named objects (other than control 
12937 methods) within package objects.
12938
12939 Enhanced package object output for the debug object. Package objects are 
12940 now 
12941 completely dumped, showing all elements.
12942
12943 Enhanced miscellaneous object output for the debug object. Any object can 
12944 now be written to the debug object (for example, a device object can be 
12945 written, and the type of the object will be displayed.)
12946
12947 The "static" qualifier has been added to all local functions across both 
12948 the 
12949 core subsystem and the iASL compiler.
12950
12951 The number of "long" lines (> 80 chars) within the source has been 
12952 significantly reduced, by about 1/3.
12953
12954 Cleaned up all header files to ensure that all CA/iASL functions are 
12955 prototyped (even static functions) and the formatting is consistent.
12956
12957 Two new header files have been added, acopcode.h and acnames.h.
12958
12959 Removed several obsolete functions that were no longer used.
12960
12961 Code and Data Size: Current and previous core subsystem library sizes are 
12962 shown below. These are the code and data sizes for the acpica.lib 
12963 produced 
12964 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12965 any ACPI driver or OSPM code. The debug version of the code includes the 
12966 debug output trace mechanism and has a much larger code and data size. 
12967 Note 
12968 that these values will vary depending on the efficiency of the compiler 
12969 and 
12970 the compiler options used during generation.
12971
12972   Previous Release:
12973     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12974     Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12975   Current Release:
12976     Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12977     Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12978
12979
12980
12981 2) iASL Compiler/Disassembler:
12982
12983 Fixed a problem with the resource descriptor generation/support. For the 
12984 ResourceSourceIndex and the ResourceSource fields, both must be present, 
12985 or 
12986 both must be not present - can't have one without the other.
12987
12988 The compiler now returns non-zero from the main procedure if any errors 
12989 have 
12990 occurred during the compilation.
12991
12992
12993 ----------------------------------------
12994 09 March 2005.  Summary of changes for version 20050309:
12995
12996 1) ACPI CA Core Subsystem:
12997
12998 The string-to-buffer implicit conversion code has been modified again 
12999 after 
13000 a change to the ACPI specification.  In order to match the behavior of 
13001 the 
13002 other major ACPI implementation, the target buffer is no longer truncated 
13003 if 
13004 the source string is smaller than an existing target buffer. This change 
13005 requires an update to the ACPI spec, and should eliminate the recent 
13006 AE_AML_BUFFER_LIMIT issues.
13007
13008 The "implicit return" support was rewritten to a new algorithm that 
13009 solves 
13010 the general case. Rather than attempt to determine when a method is about 
13011 to 
13012 exit, the result of every ASL operator is saved momentarily until the 
13013 very 
13014 next ASL operator is executed. Therefore, no matter how the method exits, 
13015 there will always be a saved implicit return value. This feature is only 
13016 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 
13017 eliminate 
13018 AE_AML_NO_RETURN_VALUE errors when enabled.
13019
13020 Implemented implicit conversion support for the predicate (operand) of 
13021 the 
13022 If, Else, and While operators. String and Buffer arguments are 
13023 automatically 
13024 converted to Integers.
13025
13026 Changed the string-to-integer conversion behavior to match the new ACPI 
13027 errata: "If no integer object exists, a new integer is created. The ASCII 
13028 string is interpreted as a hexadecimal constant. Each string character is 
13029 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 
13030 with the first character as the most significant digit, and ending with 
13031 the 
13032 first non-hexadecimal character or end-of-string." This means that the 
13033 first 
13034 non-hex character terminates the conversion and this is the code that was 
13035 changed.
13036
13037 Fixed a problem where the ObjectType operator would fail (fault) when 
13038 used 
13039 on an Index of a Package which pointed to a null package element. The 
13040 operator now properly returns zero (Uninitialized) in this case.
13041
13042 Fixed a problem where the While operator used excessive memory by not 
13043 properly popping the result stack during execution. There was no memory 
13044 leak 
13045 after execution, however. (Code provided by Valery Podrezov.)
13046
13047 Fixed a problem where references to control methods within Package 
13048 objects 
13049 caused the method to be invoked, instead of producing a reference object 
13050 pointing to the method.
13051
13052 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 
13053 to 
13054 improve performance and reduce code size. (Code provided by Alexey 
13055 Starikovskiy.)
13056
13057 Code and Data Size: Current and previous core subsystem library sizes are 
13058 shown below. These are the code and data sizes for the acpica.lib 
13059 produced 
13060 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13061 any ACPI driver or OSPM code. The debug version of the code includes the 
13062 debug output trace mechanism and has a much larger code and data size. 
13063 Note 
13064 that these values will vary depending on the efficiency of the compiler 
13065 and 
13066 the compiler options used during generation.
13067
13068   Previous Release:
13069     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13070     Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13071   Current Release:
13072     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13073     Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13074
13075
13076 2) iASL Compiler/Disassembler:
13077
13078 Fixed a problem with the Return operator with no arguments. Since the AML 
13079 grammar for the byte encoding requires an operand for the Return opcode, 
13080 the 
13081 compiler now emits a Return(Zero) for this case.  An ACPI specification 
13082 update has been written for this case.
13083
13084 For tables other than the DSDT, namepath optimization is automatically 
13085 disabled. This is because SSDTs can be loaded anywhere in the namespace, 
13086 the 
13087 compiler has no knowledge of where, and thus cannot optimize namepaths.
13088
13089 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 
13090 inadvertently omitted from the ACPI specification, and will require an 
13091 update to the spec.
13092
13093 The source file scan for ASCII characters is now optional (-a). This 
13094 change 
13095 was made because some vendors place non-ascii characters within comments. 
13096 However, the scan is simply a brute-force byte compare to ensure all 
13097 characters in the file are in the range 0x00 to 0x7F.
13098
13099 Fixed a problem with the CondRefOf operator where the compiler was 
13100 inappropriately checking for the existence of the target. Since the point 
13101 of 
13102 the operator is to check for the existence of the target at run-time, the 
13103 compiler no longer checks for the target existence.
13104
13105 Fixed a problem where errors generated from the internal AML interpreter 
13106 during constant folding were not handled properly, causing a fault.
13107
13108 Fixed a problem with overly aggressive range checking for the Stall 
13109 operator. The valid range (max 255) is now only checked if the operand is 
13110 of 
13111 type Integer. All other operand types cannot be statically checked.
13112
13113 Fixed a problem where control method references within the RefOf, 
13114 DeRefOf, 
13115 and ObjectType operators were not treated properly. They are now treated 
13116 as 
13117 actual references, not method invocations.
13118
13119 Fixed and enhanced the "list namespace" option (-ln). This option was 
13120 broken 
13121 a number of releases ago.
13122
13123 Improved error handling for the Field, IndexField, and BankField 
13124 operators. 
13125 The compiler now cleanly reports and recovers from errors in the field 
13126 component (FieldUnit) list.
13127
13128 Fixed a disassembler problem where the optional ResourceDescriptor fields 
13129 TRS and TTP were not always handled correctly.
13130
13131 Disassembler - Comments in output now use "//" instead of "/*"
13132
13133 ----------------------------------------
13134 28 February 2005.  Summary of changes for version 20050228:
13135
13136 1) ACPI CA Core Subsystem:
13137
13138 Fixed a problem where the result of an Index() operator (an object 
13139 reference) must increment the reference count on the target object for 
13140 the 
13141 life of the object reference.
13142
13143 Implemented AML Interpreter and Debugger support for the new ACPI 3.0 
13144 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 
13145 WordSpace 
13146 resource descriptors.
13147
13148 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 
13149 Space Descriptor" string, indicating interpreter support for the 
13150 descriptors 
13151 above.
13152
13153 Implemented header support for the new ACPI 3.0 FADT flag bits.
13154
13155 Implemented header support for the new ACPI 3.0 PCI Express bits for the 
13156 PM1 
13157 status/enable registers.
13158
13159 Updated header support for the MADT processor local Apic struct and MADT 
13160 platform interrupt source struct for new ACPI 3.0 fields.
13161
13162 Implemented header support for the SRAT and SLIT ACPI tables.
13163
13164 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 
13165 flag 
13166 at runtime.
13167
13168 Code and Data Size: Current and previous core subsystem library sizes are 
13169 shown below. These are the code and data sizes for the acpica.lib 
13170 produced 
13171 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13172 any ACPI driver or OSPM code. The debug version of the code includes the 
13173 debug output trace mechanism and has a much larger code and data size. 
13174 Note 
13175 that these values will vary depending on the efficiency of the compiler 
13176 and 
13177 the compiler options used during generation.
13178
13179   Previous Release:
13180     Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13181     Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13182   Current Release:
13183     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13184     Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13185
13186
13187 2) iASL Compiler/Disassembler:
13188
13189 Fixed a problem with the internal 64-bit String-to-integer conversion 
13190 with 
13191 strings less than two characters long.
13192
13193 Fixed a problem with constant folding where the result of the Index() 
13194 operator can not be considered a constant. This means that Index() cannot 
13195 be 
13196 a type3 opcode and this will require an update to the ACPI specification.
13197
13198 Disassembler: Implemented support for the TTP, MTP, and TRS resource 
13199 descriptor fields. These fields were inadvertently ignored and not output 
13200 in 
13201 the disassembly of the resource descriptor.
13202
13203
13204  ----------------------------------------
13205 11 February 2005.  Summary of changes for version 20050211:
13206
13207 1) ACPI CA Core Subsystem:
13208
13209 Implemented ACPI 3.0 support for implicit conversion within the Match() 
13210 operator. MatchObjects can now be of type integer, buffer, or string 
13211 instead 
13212 of just type integer.  Package elements are implicitly converted to the 
13213 type 
13214 of the MatchObject. This change aligns the behavior of Match() with the 
13215 behavior of the other logical operators (LLess(), etc.) It also requires 
13216 an 
13217 errata change to the ACPI specification as this support was intended for 
13218 ACPI 3.0, but was inadvertently omitted.
13219
13220 Fixed a problem with the internal implicit "to buffer" conversion. 
13221 Strings 
13222 that are converted to buffers will cause buffer truncation if the string 
13223 is 
13224 smaller than the target buffer. Integers that are converted to buffers 
13225 will 
13226 not cause buffer truncation, only zero extension (both as per the ACPI 
13227 spec.) The problem was introduced when code was added to truncate the 
13228 buffer, but this should not be performed in all cases, only the string 
13229 case.
13230
13231 Fixed a problem with the Buffer and Package operators where the 
13232 interpreter 
13233 would get confused if two such operators were used as operands to an ASL 
13234 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 
13235 stack was not being popped after the execution of these operators, 
13236 resulting 
13237 in an AE_NO_RETURN_VALUE exception.
13238
13239 Fixed a problem with constructs of the form Store(Index(...),...). The 
13240 reference object returned from Index was inadvertently resolved to an 
13241 actual 
13242 value. This problem was introduced in version 20050114 when the behavior 
13243 of 
13244 Store() was modified to restrict the object types that can be used as the 
13245 source operand (to match the ACPI specification.)
13246
13247 Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13248
13249 Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13250
13251 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13252
13253 Code and Data Size: Current and previous core subsystem library sizes are 
13254 shown below. These are the code and data sizes for the acpica.lib 
13255 produced 
13256 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13257 any ACPI driver or OSPM code. The debug version of the code includes the 
13258 debug output trace mechanism and has a much larger code and data size. 
13259 Note 
13260 that these values will vary depending on the efficiency of the compiler 
13261 and 
13262 the compiler options used during generation.
13263
13264   Previous Release:
13265     Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13266     Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13267   Current Release:
13268     Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13269     Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13270
13271
13272 2) iASL Compiler/Disassembler:
13273
13274 Fixed a code generation problem in the constant folding optimization code 
13275 where incorrect code was generated if a constant was reduced to a buffer 
13276 object (i.e., a reduced type 5 opcode.)
13277
13278 Fixed a typechecking problem for the ToBuffer operator. Caused by an 
13279 incorrect return type in the internal opcode information table.
13280
13281 ----------------------------------------
13282 25 January 2005.  Summary of changes for version 20050125:
13283
13284 1) ACPI CA Core Subsystem:
13285
13286 Fixed a recently introduced problem with the Global Lock where the 
13287 underlying semaphore was not created.  This problem was introduced in 
13288 version 20050114, and caused an AE_AML_NO_OPERAND exception during an 
13289 Acquire() operation on _GL.
13290
13291 The local object cache is now optional, and is disabled by default. Both 
13292 AcpiExec and the iASL compiler enable the cache because they run in user 
13293 mode and this enhances their performance. #define 
13294 ACPI_ENABLE_OBJECT_CACHE 
13295 to enable the local cache.
13296
13297 Fixed an issue in the internal function AcpiUtEvaluateObject concerning 
13298 the 
13299 optional "implicit return" support where an error was returned if no 
13300 return 
13301 object was expected, but one was implicitly returned. AE_OK is now 
13302 returned 
13303 in this case and the implicitly returned object is deleted. 
13304 AcpiUtEvaluateObject is only occasionally used, and only to execute 
13305 reserved 
13306 methods such as _STA and _INI where the return type is known up front.
13307
13308 Fixed a few issues with the internal convert-to-integer code. It now 
13309 returns 
13310 an error if an attempt is made to convert a null string, a string of only 
13311 blanks/tabs, or a zero-length buffer. This affects both implicit 
13312 conversion 
13313 and explicit conversion via the ToInteger() operator.
13314
13315 The internal debug code in AcpiUtAcquireMutex has been commented out. It 
13316 is 
13317 not needed for normal operation and should increase the performance of 
13318 the 
13319 entire subsystem. The code remains in case it is needed for debug 
13320 purposes 
13321 again.
13322
13323 The AcpiExec source and makefile are included in the Unix/Linux package 
13324 for 
13325 the first time.
13326
13327 Code and Data Size: Current and previous core subsystem library sizes are 
13328 shown below. These are the code and data sizes for the acpica.lib 
13329 produced 
13330 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13331 any ACPI driver or OSPM code. The debug version of the code includes the 
13332 debug output trace mechanism and has a much larger code and data size. 
13333 Note 
13334 that these values will vary depending on the efficiency of the compiler 
13335 and 
13336 the compiler options used during generation.
13337
13338   Previous Release:
13339     Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13340     Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13341   Current Release:
13342     Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13343     Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13344
13345 2) iASL Compiler/Disassembler:
13346
13347 Switch/Case support: A warning is now issued if the type of the Switch 
13348 value 
13349 cannot be determined at compile time. For example, Switch(Arg0) will 
13350 generate the warning, and the type is assumed to be an integer. As per 
13351 the 
13352 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 
13353 the 
13354 warning.
13355
13356 Switch/Case support: Implemented support for buffer and string objects as 
13357 the switch value.  This is an ACPI 3.0 feature, now that LEqual supports 
13358 buffers and strings.
13359
13360 Switch/Case support: The emitted code for the LEqual() comparisons now 
13361 uses 
13362 the switch value as the first operand, not the second. The case value is 
13363 now 
13364 the second operand, and this allows the case value to be implicitly 
13365 converted to the type of the switch value, not the other way around.
13366
13367 Switch/Case support: Temporary variables are now emitted immediately 
13368 within 
13369 the control method, not at the global level. This means that there are 
13370 now 
13371 36 temps available per-method, not 36 temps per-module as was the case 
13372 with 
13373 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13374
13375 ----------------------------------------
13376 14 January 2005.  Summary of changes for version 20050114:
13377
13378 Added 2005 copyright to all module headers.  This affects every module in 
13379 the core subsystem, iASL compiler, and the utilities.
13380
13381 1) ACPI CA Core Subsystem:
13382
13383 Fixed an issue with the String-to-Buffer conversion code where the string 
13384 null terminator was not included in the buffer after conversion, but 
13385 there 
13386 is existing ASL that assumes the string null terminator is included. This 
13387 is 
13388 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 
13389 introduced in the previous version when the code was updated to correctly 
13390 set the converted buffer size as per the ACPI specification. The ACPI 
13391 spec 
13392 is ambiguous and will be updated to specify that the null terminator must 
13393 be 
13394 included in the converted buffer. This also affects the ToBuffer() ASL 
13395 operator.
13396
13397 Fixed a problem with the Mid() ASL/AML operator where it did not work 
13398 correctly on Buffer objects. Newly created sub-buffers were not being 
13399 marked 
13400 as initialized.
13401
13402
13403 Fixed a problem in AcpiTbFindTable where incorrect string compares were 
13404 performed on the OemId and OemTableId table header fields.  These fields 
13405 are 
13406 not null terminated, so strncmp is now used instead of strcmp.
13407
13408 Implemented a restriction on the Store() ASL/AML operator to align the 
13409 behavior with the ACPI specification.  Previously, any object could be 
13410 used 
13411 as the source operand.  Now, the only objects that may be used are 
13412 Integers, 
13413 Buffers, Strings, Packages, Object References, and DDB Handles.  If 
13414 necessary, the original behavior can be restored by enabling the 
13415 EnableInterpreterSlack flag.
13416
13417 Enhanced the optional "implicit return" support to allow an implicit 
13418 return 
13419 value from methods that are invoked externally via the AcpiEvaluateObject 
13420 interface.  This enables implicit returns from the _STA and _INI methods, 
13421 for example.
13422
13423 Changed the Revision() ASL/AML operator to return the current version of 
13424 the 
13425 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 
13426 returned 
13427 the supported ACPI version (This is the function of the _REV method).
13428
13429 Updated the _REV predefined method to return the currently supported 
13430 version 
13431 of ACPI, now 3.
13432
13433 Implemented batch mode option for the AcpiExec utility (-b).
13434
13435 Code and Data Size: Current and previous core subsystem library sizes are 
13436 shown below. These are the code and data sizes for the acpica.lib 
13437 produced 
13438 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13439 any ACPI driver or OSPM code. The debug version of the code includes the 
13440 debug output trace mechanism and has a much larger code and data size. 
13441 Note 
13442 that these values will vary depending on the efficiency of the compiler 
13443 and 
13444 the compiler options used during generation.
13445
13446   Previous Release:
13447     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13448     Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13449   Current Release:
13450     Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13451     Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13452
13453 ----------------------------------------
13454 10 December 2004.  Summary of changes for version 20041210:
13455
13456 ACPI 3.0 support is nearing completion in both the iASL compiler and the 
13457 ACPI CA core subsystem.
13458
13459 1) ACPI CA Core Subsystem:
13460
13461 Fixed a problem in the ToDecimalString operator where the resulting 
13462 string 
13463 length was incorrectly calculated. The length is now calculated exactly, 
13464 eliminating incorrect AE_STRING_LIMIT exceptions.
13465
13466 Fixed a problem in the ToHexString operator to allow a maximum 200 
13467 character 
13468 string to be produced.
13469
13470 Fixed a problem in the internal string-to-buffer and buffer-to-buffer 
13471 copy 
13472 routine where the length of the resulting buffer was not truncated to the 
13473 new size (if the target buffer already existed).
13474
13475 Code and Data Size: Current and previous core subsystem library sizes are 
13476 shown below. These are the code and data sizes for the acpica.lib 
13477 produced 
13478 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13479 any ACPI driver or OSPM code. The debug version of the code includes the 
13480 debug output trace mechanism and has a much larger code and data size. 
13481 Note 
13482 that these values will vary depending on the efficiency of the compiler 
13483 and 
13484 the compiler options used during generation.
13485
13486   Previous Release:
13487     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13488     Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13489   Current Release:
13490     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13491     Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13492
13493
13494 2) iASL Compiler/Disassembler:
13495
13496 Implemented the new ACPI 3.0 resource template macros - DWordSpace, 
13497 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 
13498 Includes support in the disassembler.
13499
13500 Implemented support for the new (ACPI 3.0) parameter to the Register 
13501 macro, 
13502 AccessSize.
13503
13504 Fixed a problem where the _HE resource name for the Interrupt macro was 
13505 referencing bit 0 instead of bit 1.
13506
13507 Implemented check for maximum 255 interrupts in the Interrupt macro.
13508
13509 Fixed a problem with the predefined resource descriptor names where 
13510 incorrect AML code was generated if the offset within the resource buffer 
13511 was 0 or 1.  The optimizer shortened the AML code to a single byte opcode 
13512 but did not update the surrounding package lengths.
13513
13514 Changes to the Dma macro:  All channels within the channel list must be 
13515 in 
13516 the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is 
13517 optional (default is BusMaster).
13518
13519 Implemented check for maximum 7 data bytes for the VendorShort macro.
13520
13521 The ReadWrite parameter is now optional for the Memory32 and similar 
13522 macros.
13523
13524 ----------------------------------------
13525 03 December 2004.  Summary of changes for version 20041203:
13526
13527 1) ACPI CA Core Subsystem:
13528
13529 The low-level field insertion/extraction code (exfldio) has been 
13530 completely 
13531 rewritten to eliminate unnecessary complexity, bugs, and boundary 
13532 conditions.
13533
13534 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 
13535 ToDecimalString 
13536 operators where the input operand could be inadvertently deleted if no 
13537 conversion was necessary (e.g., if the input to ToInteger was an Integer 
13538 object.)
13539
13540 Fixed a problem with the ToDecimalString and ToHexString where an 
13541 incorrect 
13542 exception code was returned if the resulting string would be > 200 chars.  
13543 AE_STRING_LIMIT is now returned.
13544
13545 Fixed a problem with the Concatenate operator where AE_OK was always 
13546 returned, even if the operation failed.
13547
13548 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 
13549 semaphores to be allocated.
13550
13551 Code and Data Size: Current and previous core subsystem library sizes are 
13552 shown below. These are the code and data sizes for the acpica.lib 
13553 produced 
13554 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13555 any ACPI driver or OSPM code. The debug version of the code includes the 
13556 debug output trace mechanism and has a much larger code and data size. 
13557 Note 
13558 that these values will vary depending on the efficiency of the compiler 
13559 and 
13560 the compiler options used during generation.
13561
13562   Previous Release:
13563     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13564     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13565   Current Release:
13566     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13567     Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13568
13569
13570 2) iASL Compiler/Disassembler:
13571
13572 Fixed typechecking for the ObjectType and SizeOf operators.  Problem was 
13573 recently introduced in 20041119.
13574
13575 Fixed a problem with the ToUUID macro where the upper nybble of each 
13576 buffer 
13577 byte was inadvertently set to zero.
13578
13579 ----------------------------------------
13580 19 November 2004.  Summary of changes for version 20041119:
13581
13582 1) ACPI CA Core Subsystem:
13583
13584 Fixed a problem in the internal ConvertToInteger routine where new 
13585 integers 
13586 were not truncated to 32 bits for 32-bit ACPI tables. This routine 
13587 converts 
13588 buffers and strings to integers.
13589
13590 Implemented support to store a value to an Index() on a String object. 
13591 This 
13592 is an ACPI 2.0 feature that had not yet been implemented.
13593
13594 Implemented new behavior for storing objects to individual package 
13595 elements 
13596 (via the Index() operator). The previous behavior was to invoke the 
13597 implicit 
13598 conversion rules if an object was already present at the index.  The new 
13599 behavior is to simply delete any existing object and directly store the 
13600 new 
13601 object. Although the ACPI specification seems unclear on this subject, 
13602 other 
13603 ACPI implementations behave in this manner.  (This is the root of the 
13604 AE_BAD_HEX_CONSTANT issue.)
13605
13606 Modified the RSDP memory scan mechanism to support the extended checksum 
13607 for 
13608 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 
13609 RSDP signature is found with a valid checksum.
13610
13611 Code and Data Size: Current and previous core subsystem library sizes are 
13612 shown below. These are the code and data sizes for the acpica.lib 
13613 produced 
13614 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13615 any ACPI driver or OSPM code. The debug version of the code includes the 
13616 debug output trace mechanism and has a much larger code and data size. 
13617 Note 
13618 that these values will vary depending on the efficiency of the compiler 
13619 and 
13620 the compiler options used during generation.
13621
13622   Previous Release:
13623     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13624     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13625   Current Release:
13626     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13627     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13628
13629
13630 2) iASL Compiler/Disassembler:
13631
13632 Fixed a missing semicolon in the aslcompiler.y file.
13633
13634 ----------------------------------------
13635 05 November 2004.  Summary of changes for version 20041105:
13636
13637 1) ACPI CA Core Subsystem:
13638
13639 Implemented support for FADT revision 2.  This was an interim table 
13640 (between 
13641 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13642
13643 Implemented optional support to allow uninitialized LocalX and ArgX 
13644 variables in a control method.  The variables are initialized to an 
13645 Integer 
13646 object with a value of zero.  This support is enabled by setting the 
13647 AcpiGbl_EnableInterpreterSlack flag to TRUE.
13648
13649 Implemented support for Integer objects for the SizeOf operator.  Either 
13650
13651 or 8 is returned, depending on the current integer size (32-bit or 64-
13652 bit, 
13653 depending on the parent table revision).
13654
13655 Fixed a problem in the implementation of the SizeOf and ObjectType 
13656 operators 
13657 where the operand was resolved to a value too early, causing incorrect 
13658 return values for some objects.
13659
13660 Fixed some possible memory leaks during exceptional conditions.
13661
13662 Code and Data Size: Current and previous core subsystem library sizes are 
13663 shown below. These are the code and data sizes for the acpica.lib 
13664 produced 
13665 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13666 any ACPI driver or OSPM code. The debug version of the code includes the 
13667 debug output trace mechanism and has a much larger code and data size. 
13668 Note 
13669 that these values will vary depending on the efficiency of the compiler 
13670 and 
13671 the compiler options used during generation.
13672
13673   Previous Release:
13674     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13675     Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13676   Current Release:
13677     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13678     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13679
13680
13681 2) iASL Compiler/Disassembler:
13682
13683 Implemented support for all ACPI 3.0 reserved names and methods.
13684
13685 Implemented all ACPI 3.0 grammar elements in the front-end, including 
13686 support for semicolons.
13687
13688 Implemented the ACPI 3.0 Function() and ToUUID() macros
13689
13690 Fixed a problem in the disassembler where a Scope() operator would not be 
13691 emitted properly if the target of the scope was in another table.
13692
13693 ----------------------------------------
13694 15 October 2004.  Summary of changes for version 20041015:
13695
13696 Note:  ACPI CA is currently undergoing an in-depth and complete formal 
13697 evaluation to test/verify the following areas. Other suggestions are 
13698 welcome. This will result in an increase in the frequency of releases and 
13699 the number of bug fixes in the next few months.
13700   - Functional tests for all ASL/AML operators
13701   - All implicit/explicit type conversions
13702   - Bit fields and operation regions
13703   - 64-bit math support and 32-bit-only "truncated" math support
13704   - Exceptional conditions, both compiler and interpreter
13705   - Dynamic object deletion and memory leaks
13706   - ACPI 3.0 support when implemented
13707   - External interfaces to the ACPI subsystem
13708
13709
13710 1) ACPI CA Core Subsystem:
13711
13712 Fixed two alignment issues on 64-bit platforms - within debug statements 
13713 in 
13714 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 
13715 Address 
13716 field within the non-aligned ACPI generic address structure.
13717
13718 Fixed a problem in the Increment and Decrement operators where incorrect 
13719 operand resolution could result in the inadvertent modification of the 
13720 original integer when the integer is passed into another method as an 
13721 argument and the arg is then incremented/decremented.
13722
13723 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13724 bit 
13725 BCD number were truncated during conversion.
13726
13727 Fixed a problem in the ToDecimal operator where the length of the 
13728 resulting 
13729 string could be set incorrectly too long if the input operand was a 
13730 Buffer 
13731 object.
13732
13733 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 
13734 (0) 
13735 within a buffer would prematurely terminate a compare between buffer 
13736 objects.
13737
13738 Added a check for string overflow (>200 characters as per the ACPI 
13739 specification) during the Concatenate operator with two string operands.
13740
13741 Code and Data Size: Current and previous core subsystem library sizes are 
13742 shown below. These are the code and data sizes for the acpica.lib 
13743 produced 
13744 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13745 any ACPI driver or OSPM code. The debug version of the code includes the 
13746 debug output trace mechanism and has a much larger code and data size. 
13747 Note 
13748 that these values will vary depending on the efficiency of the compiler 
13749 and 
13750 the compiler options used during generation.
13751
13752   Previous Release:
13753     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13754     Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13755   Current Release:
13756     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13757     Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13758
13759
13760
13761 2) iASL Compiler/Disassembler:
13762
13763 Allow the use of the ObjectType operator on uninitialized Locals and Args 
13764 (returns 0 as per the ACPI specification).
13765
13766 Fixed a problem where the compiler would fault if there was a syntax 
13767 error 
13768 in the FieldName of all of the various CreateXXXField operators.
13769
13770 Disallow the use of lower case letters within the EISAID macro, as per 
13771 the 
13772 ACPI specification.  All EISAID strings must be of the form "UUUNNNN" 
13773 Where 
13774 U is an uppercase letter and N is a hex digit.
13775
13776
13777 ----------------------------------------
13778 06 October 2004.  Summary of changes for version 20041006:
13779
13780 1) ACPI CA Core Subsystem:
13781
13782 Implemented support for the ACPI 3.0 Timer operator. This ASL function 
13783 implements a 64-bit timer with 100 nanosecond granularity.
13784
13785 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 
13786 implement the ACPI 3.0 Timer operator.  This allows the host OS to 
13787 implement 
13788 the timer with the best clock available. Also, it keeps the core 
13789 subsystem 
13790 out of the clock handling business, since the host OS (usually) performs 
13791 this function.
13792
13793 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 
13794 functions use a 64-bit address which is part of the packed ACPI Generic 
13795 Address Structure. Since the structure is non-aligned, the alignment 
13796 macros 
13797 are now used to extract the address to a local variable before use.
13798
13799 Fixed a problem where the ToInteger operator assumed all input strings 
13800 were 
13801 hexadecimal. The operator now handles both decimal strings and hex 
13802 strings 
13803 (prefixed with "0x").
13804
13805 Fixed a problem where the string length in the string object created as a 
13806 result of the internal ConvertToString procedure could be incorrect. This 
13807 potentially affected all implicit conversions and also the 
13808 ToDecimalString 
13809 and ToHexString operators.
13810
13811 Fixed two problems in the ToString operator. If the length parameter was 
13812 zero, an incorrect string object was created and the value of the input 
13813 length parameter was inadvertently changed from zero to Ones.
13814
13815 Fixed a problem where the optional ResourceSource string in the 
13816 ExtendedIRQ 
13817 resource macro was ignored.
13818
13819 Simplified the interfaces to the internal division functions, reducing 
13820 code 
13821 size and complexity.
13822
13823 Code and Data Size: Current and previous core subsystem library sizes are 
13824 shown below. These are the code and data sizes for the acpica.lib 
13825 produced 
13826 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13827 any ACPI driver or OSPM code. The debug version of the code includes the 
13828 debug output trace mechanism and has a much larger code and data size. 
13829 Note 
13830 that these values will vary depending on the efficiency of the compiler 
13831 and 
13832 the compiler options used during generation.
13833
13834   Previous Release:
13835     Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13836     Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13837   Current Release:
13838     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13839     Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13840
13841
13842 2) iASL Compiler/Disassembler:
13843
13844 Implemented support for the ACPI 3.0 Timer operator.
13845
13846 Fixed a problem where the Default() operator was inadvertently ignored in 
13847
13848 Switch/Case block.  This was a problem in the translation of the Switch 
13849 statement to If...Else pairs.
13850
13851 Added support to allow a standalone Return operator, with no parentheses 
13852 (or 
13853 operands).
13854
13855 Fixed a problem with code generation for the ElseIf operator where the 
13856 translated Else...If parse tree was improperly constructed leading to the 
13857 loss of some code.
13858
13859 ----------------------------------------
13860 22 September 2004.  Summary of changes for version 20040922:
13861
13862 1) ACPI CA Core Subsystem:
13863
13864 Fixed a problem with the implementation of the LNot() operator where 
13865 "Ones" 
13866 was not returned for the TRUE case. Changed the code to return Ones 
13867 instead 
13868 of (!Arg) which was usually 1. This change affects iASL constant folding 
13869 for 
13870 this operator also.
13871
13872 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 
13873 not 
13874 initialized properly -- Now zero the entire buffer in this case where the 
13875 buffer already exists.
13876
13877 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 
13878 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 
13879 related code considerably. This will require changes/updates to all OS 
13880 interface layers (OSLs.)
13881
13882 Implemented a new external interface, AcpiInstallExceptionHandler, to 
13883 allow 
13884 a system exception handler to be installed. This handler is invoked upon 
13885 any 
13886 run-time exception that occurs during control method execution.
13887
13888 Added support for the DSDT in AcpiTbFindTable. This allows the 
13889 DataTableRegion() operator to access the local copy of the DSDT.
13890
13891 Code and Data Size: Current and previous core subsystem library sizes are 
13892 shown below. These are the code and data sizes for the acpica.lib 
13893 produced 
13894 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13895 any ACPI driver or OSPM code. The debug version of the code includes the 
13896 debug output trace mechanism and has a much larger code and data size. 
13897 Note 
13898 that these values will vary depending on the efficiency of the compiler 
13899 and 
13900 the compiler options used during generation.
13901
13902   Previous Release:
13903     Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13904     Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13905   Current Release:
13906     Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13907     Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13908
13909
13910 2) iASL Compiler/Disassembler:
13911
13912 Fixed a problem with constant folding and the LNot operator. LNot was 
13913 returning 1 in the TRUE case, not Ones as per the ACPI specification. 
13914 This 
13915 could result in the generation of an incorrect folded/reduced constant.
13916
13917 End-Of-File is now allowed within a "//"-style comment.  A parse error no 
13918 longer occurs if such a comment is at the very end of the input ASL 
13919 source 
13920 file.
13921
13922 Implemented the "-r" option to override the Revision in the table header. 
13923 The initial use of this option will be to simplify the evaluation of the 
13924 AML 
13925 interpreter by allowing a single ASL source module to be compiled for 
13926 either 
13927 32-bit or 64-bit integers.
13928
13929
13930 ----------------------------------------
13931 27 August 2004.  Summary of changes for version 20040827:
13932
13933 1) ACPI CA Core Subsystem:
13934
13935 - Implemented support for implicit object conversion in the non-numeric 
13936 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 
13937 and 
13938 LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used; 
13939 the second operand is implicitly converted on the fly to match the type 
13940 of 
13941 the first operand.  For example:
13942
13943     LEqual (Source1, Source2)
13944
13945 Source1 and Source2 must each evaluate to an integer, a string, or a 
13946 buffer. 
13947 The data type of Source1 dictates the required type of Source2. Source2 
13948 is 
13949 implicitly converted if necessary to match the type of Source1.
13950
13951 - Updated and corrected the behavior of the string conversion support.  
13952 The 
13953 rules concerning conversion of buffers to strings (according to the ACPI 
13954 specification) are as follows:
13955
13956 ToDecimalString - explicit byte-wise conversion of buffer to string of 
13957 decimal values (0-255) separated by commas. ToHexString - explicit byte-
13958 wise 
13959 conversion of buffer to string of hex values (0-FF) separated by commas. 
13960 ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
13961 byte 
13962 copy with no transform except NULL terminated. Any other implicit buffer-
13963 to-
13964 string conversion - byte-wise conversion of buffer to string of hex 
13965 values 
13966 (0-FF) separated by spaces.
13967
13968 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13969
13970 - Fixed a problem in AcpiNsGetPathnameLength where the returned length 
13971 was 
13972 one byte too short in the case of a node in the root scope.  This could 
13973 cause a fault during debug output.
13974
13975 - Code and Data Size: Current and previous core subsystem library sizes 
13976 are 
13977 shown below.  These are the code and data sizes for the acpica.lib 
13978 produced 
13979 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
13980 any ACPI driver or OSPM code.  The debug version of the code includes the 
13981 debug output trace mechanism and has a much larger code and data size.  
13982 Note 
13983 that these values will vary depending on the efficiency of the compiler 
13984 and 
13985 the compiler options used during generation.
13986
13987   Previous Release:
13988     Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13989     Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13990   Current Release:
13991     Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13992     Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13993
13994
13995 2) iASL Compiler/Disassembler:
13996
13997 - Fixed a Linux generation error.
13998
13999
14000 ----------------------------------------
14001 16 August 2004.  Summary of changes for version 20040816:
14002
14003 1) ACPI CA Core Subsystem:
14004
14005 Designed and implemented support within the AML interpreter for the so-
14006 called "implicit return".  This support returns the result of the last 
14007 ASL 
14008 operation within a control method, in the absence of an explicit Return() 
14009 operator.  A few machines depend on this behavior, even though it is not 
14010 explicitly supported by the ASL language.  It is optional support that 
14011 can 
14012 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14013
14014 Removed support for the PCI_Config address space from the internal low 
14015 level 
14016 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This 
14017 support was not used internally, and would not work correctly anyway 
14018 because 
14019 the PCI bus number and segment number were not supported.  There are 
14020 separate interfaces for PCI configuration space access because of the 
14021 unique 
14022 interface.
14023
14024 Code and Data Size: Current and previous core subsystem library sizes are 
14025 shown below.  These are the code and data sizes for the acpica.lib 
14026 produced 
14027 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14028 any ACPI driver or OSPM code.  The debug version of the code includes the 
14029 debug output trace mechanism and has a much larger code and data size.  
14030 Note 
14031 that these values will vary depending on the efficiency of the compiler 
14032 and 
14033 the compiler options used during generation.
14034
14035   Previous Release:
14036     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14037     Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14038   Current Release:
14039     Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14040     Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14041
14042
14043 2) iASL Compiler/Disassembler:
14044
14045 Fixed a problem where constants in ASL expressions at the root level (not 
14046 within a control method) could be inadvertently truncated during code 
14047 generation.  This problem was introduced in the 20040715 release.
14048
14049
14050 ----------------------------------------
14051 15 July 2004.  Summary of changes for version 20040715:
14052
14053 1) ACPI CA Core Subsystem:
14054
14055 Restructured the internal HW GPE interfaces to pass/track the current 
14056 state 
14057 of interrupts (enabled/disabled) in order to avoid possible deadlock and 
14058 increase flexibility of the interfaces.
14059
14060 Implemented a "lexicographical compare" for String and Buffer objects 
14061 within 
14062 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14063
14064 as per further clarification to the ACPI specification.  Behavior is 
14065 similar 
14066 to C library "strcmp".
14067
14068 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 
14069 external function.  In the 32-bit non-debug case, the stack use has been 
14070 reduced from 168 bytes to 32 bytes.
14071
14072 Deployed a new run-time configuration flag, 
14073 AcpiGbl_EnableInterpreterSlack, 
14074 whose purpose is to allow the AML interpreter to forgive certain bad AML 
14075 constructs.  Default setting is FALSE.
14076
14077 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 
14078 IO 
14079 support code.  If enabled, it allows field access to go beyond the end of 
14080
14081 region definition if the field is within the region length rounded up to 
14082 the 
14083 next access width boundary (a common coding error.)
14084
14085 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 
14086 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, 
14087 these 
14088 symbols are lowercase by the latest version of the AcpiSrc tool.
14089
14090 The prototypes for the PCI interfaces in acpiosxf.h have been updated to 
14091 rename "Register" to simply "Reg" to prevent certain compilers from 
14092 complaining.
14093
14094 Code and Data Size: Current and previous core subsystem library sizes are 
14095 shown below.  These are the code and data sizes for the acpica.lib 
14096 produced 
14097 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14098 any ACPI driver or OSPM code.  The debug version of the code includes the 
14099 debug output trace mechanism and has a much larger code and data size.  
14100 Note 
14101 that these values will vary depending on the efficiency of the compiler 
14102 and 
14103 the compiler options used during generation.
14104
14105   Previous Release:
14106     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14107     Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14108   Current Release:
14109     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14110     Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14111
14112
14113 2) iASL Compiler/Disassembler:
14114
14115 Implemented full support for Package objects within the Case() operator.  
14116 Note: The Break() operator is currently not supported within Case blocks 
14117 (TermLists) as there is some question about backward compatibility with 
14118 ACPI 
14119 1.0 interpreters.
14120
14121
14122 Fixed a problem where complex terms were not supported properly within 
14123 the 
14124 Switch() operator.
14125
14126 Eliminated extraneous warning for compiler-emitted reserved names of the 
14127 form "_T_x".  (Used in Switch/Case operators.)
14128
14129 Eliminated optimization messages for "_T_x" objects and small constants 
14130 within the DefinitionBlock operator.
14131
14132
14133 ----------------------------------------
14134 15 June 2004.  Summary of changes for version 20040615:
14135
14136 1) ACPI CA Core Subsystem:
14137
14138 Implemented support for Buffer and String objects (as per ACPI 2.0) for 
14139 the 
14140 following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
14141 LLessEqual.
14142
14143 All directory names in the entire source package are lower case, as they 
14144 were in earlier releases.
14145
14146 Implemented "Disassemble" command in the AML debugger that will 
14147 disassemble 
14148 a single control method.
14149
14150 Code and Data Size: Current and previous core subsystem library sizes are 
14151 shown below.  These are the code and data sizes for the acpica.lib 
14152 produced 
14153 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14154 any ACPI driver or OSPM code.  The debug version of the code includes the 
14155 debug output trace mechanism and has a much larger code and data size.  
14156 Note 
14157 that these values will vary depending on the efficiency of the compiler 
14158 and 
14159 the compiler options used during generation.
14160
14161   Previous Release:
14162     Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14163     Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14164
14165   Current Release:
14166     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14167     Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14168
14169
14170 2) iASL Compiler/Disassembler:
14171
14172 Implemented support for Buffer and String objects (as per ACPI 2.0) for 
14173 the 
14174 following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
14175 LLessEqual.
14176
14177 All directory names in the entire source package are lower case, as they 
14178 were in earlier releases.
14179
14180 Fixed a fault when using the -g or -d<nofilename> options if the FADT was 
14181 not found.
14182
14183 Fixed an issue with the Windows version of the compiler where later 
14184 versions 
14185 of Windows place the FADT in the registry under the name "FADT" and not 
14186 "FACP" as earlier versions did.  This applies when using the -g or -
14187 d<nofilename> options.  The compiler now looks for both strings as 
14188 necessary.
14189
14190 Fixed a problem with compiler namepath optimization where a namepath 
14191 within 
14192 the Scope() operator could not be optimized if the namepath was a subpath 
14193 of 
14194 the current scope path.
14195
14196 ----------------------------------------
14197 27 May 2004.  Summary of changes for version 20040527:
14198
14199 1) ACPI CA Core Subsystem:
14200
14201 Completed a new design and implementation for EBDA (Extended BIOS Data 
14202 Area) 
14203 support in the RSDP scan code.  The original code improperly scanned for 
14204 the 
14205 EBDA by simply scanning from memory location 0 to 0x400.  The correct 
14206 method 
14207 is to first obtain the EBDA pointer from within the BIOS data area, then 
14208 scan 1K of memory starting at the EBDA pointer.  There appear to be few 
14209 if 
14210 any machines that place the RSDP in the EBDA, however.
14211
14212 Integrated a fix for a possible fault during evaluation of BufferField 
14213 arguments.  Obsolete code that was causing the problem was removed.
14214
14215 Found and fixed a problem in the Field Support Code where data could be 
14216 corrupted on a bit field read that starts on an aligned boundary but does 
14217 not end on an aligned boundary.  Merged the read/write "datum length" 
14218 calculation code into a common procedure.
14219
14220 Rolled in a couple of changes to the FreeBSD-specific header.
14221
14222
14223 Code and Data Size: Current and previous core subsystem library sizes are 
14224 shown below.  These are the code and data sizes for the acpica.lib 
14225 produced 
14226 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14227 any ACPI driver or OSPM code.  The debug version of the code includes the 
14228 debug output trace mechanism and has a much larger code and data size.  
14229 Note 
14230 that these values will vary depending on the efficiency of the compiler 
14231 and 
14232 the compiler options used during generation.
14233
14234   Previous Release:
14235     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14236     Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14237   Current Release:
14238     Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14239     Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14240
14241
14242 2) iASL Compiler/Disassembler:
14243
14244 Fixed a generation warning produced by some overly-verbose compilers for 
14245
14246 64-bit constant.
14247
14248 ----------------------------------------
14249 14 May 2004.  Summary of changes for version 20040514:
14250
14251 1) ACPI CA Core Subsystem:
14252
14253 Fixed a problem where hardware GPE enable bits sometimes not set properly 
14254 during and after GPE method execution.  Result of 04/27 changes.
14255
14256 Removed extra "clear all GPEs" when sleeping/waking.
14257
14258 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 
14259 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 
14260 to 
14261 the new AcpiEv* calls as appropriate.
14262
14263 ACPI_OS_NAME was removed from the OS-specific headers.  The default name 
14264 is 
14265 now "Microsoft Windows NT" for maximum compatibility.  However this can 
14266 be 
14267 changed by modifying the acconfig.h file.
14268
14269 Allow a single invocation of AcpiInstallNotifyHandler for a handler that 
14270 traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag. 
14271
14272 Run _INI methods on ThermalZone objects.  This is against the ACPI 
14273 specification, but there is apparently ASL code in the field that has 
14274 these 
14275 _INI methods, and apparently "other" AML interpreters execute them.
14276
14277 Performed a full 16/32/64 bit lint that resulted in some small changes.
14278
14279 Added a sleep simulation command to the AML debugger to test sleep code. 
14280
14281 Code and Data Size: Current and previous core subsystem library sizes are 
14282 shown below.  These are the code and data sizes for the acpica.lib 
14283 produced 
14284 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14285 any ACPI driver or OSPM code.  The debug version of the code includes the 
14286 debug output trace mechanism and has a much larger code and data size.  
14287 Note 
14288 that these values will vary depending on the efficiency of the compiler 
14289 and 
14290 the compiler options used during generation.
14291
14292   Previous Release:
14293     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14294     Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14295   Current Release:
14296     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14297     Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14298
14299 ----------------------------------------
14300 27 April 2004.  Summary of changes for version 20040427:
14301
14302 1) ACPI CA Core Subsystem:
14303
14304 Completed a major overhaul of the GPE handling within ACPI CA.  There are 
14305 now three types of GPEs:  wake-only, runtime-only, and combination 
14306 wake/run.  
14307 The only GPEs allowed to be combination wake/run are for button-style 
14308 devices such as a control-method power button, control-method sleep 
14309 button, 
14310 or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are 
14311 not 
14312 referenced by any _PRW methods are marked for "runtime" and hardware 
14313 enabled.  Any GPE that is referenced by a _PRW method is marked for 
14314 "wake" 
14315 (and disabled at runtime).  However, at sleep time, only those GPEs that 
14316 have been specifically enabled for wake via the AcpiEnableGpe interface 
14317 will 
14318 actually be hardware enabled.
14319
14320 A new external interface has been added, AcpiSetGpeType(), that is meant 
14321 to 
14322 be used by device drivers to force a GPE to a particular type.  It will 
14323 be 
14324 especially useful for the drivers for the button devices mentioned above.
14325
14326 Completed restructuring of the ACPI CA initialization sequence so that 
14327 default operation region handlers are installed before GPEs are 
14328 initialized 
14329 and the _PRW methods are executed.  This will prevent errors when the 
14330 _PRW 
14331 methods attempt to access system memory or I/O space.
14332
14333 GPE enable/disable no longer reads the GPE enable register.  We now keep 
14334 the 
14335 enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We 
14336 thus no longer depend on the hardware to maintain these bits.
14337
14338 Always clear the wake status and fixed/GPE status bits before sleep, even 
14339 for state S5.
14340
14341 Improved the AML debugger output for displaying the GPE blocks and their 
14342 current status.
14343
14344 Added new strings for the _OSI method, of the form "Windows 2001 SPx" 
14345 where 
14346 x = 0,1,2,3,4.
14347
14348 Fixed a problem where the physical address was incorrectly calculated 
14349 when 
14350 the Load() operator was used to directly load from an Operation Region 
14351 (vs. 
14352 loading from a Field object.)  Also added check for minimum table length 
14353 for 
14354 this case.
14355
14356 Fix for multiple mutex acquisition.  Restore original thread SyncLevel on 
14357 mutex release.
14358
14359 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 
14360 consistency with the other fields returned.
14361
14362 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such 
14363 structure for each GPE in the system, so the size of this structure is 
14364 important.
14365
14366 CPU stack requirement reduction:  Cleaned up the method execution and 
14367 object 
14368 evaluation paths so that now a parameter structure is passed, instead of 
14369 copying the various method parameters over and over again.
14370
14371 In evregion.c:  Correctly exit and reenter the interpreter region if and 
14372 only if dispatching an operation region request to a user-installed 
14373 handler.  
14374 Do not exit/reenter when dispatching to a default handler (e.g., default 
14375 system memory or I/O handlers)
14376
14377
14378 Notes for updating drivers for the new GPE support.  The following 
14379 changes 
14380 must be made to ACPI-related device drivers that are attached to one or 
14381 more 
14382 GPEs: (This information will be added to the ACPI CA Programmer 
14383 Reference.)
14384
14385 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you 
14386 must 
14387 explicitly call AcpiEnableGpe.
14388 2) There is a new interface called AcpiSetGpeType. This should be called 
14389 before enabling the GPE.  Also, this interface will automatically disable 
14390 the GPE if it is currently enabled.
14391 3) AcpiEnableGpe no longer supports a GPE type flag.
14392
14393 Specific drivers that must be changed:
14394 1) EC driver:
14395     AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 
14396 AeGpeHandler, NULL);
14397     AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14398     AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14399
14400 2) Button Drivers (Power, Lid, Sleep):
14401 Run _PRW method under parent device
14402 If _PRW exists: /* This is a control-method button */
14403     Extract GPE number and possibly GpeDevice
14404     AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14405     AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14406
14407 For all other devices that have _PRWs, we automatically set the GPE type 
14408 to 
14409 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  
14410 This 
14411 must be done on a selective basis, usually requiring some kind of user 
14412 app 
14413 to allow the user to pick the wake devices.
14414
14415
14416 Code and Data Size: Current and previous core subsystem library sizes are 
14417 shown below.  These are the code and data sizes for the acpica.lib 
14418 produced 
14419 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14420 any ACPI driver or OSPM code.  The debug version of the code includes the 
14421 debug output trace mechanism and has a much larger code and data size.  
14422 Note 
14423 that these values will vary depending on the efficiency of the compiler 
14424 and 
14425 the compiler options used during generation.
14426
14427   Previous Release:
14428     Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14429     Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14430   Current Release:
14431
14432     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14433     Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14434
14435
14436
14437 ----------------------------------------
14438 02 April 2004.  Summary of changes for version 20040402:
14439
14440 1) ACPI CA Core Subsystem:
14441
14442 Fixed an interpreter problem where an indirect store through an ArgX 
14443 parameter was incorrectly applying the "implicit conversion rules" during 
14444 the store.  From the ACPI specification: "If the target is a method local 
14445 or 
14446 argument (LocalX or ArgX), no conversion is performed and the result is 
14447 stored directly to the target".  The new behavior is to disable implicit 
14448 conversion during ALL stores to an ArgX.
14449
14450 Changed the behavior of the _PRW method scan to ignore any and all errors 
14451 returned by a given _PRW.  This prevents the scan from aborting from the 
14452 failure of any single _PRW.
14453
14454 Moved the runtime configuration parameters from the global init procedure 
14455 to 
14456 static variables in acglobal.h.  This will allow the host to override the 
14457 default values easily.
14458
14459 Code and Data Size: Current and previous core subsystem library sizes are 
14460 shown below.  These are the code and data sizes for the acpica.lib 
14461 produced 
14462 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14463 any ACPI driver or OSPM code.  The debug version of the code includes the 
14464 debug output trace mechanism and has a much larger code and data size.  
14465 Note 
14466 that these values will vary depending on the efficiency of the compiler 
14467 and 
14468 the compiler options used during generation.
14469
14470   Previous Release:
14471     Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14472     Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14473   Current Release:
14474     Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14475     Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14476
14477
14478 2) iASL Compiler/Disassembler:
14479
14480 iASL now fully disassembles SSDTs.  However, External() statements are 
14481 not 
14482 generated automatically for unresolved symbols at this time.  This is a 
14483 planned feature for future implementation.
14484
14485 Fixed a scoping problem in the disassembler that occurs when the type of 
14486 the 
14487 target of a Scope() operator is overridden.  This problem caused an 
14488 incorrectly nested internal namespace to be constructed.
14489
14490 Any warnings or errors that are emitted during disassembly are now 
14491 commented 
14492 out automatically so that the resulting file can be recompiled without 
14493 any 
14494 hand editing.
14495
14496 ----------------------------------------
14497 26 March 2004.  Summary of changes for version 20040326:
14498
14499 1) ACPI CA Core Subsystem:
14500
14501 Implemented support for "wake" GPEs via interaction between GPEs and the 
14502 _PRW methods.  Every GPE that is pointed to by one or more _PRWs is 
14503 identified as a WAKE GPE and by default will no longer be enabled at 
14504 runtime.  Previously, we were blindly enabling all GPEs with a 
14505 corresponding 
14506 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  
14507 We 
14508 believe this has been the cause of thousands of "spurious" GPEs on some 
14509 systems.
14510
14511 This new GPE behavior is can be reverted to the original behavior (enable 
14512 ALL GPEs at runtime) via a runtime flag.
14513
14514 Fixed a problem where aliased control methods could not access objects 
14515 properly.  The proper scope within the namespace was not initialized 
14516 (transferred to the target of the aliased method) before executing the 
14517 target method.
14518
14519 Fixed a potential race condition on internal object deletion on the 
14520 return 
14521 object in AcpiEvaluateObject. 
14522
14523 Integrated a fix for resource descriptors where both _MEM and _MTP were 
14524 being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too 
14525 wide, 0x0F instead of 0x03.)
14526
14527 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 
14528 preventing 
14529
14530 fault in some cases.
14531
14532 Updated Notify() values for debug statements in evmisc.c
14533
14534 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14535
14536 Code and Data Size: Current and previous core subsystem library sizes are 
14537 shown below.  These are the code and data sizes for the acpica.lib 
14538 produced 
14539 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14540 any ACPI driver or OSPM code.  The debug version of the code includes the 
14541 debug output trace mechanism and has a much larger code and data size.  
14542 Note 
14543 that these values will vary depending on the efficiency of the compiler 
14544 and 
14545 the compiler options used during generation.
14546
14547   Previous Release:
14548
14549     Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14550     Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14551   Current Release:
14552     Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14553     Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14554
14555 ----------------------------------------
14556 11 March 2004.  Summary of changes for version 20040311:
14557
14558 1) ACPI CA Core Subsystem:
14559
14560 Fixed a problem where errors occurring during the parse phase of control 
14561 method execution did not abort cleanly.  For example, objects created and 
14562 installed in the namespace were not deleted.  This caused all subsequent 
14563 invocations of the method to return the AE_ALREADY_EXISTS exception.
14564
14565 Implemented a mechanism to force a control method to "Serialized" 
14566 execution 
14567 if the method attempts to create namespace objects. (The root of the 
14568 AE_ALREADY_EXISTS problem.)
14569
14570 Implemented support for the predefined _OSI "internal" control method.  
14571 Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 
14572 and 
14573 "Windows 2001.1", and can be easily upgraded for new strings as 
14574 necessary.  
14575 This feature will allow "other" operating systems to execute the fully 
14576 tested, "Windows" code path through the ASL code
14577
14578 Global Lock Support:  Now allows multiple acquires and releases with any 
14579 internal thread.  Removed concept of "owning thread" for this special 
14580 mutex.
14581
14582 Fixed two functions that were inappropriately declaring large objects on 
14583 the 
14584 CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage 
14585 during 
14586 method execution considerably.
14587
14588 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 
14589 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14590
14591 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 
14592 defined on the machine.
14593
14594 Implemented two runtime options:  One to force all control method 
14595 execution 
14596 to "Serialized" to mimic Windows behavior, another to disable _OSI 
14597 support 
14598 if it causes problems on a given machine.
14599
14600 Code and Data Size: Current and previous core subsystem library sizes are 
14601 shown below.  These are the code and data sizes for the acpica.lib 
14602 produced 
14603 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
14604 any ACPI driver or OSPM code.  The debug version of the code includes the 
14605 debug output trace mechanism and has a much larger code and data size.  
14606 Note 
14607 that these values will vary depending on the efficiency of the compiler 
14608 and 
14609 the compiler options used during generation.
14610
14611   Previous Release:
14612     Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14613     Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14614   Current Release:
14615     Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14616     Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14617
14618 2) iASL Compiler/Disassembler:
14619
14620 Fixed an array size problem for FreeBSD that would cause the compiler to 
14621 fault.
14622
14623 ----------------------------------------
14624 20 February 2004.  Summary of changes for version 20040220:
14625
14626
14627 1) ACPI CA Core Subsystem:
14628
14629 Implemented execution of _SxD methods for Device objects in the 
14630 GetObjectInfo interface.
14631
14632 Fixed calls to _SST method to pass the correct arguments.
14633
14634 Added a call to _SST on wake to restore to "working" state.
14635
14636 Check for End-Of-Buffer failure case in the WalkResources interface.
14637
14638 Integrated fix for 64-bit alignment issue in acglobal.h by moving two 
14639 structures to the beginning of the file.
14640
14641 After wake, clear GPE status register(s) before enabling GPEs.
14642
14643 After wake, clear/enable power button.  (Perhaps we should clear/enable 
14644 all 
14645 fixed events upon wake.)
14646
14647 Fixed a couple of possible memory leaks in the Namespace manager.
14648
14649 Integrated latest acnetbsd.h file.
14650
14651 ----------------------------------------
14652 11 February 2004.  Summary of changes for version 20040211:
14653
14654
14655 1) ACPI CA Core Subsystem:
14656
14657 Completed investigation and implementation of the call-by-reference 
14658 mechanism for control method arguments.
14659
14660 Fixed a problem where a store of an object into an indexed package could 
14661 fail if the store occurs within a different method than the method that 
14662 created the package.
14663
14664 Fixed a problem where the ToDecimal operator could return incorrect 
14665 results.
14666
14667 Fixed a problem where the CopyObject operator could fail on some of the 
14668 more 
14669 obscure objects (e.g., Reference objects.)
14670
14671 Improved the output of the Debug object to display buffer, package, and 
14672 index objects.
14673
14674 Fixed a problem where constructs of the form "RefOf (ArgX)" did not 
14675 return 
14676 the expected result.
14677
14678 Added permanent ACPI_REPORT_ERROR macros for all instances of the 
14679 ACPI_AML_INTERNAL exception.
14680
14681 Integrated latest version of acfreebsd.h
14682
14683 ----------------------------------------
14684 16 January 2004.  Summary of changes for version 20040116:
14685
14686 The purpose of this release is primarily to update the copyright years in 
14687 each module, thus causing a huge number of diffs.  There are a few small 
14688 functional changes, however.
14689
14690 1) ACPI CA Core Subsystem:
14691
14692 Improved error messages when there is a problem finding one or more of 
14693 the 
14694 required base ACPI tables
14695
14696 Reintroduced the definition of APIC_HEADER in actbl.h
14697
14698 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14699
14700 Removed extraneous reference to NewObj in dsmthdat.c
14701
14702 2) iASL compiler
14703
14704 Fixed a problem introduced in December that disabled the correct 
14705 disassembly 
14706 of Resource Templates
14707
14708
14709 ----------------------------------------
14710 03 December 2003.  Summary of changes for version 20031203:
14711
14712 1) ACPI CA Core Subsystem:
14713
14714 Changed the initialization of Operation Regions during subsystem
14715 init to perform two entire walks of the ACPI namespace; The first
14716 to initialize the regions themselves, the second to execute the
14717 _REG methods.  This fixed some interdependencies across _REG
14718 methods found on some machines.
14719
14720 Fixed a problem where a Store(Local0, Local1) could simply update
14721 the object reference count, and not create a new copy of the
14722 object if the Local1 is uninitialized.
14723
14724 Implemented support for the _SST reserved method during sleep
14725 transitions.
14726
14727 Implemented support to clear the SLP_TYP and SLP_EN bits when
14728 waking up, this is apparently required by some machines.
14729
14730 When sleeping, clear the wake status only if SleepState is not S5.
14731
14732 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14733 pointer arithmetic advanced a string pointer too far.
14734
14735 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14736 could be returned if the requested table has not been loaded.
14737
14738 Within the support for IRQ resources, restructured the handling of
14739 the active and edge/level bits.
14740
14741 Fixed a few problems in AcpiPsxExecute() where memory could be
14742 leaked under certain error conditions.
14743
14744 Improved error messages for the cases where the ACPI mode could
14745 not be entered.
14746
14747 Code and Data Size: Current and previous core subsystem library
14748 sizes are shown below.  These are the code and data sizes for the
14749 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14750 these values do not include any ACPI driver or OSPM code.  The
14751 debug version of the code includes the debug output trace
14752 mechanism and has a much larger code and data size.  Note that
14753 these values will vary depending on the efficiency of the compiler
14754 and the compiler options used during generation.
14755
14756   Previous Release (20031029):
14757     Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14758     Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14759   Current Release:
14760     Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14761     Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14762
14763 2) iASL Compiler/Disassembler:
14764
14765 Implemented a fix for the iASL disassembler where a bad index was
14766 generated.  This was most noticeable on 64-bit platforms
14767
14768
14769 ----------------------------------------
14770 29 October 2003.  Summary of changes for version 20031029:
14771
14772 1) ACPI CA Core Subsystem:
14773
14774
14775 Fixed a problem where a level-triggered GPE with an associated
14776 _Lxx control method was incorrectly cleared twice.
14777
14778 Fixed a problem with the Field support code where an access can
14779 occur beyond the end-of-region if the field is non-aligned but
14780 extends to the very end of the parent region (resulted in an
14781 AE_AML_REGION_LIMIT exception.)
14782
14783 Fixed a problem with ACPI Fixed Events where an RT Clock handler
14784 would not get invoked on an RTC event.  The RTC event bitmasks for
14785 the PM1 registers were not being initialized properly.
14786
14787 Implemented support for executing _STA and _INI methods for
14788 Processor objects.  Although this is currently not part of the
14789 ACPI specification, there is existing ASL code that depends on the
14790 init-time execution of these methods.
14791
14792 Implemented and deployed a GetDescriptorName function to decode
14793 the various types of internal descriptors.  Guards against null
14794 descriptors during debug output also.
14795
14796 Implemented and deployed a GetNodeName function to extract the 4-
14797 character namespace node name.  This function simplifies the debug
14798 and error output, as well as guarding against null pointers during
14799 output.
14800
14801 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14802 simplify the debug and error output of 64-bit integers.  This
14803 macro replaces the HIDWORD and LODWORD macros for dumping these
14804 integers.
14805
14806 Updated the implementation of the Stall() operator to only call
14807 AcpiOsStall(), and also return an error if the operand is larger
14808 than 255.  This preserves the required behavior of not
14809 relinquishing the processor, as would happen if AcpiOsSleep() was
14810 called for "long stalls".
14811
14812 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
14813 initialized are now treated as NOOPs.
14814
14815 Cleaned up a handful of warnings during 64-bit generation.
14816
14817 Fixed a reported error where and incorrect GPE number was passed
14818 to the GPE dispatch handler.  This value is only used for error
14819 output, however.  Used this opportunity to clean up and streamline
14820 the GPE dispatch code.
14821
14822 Code and Data Size: Current and previous core subsystem library
14823 sizes are shown below.  These are the code and data sizes for the
14824 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14825 these values do not include any ACPI driver or OSPM code.  The
14826
14827 debug version of the code includes the debug output trace
14828 mechanism and has a much larger code and data size.  Note that
14829 these values will vary depending on the efficiency of the compiler
14830 and the compiler options used during generation.
14831
14832   Previous Release (20031002):
14833     Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14834     Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14835   Current Release:
14836     Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14837     Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14838
14839
14840 2) iASL Compiler/Disassembler:
14841
14842 Updated the iASL compiler to return an error if the operand to the
14843 Stall() operator is larger than 255.
14844
14845
14846 ----------------------------------------
14847 02 October 2003.  Summary of changes for version 20031002:
14848
14849
14850 1) ACPI CA Core Subsystem:
14851
14852 Fixed a problem with Index Fields where the index was not
14853 incremented for fields that require multiple writes to the
14854 index/data registers (Fields that are wider than the data
14855 register.)
14856
14857 Fixed a problem with all Field objects where a write could go
14858 beyond the end-of-field if the field was larger than the access
14859 granularity and therefore required multiple writes to complete the
14860 request.  An extra write beyond the end of the field could happen
14861 inadvertently.
14862
14863 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14864 would incorrectly be returned if the width of the Data Register
14865 was larger than the specified field access width.
14866
14867 Completed fixes for LoadTable() and Unload() and verified their
14868 operation.  Implemented full support for the "DdbHandle" object
14869 throughout the ACPI CA subsystem.
14870
14871 Implemented full support for the MADT and ECDT tables in the ACPI
14872 CA header files.  Even though these tables are not directly
14873 consumed by ACPI CA, the header definitions are useful for ACPI
14874 device drivers.
14875
14876 Integrated resource descriptor fixes posted to the Linux ACPI
14877 list.  This included checks for minimum descriptor length, and
14878 support for trailing NULL strings within descriptors that have
14879 optional string elements.
14880
14881 Code and Data Size: Current and previous core subsystem library
14882 sizes are shown below.  These are the code and data sizes for the
14883 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14884 these values do not include any ACPI driver or OSPM code.  The
14885 debug version of the code includes the debug output trace
14886 mechanism and has a much larger code and data size.  Note that
14887 these values will vary depending on the efficiency of the compiler
14888 and the compiler options used during generation.
14889
14890   Previous Release (20030918):
14891     Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14892     Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14893   Current Release:
14894     Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14895     Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14896
14897
14898 2) iASL Compiler:
14899
14900 Implemented detection of non-ASCII characters within the input
14901 source ASL file.  This catches attempts to compile binary (AML)
14902 files early in the compile, with an informative error message.
14903
14904 Fixed a problem where the disassembler would fault if the output
14905 filename could not be generated or if the output file could not be
14906 opened.
14907
14908 ----------------------------------------
14909 18 September 2003.  Summary of changes for version 20030918:
14910
14911
14912 1) ACPI CA Core Subsystem:
14913
14914 Found and fixed a longstanding problem with the late execution of
14915 the various deferred AML opcodes (such as Operation Regions,
14916 Buffer Fields, Buffers, and Packages).  If the name string
14917 specified for the name of the new object placed the object in a
14918 scope other than the current scope, the initialization/execution
14919 of the opcode failed.  The solution to this problem was to
14920 implement a mechanism where the late execution of such opcodes
14921 does not attempt to lookup/create the name a second time in an
14922 incorrect scope.  This fixes the "region size computed
14923 incorrectly" problem.
14924
14925 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
14926 Global Lock AE_BAD_PARAMETER error.
14927
14928 Fixed several 64-bit issues with prototypes, casting and data
14929 types.
14930
14931 Removed duplicate prototype from acdisasm.h
14932
14933 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
14934
14935 Code and Data Size: Current and previous core subsystem library
14936 sizes are shown below.  These are the code and data sizes for the
14937 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14938 these values do not include any ACPI driver or OSPM code.  The
14939 debug version of the code includes the debug output trace
14940 mechanism and has a much larger code and data size.  Note that
14941 these values will vary depending on the efficiency of the compiler
14942 and the compiler options used during generation.
14943
14944   Previous Release:
14945
14946     Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14947     Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14948   Current Release:
14949     Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14950     Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14951
14952
14953 2) Linux:
14954
14955 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14956 correct sleep time in seconds.
14957
14958 ----------------------------------------
14959 14 July 2003.  Summary of changes for version 20030619:
14960
14961 1) ACPI CA Core Subsystem:
14962
14963 Parse SSDTs in order discovered, as opposed to reverse order
14964 (Hrvoje Habjanic)
14965
14966 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14967 Klausner,
14968    Nate Lawson)
14969
14970
14971 2) Linux:
14972
14973 Dynamically allocate SDT list (suggested by Andi Kleen)
14974
14975 proc function return value cleanups (Andi Kleen)
14976
14977 Correctly handle NMI watchdog during long stalls (Andrew Morton)
14978
14979 Make it so acpismp=force works (reported by Andrew Morton)
14980
14981
14982 ----------------------------------------
14983 19 June 2003.  Summary of changes for version 20030619:
14984
14985 1) ACPI CA Core Subsystem:
14986
14987 Fix To/FromBCD, eliminating the need for an arch-specific #define.
14988
14989 Do not acquire a semaphore in the S5 shutdown path.
14990
14991 Fix ex_digits_needed for 0. (Takayoshi Kochi)
14992
14993 Fix sleep/stall code reversal. (Andi Kleen)
14994
14995 Revert a change having to do with control method calling
14996 semantics.
14997
14998 2) Linux:
14999
15000 acpiphp update (Takayoshi Kochi)
15001
15002 Export acpi_disabled for sonypi (Stelian Pop)
15003
15004 Mention acpismp=force in config help
15005
15006 Re-add acpitable.c and acpismp=force. This improves backwards
15007
15008 compatibility and also cleans up the code to a significant degree.
15009
15010 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15011
15012 ----------------------------------------
15013 22 May 2003.  Summary of changes for version 20030522:
15014
15015 1) ACPI CA Core Subsystem:
15016
15017 Found and fixed a reported problem where an AE_NOT_FOUND error
15018 occurred occasionally during _BST evaluation.  This turned out to
15019 be an Owner ID allocation issue where a called method did not get
15020 a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15021 ID UINT16 would wraparound so that the ID would be the same as the
15022 caller's and the called method would delete the caller's
15023 namespace.
15024
15025 Implemented extended error reporting for control methods that are
15026 aborted due to a run-time exception.  Output includes the exact
15027 AML instruction that caused the method abort, a dump of the method
15028 locals and arguments at the time of the abort, and a trace of all
15029 nested control method calls.
15030
15031 Modified the interpreter to allow the creation of buffers of zero
15032 length from the AML code. Implemented new code to ensure that no
15033 attempt is made to actually allocate a memory buffer (of length
15034 zero) - instead, a simple buffer object with a NULL buffer pointer
15035 and length zero is created.  A warning is no longer issued when
15036 the AML attempts to create a zero-length buffer.
15037
15038 Implemented a workaround for the "leading asterisk issue" in
15039 _HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15040 asterisk is automatically removed if present in any HID, UID, or
15041 CID strings.  The iASL compiler will still flag this asterisk as
15042 an error, however.
15043
15044 Implemented full support for _CID methods that return a package of
15045 multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15046 now additionally returns a device _CID list if present.  This
15047 required a change to the external interface in order to pass an
15048 ACPI_BUFFER object as a parameter since the _CID list is of
15049 variable length.
15050
15051 Fixed a problem with the new AE_SAME_HANDLER exception where
15052 handler initialization code did not know about this exception.
15053
15054 Code and Data Size: Current and previous core subsystem library
15055 sizes are shown below.  These are the code and data sizes for the
15056 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15057 these values do not include any ACPI driver or OSPM code.  The
15058 debug version of the code includes the debug output trace
15059 mechanism and has a much larger code and data size.  Note that
15060 these values will vary depending on the efficiency of the compiler
15061 and the compiler options used during generation.
15062
15063   Previous Release (20030509):
15064     Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15065     Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15066   Current Release:
15067     Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15068     Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15069
15070
15071 2) Linux:
15072
15073 Fixed a bug in which we would reinitialize the ACPI interrupt
15074 after it was already working, thus disabling all ACPI and the IRQs
15075 for any other device sharing the interrupt. (Thanks to Stian
15076 Jordet)
15077
15078 Toshiba driver update (John Belmonte)
15079
15080 Return only 0 or 1 for our interrupt handler status (Andrew
15081 Morton)
15082
15083
15084 3) iASL Compiler:
15085
15086 Fixed a reported problem where multiple (nested) ElseIf()
15087 statements were not handled correctly by the compiler, resulting
15088 in incorrect warnings and incorrect AML code.  This was a problem
15089 in both the ASL parser and the code generator.
15090
15091
15092 4) Documentation:
15093
15094 Added changes to existing interfaces, new exception codes, and new
15095 text concerning reference count object management versus garbage
15096 collection.
15097
15098 ----------------------------------------
15099 09 May 2003.  Summary of changes for version 20030509.
15100
15101
15102 1) ACPI CA Core Subsystem:
15103
15104 Changed the subsystem initialization sequence to hold off
15105 installation of address space handlers until the hardware has been
15106 initialized and the system has entered ACPI mode.  This is because
15107 the installation of space handlers can cause _REG methods to be
15108 run.  Previously, the _REG methods could potentially be run before
15109 ACPI mode was enabled.
15110
15111 Fixed some memory leak issues related to address space handler and
15112 notify handler installation.  There were some problems with the
15113 reference count mechanism caused by the fact that the handler
15114 objects are shared across several namespace objects.
15115
15116 Fixed a reported problem where reference counts within the
15117 namespace were not properly updated when named objects created by
15118 method execution were deleted.
15119
15120 Fixed a reported problem where multiple SSDTs caused a deletion
15121 issue during subsystem termination.  Restructured the table data
15122 structures to simplify the linked lists and the related code.
15123
15124 Fixed a problem where the table ID associated with secondary
15125 tables (SSDTs) was not being propagated into the namespace objects
15126 created by those tables.  This would only present a problem for
15127 tables that are unloaded at run-time, however.
15128
15129 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15130 type as the length parameter (instead of UINT32).
15131
15132 Solved a long-standing problem where an ALREADY_EXISTS error
15133 appears on various systems.  This problem could happen when there
15134 are multiple PCI_Config operation regions under a single PCI root
15135 bus.  This doesn't happen very frequently, but there are some
15136 systems that do this in the ASL.
15137
15138 Fixed a reported problem where the internal DeleteNode function
15139 was incorrectly handling the case where a namespace node was the
15140 first in the parent's child list, and had additional peers (not
15141 the only child, but first in the list of children.)
15142
15143 Code and Data Size: Current core subsystem library sizes are shown
15144 below.  These are the code and data sizes for the acpica.lib
15145 produced by the Microsoft Visual C++ 6.0 compiler, and these
15146 values do not include any ACPI driver or OSPM code.  The debug
15147 version of the code includes the debug output trace mechanism and
15148 has a much larger code and data size.  Note that these values will
15149 vary depending on the efficiency of the compiler and the compiler
15150 options used during generation.
15151
15152   Previous Release
15153     Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15154     Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15155   Current Release:
15156     Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15157     Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15158
15159
15160 2) Linux:
15161
15162 Allow ":" in OS override string (Ducrot Bruno)
15163
15164 Kobject fix (Greg KH)
15165
15166
15167 3 iASL Compiler/Disassembler:
15168
15169 Fixed a problem in the generation of the C source code files (AML
15170 is emitted in C source statements for BIOS inclusion) where the
15171 Ascii dump that appears within a C comment at the end of each line
15172 could cause a compile time error if the AML sequence happens to
15173 have an open comment or close comment sequence embedded.
15174
15175
15176 ----------------------------------------
15177 24 April 2003.  Summary of changes for version 20030424.
15178
15179
15180 1) ACPI CA Core Subsystem:
15181
15182 Support for big-endian systems has been implemented.  Most of the
15183 support has been invisibly added behind big-endian versions of the
15184 ACPI_MOVE_* macros.
15185
15186 Fixed a problem in AcpiHwDisableGpeBlock() and
15187 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15188 low level hardware write routine.  The offset parameter was
15189 actually eliminated from the low level read/write routines because
15190 they had become obsolete.
15191
15192 Fixed a problem where a handler object was deleted twice during
15193 the removal of a fixed event handler.
15194
15195
15196 2) Linux:
15197
15198 A fix for SMP systems with link devices was contributed by
15199
15200 Compaq's Dan Zink.
15201
15202 (2.5) Return whether we handled the interrupt in our IRQ handler.
15203 (Linux ISRs no longer return void, so we can propagate the handler
15204 return value from the ACPI CA core back to the OS.)
15205
15206
15207
15208 3) Documentation:
15209
15210 The ACPI CA Programmer Reference has been updated to reflect new
15211 interfaces and changes to existing interfaces.
15212
15213 ----------------------------------------
15214 28 March 2003.  Summary of changes for version 20030328.
15215
15216 1) ACPI CA Core Subsystem:
15217
15218 The GPE Block Device support has been completed.  New interfaces
15219 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15220 interfaces (enable, disable, clear, getstatus) have been split
15221 into separate interfaces for Fixed Events and General Purpose
15222 Events (GPEs) in order to support GPE Block Devices properly.
15223
15224 Fixed a problem where the error message "Failed to acquire
15225 semaphore" would appear during operations on the embedded
15226 controller (EC).
15227
15228 Code and Data Size: Current core subsystem library sizes are shown
15229 below.  These are the code and data sizes for the acpica.lib
15230 produced by the Microsoft Visual C++ 6.0 compiler, and these
15231 values do not include any ACPI driver or OSPM code.  The debug
15232 version of the code includes the debug output trace mechanism and
15233 has a much larger code and data size.  Note that these values will
15234 vary depending on the efficiency of the compiler and the compiler
15235 options used during generation.
15236
15237   Previous Release
15238     Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15239     Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15240   Current Release:
15241     Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15242     Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15243
15244
15245 ----------------------------------------
15246 28 February 2003.  Summary of changes for version 20030228.
15247
15248
15249 1) ACPI CA Core Subsystem:
15250
15251 The GPE handling and dispatch code has been completely overhauled
15252 in preparation for support of GPE Block Devices (ID ACPI0006).
15253 This affects internal data structures and code only; there should
15254 be no differences visible externally.  One new file has been
15255 added, evgpeblk.c
15256
15257 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15258 fields that are used to determine the GPE block lengths.  The
15259 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15260 structures are ignored.  This is per the ACPI specification but it
15261 isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15262 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15263
15264 In the SCI interrupt handler, removed the read of the PM1_CONTROL
15265 register to look at the SCI_EN bit.  On some machines, this read
15266 causes an SMI event and greatly slows down SCI events.  (This may
15267 in fact be the cause of slow battery status response on some
15268 systems.)
15269
15270 Fixed a problem where a store of a NULL string to a package object
15271 could cause the premature deletion of the object.  This was seen
15272 during execution of the battery _BIF method on some systems,
15273 resulting in no battery data being returned.
15274
15275 Added AcpiWalkResources interface to simplify parsing of resource
15276 lists.
15277
15278 Code and Data Size: Current core subsystem library sizes are shown
15279 below.  These are the code and data sizes for the acpica.lib
15280 produced by the Microsoft Visual C++ 6.0 compiler, and these
15281 values do not include any ACPI driver or OSPM code.  The debug
15282 version of the code includes the debug output trace mechanism and
15283 has a much larger code and data size.  Note that these values will
15284 vary depending on the efficiency of the compiler and the compiler
15285 options used during generation.
15286
15287   Previous Release
15288     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15289     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15290   Current Release:
15291     Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15292     Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15293
15294
15295 2) Linux
15296
15297 S3 fixes (Ole Rohne)
15298
15299 Update ACPI PHP driver with to use new acpi_walk_resource API
15300 (Bjorn Helgaas)
15301
15302 Add S4BIOS support (Pavel Machek)
15303
15304 Map in entire table before performing checksum (John Stultz)
15305
15306 Expand the mem= cmdline to allow the specification of reserved and
15307 ACPI DATA blocks (Pavel Machek)
15308
15309 Never use ACPI on VISWS
15310
15311 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15312
15313 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15314 causing us to think that some systems support C2 when they really
15315 don't.
15316
15317 Do not count processor objects for non-present CPUs (Thanks to
15318 Dominik Brodowski)
15319
15320
15321 3) iASL Compiler:
15322
15323 Fixed a problem where ASL include files could not be found and
15324 opened.
15325
15326 Added support for the _PDC reserved name.
15327
15328
15329 ----------------------------------------
15330 22 January 2003.  Summary of changes for version 20030122.
15331
15332
15333 1) ACPI CA Core Subsystem:
15334
15335 Added a check for constructs of the form:  Store (Local0, Local0)
15336 where Local0 is not initialized.  Apparently, some BIOS
15337 programmers believe that this is a NOOP.  Since this store doesn't
15338 do anything anyway, the new prototype behavior will ignore this
15339 error.  This is a case where we can relax the strict checking in
15340 the interpreter in the name of compatibility.
15341
15342
15343 2) Linux
15344
15345 The AcpiSrc Source Conversion Utility has been released with the
15346 Linux package for the first time.  This is the utility that is
15347 used to convert the ACPI CA base source code to the Linux version.
15348
15349 (Both) Handle P_BLK lengths shorter than 6 more gracefully
15350
15351 (Both) Move more headers to include/acpi, and delete an unused
15352 header.
15353
15354 (Both) Move drivers/acpi/include directory to include/acpi
15355
15356 (Both) Boot functions don't use cmdline, so don't pass it around
15357
15358 (Both) Remove include of unused header (Adrian Bunk)
15359
15360 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15361 the
15362 former now also includes the latter, acpiphp.h only needs the one,
15363 now.
15364
15365 (2.5) Make it possible to select method of bios restoring after S3
15366 resume. [=> no more ugly ifdefs] (Pavel Machek)
15367
15368 (2.5) Make proc write interfaces work (Pavel Machek)
15369
15370 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15371
15372 (2.5) Break out ACPI Perf code into its own module, under cpufreq
15373 (Dominik Brodowski)
15374
15375 (2.4) S4BIOS support (Ducrot Bruno)
15376
15377 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15378 Visinoni)
15379
15380
15381 3) iASL Compiler:
15382
15383 Added support to disassemble SSDT and PSDTs.
15384
15385 Implemented support to obtain SSDTs from the Windows registry if
15386 available.
15387
15388
15389 ----------------------------------------
15390 09 January 2003.  Summary of changes for version 20030109.
15391
15392 1) ACPI CA Core Subsystem:
15393
15394 Changed the behavior of the internal Buffer-to-String conversion
15395 function.  The current ACPI specification states that the contents
15396 of the buffer are "converted to a string of two-character
15397 hexadecimal numbers, each separated by a space".  Unfortunately,
15398 this definition is not backwards compatible with existing ACPI 1.0
15399 implementations (although the behavior was not defined in the ACPI
15400 1.0 specification).  The new behavior simply copies data from the
15401 buffer to the string until a null character is found or the end of
15402 the buffer is reached.  The new String object is always null
15403 terminated.  This problem was seen during the generation of _BIF
15404 battery data where incorrect strings were returned for battery
15405 type, etc.  This will also require an errata to the ACPI
15406 specification.
15407
15408 Renamed all instances of NATIVE_UINT and NATIVE_INT to
15409 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15410
15411 Copyright in all module headers (both Linux and non-Linux) has be
15412 updated to 2003.
15413
15414 Code and Data Size: Current core subsystem library sizes are shown
15415 below.  These are the code and data sizes for the acpica.lib
15416 produced by the Microsoft Visual C++ 6.0 compiler, and these
15417 values do not include any ACPI driver or OSPM code.  The debug
15418 version of the code includes the debug output trace mechanism and
15419 has a much larger code and data size.  Note that these values will
15420 vary depending on the efficiency of the compiler and the compiler
15421 options used during generation.
15422
15423   Previous Release
15424     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15425     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15426   Current Release:
15427     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15428     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15429
15430
15431 2) Linux
15432
15433 Fixed an oops on module insertion/removal (Matthew Tippett)
15434
15435 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15436
15437 (2.5) Replace pr_debug (Randy Dunlap)
15438
15439 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15440
15441 (Both) Eliminate spawning of thread from timer callback, in favor
15442 of schedule_work()
15443
15444 (Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15445
15446 (Both) Added define for Fixed Function HW region (Matthew Wilcox)
15447
15448 (Both) Add missing statics to button.c (Pavel Machek)
15449
15450 Several changes have been made to the source code translation
15451 utility that generates the Linux Code in order to make the code
15452 more "Linux-like":
15453
15454 All typedefs on structs and unions have been removed in keeping
15455 with the Linux coding style.
15456
15457 Removed the non-Linux SourceSafe module revision number from each
15458 module header.
15459
15460 Completed major overhaul of symbols to be lowercase for linux.
15461 Doubled the number of symbols that are lowercase.
15462
15463 Fixed a problem where identifiers within procedure headers and
15464 within quotes were not fully lower cased (they were left with a
15465 starting capital.)
15466
15467 Some C macros whose only purpose is to allow the generation of 16-
15468 bit code are now completely removed in the Linux code, increasing
15469 readability and maintainability.
15470
15471 ----------------------------------------
15472
15473 12 December 2002.  Summary of changes for version 20021212.
15474
15475
15476 1) ACPI CA Core Subsystem:
15477
15478 Fixed a problem where the creation of a zero-length AML Buffer
15479 would cause a fault.
15480
15481 Fixed a problem where a Buffer object that pointed to a static AML
15482 buffer (in an ACPI table) could inadvertently be deleted, causing
15483 memory corruption.
15484
15485 Fixed a problem where a user buffer (passed in to the external
15486 ACPI CA interfaces) could be overwritten if the buffer was too
15487 small to complete the operation, causing memory corruption.
15488
15489 Fixed a problem in the Buffer-to-String conversion code where a
15490 string of length one was always returned, regardless of the size
15491 of the input Buffer object.
15492
15493 Removed the NATIVE_CHAR data type across the entire source due to
15494 lack of need and lack of consistent use.
15495
15496 Code and Data Size: Current core subsystem library sizes are shown
15497 below.  These are the code and data sizes for the acpica.lib
15498 produced by the Microsoft Visual C++ 6.0 compiler, and these
15499 values do not include any ACPI driver or OSPM code.  The debug
15500 version of the code includes the debug output trace mechanism and
15501 has a much larger code and data size.  Note that these values will
15502 vary depending on the efficiency of the compiler and the compiler
15503 options used during generation.
15504
15505   Previous Release
15506     Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15507     Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15508   Current Release:
15509     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15510     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15511
15512
15513 ----------------------------------------
15514 05 December 2002.  Summary of changes for version 20021205.
15515
15516 1) ACPI CA Core Subsystem:
15517
15518 Fixed a problem where a store to a String or Buffer object could
15519 cause corruption of the DSDT if the object type being stored was
15520 the same as the target object type and the length of the object
15521 being stored was equal to or smaller than the original (existing)
15522 target object.  This was seen to cause corruption of battery _BIF
15523 buffers if the _BIF method modified the buffer on the fly.
15524
15525 Fixed a problem where an internal error was generated if a control
15526 method invocation was used in an OperationRegion, Buffer, or
15527 Package declaration.  This was caused by the deferred parsing of
15528 the control method and thus the deferred creation of the internal
15529 method object.  The solution to this problem was to create the
15530 internal method object at the moment the method is encountered in
15531 the first pass - so that subsequent references to the method will
15532 able to obtain the required parameter count and thus properly
15533 parse the method invocation.  This problem presented itself as an
15534 AE_AML_INTERNAL during the pass 1 parse phase during table load.
15535
15536 Fixed a problem where the internal String object copy routine did
15537 not always allocate sufficient memory for the target String object
15538 and caused memory corruption.  This problem was seen to cause
15539 "Allocation already present in list!" errors as memory allocation
15540 became corrupted.
15541
15542 Implemented a new function for the evaluation of namespace objects
15543 that allows the specification of the allowable return object
15544 types.  This simplifies a lot of code that checks for a return
15545 object of one or more specific objects returned from the
15546 evaluation (such as _STA, etc.)  This may become and external
15547 function if it would be useful to ACPI-related drivers.
15548
15549 Completed another round of prefixing #defines with "ACPI_" for
15550 clarity.
15551
15552 Completed additional code restructuring to allow more modular
15553 linking for iASL compiler and AcpiExec.  Several files were split
15554 creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15555
15556 Implemented an abort mechanism to terminate an executing control
15557 method via the AML debugger.  This feature is useful for debugging
15558 control methods that depend (wait) for specific hardware
15559 responses.
15560
15561 Code and Data Size: Current core subsystem library sizes are shown
15562 below.  These are the code and data sizes for the acpica.lib
15563 produced by the Microsoft Visual C++ 6.0 compiler, and these
15564 values do not include any ACPI driver or OSPM code.  The debug
15565 version of the code includes the debug output trace mechanism and
15566 has a much larger code and data size.  Note that these values will
15567 vary depending on the efficiency of the compiler and the compiler
15568 options used during generation.
15569
15570   Previous Release
15571     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15572     Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15573   Current Release:
15574     Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15575     Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15576
15577
15578 2) iASL Compiler/Disassembler
15579
15580 Fixed a compiler code generation problem for "Interrupt" Resource
15581 Descriptors.  If specified in the ASL, the optional "Resource
15582 Source Index" and "Resource Source" fields were not inserted into
15583 the correct location within the AML resource descriptor, creating
15584 an invalid descriptor.
15585
15586 Fixed a disassembler problem for "Interrupt" resource descriptors.
15587 The optional "Resource Source Index" and "Resource Source" fields
15588 were ignored.
15589
15590
15591 ----------------------------------------
15592 22 November 2002.  Summary of changes for version 20021122.
15593
15594
15595 1) ACPI CA Core Subsystem:
15596
15597 Fixed a reported problem where an object stored to a Method Local
15598 or Arg was not copied to a new object during the store - the
15599 object pointer was simply copied to the Local/Arg.  This caused
15600 all subsequent operations on the Local/Arg to also affect the
15601 original source of the store operation.
15602
15603 Fixed a problem where a store operation to a Method Local or Arg
15604 was not completed properly if the Local/Arg contained a reference
15605 (from RefOf) to a named field.  The general-purpose store-to-
15606 namespace-node code is now used so that this case is handled
15607 automatically.
15608
15609 Fixed a problem where the internal object copy routine would cause
15610 a protection fault if the object being copied was a Package and
15611 contained either 1) a NULL package element or 2) a nested sub-
15612 package.
15613
15614 Fixed a problem with the GPE initialization that resulted from an
15615 ambiguity in the ACPI specification.  One section of the
15616 specification states that both the address and length of the GPE
15617 block must be zero if the block is not supported.  Another section
15618 implies that only the address need be zero if the block is not
15619 supported.  The code has been changed so that both the address and
15620 the length must be non-zero to indicate a valid GPE block (i.e.,
15621 if either the address or the length is zero, the GPE block is
15622 invalid.)
15623
15624 Code and Data Size: Current core subsystem library sizes are shown
15625 below.  These are the code and data sizes for the acpica.lib
15626 produced by the Microsoft Visual C++ 6.0 compiler, and these
15627 values do not include any ACPI driver or OSPM code.  The debug
15628 version of the code includes the debug output trace mechanism and
15629 has a much larger code and data size.  Note that these values will
15630 vary depending on the efficiency of the compiler and the compiler
15631 options used during generation.
15632
15633   Previous Release
15634     Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15635     Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15636   Current Release:
15637     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15638     Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15639
15640
15641 2) Linux
15642
15643 Cleaned up EC driver. Exported an external EC read/write
15644 interface. By going through this, other drivers (most notably
15645 sonypi) will be able to serialize access to the EC.
15646
15647
15648 3) iASL Compiler/Disassembler
15649
15650 Implemented support to optionally generate include files for both
15651 ASM and C (the -i switch).  This simplifies BIOS development by
15652 automatically creating include files that contain external
15653 declarations for the symbols that are created within the
15654
15655 (optionally generated) ASM and C AML source files.
15656
15657
15658 ----------------------------------------
15659 15 November 2002.  Summary of changes for version 20021115.
15660
15661 1) ACPI CA Core Subsystem:
15662
15663 Fixed a memory leak problem where an error during resolution of
15664
15665 method arguments during a method invocation from another method
15666 failed to cleanup properly by deleting all successfully resolved
15667 argument objects.
15668
15669 Fixed a problem where the target of the Index() operator was not
15670 correctly constructed if the source object was a package.  This
15671 problem has not been detected because the use of a target operand
15672 with Index() is very rare.
15673
15674 Fixed a problem with the Index() operator where an attempt was
15675 made to delete the operand objects twice.
15676
15677 Fixed a problem where an attempt was made to delete an operand
15678 twice during execution of the CondRefOf() operator if the target
15679 did not exist.
15680
15681 Implemented the first of perhaps several internal create object
15682 functions that create and initialize a specific object type.  This
15683 consolidates duplicated code wherever the object is created, thus
15684 shrinking the size of the subsystem.
15685
15686 Implemented improved debug/error messages for errors that occur
15687 during nested method invocations.  All executing method pathnames
15688 are displayed (with the error) as the call stack is unwound - thus
15689 simplifying debug.
15690
15691 Fixed a problem introduced in the 10/02 release that caused
15692 premature deletion of a buffer object if a buffer was used as an
15693 ASL operand where an integer operand is required (Thus causing an
15694 implicit object conversion from Buffer to Integer.)  The change in
15695 the 10/02 release was attempting to fix a memory leak (albeit
15696 incorrectly.)
15697
15698 Code and Data Size: Current core subsystem library sizes are shown
15699 below.  These are the code and data sizes for the acpica.lib
15700 produced by the Microsoft Visual C++ 6.0 compiler, and these
15701 values do not include any ACPI driver or OSPM code.  The debug
15702 version of the code includes the debug output trace mechanism and
15703 has a much larger code and data size.  Note that these values will
15704 vary depending on the efficiency of the compiler and the compiler
15705 options used during generation.
15706
15707   Previous Release
15708     Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15709     Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15710   Current Release:
15711     Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15712     Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15713
15714
15715 2) Linux
15716
15717 Changed the implementation of the ACPI semaphores to use down()
15718 instead of down_interruptable().  It is important that the
15719 execution of ACPI control methods not be interrupted by signals.
15720 Methods must run to completion, or the system may be left in an
15721 unknown/unstable state.
15722
15723 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15724 (Shawn Starr)
15725
15726
15727 3) iASL Compiler/Disassembler
15728
15729
15730 Changed the default location of output files.  All output files
15731 are now placed in the current directory by default instead of in
15732 the directory of the source file.  This change may affect some
15733 existing makefiles, but it brings the behavior of the compiler in
15734 line with other similar tools.  The location of the output files
15735 can be overridden with the -p command line switch.
15736
15737
15738 ----------------------------------------
15739 11 November 2002.  Summary of changes for version 20021111.
15740
15741
15742 0) ACPI Specification 2.0B is released and is now available at:
15743 http://www.acpi.info/index.html
15744
15745
15746 1) ACPI CA Core Subsystem:
15747
15748 Implemented support for the ACPI 2.0 SMBus Operation Regions.
15749 This includes the early detection and handoff of the request to
15750 the SMBus region handler (avoiding all of the complex field
15751 support code), and support for the bidirectional return packet
15752 from an SMBus write operation.  This paves the way for the
15753 development of SMBus drivers in each host operating system.
15754
15755 Fixed a problem where the semaphore WAIT_FOREVER constant was
15756 defined as 32 bits, but must be 16 bits according to the ACPI
15757 specification.  This had the side effect of causing ASL
15758 Mutex/Event timeouts even though the ASL code requested a wait
15759 forever.  Changed all internal references to the ACPI timeout
15760 parameter to 16 bits to prevent future problems.  Changed the name
15761 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15762
15763 Code and Data Size: Current core subsystem library sizes are shown
15764 below.  These are the code and data sizes for the acpica.lib
15765 produced by the Microsoft Visual C++ 6.0 compiler, and these
15766 values do not include any ACPI driver or OSPM code.  The debug
15767 version of the code includes the debug output trace mechanism and
15768 has a much larger code and data size.  Note that these values will
15769 vary depending on the efficiency of the compiler and the compiler
15770 options used during generation.
15771
15772   Previous Release
15773     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15774     Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15775   Current Release:
15776     Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15777     Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15778
15779
15780 2) Linux
15781
15782 Module loading/unloading fixes (John Cagle)
15783
15784
15785 3) iASL Compiler/Disassembler
15786
15787 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15788
15789 Implemented support for the disassembly of all SMBus protocol
15790 keywords (SMBQuick, SMBWord, etc.)
15791
15792 ----------------------------------------
15793 01 November 2002.  Summary of changes for version 20021101.
15794
15795
15796 1) ACPI CA Core Subsystem:
15797
15798 Fixed a problem where platforms that have a GPE1 block but no GPE0
15799 block were not handled correctly.  This resulted in a "GPE
15800 overlap" error message.  GPE0 is no longer required.
15801
15802 Removed code added in the previous release that inserted nodes
15803 into the namespace in alphabetical order.  This caused some side-
15804 effects on various machines.  The root cause of the problem is
15805 still under investigation since in theory, the internal ordering
15806 of the namespace nodes should not matter.
15807
15808
15809 Enhanced error reporting for the case where a named object is not
15810 found during control method execution.  The full ACPI namepath
15811 (name reference) of the object that was not found is displayed in
15812 this case.
15813
15814 Note: as a result of the overhaul of the namespace object types in
15815 the previous release, the namespace nodes for the predefined
15816 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
15817 instead of ACPI_TYPE_ANY.  This simplifies the namespace
15818 management code but may affect code that walks the namespace tree
15819 looking for specific object types.
15820
15821 Code and Data Size: Current core subsystem library sizes are shown
15822 below.  These are the code and data sizes for the acpica.lib
15823 produced by the Microsoft Visual C++ 6.0 compiler, and these
15824 values do not include any ACPI driver or OSPM code.  The debug
15825 version of the code includes the debug output trace mechanism and
15826 has a much larger code and data size.  Note that these values will
15827 vary depending on the efficiency of the compiler and the compiler
15828 options used during generation.
15829
15830   Previous Release
15831     Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15832     Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15833   Current Release:
15834     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15835     Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15836
15837
15838 2) Linux
15839
15840 Fixed a problem introduced in the previous release where the
15841 Processor and Thermal objects were not recognized and installed in
15842 /proc.  This was related to the scope type change described above.
15843
15844
15845 3) iASL Compiler/Disassembler
15846
15847 Implemented the -g option to get all of the required ACPI tables
15848 from the registry and save them to files (Windows version of the
15849 compiler only.)  The required tables are the FADT, FACS, and DSDT.
15850
15851 Added ACPI table checksum validation during table disassembly in
15852 order to catch corrupted tables.
15853
15854
15855 ----------------------------------------
15856 22 October 2002.  Summary of changes for version 20021022.
15857
15858 1) ACPI CA Core Subsystem:
15859
15860 Implemented a restriction on the Scope operator that the target
15861 must already exist in the namespace at the time the operator is
15862 encountered (during table load or method execution).  In other
15863 words, forward references are not allowed and Scope() cannot
15864 create a new object. This changes the previous behavior where the
15865 interpreter would create the name if not found.  This new behavior
15866 correctly enables the search-to-root algorithm during namespace
15867 lookup of the target name.  Because of this upsearch, this fixes
15868 the known Compaq _SB_.OKEC problem and makes both the AML
15869 interpreter and iASL compiler compatible with other ACPI
15870 implementations.
15871
15872 Completed a major overhaul of the internal ACPI object types for
15873 the ACPI Namespace and the associated operand objects.  Many of
15874 these types had become obsolete with the introduction of the two-
15875 pass namespace load.  This cleanup simplifies the code and makes
15876 the entire namespace load mechanism much clearer and easier to
15877 understand.
15878
15879 Improved debug output for tracking scope opening/closing to help
15880 diagnose scoping issues.  The old scope name as well as the new
15881 scope name are displayed.  Also improved error messages for
15882 problems with ASL Mutex objects and error messages for GPE
15883 problems.
15884
15885 Cleaned up the namespace dump code, removed obsolete code.
15886
15887 All string output (for all namespace/object dumps) now uses the
15888 common ACPI string output procedure which handles escapes properly
15889 and does not emit non-printable characters.
15890
15891 Fixed some issues with constants in the 64-bit version of the
15892 local C library (utclib.c)
15893
15894
15895 2) Linux
15896
15897 EC Driver:  No longer attempts to acquire the Global Lock at
15898 interrupt level.
15899
15900
15901 3) iASL Compiler/Disassembler
15902
15903 Implemented ACPI 2.0B grammar change that disallows all Type 1 and
15904 2 opcodes outside of a control method.  This means that the
15905 "executable" operators (versus the "namespace" operators) cannot
15906 be used at the table level; they can only be used within a control
15907 method.
15908
15909 Implemented the restriction on the Scope() operator where the
15910 target must already exist in the namespace at the time the
15911 operator is encountered (during ASL compilation). In other words,
15912 forward references are not allowed and Scope() cannot create a new
15913 object.  This makes the iASL compiler compatible with other ACPI
15914 implementations and makes the Scope() implementation adhere to the
15915 ACPI specification.
15916
15917 Fixed a problem where namepath optimization for the Alias operator
15918 was optimizing the wrong path (of the two namepaths.)  This caused
15919 a "Missing alias link" error message.
15920
15921 Fixed a problem where an "unknown reserved name" warning could be
15922 incorrectly generated for names like "_SB" when the trailing
15923 underscore is not used in the original ASL.
15924
15925 Fixed a problem where the reserved name check did not handle
15926 NamePaths with multiple NameSegs correctly.  The first nameseg of
15927 the NamePath was examined instead of the last NameSeg.
15928
15929
15930 ----------------------------------------
15931
15932 02 October 2002.  Summary of changes for this release.
15933
15934
15935 1) ACPI CA Core Subsystem version 20021002:
15936
15937 Fixed a problem where a store/copy of a string to an existing
15938 string did not always set the string length properly in the String
15939 object.
15940
15941 Fixed a reported problem with the ToString operator where the
15942 behavior was identical to the ToHexString operator instead of just
15943 simply converting a raw buffer to a string data type.
15944
15945 Fixed a problem where CopyObject and the other "explicit"
15946 conversion operators were not updating the internal namespace node
15947 type as part of the store operation.
15948
15949 Fixed a memory leak during implicit source operand conversion
15950 where the original object was not deleted if it was converted to a
15951 new object of a different type.
15952
15953 Enhanced error messages for all problems associated with namespace
15954 lookups.  Common procedure generates and prints the lookup name as
15955 well as the formatted status.
15956
15957 Completed implementation of a new design for the Alias support
15958 within the namespace.  The existing design did not handle the case
15959 where a new object was assigned to one of the two names due to the
15960 use of an explicit conversion operator, resulting in the two names
15961 pointing to two different objects.  The new design simply points
15962 the Alias name to the original name node - not to the object.
15963 This results in a level of indirection that must be handled in the
15964 name resolution mechanism.
15965
15966 Code and Data Size: Current core subsystem library sizes are shown
15967 below.  These are the code and data sizes for the acpica.lib
15968 produced by the Microsoft Visual C++ 6.0 compiler, and these
15969 values do not include any ACPI driver or OSPM code.  The debug
15970 version of the code includes the debug output trace mechanism and
15971 has a larger code and data size.  Note that these values will vary
15972 depending on the efficiency of the compiler and the compiler
15973 options used during generation.
15974
15975   Previous Release
15976     Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15977     Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
15978   Current Release:
15979     Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15980     Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15981
15982
15983 2) Linux
15984
15985 Initialize thermal driver's timer before it is used. (Knut
15986 Neumann)
15987
15988 Allow handling negative celsius values. (Kochi Takayoshi)
15989
15990 Fix thermal management and make trip points. R/W (Pavel Machek)
15991
15992 Fix /proc/acpi/sleep. (P. Christeas)
15993
15994 IA64 fixes. (David Mosberger)
15995
15996 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15997
15998 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15999 Brodowski)
16000
16001
16002 3) iASL Compiler/Disassembler
16003
16004 Clarified some warning/error messages.
16005
16006
16007 ----------------------------------------
16008 18 September 2002.  Summary of changes for this release.
16009
16010
16011 1) ACPI CA Core Subsystem version 20020918:
16012
16013 Fixed a reported problem with reference chaining (via the Index()
16014 and RefOf() operators) in the ObjectType() and SizeOf() operators.
16015 The definition of these operators includes the dereferencing of
16016 all chained references to return information on the base object.
16017
16018 Fixed a problem with stores to indexed package elements - the
16019 existing code would not complete the store if an "implicit
16020 conversion" was not performed.  In other words, if the existing
16021 object (package element) was to be replaced completely, the code
16022 didn't handle this case.
16023
16024 Relaxed typechecking on the ASL "Scope" operator to allow the
16025 target name to refer to an object of type Integer, String, or
16026 Buffer, in addition to the scoping object types (Device,
16027 predefined Scopes, Processor, PowerResource, and ThermalZone.)
16028 This allows existing AML code that has workarounds for a bug in
16029 Windows to function properly.  A warning is issued, however.  This
16030 affects both the AML interpreter and the iASL compiler. Below is
16031 an example of this type of ASL code:
16032
16033       Name(DEB,0x00)
16034       Scope(DEB)
16035       {
16036
16037 Fixed some reported problems with 64-bit integer support in the
16038 local implementation of C library functions (clib.c)
16039
16040
16041 2) Linux
16042
16043 Use ACPI fix map region instead of IOAPIC region, since it is
16044 undefined in non-SMP.
16045
16046 Ensure that the SCI has the proper polarity and trigger, even on
16047 systems that do not have an interrupt override entry in the MADT.
16048
16049 2.5 big driver reorganization (Pat Mochel)
16050
16051 Use early table mapping code from acpitable.c (Andi Kleen)
16052
16053 New blacklist entries (Andi Kleen)
16054
16055 Blacklist improvements. Split blacklist code out into a separate
16056 file. Move checking the blacklist to very early. Previously, we
16057 would use ACPI tables, and then halfway through init, check the
16058 blacklist -- too late. Now, it's early enough to completely fall-
16059 back to non-ACPI.
16060
16061
16062 3) iASL Compiler/Disassembler version 20020918:
16063
16064 Fixed a problem where the typechecking code didn't know that an
16065 alias could point to a method.  In other words, aliases were not
16066 being dereferenced during typechecking.
16067
16068
16069 ----------------------------------------
16070 29 August 2002.  Summary of changes for this release.
16071
16072 1) ACPI CA Core Subsystem Version 20020829:
16073
16074 If the target of a Scope() operator already exists, it must be an
16075 object type that actually opens a scope -- such as a Device,
16076 Method, Scope, etc.  This is a fatal runtime error.  Similar error
16077 check has been added to the iASL compiler also.
16078
16079 Tightened up the namespace load to disallow multiple names in the
16080 same scope.  This previously was allowed if both objects were of
16081 the same type.  (i.e., a lookup was the same as entering a new
16082 name).
16083
16084
16085 2) Linux
16086
16087 Ensure that the ACPI interrupt has the proper trigger and
16088 polarity.
16089
16090 local_irq_disable is extraneous. (Matthew Wilcox)
16091
16092 Make "acpi=off" actually do what it says, and not use the ACPI
16093 interpreter *or* the tables.
16094
16095 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16096 Takayoshi)
16097
16098
16099 3) iASL Compiler/Disassembler  Version 20020829:
16100
16101 Implemented namepath optimization for name declarations.  For
16102 example, a declaration like "Method (\_SB_.ABCD)" would get
16103 optimized to "Method (ABCD)" if the declaration is within the
16104 \_SB_ scope.  This optimization is in addition to the named
16105 reference path optimization first released in the previous
16106 version. This would seem to complete all possible optimizations
16107 for namepaths within the ASL/AML.
16108
16109 If the target of a Scope() operator already exists, it must be an
16110 object type that actually opens a scope -- such as a Device,
16111 Method, Scope, etc.
16112
16113 Implemented a check and warning for unreachable code in the same
16114 block below a Return() statement.
16115
16116 Fixed a problem where the listing file was not generated if the
16117 compiler aborted if the maximum error count was exceeded (200).
16118
16119 Fixed a problem where the typechecking of method return values was
16120 broken.  This includes the check for a return value when the
16121 method is invoked as a TermArg (a return value is expected.)
16122
16123 Fixed a reported problem where EOF conditions during a quoted
16124 string or comment caused a fault.
16125
16126
16127 ----------------------------------------
16128 15 August 2002.  Summary of changes for this release.
16129
16130 1) ACPI CA Core Subsystem Version 20020815:
16131
16132 Fixed a reported problem where a Store to a method argument that
16133 contains a reference did not perform the indirect store correctly.
16134 This problem was created during the conversion to the new
16135 reference object model - the indirect store to a method argument
16136 code was not updated to reflect the new model.
16137
16138 Reworked the ACPI mode change code to better conform to ACPI 2.0,
16139 handle corner cases, and improve code legibility (Kochi Takayoshi)
16140
16141 Fixed a problem with the pathname parsing for the carat (^)
16142 prefix.  The heavy use of the carat operator by the new namepath
16143 optimization in the iASL compiler uncovered a problem with the AML
16144 interpreter handling of this prefix.  In the case where one or
16145 more carats precede a single nameseg, the nameseg was treated as
16146 standalone and the search rule (to root) was inadvertently
16147 applied.  This could cause both the iASL compiler and the
16148 interpreter to find the wrong object or to miss the error that
16149 should occur if the object does not exist at that exact pathname.
16150
16151 Found and fixed the problem where the HP Pavilion DSDT would not
16152 load.  This was a relatively minor tweak to the table loading code
16153 (a problem caused by the unexpected encounter with a method
16154 invocation not within a control method), but it does not solve the
16155 overall issue of the execution of AML code at the table level.
16156 This investigation is still ongoing.
16157
16158 Code and Data Size: Current core subsystem library sizes are shown
16159 below.  These are the code and data sizes for the acpica.lib
16160 produced by the Microsoft Visual C++ 6.0 compiler, and these
16161 values do not include any ACPI driver or OSPM code.  The debug
16162 version of the code includes the debug output trace mechanism and
16163 has a larger code and data size.  Note that these values will vary
16164 depending on the efficiency of the compiler and the compiler
16165 options used during generation.
16166
16167   Previous Release
16168     Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16169     Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16170   Current Release:
16171     Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16172     Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16173
16174
16175 2) Linux
16176
16177 Remove redundant slab.h include (Brad Hards)
16178
16179 Fix several bugs in thermal.c (Herbert Nachtnebel)
16180
16181 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16182
16183 Change acpi_system_suspend to use updated irq functions (Pavel
16184 Machek)
16185
16186 Export acpi_get_firmware_table (Matthew Wilcox)
16187
16188 Use proper root proc entry for ACPI (Kochi Takayoshi)
16189
16190 Fix early-boot table parsing (Bjorn Helgaas)
16191
16192
16193 3) iASL Compiler/Disassembler
16194
16195 Reworked the compiler options to make them more consistent and to
16196 use two-letter options where appropriate.  We were running out of
16197 sensible letters.   This may break some makefiles, so check the
16198 current options list by invoking the compiler with no parameters.
16199
16200 Completed the design and implementation of the ASL namepath
16201 optimization option for the compiler.  This option optimizes all
16202 references to named objects to the shortest possible path.  The
16203 first attempt tries to utilize a single nameseg (4 characters) and
16204 the "search-to-root" algorithm used by the interpreter.  If that
16205 cannot be used (because either the name is not in the search path
16206 or there is a conflict with another object with the same name),
16207 the pathname is optimized using the carat prefix (usually a
16208 shorter string than specifying the entire path from the root.)
16209
16210 Implemented support to obtain the DSDT from the Windows registry
16211 (when the disassembly option is specified with no input file).
16212 Added this code as the implementation for AcpiOsTableOverride in
16213 the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16214 utility) to scan memory for the DSDT to the AcpiOsTableOverride
16215 function in the DOS OSL to make the disassembler truly OS
16216 independent.
16217
16218 Implemented a new option to disassemble and compile in one step.
16219 When used without an input filename, this option will grab the
16220 DSDT from the local machine, disassemble it, and compile it in one
16221 step.
16222
16223 Added a warning message for invalid escapes (a backslash followed
16224 by any character other than the allowable escapes).  This catches
16225 the quoted string error "\_SB_" (which should be "\\_SB_" ).
16226
16227 Also, there are numerous instances in the ACPI specification where
16228 this error occurs.
16229
16230 Added a compiler option to disable all optimizations.  This is
16231 basically the "compatibility mode" because by using this option,
16232 the AML code will come out exactly the same as other ASL
16233 compilers.
16234
16235 Added error messages for incorrectly ordered dependent resource
16236 functions.  This includes: missing EndDependentFn macro at end of
16237 dependent resource list, nested dependent function macros (both
16238 start and end), and missing StartDependentFn macro.  These are
16239 common errors that should be caught at compile time.
16240
16241 Implemented _OSI support for the disassembler and compiler.  _OSI
16242 must be included in the namespace for proper disassembly (because
16243 the disassembler must know the number of arguments.)
16244
16245 Added an "optimization" message type that is optional (off by
16246 default).  This message is used for all optimizations - including
16247 constant folding, integer optimization, and namepath optimization.
16248
16249 ----------------------------------------
16250 25 July 2002.  Summary of changes for this release.
16251
16252
16253 1) ACPI CA Core Subsystem Version 20020725:
16254
16255 The AML Disassembler has been enhanced to produce compilable ASL
16256 code and has been integrated into the iASL compiler (see below) as
16257 well as the single-step disassembly for the AML debugger and the
16258 disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16259 resource templates and macros are fully supported.  The
16260 disassembler has been tested on over 30 different AML files,
16261 producing identical AML when the resulting disassembled ASL file
16262 is recompiled with the same ASL compiler.
16263
16264 Modified the Resource Manager to allow zero interrupts and zero
16265 dma channels during the GetCurrentResources call.  This was
16266 causing problems on some platforms.
16267
16268 Added the AcpiOsRedirectOutput interface to the OSL to simplify
16269 output redirection for the AcpiOsPrintf and AcpiOsVprintf
16270 interfaces.
16271
16272 Code and Data Size: Current core subsystem library sizes are shown
16273 below.  These are the code and data sizes for the acpica.lib
16274 produced by the Microsoft Visual C++ 6.0 compiler, and these
16275 values do not include any ACPI driver or OSPM code.  The debug
16276 version of the code includes the debug output trace mechanism and
16277 has a larger code and data size.  Note that these values will vary
16278 depending on the efficiency of the compiler and the compiler
16279 options used during generation.
16280
16281   Previous Release
16282     Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16283     Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16284   Current Release:
16285     Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16286     Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16287
16288
16289 2) Linux
16290
16291 Fixed a panic in the EC driver (Dominik Brodowski)
16292
16293 Implemented checksum of the R/XSDT itself during Linux table scan
16294 (Richard Schaal)
16295
16296
16297 3) iASL compiler
16298
16299 The AML disassembler is integrated into the compiler.  The "-d"
16300 option invokes the disassembler  to completely disassemble an
16301 input AML file, producing as output a text ASL file with the
16302 extension ".dsl" (to avoid name collisions with existing .asl
16303 source files.)  A future enhancement will allow the disassembler
16304 to obtain the BIOS DSDT from the registry under Windows.
16305
16306 Fixed a problem with the VendorShort and VendorLong resource
16307 descriptors where an invalid AML sequence was created.
16308
16309 Implemented a fix for BufferData term in the ASL parser.  It was
16310 inadvertently defined twice, allowing invalid syntax to pass and
16311 causing reduction conflicts.
16312
16313 Fixed a problem where the Ones opcode could get converted to a
16314 value of zero if "Ones" was used where a byte, word or dword value
16315 was expected.  The 64-bit value is now truncated to the correct
16316 size with the correct value.
16317
16318
16319
16320 ----------------------------------------
16321 02 July 2002.  Summary of changes for this release.
16322
16323
16324 1) ACPI CA Core Subsystem Version 20020702:
16325
16326 The Table Manager code has been restructured to add several new
16327 features.  Tables that are not required by the core subsystem
16328 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16329 validated in any way and are returned from AcpiGetFirmwareTable if
16330 requested.  The AcpiOsTableOverride interface is now called for
16331 each table that is loaded by the subsystem in order to allow the
16332 host to override any table it chooses.  Previously, only the DSDT
16333 could be overridden.  Added one new files, tbrsdt.c and
16334 tbgetall.c.
16335
16336 Fixed a problem with the conversion of internal package objects to
16337 external objects (when a package is returned from a control
16338 method.)  The return buffer length was set to zero instead of the
16339 proper length of the package object.
16340
16341 Fixed a reported problem with the use of the RefOf and DeRefOf
16342 operators when passing reference arguments to control methods.  A
16343 new type of Reference object is used internally for references
16344 produced by the RefOf operator.
16345
16346 Added additional error messages in the Resource Manager to explain
16347 AE_BAD_DATA errors when they occur during resource parsing.
16348
16349 Split the AcpiEnableSubsystem into two primitives to enable a
16350 finer granularity initialization sequence.  These two calls should
16351 be called in this order: AcpiEnableSubsystem (flags),
16352 AcpiInitializeObjects (flags).  The flags parameter remains the
16353 same.
16354
16355
16356 2) Linux
16357
16358 Updated the ACPI utilities module to understand the new style of
16359 fully resolved package objects that are now returned from the core
16360 subsystem.  This eliminates errors of the form:
16361
16362     ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16363     acpi_utils-0430 [145] acpi_evaluate_reference:
16364         Invalid element in package (not a device reference)
16365
16366 The method evaluation utility uses the new buffer allocation
16367 scheme instead of calling AcpiEvaluate Object twice.
16368
16369 Added support for ECDT. This allows the use of the Embedded
16370
16371 Controller before the namespace has been fully initialized, which
16372 is necessary for ACPI 2.0 support, and for some laptops to
16373 initialize properly. (Laptops using ECDT are still rare, so only
16374 limited testing was performed of the added functionality.)
16375
16376 Fixed memory leaks in the EC driver.
16377
16378 Eliminated a brittle code structure in acpi_bus_init().
16379
16380 Eliminated the acpi_evaluate() helper function in utils.c. It is
16381 no longer needed since acpi_evaluate_object can optionally
16382 allocate memory for the return object.
16383
16384 Implemented fix for keyboard hang when getting battery readings on
16385 some systems (Stephen White)
16386
16387 PCI IRQ routing update (Dominik Brodowski)
16388
16389 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16390 support
16391
16392 ----------------------------------------
16393 11 June 2002.  Summary of changes for this release.
16394
16395
16396 1) ACPI CA Core Subsystem Version 20020611:
16397
16398 Fixed a reported problem where constants such as Zero and One
16399 appearing within _PRT packages were not handled correctly within
16400 the resource manager code.  Originally reported against the ASL
16401 compiler because the code generator now optimizes integers to
16402 their minimal AML representation (i.e. AML constants if possible.)
16403 The _PRT code now handles all AML constant opcodes correctly
16404 (Zero, One, Ones, Revision).
16405
16406 Fixed a problem with the Concatenate operator in the AML
16407 interpreter where a buffer result object was incorrectly marked as
16408 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16409
16410 All package sub-objects are now fully resolved before they are
16411 returned from the external ACPI interfaces.  This means that name
16412 strings are resolved to object handles, and constant operators
16413 (Zero, One, Ones, Revision) are resolved to Integers.
16414
16415 Implemented immediate resolution of the AML Constant opcodes
16416 (Zero, One, Ones, Revision) to Integer objects upon detection
16417 within the AML stream. This has simplified and reduced the
16418 generated code size of the subsystem by eliminating about 10
16419 switch statements for these constants (which previously were
16420 contained in Reference objects.)  The complicating issues are that
16421 the Zero opcode is used as a "placeholder" for unspecified
16422 optional target operands and stores to constants are defined to be
16423 no-ops.
16424
16425 Code and Data Size: Current core subsystem library sizes are shown
16426 below. These are the code and data sizes for the acpica.lib
16427 produced by the Microsoft Visual C++ 6.0 compiler, and these
16428 values do not include any ACPI driver or OSPM code.  The debug
16429 version of the code includes the debug output trace mechanism and
16430 has a larger code and data size.  Note that these values will vary
16431 depending on the efficiency of the compiler and the compiler
16432 options used during generation.
16433
16434   Previous Release
16435     Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16436     Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16437   Current Release:
16438     Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16439     Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16440
16441
16442 2) Linux
16443
16444
16445 Added preliminary support for obtaining _TRA data for PCI root
16446 bridges (Bjorn Helgaas).
16447
16448
16449 3) iASL Compiler Version X2046:
16450
16451 Fixed a problem where the "_DDN" reserved name was defined to be a
16452 control method with one argument.  There are no arguments, and
16453 _DDN does not have to be a control method.
16454
16455 Fixed a problem with the Linux version of the compiler where the
16456 source lines printed with error messages were the wrong lines.
16457 This turned out to be the "LF versus CR/LF" difference between
16458 Windows and Unix.  This appears to be the longstanding issue
16459 concerning listing output and error messages.
16460
16461 Fixed a problem with the Linux version of compiler where opcode
16462 names within error messages were wrong.  This was caused by a
16463 slight difference in the output of the Flex tool on Linux versus
16464 Windows.
16465
16466 Fixed a problem with the Linux compiler where the hex output files
16467 contained some garbage data caused by an internal buffer overrun.
16468
16469
16470 ----------------------------------------
16471 17 May 2002.  Summary of changes for this release.
16472
16473
16474 1) ACPI CA Core Subsystem Version 20020517:
16475
16476 Implemented a workaround to an BIOS bug discovered on the HP
16477 OmniBook where the FADT revision number and the table size are
16478 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16479 behavior is to fallback to using only the ACPI 1.0 fields of the
16480 FADT if the table is too small to be a ACPI 2.0 table as claimed
16481 by the revision number.  Although this is a BIOS bug, this is a
16482 case where the workaround is simple enough and with no side
16483 effects, so it seemed prudent to add it.  A warning message is
16484 issued, however.
16485
16486 Implemented minimum size checks for the fixed-length ACPI tables -
16487 - the FADT and FACS, as well as consistency checks between the
16488 revision number and the table size.
16489
16490 Fixed a reported problem in the table override support where the
16491 new table pointer was incorrectly treated as a physical address
16492 instead of a logical address.
16493
16494 Eliminated the use of the AE_AML_ERROR exception and replaced it
16495 with more descriptive codes.
16496
16497 Fixed a problem where an exception would occur if an ASL Field was
16498 defined with no named Field Units underneath it (used by some
16499 index fields).
16500
16501 Code and Data Size: Current core subsystem library sizes are shown
16502 below.  These are the code and data sizes for the acpica.lib
16503 produced by the Microsoft Visual C++ 6.0 compiler, and these
16504 values do not include any ACPI driver or OSPM code.  The debug
16505 version of the code includes the debug output trace mechanism and
16506 has a larger code and data size.  Note that these values will vary
16507 depending on the efficiency of the compiler and the compiler
16508 options used during generation.
16509
16510   Previous Release
16511     Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16512     Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16513   Current Release:
16514     Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16515     Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16516
16517
16518
16519 2) Linux
16520
16521 Much work done on ACPI init (MADT and PCI IRQ routing support).
16522 (Paul D. and Dominik Brodowski)
16523
16524 Fix PCI IRQ-related panic on boot (Sam Revitch)
16525
16526 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16527
16528 Fix "MHz" typo (Dominik Brodowski)
16529
16530 Fix RTC year 2000 issue (Dominik Brodowski)
16531
16532 Preclude multiple button proc entries (Eric Brunet)
16533
16534 Moved arch-specific code out of include/platform/aclinux.h
16535
16536 3) iASL Compiler Version X2044:
16537
16538 Implemented error checking for the string used in the EISAID macro
16539 (Usually used in the definition of the _HID object.)  The code now
16540 strictly enforces the PnP format - exactly 7 characters, 3
16541 uppercase letters and 4 hex digits.
16542
16543 If a raw string is used in the definition of the _HID object
16544 (instead of the EISAID macro), the string must contain all
16545 alphanumeric characters (e.g., "*PNP0011" is not allowed because
16546 of the asterisk.)
16547
16548 Implemented checking for invalid use of ACPI reserved names for
16549 most of the name creation operators (Name, Device, Event, Mutex,
16550 OperationRegion, PowerResource, Processor, and ThermalZone.)
16551 Previously, this check was only performed for control methods.
16552
16553 Implemented an additional check on the Name operator to emit an
16554 error if a reserved name that must be implemented in ASL as a
16555 control method is used.  We know that a reserved name must be a
16556 method if it is defined with input arguments.
16557
16558 The warning emitted when a namespace object reference is not found
16559 during the cross reference phase has been changed into an error.
16560 The "External" directive should be used for names defined in other
16561 modules.
16562
16563
16564 4) Tools and Utilities
16565
16566 The 16-bit tools (adump16 and aexec16) have been regenerated and
16567 tested.
16568
16569 Fixed a problem with the output of both acpidump and adump16 where
16570 the indentation of closing parentheses and brackets was not
16571
16572 aligned properly with the parent block.
16573
16574
16575 ----------------------------------------
16576 03 May 2002.  Summary of changes for this release.
16577
16578
16579 1) ACPI CA Core Subsystem Version 20020503:
16580
16581 Added support a new OSL interface that allows the host operating
16582
16583 system software to override the DSDT found in the firmware -
16584 AcpiOsTableOverride.  With this interface, the OSL can examine the
16585 version of the firmware DSDT and replace it with a different one
16586 if desired.
16587
16588 Added new external interfaces for accessing ACPI registers from
16589 device drivers and other system software - AcpiGetRegister and
16590 AcpiSetRegister.  This was simply an externalization of the
16591 existing AcpiHwBitRegister interfaces.
16592
16593 Fixed a regression introduced in the previous build where the
16594 ASL/AML CreateField operator always returned an error,
16595 "destination must be a NS Node".
16596
16597 Extended the maximum time (before failure) to successfully enable
16598 ACPI mode to 3 seconds.
16599
16600 Code and Data Size: Current core subsystem library sizes are shown
16601 below.  These are the code and data sizes for the acpica.lib
16602 produced by the Microsoft Visual C++ 6.0 compiler, and these
16603 values do not include any ACPI driver or OSPM code.  The debug
16604 version of the code includes the debug output trace mechanism and
16605 has a larger code and data size.  Note that these values will vary
16606 depending on the efficiency of the compiler and the compiler
16607 options used during generation.
16608
16609   Previous Release
16610     Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16611     Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16612   Current Release:
16613     Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16614     Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16615
16616
16617 2) Linux
16618
16619 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16620 free. While 3 out of 4 of our in-house systems work fine, the last
16621 one still hangs when testing the LAPIC timer.
16622
16623 Renamed many files in 2.5 kernel release to omit "acpi_" from the
16624 name.
16625
16626 Added warning on boot for Presario 711FR.
16627
16628 Sleep improvements (Pavel Machek)
16629
16630 ACPI can now be built without CONFIG_PCI enabled.
16631
16632 IA64: Fixed memory map functions (JI Lee)
16633
16634
16635 3) iASL Compiler Version X2043:
16636
16637 Added support to allow the compiler to be integrated into the MS
16638 VC++ development environment for one-button compilation of single
16639 files or entire projects -- with error-to-source-line mapping.
16640
16641 Implemented support for compile-time constant folding for the
16642 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16643 specification.  This allows the ASL writer to use expressions
16644 instead of Integer/Buffer/String constants in terms that must
16645 evaluate to constants at compile time and will also simplify the
16646 emitted AML in any such sub-expressions that can be folded
16647 (evaluated at compile-time.)  This increases the size of the
16648 compiler significantly because a portion of the ACPI CA AML
16649 interpreter is included within the compiler in order to pre-
16650 evaluate constant expressions.
16651
16652
16653 Fixed a problem with the "Unicode" ASL macro that caused the
16654 compiler to fault.  (This macro is used in conjunction with the
16655 _STR reserved name.)
16656
16657 Implemented an AML opcode optimization to use the Zero, One, and
16658 Ones opcodes where possible to further reduce the size of integer
16659 constants and thus reduce the overall size of the generated AML
16660 code.
16661
16662 Implemented error checking for new reserved terms for ACPI version
16663 2.0A.
16664
16665 Implemented the -qr option to display the current list of ACPI
16666 reserved names known to the compiler.
16667
16668 Implemented the -qc option to display the current list of ASL
16669 operators that are allowed within constant expressions and can
16670 therefore be folded at compile time if the operands are constants.
16671
16672
16673 4) Documentation
16674
16675 Updated the Programmer's Reference for new interfaces, data types,
16676 and memory allocation model options.
16677
16678 Updated the iASL Compiler User Reference to apply new format and
16679 add information about new features and options.
16680
16681 ----------------------------------------
16682 19 April 2002.  Summary of changes for this release.
16683
16684 1) ACPI CA Core Subsystem Version 20020419:
16685
16686 The source code base for the Core Subsystem has been completely
16687 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16688 versions.  The Lint option files used are included in the
16689 /acpi/generate/lint directory.
16690
16691 Implemented enhanced status/error checking across the entire
16692 Hardware manager subsystem.  Any hardware errors (reported from
16693 the OSL) are now bubbled up and will abort a running control
16694 method.
16695
16696
16697 Fixed a problem where the per-ACPI-table integer width (32 or 64)
16698 was stored only with control method nodes, causing a fault when
16699 non-control method code was executed during table loading.  The
16700 solution implemented uses a global variable to indicate table
16701 width across the entire ACPI subsystem.  Therefore, ACPI CA does
16702 not support mixed integer widths across different ACPI tables
16703 (DSDT, SSDT).
16704
16705 Fixed a problem where NULL extended fields (X fields) in an ACPI
16706 2.0 ACPI FADT caused the table load to fail.  Although the
16707 existing ACPI specification is a bit fuzzy on this topic, the new
16708 behavior is to fall back on a ACPI 1.0 field if the corresponding
16709 ACPI 2.0 X field is zero (even though the table revision indicates
16710 a full ACPI 2.0 table.)  The ACPI specification will be updated to
16711 clarify this issue.
16712
16713 Fixed a problem with the SystemMemory operation region handler
16714 where memory was always accessed byte-wise even if the AML-
16715 specified access width was larger than a byte.  This caused
16716 problems on systems with memory-mapped I/O.  Memory is now
16717 accessed with the width specified.  On systems that do not support
16718 non-aligned transfers, a check is made to guarantee proper address
16719 alignment before proceeding in order to avoid an AML-caused
16720 alignment fault within the kernel.
16721
16722
16723 Fixed a problem with the ExtendedIrq resource where only one byte
16724 of the 4-byte Irq field was extracted.
16725
16726 Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
16727 function was out of date and required a rewrite.
16728
16729 Code and Data Size: Current core subsystem library sizes are shown
16730 below.  These are the code and data sizes for the acpica.lib
16731 produced by the Microsoft Visual C++ 6.0 compiler, and these
16732 values do not include any ACPI driver or OSPM code.  The debug
16733 version of the code includes the debug output trace mechanism and
16734 has a larger code and data size.  Note that these values will vary
16735 depending on the efficiency of the compiler and the compiler
16736 options used during generation.
16737
16738   Previous Release
16739     Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16740     Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16741   Current Release:
16742     Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16743     Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16744
16745
16746 2) Linux
16747
16748 PCI IRQ routing fixes (Dominik Brodowski)
16749
16750
16751 3) iASL Compiler Version X2042:
16752
16753 Implemented an additional compile-time error check for a field
16754 unit whose size + minimum access width would cause a run-time
16755 access beyond the end-of-region.  Previously, only the field size
16756 itself was checked.
16757
16758 The Core subsystem and iASL compiler now share a common parse
16759 object in preparation for compile-time evaluation of the type
16760 3/4/5 ASL operators.
16761
16762
16763 ----------------------------------------
16764 Summary of changes for this release: 03_29_02
16765
16766 1) ACPI CA Core Subsystem Version 20020329:
16767
16768 Implemented support for late evaluation of TermArg operands to
16769 Buffer and Package objects.  This allows complex expressions to be
16770 used in the declarations of these object types.
16771
16772 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
16773 1.0, if the field was larger than 32 bits, it was returned as a
16774 buffer - otherwise it was returned as an integer.  In ACPI 2.0,
16775 the field is returned as a buffer only if the field is larger than
16776 64 bits.  The TableRevision is now considered when making this
16777 conversion to avoid incompatibility with existing ASL code.
16778
16779 Implemented logical addressing for AcpiOsGetRootPointer.  This
16780 allows an RSDP with either a logical or physical address.  With
16781 this support, the host OS can now override all ACPI tables with
16782 one logical RSDP.  Includes implementation of  "typed" pointer
16783 support to allow a common data type for both physical and logical
16784 pointers internally.  This required a change to the
16785 AcpiOsGetRootPointer interface.
16786
16787 Implemented the use of ACPI 2.0 Generic Address Structures for all
16788 GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
16789 mapped I/O for these ACPI features.
16790
16791 Initialization now ignores not only non-required tables (All
16792 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16793 not validate the table headers of unrecognized tables.
16794
16795 Fixed a problem where a notify handler could only be
16796 installed/removed on an object of type Device.  All "notify"
16797
16798 objects are now supported -- Devices, Processor, Power, and
16799 Thermal.
16800
16801 Removed most verbosity from the ACPI_DB_INFO debug level.  Only
16802 critical information is returned when this debug level is enabled.
16803
16804 Code and Data Size: Current core subsystem library sizes are shown
16805 below.  These are the code and data sizes for the acpica.lib
16806 produced by the Microsoft Visual C++ 6.0 compiler, and these
16807 values do not include any ACPI driver or OSPM code.  The debug
16808 version of the code includes the debug output trace mechanism and
16809 has a larger code and data size.  Note that these values will vary
16810 depending on the efficiency of the compiler and the compiler
16811 options used during generation.
16812
16813   Previous Release
16814     Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16815     Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16816   Current Release:
16817     Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16818     Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16819
16820
16821 2) Linux:
16822
16823 The processor driver (acpi_processor.c) now fully supports ACPI
16824 2.0-based processor performance control (e.g. Intel(R)
16825 SpeedStep(TM) technology) Note that older laptops that only have
16826 the Intel "applet" interface are not supported through this.  The
16827 'limit' and 'performance' interface (/proc) are fully functional.
16828 [Note that basic policy for controlling performance state
16829 transitions will be included in the next version of ospmd.]  The
16830 idle handler was modified to more aggressively use C2, and PIIX4
16831 errata handling underwent a complete overhaul (big thanks to
16832 Dominik Brodowski).
16833
16834 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
16835 based devices in the ACPI namespace are now dynamically bound
16836 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
16837 This allows, among other things, ACPI to resolve bus numbers for
16838 subordinate PCI bridges.
16839
16840 Enhanced PCI IRQ routing to get the proper bus number for _PRT
16841 entries defined underneath PCI bridges.
16842
16843 Added IBM 600E to bad bios list due to invalid _ADR value for
16844 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
16845
16846 In the process of adding full MADT support (e.g. IOAPIC) for IA32
16847 (acpi.c, mpparse.c) -- stay tuned.
16848
16849 Added back visual differentiation between fixed-feature and
16850 control-method buttons in dmesg.  Buttons are also subtyped (e.g.
16851 button/power/PWRF) to simplify button identification.
16852
16853 We no longer use -Wno-unused when compiling debug. Please ignore
16854 any "_THIS_MODULE defined but not used" messages.
16855
16856 Can now shut down the system using "magic sysrq" key.
16857
16858
16859 3) iASL Compiler version 2041:
16860
16861 Fixed a problem where conversion errors for hex/octal/decimal
16862 constants were not reported.
16863
16864 Implemented a fix for the General Register template Address field.
16865 This field was 8 bits when it should be 64.
16866
16867 Fixed a problem where errors/warnings were no longer being emitted
16868 within the listing output file.
16869
16870 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16871 exactly 4 characters, alphanumeric only.
16872
16873
16874
16875
16876 ----------------------------------------
16877 Summary of changes for this release: 03_08_02
16878
16879
16880 1) ACPI CA Core Subsystem Version 20020308:
16881
16882 Fixed a problem with AML Fields where the use of the "AccessAny"
16883 keyword could cause an interpreter error due to attempting to read
16884 or write beyond the end of the parent Operation Region.
16885
16886 Fixed a problem in the SystemMemory Operation Region handler where
16887 an attempt was made to map memory beyond the end of the region.
16888 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16889 errors on some Linux systems.
16890
16891 Fixed a problem where the interpreter/namespace "search to root"
16892 algorithm was not functioning for some object types.  Relaxed the
16893 internal restriction on the search to allow upsearches for all
16894 external object types as well as most internal types.
16895
16896
16897 2) Linux:
16898
16899 We now use safe_halt() macro versus individual calls to sti | hlt.
16900
16901 Writing to the processor limit interface should now work. "echo 1"
16902 will increase the limit, 2 will decrease, and 0 will reset to the
16903
16904 default.
16905
16906
16907 3) ASL compiler:
16908
16909 Fixed segfault on Linux version.
16910
16911
16912 ----------------------------------------
16913 Summary of changes for this release: 02_25_02
16914
16915 1) ACPI CA Core Subsystem:
16916
16917
16918 Fixed a problem where the GPE bit masks were not initialized
16919 properly, causing erratic GPE behavior.
16920
16921 Implemented limited support for multiple calling conventions.  The
16922 code can be generated with either the VPL (variable parameter
16923 list, or "C") convention, or the FPL (fixed parameter list, or
16924 "Pascal") convention.  The core subsystem is about 3.4% smaller
16925 when generated with FPL.
16926
16927
16928 2) Linux
16929
16930 Re-add some /proc/acpi/event functionality that was lost during
16931 the rewrite
16932
16933 Resolved issue with /proc events for fixed-feature buttons showing
16934 up as the system device.
16935
16936 Fixed checks on C2/C3 latencies to be inclusive of maximum values.
16937
16938 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
16939
16940 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
16941
16942 Fixed limit interface & usage to fix bugs with passive cooling
16943 hysterisis.
16944
16945 Restructured PRT support.
16946
16947
16948 ----------------------------------------
16949 Summary of changes for this label: 02_14_02
16950
16951
16952 1) ACPI CA Core Subsystem:
16953
16954 Implemented support in AcpiLoadTable to allow loading of FACS and
16955 FADT tables.
16956
16957 Support for the now-obsolete interim 0.71 64-bit ACPI tables has
16958 been removed.  All 64-bit platforms should be migrated to the ACPI
16959 2.0 tables.  The actbl71.h header has been removed from the source
16960 tree.
16961
16962 All C macros defined within the subsystem have been prefixed with
16963 "ACPI_" to avoid collision with other system include files.
16964
16965 Removed the return value for the two AcpiOsPrint interfaces, since
16966 it is never used and causes lint warnings for ignoring the return
16967 value.
16968
16969 Added error checking to all internal mutex acquire and release
16970 calls.  Although a failure from one of these interfaces is
16971 probably a fatal system error, these checks will cause the
16972 immediate abort of the currently executing method or interface.
16973
16974 Fixed a problem where the AcpiSetCurrentResources interface could
16975 fault.  This was a side effect of the deployment of the new memory
16976 allocation model.
16977
16978 Fixed a couple of problems with the Global Lock support introduced
16979 in the last major build.  The "common" (1.0/2.0) internal FACS was
16980 being overwritten with the FACS signature and clobbering the
16981 Global Lock pointer.  Also, the actual firmware FACS was being
16982 unmapped after construction of the "common" FACS, preventing
16983 access to the actual Global Lock field within it.  The "common"
16984 internal FACS is no longer installed as an actual ACPI table; it
16985 is used simply as a global.
16986
16987 Code and Data Size: Current core subsystem library sizes are shown
16988 below.  These are the code and data sizes for the acpica.lib
16989 produced by the Microsoft Visual C++ 6.0 compiler, and these
16990 values do not include any ACPI driver or OSPM code.  The debug
16991 version of the code includes the debug output trace mechanism and
16992 has a larger code and data size.  Note that these values will vary
16993 depending on the efficiency of the compiler and the compiler
16994 options used during generation.
16995
16996   Previous Release (02_07_01)
16997     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16998     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16999   Current Release:
17000     Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17001     Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17002
17003
17004 2) Linux
17005
17006 Updated Linux-specific code for core macro and OSL interface
17007 changes described above.
17008
17009 Improved /proc/acpi/event. It now can be opened only once and has
17010 proper poll functionality.
17011
17012 Fixed and restructured power management (acpi_bus).
17013
17014 Only create /proc "view by type" when devices of that class exist.
17015
17016 Fixed "charging/discharging" bug (and others) in acpi_battery.
17017
17018 Improved thermal zone code.
17019
17020
17021 3) ASL Compiler, version X2039:
17022
17023
17024 Implemented the new compiler restriction on ASL String hex/octal
17025 escapes to non-null, ASCII values.  An error results if an invalid
17026 value is used.  (This will require an ACPI 2.0 specification
17027 change.)
17028
17029 AML object labels that are output to the optional C and ASM source
17030 are now prefixed with both the ACPI table signature and table ID
17031 to help guarantee uniqueness within a large BIOS project.
17032
17033
17034 ----------------------------------------
17035 Summary of changes for this label: 02_01_02
17036
17037 1) ACPI CA Core Subsystem:
17038
17039 ACPI 2.0 support is complete in the entire Core Subsystem and the
17040 ASL compiler. All new ACPI 2.0 operators are implemented and all
17041 other changes for ACPI 2.0 support are complete.  With
17042 simultaneous code and data optimizations throughout the subsystem,
17043 ACPI 2.0 support has been implemented with almost no additional
17044 cost in terms of code and data size.
17045
17046 Implemented a new mechanism for allocation of return buffers.  If
17047 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17048 be allocated on behalf of the caller.  Consolidated all return
17049 buffer validation and allocation to a common procedure.  Return
17050 buffers will be allocated via the primary OSL allocation interface
17051 since it appears that a separate pool is not needed by most users.
17052 If a separate pool is required for these buffers, the caller can
17053 still use the original mechanism and pre-allocate the buffer(s).
17054
17055 Implemented support for string operands within the DerefOf
17056 operator.
17057
17058 Restructured the Hardware and Event managers to be table driven,
17059 simplifying the source code and reducing the amount of generated
17060 code.
17061
17062 Split the common read/write low-level ACPI register bitfield
17063 procedure into a separate read and write, simplifying the code
17064 considerably.
17065
17066 Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17067 used only a handful of times and didn't have enough critical mass
17068 for a separate interface.  Replaced with a common calloc procedure
17069 in the core.
17070
17071 Fixed a reported problem with the GPE number mapping mechanism
17072 that allows GPE1 numbers to be non-contiguous with GPE0.
17073 Reorganized the GPE information and shrunk a large array that was
17074 originally large enough to hold info for all possible GPEs (256)
17075 to simply large enough to hold all GPEs up to the largest GPE
17076 number on the machine.
17077
17078 Fixed a reported problem with resource structure alignment on 64-
17079 bit platforms.
17080
17081 Changed the AcpiEnableEvent and AcpiDisableEvent external
17082 interfaces to not require any flags for the common case of
17083 enabling/disabling a GPE.
17084
17085 Implemented support to allow a "Notify" on a Processor object.
17086
17087 Most TBDs in comments within the source code have been resolved
17088 and eliminated.
17089
17090
17091 Fixed a problem in the interpreter where a standalone parent
17092 prefix (^) was not handled correctly in the interpreter and
17093 debugger.
17094
17095 Removed obsolete and unnecessary GPE save/restore code.
17096
17097 Implemented Field support in the ASL Load operator.  This allows a
17098 table to be loaded from a named field, in addition to loading a
17099 table directly from an Operation Region.
17100
17101 Implemented timeout and handle support in the external Global Lock
17102 interfaces.
17103
17104 Fixed a problem in the AcpiDump utility where pathnames were no
17105 longer being generated correctly during the dump of named objects.
17106
17107 Modified the AML debugger to give a full display of if/while
17108 predicates instead of just one AML opcode at a time.  (The
17109 predicate can have several nested ASL statements.)  The old method
17110 was confusing during single stepping.
17111
17112 Code and Data Size: Current core subsystem library sizes are shown
17113 below. These are the code and data sizes for the acpica.lib
17114 produced by the Microsoft Visual C++ 6.0 compiler, and these
17115 values do not include any ACPI driver or OSPM code.  The debug
17116 version of the code includes the debug output trace mechanism and
17117 has a larger code and data size.  Note that these values will vary
17118 depending on the efficiency of the compiler and the compiler
17119 options used during generation.
17120
17121   Previous Release (12_18_01)
17122      Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17123      Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17124    Current Release:
17125      Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17126      Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17127
17128 2) Linux
17129
17130  Implemented fix for PIIX reverse throttling errata (Processor
17131 driver)
17132
17133 Added new Limit interface (Processor and Thermal drivers)
17134
17135 New thermal policy (Thermal driver)
17136
17137 Many updates to /proc
17138
17139 Battery "low" event support (Battery driver)
17140
17141 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17142
17143 IA32 - IA64 initialization unification, no longer experimental
17144
17145 Menuconfig options redesigned
17146
17147 3) ASL Compiler, version X2037:
17148
17149 Implemented several new output features to simplify integration of
17150 AML code into  firmware: 1) Output the AML in C source code with
17151 labels for each named ASL object.  The    original ASL source code
17152 is interleaved as C comments. 2) Output the AML in ASM source code
17153 with labels and interleaved ASL    source. 3) Output the AML in
17154 raw hex table form, in either C or ASM.
17155
17156 Implemented support for optional string parameters to the
17157 LoadTable operator.
17158
17159 Completed support for embedded escape sequences within string
17160 literals.  The compiler now supports all single character escapes
17161 as well as the Octal and Hex escapes.  Note: the insertion of a
17162 null byte into a string literal (via the hex/octal escape) causes
17163 the string to be immediately terminated.  A warning is issued.
17164
17165 Fixed a problem where incorrect AML was generated for the case
17166 where an ASL namepath consists of a single parent prefix (
17167
17168 ) with no trailing name segments.
17169
17170 The compiler has been successfully generated with a 64-bit C
17171 compiler.
17172
17173
17174
17175
17176 ----------------------------------------
17177 Summary of changes for this label: 12_18_01
17178
17179 1) Linux
17180
17181 Enhanced blacklist with reason and severity fields. Any table's
17182 signature may now be used to identify a blacklisted system.
17183
17184 Call _PIC control method to inform the firmware which interrupt
17185 model the OS is using. Turn on any disabled link devices.
17186
17187 Cleaned up busmgr /proc error handling (Andreas Dilger)
17188
17189  2) ACPI CA Core Subsystem:
17190
17191 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17192 while loop)
17193
17194 Completed implementation of the ACPI 2.0 "Continue",
17195 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17196 operators.  All new ACPI 2.0 operators are now implemented in both
17197 the ASL compiler and the AML interpreter.  The only remaining ACPI
17198 2.0 task is support for the String data type in the DerefOf
17199 operator.  Fixed a problem with AcquireMutex where the status code
17200 was lost if the caller had to actually wait for the mutex.
17201
17202 Increased the maximum ASL Field size from 64K bits to 4G bits.
17203
17204 Completed implementation of the external Global Lock interfaces --
17205 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17206 Handler parameters were added.
17207
17208 Completed another pass at removing warnings and issues when
17209 compiling with 64-bit compilers.  The code now compiles cleanly
17210 with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17211 add and subtract (diff) macros have changed considerably.
17212
17213
17214 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
17215 64-bit platforms, 32-bits on all others.  This type is used
17216 wherever memory allocation and/or the C sizeof() operator is used,
17217 and affects the OSL memory allocation interfaces AcpiOsAllocate
17218 and AcpiOsCallocate.
17219
17220 Implemented sticky user breakpoints in the AML debugger.
17221
17222 Code and Data Size: Current core subsystem library sizes are shown
17223 below. These are the code and data sizes for the acpica.lib
17224 produced by the Microsoft Visual C++ 6.0 compiler, and these
17225 values do not include any ACPI driver or OSPM code.  The debug
17226 version of the code includes the debug output trace mechanism and
17227 has a larger code and data size. Note that these values will vary
17228 depending on the efficiency of the compiler and the compiler
17229 options used during generation.
17230
17231   Previous Release (12_05_01)
17232      Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17233      Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17234    Current Release:
17235      Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17236      Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17237
17238  3) ASL Compiler, version X2034:
17239
17240 Now checks for (and generates an error if detected) the use of a
17241 Break or Continue statement without an enclosing While statement.
17242
17243
17244 Successfully generated the compiler with the Intel 64-bit C
17245 compiler.
17246
17247  ----------------------------------------
17248 Summary of changes for this label: 12_05_01
17249
17250  1) ACPI CA Core Subsystem:
17251
17252 The ACPI 2.0 CopyObject operator is fully implemented.  This
17253 operator creates a new copy of an object (and is also used to
17254 bypass the "implicit conversion" mechanism of the Store operator.)
17255
17256 The ACPI 2.0 semantics for the SizeOf operator are fully
17257 implemented.  The change is that performing a SizeOf on a
17258 reference object causes an automatic dereference of the object to
17259 tha actual value before the size is evaluated. This behavior was
17260 undefined in ACPI 1.0.
17261
17262 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17263 have been implemented.  The interrupt polarity and mode are now
17264 independently set.
17265
17266 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17267 appearing in Package objects were not properly converted to
17268 integers when the internal Package was converted to an external
17269 object (via the AcpiEvaluateObject interface.)
17270
17271 Fixed a problem with the namespace object deletion mechanism for
17272 objects created by control methods.  There were two parts to this
17273 problem: 1) Objects created during the initialization phase method
17274 parse were not being deleted, and 2) The object owner ID mechanism
17275 to track objects was broken.
17276
17277 Fixed a problem where the use of the ASL Scope operator within a
17278 control method would result in an invalid opcode exception.
17279
17280 Fixed a problem introduced in the previous label where the buffer
17281 length required for the _PRT structure was not being returned
17282 correctly.
17283
17284 Code and Data Size: Current core subsystem library sizes are shown
17285 below. These are the code and data sizes for the acpica.lib
17286 produced by the Microsoft Visual C++ 6.0 compiler, and these
17287 values do not include any ACPI driver or OSPM code.  The debug
17288 version of the code includes the debug output trace mechanism and
17289 has a larger code and data size.  Note that these values will vary
17290 depending on the efficiency of the compiler and the compiler
17291 options used during generation.
17292
17293   Previous Release (11_20_01)
17294      Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17295      Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17296
17297   Current Release:
17298      Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17299      Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17300
17301  2) Linux:
17302
17303 Updated all files to apply cleanly against 2.4.16.
17304
17305 Added basic PCI Interrupt Routing Table (PRT) support for IA32
17306 (acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17307 version supports both static and dynamic PRT entries, but dynamic
17308 entries are treated as if they were static (not yet
17309 reconfigurable).  Architecture- specific code to use this data is
17310 absent on IA32 but should be available shortly.
17311
17312 Changed the initialization sequence to start the ACPI interpreter
17313 (acpi_init) prior to initialization of the PCI driver (pci_init)
17314 in init/main.c.  This ordering is required to support PRT and
17315 facilitate other (future) enhancement.  A side effect is that the
17316 ACPI bus driver and certain device drivers can no longer be loaded
17317 as modules.
17318
17319 Modified the 'make menuconfig' options to allow PCI Interrupt
17320 Routing support to be included without the ACPI Bus and other
17321 device drivers.
17322
17323  3) ASL Compiler, version X2033:
17324
17325 Fixed some issues with the use of the new CopyObject and
17326 DataTableRegion operators.  Both are fully functional.
17327
17328  ----------------------------------------
17329 Summary of changes for this label: 11_20_01
17330
17331  20 November 2001.  Summary of changes for this release.
17332
17333  1) ACPI CA Core Subsystem:
17334
17335 Updated Index support to match ACPI 2.0 semantics.  Storing a
17336 Integer, String, or Buffer to an Index of a Buffer will store only
17337 the least-significant byte of the source to the Indexed buffer
17338 byte.  Multiple writes are not performed.
17339
17340 Fixed a problem where the access type used in an AccessAs ASL
17341 operator was not recorded correctly into the field object.
17342
17343 Fixed a problem where ASL Event objects were created in a
17344 signalled state. Events are now created in an unsignalled state.
17345
17346 The internal object cache is now purged after table loading and
17347 initialization to reduce the use of dynamic kernel memory -- on
17348 the assumption that object use is greatest during the parse phase
17349 of the entire table (versus the run-time use of individual control
17350 methods.)
17351
17352 ACPI 2.0 variable-length packages are now fully operational.
17353
17354 Code and Data Size: Code and Data optimizations have permitted new
17355 feature development with an actual reduction in the library size.
17356 Current core subsystem library sizes are shown below.  These are
17357 the code and data sizes for the acpica.lib produced by the
17358 Microsoft Visual C++ 6.0 compiler, and these values do not include
17359 any ACPI driver or OSPM code.  The debug version of the code
17360 includes the debug output trace mechanism and has a larger code
17361 and data size.  Note that these values will vary depending on the
17362 efficiency of the compiler and the compiler options used during
17363 generation.
17364
17365   Previous Release (11_09_01):
17366      Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17367      Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17368
17369   Current Release:
17370      Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17371      Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17372
17373  2) Linux:
17374
17375 Enhanced the ACPI boot-time initialization code to allow the use
17376 of Local APIC tables for processor enumeration on IA-32, and to
17377 pave the way for a fully MPS-free boot (on SMP systems) in the
17378 near future.  This functionality replaces
17379 arch/i386/kernel/acpitables.c, which was introduced in an earlier
17380 2.4.15-preX release.  To enable this feature you must add
17381 "acpi_boot=on" to the kernel command line -- see the help entry
17382 for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17383 the works...
17384
17385 Restructured the configuration options to allow boot-time table
17386 parsing support without inclusion of the ACPI Interpreter (and
17387 other) code.
17388
17389 NOTE: This release does not include fixes for the reported events,
17390 power-down, and thermal passive cooling issues (coming soon).
17391
17392  3) ASL Compiler:
17393
17394 Added additional typechecking for Fields within restricted access
17395 Operation Regions.  All fields within EC and CMOS regions must be
17396 declared with ByteAcc. All fields within SMBus regions must be
17397 declared with the BufferAcc access type.
17398
17399 Fixed a problem where the listing file output of control methods
17400 no longer interleaved the actual AML code with the ASL source
17401 code.
17402
17403
17404
17405
17406 ----------------------------------------
17407 Summary of changes for this label: 11_09_01
17408
17409 1) ACPI CA Core Subsystem:
17410
17411 Implemented ACPI 2.0-defined support for writes to fields with a
17412 Buffer, String, or Integer source operand that is smaller than the
17413 target field. In these cases, the source operand is zero-extended
17414 to fill the target field.
17415
17416 Fixed a problem where a Field starting bit offset (within the
17417 parent operation region) was calculated incorrectly if the
17418
17419 alignment of the field differed from the access width.  This
17420 affected CreateWordField, CreateDwordField, CreateQwordField, and
17421 possibly other fields that use the "AccessAny" keyword.
17422
17423 Fixed a problem introduced in the 11_02_01 release where indirect
17424 stores through method arguments did not operate correctly.
17425
17426 2) Linux:
17427
17428 Implemented boot-time ACPI table parsing support
17429 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17430 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17431 legacy BIOS interfaces (e.g. MPS) for the configuration of system
17432 processors, memory, and interrupts during setup_arch().  Note that
17433 this patch does not include the required architecture-specific
17434 changes required to apply this information -- subsequent patches
17435 will be posted for both IA32 and IA64 to achieve this.
17436
17437 Added low-level sleep support for IA32 platforms, courtesy of Pat
17438 Mochel. This allows IA32 systems to transition to/from various
17439 sleeping states (e.g. S1, S3), although the lack of a centralized
17440 driver model and power-manageable drivers will prevent its
17441 (successful) use on most systems.
17442
17443 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17444 submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17445 tables" option, etc.
17446
17447 Increased the default timeout for the EC driver from 1ms to 10ms
17448 (1000 cycles of 10us) to try to address AE_TIME errors during EC
17449 transactions.
17450
17451  ----------------------------------------
17452 Summary of changes for this label: 11_02_01
17453
17454 1) ACPI CA Core Subsystem:
17455
17456 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17457 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
17458 implemented.
17459
17460 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17461 changes to support ACPI 2.0 Qword field access.  Read/Write
17462 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17463 accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17464 the value parameter for the address space handler interface is now
17465 an ACPI_INTEGER.  OSL implementations of these interfaces must now
17466 handle the case where the Width parameter is 64.
17467
17468 Index Fields: Fixed a problem where unaligned bit assembly and
17469 disassembly for IndexFields was not supported correctly.
17470
17471 Index and Bank Fields:  Nested Index and Bank Fields are now
17472 supported. During field access, a check is performed to ensure
17473 that the value written to an Index or Bank register is not out of
17474 the range of the register.  The Index (or Bank) register is
17475 written before each access to the field data. Future support will
17476 include allowing individual IndexFields to be wider than the
17477 DataRegister width.
17478
17479 Fields: Fixed a problem where the AML interpreter was incorrectly
17480 attempting to write beyond the end of a Field/OpRegion.  This was
17481 a boundary case that occurred when a DWORD field was written to a
17482 BYTE access OpRegion, forcing multiple writes and causing the
17483 interpreter to write one datum too many.
17484
17485 Fields: Fixed a problem with Field/OpRegion access where the
17486 starting bit address of a field was incorrectly calculated if the
17487 current access type was wider than a byte (WordAcc, DwordAcc, or
17488 QwordAcc).
17489
17490 Fields: Fixed a problem where forward references to individual
17491 FieldUnits (individual Field names within a Field definition) were
17492 not resolved during the AML table load.
17493
17494 Fields: Fixed a problem where forward references from a Field
17495 definition to the parent Operation Region definition were not
17496 resolved during the AML table load.
17497
17498 Fields: Duplicate FieldUnit names within a scope are now detected
17499 during AML table load.
17500
17501 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17502 returned an incorrect name for the root node.
17503
17504 Code and Data Size: Code and Data optimizations have permitted new
17505 feature development with an actual reduction in the library size.
17506 Current core subsystem library sizes are shown below.  These are
17507 the code and data sizes for the acpica.lib produced by the
17508 Microsoft Visual C++ 6.0 compiler, and these values do not include
17509 any ACPI driver or OSPM code.  The debug version of the code
17510 includes the debug output trace mechanism and has a larger code
17511 and data size.  Note that these values will vary depending on the
17512 efficiency of the compiler and the compiler options used during
17513 generation.
17514
17515   Previous Release (10_18_01):
17516      Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17517      Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17518
17519   Current Release:
17520      Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17521      Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17522
17523  2) Linux:
17524
17525 Improved /proc processor output (Pavel Machek) Re-added
17526 MODULE_LICENSE("GPL") to all modules.
17527
17528  3) ASL Compiler version X2030:
17529
17530 Duplicate FieldUnit names within a scope are now detected and
17531 flagged as errors.
17532
17533  4) Documentation:
17534
17535 Programmer Reference updated to reflect OSL and address space
17536 handler interface changes described above.
17537
17538 ----------------------------------------
17539 Summary of changes for this label: 10_18_01
17540
17541 ACPI CA Core Subsystem:
17542
17543 Fixed a problem with the internal object reference count mechanism
17544 that occasionally caused premature object deletion. This resolves
17545 all of the outstanding problem reports where an object is deleted
17546 in the middle of an interpreter evaluation.  Although this problem
17547 only showed up in rather obscure cases, the solution to the
17548 problem involved an adjustment of all reference counts involving
17549 objects attached to namespace nodes.
17550
17551 Fixed a problem with Field support in the interpreter where
17552 writing to an aligned field whose length is an exact multiple (2
17553 or greater) of the field access granularity would cause an attempt
17554 to write beyond the end of the field.
17555
17556 The top level AML opcode execution functions within the
17557 interpreter have been renamed with a more meaningful and
17558 consistent naming convention.  The modules exmonad.c and
17559 exdyadic.c were eliminated.  New modules are exoparg1.c,
17560 exoparg2.c, exoparg3.c, and exoparg6.c.
17561
17562 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17563
17564 Fixed a problem where the AML debugger was causing some internal
17565 objects to not be deleted during subsystem termination.
17566
17567 Fixed a problem with the external AcpiEvaluateObject interface
17568 where the subsystem would fault if the named object to be
17569 evaluated referred to a constant such as Zero, Ones, etc.
17570
17571 Fixed a problem with IndexFields and BankFields where the
17572 subsystem would fault if the index, data, or bank registers were
17573 not defined in the same scope as the field itself.
17574
17575 Added printf format string checking for compilers that support
17576 this feature.  Corrected more than 50 instances of issues with
17577 format specifiers within invocations of ACPI_DEBUG_PRINT
17578 throughout the core subsystem code.
17579
17580 The ASL "Revision" operator now returns the ACPI support level
17581 implemented in the core - the value "2" since the ACPI 2.0 support
17582 is more than 50% implemented.
17583
17584 Enhanced the output of the AML debugger "dump namespace" command
17585 to output in a more human-readable form.
17586
17587 Current core subsystem library code sizes are shown below.  These
17588
17589 are the code and data sizes for the acpica.lib produced by the
17590 Microsoft Visual C++ 6.0 compiler, and these values do not include
17591 any ACPI driver or OSPM code.  The debug version of the code
17592 includes the full debug trace mechanism -- leading to a much
17593
17594 larger code and data size.  Note that these values will vary
17595 depending on the efficiency of the compiler and the compiler
17596 options used during generation.
17597
17598      Previous Label (09_20_01):
17599      Non-Debug Version:    65K Code,     5K Data,     70K Total
17600      Debug Version:       138K Code,    58K Data,    196K Total
17601
17602      This Label:
17603
17604      Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17605      Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17606
17607 Linux:
17608
17609 Implemented a "Bad BIOS Blacklist" to track machines that have
17610 known ASL/AML problems.
17611
17612 Enhanced the /proc interface for the thermal zone driver and added
17613 support for _HOT (the critical suspend trip point).  The 'info'
17614 file now includes threshold/policy information, and allows setting
17615 of _SCP (cooling preference) and _TZP (polling frequency) values
17616 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17617 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17618 preference to the passive/quiet mode (if supported by the ASL).
17619
17620 Implemented a workaround for a gcc bug that resuted in an OOPs
17621 when loading the control method battery driver.
17622
17623  ----------------------------------------
17624 Summary of changes for this label: 09_20_01
17625
17626  ACPI CA Core Subsystem:
17627
17628 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17629 modified to allow individual GPE levels to be flagged as wake-
17630 enabled (i.e., these GPEs are to remain enabled when the platform
17631 sleeps.)
17632
17633 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17634 support wake-enabled GPEs.  This means that upon entering the
17635 sleep state, all GPEs that are not wake-enabled are disabled.
17636 When leaving the sleep state, these GPEs are re-enabled.
17637
17638 A local double-precision divide/modulo module has been added to
17639 enhance portability to OS kernels where a 64-bit math library is
17640 not available.  The new module is "utmath.c".
17641
17642 Several optimizations have been made to reduce the use of CPU
17643 stack.  Originally over 2K, the maximum stack usage is now below
17644 2K at 1860  bytes (1.82k)
17645
17646 Fixed a problem with the AcpiGetFirmwareTable interface where the
17647 root table pointer was not mapped into a logical address properly.
17648
17649 Fixed a problem where a NULL pointer was being dereferenced in the
17650 interpreter code for the ASL Notify operator.
17651
17652 Fixed a problem where the use of the ASL Revision operator
17653 returned an error. This operator now returns the current version
17654 of the ACPI CA core subsystem.
17655
17656 Fixed a problem where objects passed as control method parameters
17657 to AcpiEvaluateObject were always deleted at method termination.
17658 However, these objects may end up being stored into the namespace
17659 by the called method.  The object reference count mechanism was
17660 applied to these objects instead of a force delete.
17661
17662 Fixed a problem where static strings or buffers (contained in the
17663 AML code) that are declared as package elements within the ASL
17664 code could cause a fault because the interpreter would attempt to
17665 delete them.  These objects are now marked with the "static
17666 object" flag to prevent any attempt to delete them.
17667
17668 Implemented an interpreter optimization to use operands directly
17669 from the state object instead of extracting the operands to local
17670 variables.  This reduces stack use and code size, and improves
17671 performance.
17672
17673 The module exxface.c was eliminated as it was an unnecessary extra
17674 layer of code.
17675
17676 Current core subsystem library code sizes are shown below.  These
17677 are the code and data sizes for the acpica.lib produced by the
17678 Microsoft Visual C++ 6.0 compiler, and these values do not include
17679 any ACPI driver or OSPM code.  The debug version of the code
17680 includes the full debug trace mechanism -- leading to a much
17681 larger code and data size.  Note that these values will vary
17682 depending on the efficiency of the compiler and the compiler
17683 options used during generation.
17684
17685   Non-Debug Version:  65K Code,   5K Data,   70K Total
17686 (Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
17687 Total  (Previously 195K)
17688
17689 Linux:
17690
17691 Support for ACPI 2.0 64-bit integers has been added.   All ACPI
17692 Integer objects are now 64 bits wide
17693
17694 All Acpi data types and structures are now in lower case.  Only
17695 Acpi macros are upper case for differentiation.
17696
17697  Documentation:
17698
17699 Changes to the external interfaces as described above.
17700
17701  ----------------------------------------
17702 Summary of changes for this label: 08_31_01
17703
17704  ACPI CA Core Subsystem:
17705
17706 A bug with interpreter implementation of the ASL Divide operator
17707 was found and fixed.  The implicit function return value (not the
17708 explicit store operands) was returning the remainder instead of
17709 the quotient.  This was a longstanding bug and it fixes several
17710 known outstanding issues on various platforms.
17711
17712 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17713 been further optimized for size.  There are 700 invocations of the
17714 DEBUG_PRINT macro alone, so each optimization reduces the size of
17715 the debug version of the subsystem significantly.
17716
17717 A stack trace mechanism has been implemented.  The maximum stack
17718 usage is about 2K on 32-bit platforms.  The debugger command "stat
17719 stack" will display the current maximum stack usage.
17720
17721 All public symbols and global variables within the subsystem are
17722 now prefixed with the string "Acpi".  This keeps all of the
17723 symbols grouped together in a kernel map, and avoids conflicts
17724 with other kernel subsystems.
17725
17726 Most of the internal fixed lookup tables have been moved into the
17727 code segment via the const operator.
17728
17729 Several enhancements have been made to the interpreter to both
17730 reduce the code size and improve performance.
17731
17732 Current core subsystem library code sizes are shown below.  These
17733 are the code and data sizes for the acpica.lib produced by the
17734 Microsoft Visual C++ 6.0 compiler, and these values do not include
17735 any ACPI driver or OSPM code.  The debug version of the code
17736 includes the full debug trace mechanism which contains over 700
17737 invocations of the DEBUG_PRINT macro, 500 function entry macro
17738 invocations, and over 900 function exit macro invocations --
17739 leading to a much larger code and data size.  Note that these
17740 values will vary depending on the efficiency of the compiler and
17741 the compiler options used during generation.
17742
17743         Non-Debug Version:  64K Code,   5K Data,   69K Total
17744 Debug Version:     137K Code,  58K Data,  195K Total
17745
17746  Linux:
17747
17748 Implemented wbinvd() macro, pending a kernel-wide definition.
17749
17750 Fixed /proc/acpi/event to handle poll() and short reads.
17751
17752  ASL Compiler, version X2026:
17753
17754 Fixed a problem introduced in the previous label where the AML
17755
17756 code emitted for package objects produced packages with zero
17757 length.
17758
17759  ----------------------------------------
17760 Summary of changes for this label: 08_16_01
17761
17762 ACPI CA Core Subsystem:
17763
17764 The following ACPI 2.0 ASL operators have been implemented in the
17765 AML interpreter (These are already supported by the Intel ASL
17766 compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
17767 ToBuffer.  Support for 64-bit AML constants is implemented in the
17768 AML parser, debugger, and disassembler.
17769
17770 The internal memory tracking mechanism (leak detection code) has
17771 been upgraded to reduce the memory overhead (a separate tracking
17772 block is no longer allocated for each memory allocation), and now
17773 supports all of the internal object caches.
17774
17775 The data structures and code for the internal object caches have
17776 been coelesced and optimized so that there is a single cache and
17777 memory list data structure and a single group of functions that
17778 implement generic cache management.  This has reduced the code
17779 size in both the debug and release versions of the subsystem.
17780
17781 The DEBUG_PRINT macro(s) have been optimized for size and replaced
17782 by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
17783 different, because it generates a single call to an internal
17784 function.  This results in a savings of about 90 bytes per
17785 invocation, resulting in an overall code and data savings of about
17786 16% in the debug version of the subsystem.
17787
17788  Linux:
17789
17790 Fixed C3 disk corruption problems and re-enabled C3 on supporting
17791 machines.
17792
17793 Integrated low-level sleep code by Patrick Mochel.
17794
17795 Further tweaked source code Linuxization.
17796
17797 Other minor fixes.
17798
17799  ASL Compiler:
17800
17801 Support for ACPI 2.0 variable length packages is fixed/completed.
17802
17803 Fixed a problem where the optional length parameter for the ACPI
17804 2.0 ToString operator.
17805
17806 Fixed multiple extraneous error messages when a syntax error is
17807 detected within the declaration line of a control method.
17808
17809  ----------------------------------------
17810 Summary of changes for this label: 07_17_01
17811
17812 ACPI CA Core Subsystem:
17813
17814 Added a new interface named AcpiGetFirmwareTable to obtain any
17815 ACPI table via the ACPI signature.  The interface can be called at
17816 any time during kernel initialization, even before the kernel
17817 virtual memory manager is initialized and paging is enabled.  This
17818 allows kernel subsystems to obtain ACPI tables very early, even
17819 before the ACPI CA subsystem is initialized.
17820
17821 Fixed a problem where Fields defined with the AnyAcc attribute
17822 could be resolved to the incorrect address under the following
17823 conditions: 1) the field width is larger than 8 bits and 2) the
17824 parent operation region is not defined on a DWORD boundary.
17825
17826 Fixed a problem where the interpreter is not being locked during
17827 namespace initialization (during execution of the _INI control
17828 methods), causing an error when an attempt is made to release it
17829 later.
17830
17831 ACPI 2.0 support in the AML Interpreter has begun and will be
17832 ongoing throughout the rest of this year.  In this label, The Mod
17833 operator is implemented.
17834
17835 Added a new data type to contain full PCI addresses named
17836 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
17837 and Function values.
17838
17839  Linux:
17840
17841 Enhanced the Linux version of the source code to change most
17842 capitalized ACPI type names to lowercase. For example, all
17843 instances of ACPI_STATUS are changed to acpi_status.  This will
17844 result in a large diff, but the change is strictly cosmetic and
17845 aligns the CA code closer to the Linux coding standard.
17846
17847 OSL Interfaces:
17848
17849 The interfaces to the PCI configuration space have been changed to
17850 add the PCI Segment number and to split the single 32-bit combined
17851 DeviceFunction field into two 16-bit fields.  This was
17852 accomplished by moving the four values that define an address in
17853 PCI configuration space (segment, bus, device, and function) to
17854 the new ACPI_PCI_ID structure.
17855
17856 The changes to the PCI configuration space interfaces led to a
17857 reexamination of the complete set of address space access
17858 interfaces for PCI, I/O, and Memory.  The previously existing 18
17859 interfaces have proven difficult to maintain (any small change
17860 must be propagated across at least 6 interfaces) and do not easily
17861 allow for future expansion to 64 bits if necessary.  Also, on some
17862 systems, it would not be appropriate to demultiplex the access
17863 width (8, 16, 32,or 64) before calling the OSL if the
17864 corresponding native OS interfaces contain a similar access width
17865 parameter.  For these reasons, the 18 address space interfaces
17866 have been replaced by these 6 new ones:
17867
17868 AcpiOsReadPciConfiguration
17869 AcpiOsWritePciConfiguration
17870 AcpiOsReadMemory
17871 AcpiOsWriteMemory
17872 AcpiOsReadPort
17873 AcpiOsWritePort
17874
17875 Added a new interface named AcpiOsGetRootPointer to allow the OSL
17876 to perform the platform and/or OS-specific actions necessary to
17877 obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
17878 interface will simply call down to the CA core to perform the low-
17879 memory search for the table.  On IA-64, the RSDP is obtained from
17880 EFI.  Migrating this interface to the OSL allows the CA core to
17881
17882 remain OS and platform independent.
17883
17884 Added a new interface named AcpiOsSignal to provide a generic
17885 "function code and pointer" interface for various miscellaneous
17886 signals and notifications that must be made to the host OS.   The
17887 first such signals are intended to support the ASL Fatal and
17888 Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
17889 interface has been obsoleted.
17890
17891 The definition of the AcpiFormatException interface has been
17892 changed to simplify its use.  The caller no longer must supply a
17893 buffer to the call; A pointer to a const string is now returned
17894 directly.  This allows the call to be easily used in printf
17895 statements, etc. since the caller does not have to manage a local
17896 buffer.
17897
17898
17899  ASL Compiler, Version X2025:
17900
17901 The ACPI 2.0 Switch/Case/Default operators have been implemented
17902 and are fully functional.  They will work with all ACPI 1.0
17903 interpreters, since the operators are simply translated to If/Else
17904 pairs.
17905
17906 The ACPI 2.0 ElseIf operator is implemented and will also work
17907 with 1.0 interpreters, for the same reason.
17908
17909 Implemented support for ACPI 2.0 variable-length packages.  These
17910 packages have a separate opcode, and their size is determined by
17911 the interpreter at run-time.
17912
17913 Documentation The ACPI CA Programmer Reference has been updated to
17914 reflect the new interfaces and changes to existing interfaces.
17915
17916  ------------------------------------------
17917 Summary of changes for this label: 06_15_01
17918
17919  ACPI CA Core Subsystem:
17920
17921 Fixed a problem where a DWORD-accessed field within a Buffer
17922 object would get its byte address inadvertently rounded down to
17923 the nearest DWORD.  Buffers are always Byte-accessible.
17924
17925  ASL Compiler, version X2024:
17926
17927 Fixed a problem where the Switch() operator would either fault or
17928 hang the compiler.  Note however, that the AML code for this ACPI
17929 2.0 operator is not yet implemented.
17930
17931 Compiler uses the new AcpiOsGetTimer interface to obtain compile
17932 timings.
17933
17934 Implementation of the CreateField operator automatically converts
17935 a reference to a named field within a resource descriptor from a
17936 byte offset to a bit offset if required.
17937
17938 Added some missing named fields from the resource descriptor
17939 support. These are the names that are automatically created by the
17940 compiler to reference fields within a descriptor.  They are only
17941 valid at compile time and are not passed through to the AML
17942 interpreter.
17943
17944 Resource descriptor named fields are now typed as Integers and
17945 subject to compile-time typechecking when used in expressions.
17946
17947  ------------------------------------------
17948 Summary of changes for this label: 05_18_01
17949
17950  ACPI CA Core Subsystem:
17951
17952 Fixed a couple of problems in the Field support code where bits
17953 from adjacent fields could be returned along with the proper field
17954 bits. Restructured the field support code to improve performance,
17955 readability and maintainability.
17956
17957 New DEBUG_PRINTP macro automatically inserts the procedure name
17958 into the output, saving hundreds of copies of procedure name
17959 strings within the source, shrinking the memory footprint of the
17960 debug version of the core subsystem.
17961
17962  Source Code Structure:
17963
17964 The source code directory tree was restructured to reflect the
17965 current organization of the component architecture.  Some files
17966 and directories have been moved and/or renamed.
17967
17968  Linux:
17969
17970 Fixed leaking kacpidpc processes.
17971
17972 Fixed queueing event data even when /proc/acpi/event is not
17973 opened.
17974
17975  ASL Compiler, version X2020:
17976
17977 Memory allocation performance enhancement - over 24X compile time
17978 improvement on large ASL files.  Parse nodes and namestring
17979 buffers are now allocated from a large internal compiler buffer.
17980
17981 The temporary .SRC file is deleted unless the "-s" option is
17982 specified
17983
17984 The "-d" debug output option now sends all output to the .DBG file
17985 instead of the console.
17986
17987 "External" second parameter is now optional
17988
17989 "ElseIf" syntax now properly allows the predicate
17990
17991 Last operand to "Load" now recognized as a Target operand
17992
17993 Debug object can now be used anywhere as a normal object.
17994
17995 ResourceTemplate now returns an object of type BUFFER
17996
17997 EISAID now returns an object of type INTEGER
17998
17999 "Index" now works with a STRING operand
18000
18001 "LoadTable" now accepts optional parameters
18002
18003 "ToString" length parameter is now optional
18004
18005 "Interrupt (ResourceType," parse error fixed.
18006
18007 "Register" with a user-defined region space parse error fixed
18008
18009 Escaped backslash at the end of a string ("\\") scan/parse error
18010 fixed
18011
18012 "Revision" is now an object of type INTEGER.
18013
18014
18015
18016 ------------------------------------------
18017 Summary of changes for this label: 05_02_01
18018
18019 Linux:
18020
18021 /proc/acpi/event now blocks properly.
18022
18023 Removed /proc/sys/acpi. You can still dump your DSDT from
18024 /proc/acpi/dsdt.
18025
18026  ACPI CA Core Subsystem:
18027
18028 Fixed a problem introduced in the previous label where some of the
18029 "small" resource descriptor types were not recognized.
18030
18031 Improved error messages for the case where an ASL Field is outside
18032 the range of the parent operation region.
18033
18034  ASL Compiler, version X2018:
18035
18036
18037 Added error detection for ASL Fields that extend beyond the length
18038 of the parent operation region (only if the length of the region
18039 is known at compile time.)  This includes fields that have a
18040 minimum access width that is smaller than the parent region, and
18041 individual field units that are partially or entirely beyond the
18042 extent of the parent.
18043
18044
18045
18046 ------------------------------------------
18047 Summary of changes for this label: 04_27_01
18048
18049  ACPI CA Core Subsystem:
18050
18051 Fixed a problem where the namespace mutex could be released at the
18052 wrong time during execution of AcpiRemoveAddressSpaceHandler.
18053
18054 Added optional thread ID output for debug traces, to simplify
18055 debugging of multiple threads.  Added context switch notification
18056 when the debug code realizes that a different thread is now
18057 executing ACPI code.
18058
18059 Some additional external data types have been prefixed with the
18060 string "ACPI_" for consistency.  This may effect existing code.
18061 The data types affected are the external callback typedefs - e.g.,
18062
18063 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18064
18065  Linux:
18066
18067 Fixed an issue with the OSL semaphore implementation where a
18068 thread was waking up with an error from receiving a SIGCHLD
18069 signal.
18070
18071 Linux version of ACPI CA now uses the system C library for string
18072 manipulation routines instead of a local implementation.
18073
18074 Cleaned up comments and removed TBDs.
18075
18076  ASL Compiler, version X2017:
18077
18078 Enhanced error detection and reporting for all file I/O
18079 operations.
18080
18081  Documentation:
18082
18083 Programmer Reference updated to version 1.06.
18084
18085
18086
18087 ------------------------------------------
18088 Summary of changes for this label: 04_13_01
18089
18090  ACPI CA Core Subsystem:
18091
18092 Restructured support for BufferFields and RegionFields.
18093 BankFields support is now fully operational.  All known 32-bit
18094 limitations on field sizes have been removed.  Both BufferFields
18095 and (Operation) RegionFields are now supported by the same field
18096 management code.
18097
18098 Resource support now supports QWORD address and IO resources. The
18099 16/32/64 bit address structures and the Extended IRQ structure
18100 have been changed to properly handle Source Resource strings.
18101
18102 A ThreadId of -1 is now used to indicate a "mutex not acquired"
18103 condition internally and must never be returned by AcpiOsThreadId.
18104 This reserved value was changed from 0 since Unix systems allow a
18105 thread ID of 0.
18106
18107 Linux:
18108
18109 Driver code reorganized to enhance portability
18110
18111 Added a kernel configuration option to control ACPI_DEBUG
18112
18113 Fixed the EC driver to honor _GLK.
18114
18115 ASL Compiler, version X2016:
18116
18117 Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18118 address space was set to 0, not 0x7f as it should be.
18119
18120  ------------------------------------------
18121 Summary of changes for this label: 03_13_01
18122
18123  ACPI CA Core Subsystem:
18124
18125 During ACPI initialization, the _SB_._INI method is now run if
18126 present.
18127
18128 Notify handler fix - notifies are deferred until the parent method
18129 completes execution.  This fixes the "mutex already acquired"
18130 issue seen occasionally.
18131
18132 Part of the "implicit conversion" rules in ACPI 2.0 have been
18133 found to cause compatibility problems with existing ASL/AML.  The
18134 convert "result-to-target-type" implementation has been removed
18135 for stores to method Args and Locals.  Source operand conversion
18136 is still fully implemented.  Possible changes to ACPI 2.0
18137 specification pending.
18138
18139 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18140 length.
18141
18142 Fix for compiler warnings for 64-bit compiles.
18143
18144  Linux:
18145
18146 /proc output aligned for easier parsing.
18147
18148 Release-version compile problem fixed.
18149
18150 New kernel configuration options documented in Configure.help.
18151
18152 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18153 context" message.
18154
18155  OSPM:
18156
18157 Power resource driver integrated with bus manager.
18158
18159 Fixed kernel fault during active cooling for thermal zones.
18160
18161 Source Code:
18162
18163 The source code tree has been restructured.
18164
18165
18166
18167 ------------------------------------------
18168 Summary of changes for this label: 03_02_01
18169
18170  Linux OS Services Layer (OSL):
18171
18172 Major revision of all Linux-specific code.
18173
18174 Modularized all ACPI-specific drivers.
18175
18176 Added new thermal zone and power resource drivers.
18177
18178 Revamped /proc interface (new functionality is under /proc/acpi).
18179
18180 New kernel configuration options.
18181
18182  Linux known issues:
18183
18184 New kernel configuration options not documented in Configure.help
18185 yet.
18186
18187
18188 Module dependencies not currently implemented. If used, they
18189 should be loaded in this order: busmgr, power, ec, system,
18190 processor, battery, ac_adapter, button, thermal.
18191
18192 Modules will not load if CONFIG_MODVERSION is set.
18193
18194 IBM 600E - entering S5 may reboot instead of shutting down.
18195
18196 IBM 600E - Sleep button may generate "Invalid <NULL> context"
18197 message.
18198
18199 Some systems may fail with "execution mutex already acquired"
18200 message.
18201
18202  ACPI CA Core Subsystem:
18203
18204 Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18205 for the  deadlock detection code. Defined to return a non-zero, 32-
18206 bit thread ID for the currently executing thread.  May be a non-
18207 zero constant integer on single-thread systems.
18208
18209 Implemented deadlock detection for internal subsystem mutexes.  We
18210 may add conditional compilation for this code (debug only) later.
18211
18212 ASL/AML Mutex object semantics are now fully supported.  This
18213 includes multiple acquires/releases by owner and support for the
18214
18215 Mutex SyncLevel parameter.
18216
18217 A new "Force Release" mechanism automatically frees all ASL
18218 Mutexes that have been acquired but not released when a thread
18219 exits the interpreter.  This forces conformance to the ACPI spec
18220 ("All mutexes must be released when an invocation exits") and
18221 prevents deadlocked ASL threads.  This mechanism can be expanded
18222 (later) to monitor other resource acquisitions if OEM ASL code
18223 continues to misbehave (which it will).
18224
18225 Several new ACPI exception codes have been added for the Mutex
18226 support.
18227
18228 Recursive method calls are now allowed and supported (the ACPI
18229 spec does in fact allow recursive method calls.)  The number of
18230 recursive calls is subject to the restrictions imposed by the
18231 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18232 parameter.
18233
18234 Implemented support for the SyncLevel parameter for control
18235 methods (ACPI 2.0 feature)
18236
18237 Fixed a deadlock problem when multiple threads attempted to use
18238 the interpreter.
18239
18240 Fixed a problem where the string length of a String package
18241 element was not always set in a package returned from
18242 AcpiEvaluateObject.
18243
18244 Fixed a problem where the length of a String package element was
18245 not always included in the length of the overall package returned
18246 from AcpiEvaluateObject.
18247
18248 Added external interfaces (Acpi*) to the ACPI debug memory
18249 manager.  This manager keeps a list of all outstanding
18250 allocations, and can therefore detect memory leaks and attempts to
18251 free memory blocks more than once. Useful for code such as the
18252 power manager, etc.  May not be appropriate for device drivers.
18253 Performance with the debug code enabled is slow.
18254
18255 The ACPI Global Lock is now an optional hardware element.
18256
18257  ASL Compiler Version X2015:
18258
18259 Integrated changes to allow the compiler to be generated on
18260 multiple platforms.
18261
18262 Linux makefile added to generate the compiler on Linux
18263
18264  Source Code:
18265
18266 All platform-specific headers have been moved to their own
18267 subdirectory, Include/Platform.
18268
18269 New source file added, Interpreter/ammutex.c
18270
18271 New header file, Include/acstruct.h
18272
18273  Documentation:
18274
18275 The programmer reference has been updated for the following new
18276 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18277
18278  ------------------------------------------
18279 Summary of changes for this label: 02_08_01
18280
18281 Core ACPI CA Subsystem: Fixed a problem where an error was
18282 incorrectly returned if the return resource buffer was larger than
18283 the actual data (in the resource interfaces).
18284
18285 References to named objects within packages are resolved to the
18286
18287 full pathname string before packages are returned directly (via
18288 the AcpiEvaluateObject interface) or indirectly via the resource
18289 interfaces.
18290
18291 Linux OS Services Layer (OSL):
18292
18293 Improved /proc battery interface.
18294
18295
18296 Added C-state debugging output and other miscellaneous fixes.
18297
18298 ASL Compiler Version X2014:
18299
18300 All defined method arguments can now be used as local variables,
18301 including the ones that are not actually passed in as parameters.
18302 The compiler tracks initialization of the arguments and issues an
18303 exception if they are used without prior assignment (just like
18304 locals).
18305
18306 The -o option now specifies a filename prefix that is used for all
18307 output files, including the AML output file.  Otherwise, the
18308 default behavior is as follows:  1) the AML goes to the file
18309 specified in the DSDT.  2) all other output files use the input
18310 source filename as the base.
18311
18312  ------------------------------------------
18313 Summary of changes for this label: 01_25_01
18314
18315 Core ACPI CA Subsystem: Restructured the implementation of object
18316 store support within the  interpreter.  This includes support for
18317 the Store operator as well  as any ASL operators that include a
18318 target operand.
18319
18320 Partially implemented support for Implicit Result-to-Target
18321 conversion. This is when a result object is converted on the fly
18322 to the type of  an existing target object.  Completion of this
18323 support is pending  further analysis of the ACPI specification
18324 concerning this matter.
18325
18326 CPU-specific code has been removed from the subsystem (hardware
18327 directory).
18328
18329 New Power Management Timer functions added
18330
18331 Linux OS Services Layer (OSL): Moved system state transition code
18332 to the core, fixed it, and modified  Linux OSL accordingly.
18333
18334 Fixed C2 and C3 latency calculations.
18335
18336
18337 We no longer use the compilation date for the version message on
18338 initialization, but retrieve the version from AcpiGetSystemInfo().
18339
18340 Incorporated for fix Sony VAIO machines.
18341
18342 Documentation:  The Programmer Reference has been updated and
18343 reformatted.
18344
18345
18346 ASL Compiler:  Version X2013: Fixed a problem where the line
18347 numbering and error reporting could get out  of sync in the
18348 presence of multiple include files.
18349
18350  ------------------------------------------
18351 Summary of changes for this label: 01_15_01
18352
18353 Core ACPI CA Subsystem:
18354
18355 Implemented support for type conversions in the execution of the
18356 ASL  Concatenate operator (The second operand is converted to
18357 match the type  of the first operand before concatenation.)
18358
18359 Support for implicit source operand conversion is partially
18360 implemented.   The ASL source operand types Integer, Buffer, and
18361 String are freely  interchangeable for most ASL operators and are
18362 converted by the interpreter  on the fly as required.  Implicit
18363 Target operand conversion (where the  result is converted to the
18364 target type before storing) is not yet implemented.
18365
18366 Support for 32-bit and 64-bit BCD integers is implemented.
18367
18368 Problem fixed where a field read on an aligned field could cause a
18369 read  past the end of the field.
18370
18371 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18372 does not return a value, but the caller expects one.  (The ASL
18373 compiler flags this as a warning.)
18374
18375 ASL Compiler:
18376
18377 Version X2011:
18378 1. Static typechecking of all operands is implemented. This
18379 prevents the use of invalid objects (such as using a Package where
18380 an Integer is required) at compile time instead of at interpreter
18381 run-time.
18382 2. The ASL source line is printed with ALL errors and warnings.
18383 3. Bug fix for source EOF without final linefeed.
18384 4. Debug option is split into a parse trace and a namespace trace.
18385 5. Namespace output option (-n) includes initial values for
18386 integers and strings.
18387 6. Parse-only option added for quick syntax checking.
18388 7. Compiler checks for duplicate ACPI name declarations
18389
18390 Version X2012:
18391 1. Relaxed typechecking to allow interchangeability between
18392 strings, integers, and buffers.  These types are now converted by
18393 the interpreter at runtime.
18394 2. Compiler reports time taken by each internal subsystem in the
18395 debug         output file.
18396
18397
18398  ------------------------------------------
18399 Summary of changes for this label: 12_14_00
18400
18401 ASL Compiler:
18402
18403 This is the first official release of the compiler. Since the
18404 compiler requires elements of the Core Subsystem, this label
18405 synchronizes everything.
18406
18407 ------------------------------------------
18408 Summary of changes for this label: 12_08_00
18409
18410
18411 Fixed a problem where named references within the ASL definition
18412 of both OperationRegions and CreateXXXFields did not work
18413 properly.  The symptom was an AE_AML_OPERAND_TYPE during
18414 initialization of the region/field. This is similar (but not
18415 related internally) to the problem that was fixed in the last
18416 label.
18417
18418 Implemented both 32-bit and 64-bit support for the BCD ASL
18419 functions ToBCD and FromBCD.
18420
18421 Updated all legal headers to include "2000" in the copyright
18422 years.
18423
18424  ------------------------------------------
18425 Summary of changes for this label: 12_01_00
18426
18427 Fixed a problem where method invocations within the ASL definition
18428 of both OperationRegions and CreateXXXFields did not work
18429 properly.  The symptom was an AE_AML_OPERAND_TYPE during
18430 initialization of the region/field:
18431
18432   nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18433 [DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18434 (0x3005)
18435
18436 Fixed a problem where operators with more than one nested
18437 subexpression would fail.  The symptoms were varied, by mostly
18438 AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18439 problem that has gone unnoticed until now.
18440
18441   Subtract (Add (1,2), Multiply (3,4))
18442
18443 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18444 previous build (The prefix part of a relative path was handled
18445 incorrectly).
18446
18447 Fixed a problem where Operation Region initialization failed if
18448 the operation region name was a "namepath" instead of a simple
18449 "nameseg". Symptom was an AE_NO_OPERAND error.
18450
18451 Fixed a problem where an assignment to a local variable via the
18452 indirect RefOf mechanism only worked for the first such
18453 assignment.  Subsequent assignments were ignored.
18454
18455  ------------------------------------------
18456 Summary of changes for this label: 11_15_00
18457
18458 ACPI 2.0 table support with backwards support for ACPI 1.0 and the
18459 0.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18460 the AML  interpreter does NOT have support for the new 2.0 ASL
18461 grammar terms at this time.
18462
18463 All ACPI hardware access is via the GAS structures in the ACPI 2.0
18464 FADT.
18465
18466 All physical memory addresses across all platforms are now 64 bits
18467 wide. Logical address width remains dependent on the platform
18468 (i.e., "void *").
18469
18470 AcpiOsMapMemory interface changed to a 64-bit physical address.
18471
18472 The AML interpreter integer size is now 64 bits, as per the ACPI
18473 2.0 specification.
18474
18475 For backwards compatibility with ACPI 1.0, ACPI tables with a
18476 revision number less than 2 use 32-bit integers only.
18477
18478 Fixed a problem where the evaluation of OpRegion operands did not
18479 always resolve them to numbers properly.
18480
18481 ------------------------------------------
18482 Summary of changes for this label: 10_20_00
18483
18484 Fix for CBN_._STA issue.  This fix will allow correct access to
18485 CBN_ OpRegions when the _STA returns 0x8.
18486
18487 Support to convert ACPI constants (Ones, Zeros, One) to actual
18488 values before a package object is returned
18489
18490 Fix for method call as predicate to if/while construct causing
18491 incorrect if/while behavior
18492
18493 Fix for Else block package lengths sometimes calculated wrong (if
18494 block > 63 bytes)
18495
18496 Fix for Processor object length field, was always zero
18497
18498 Table load abort if FACP sanity check fails
18499
18500 Fix for problem with Scope(name) if name already exists
18501
18502 Warning emitted if a named object referenced cannot be found
18503 (resolved) during method execution.
18504
18505
18506
18507
18508
18509 ------------------------------------------
18510 Summary of changes for this label: 9_29_00
18511
18512 New table initialization interfaces: AcpiInitializeSubsystem no
18513 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18514 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18515 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18516 AcpiLoadTables
18517
18518 Note: These interface changes require changes to all existing OSDs
18519
18520 The PCI_Config default address space handler is always installed
18521 at the root namespace object.
18522
18523 -------------------------------------------
18524 Summary of changes for this label: 09_15_00
18525
18526 The new initialization architecture is implemented.  New
18527 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18528 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18529
18530 (Namespace is automatically loaded when a table is loaded)
18531
18532 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
18533 52 bytes to 32 bytes.  There is usually one of these for every
18534 namespace object, so the memory savings is significant.
18535
18536 Implemented just-in-time evaluation of the CreateField operators.
18537
18538 Bug fixes for IA-64 support have been integrated.
18539
18540 Additional code review comments have been implemented
18541
18542 The so-called "third pass parse" has been replaced by a final walk
18543 through the namespace to initialize all operation regions (address
18544 spaces) and fields that have not yet been initialized during the
18545 execution of the various _INI and REG methods.
18546
18547 New file - namespace/nsinit.c
18548
18549 -------------------------------------------
18550 Summary of changes for this label: 09_01_00
18551
18552 Namespace manager data structures have been reworked to change the
18553 primary  object from a table to a single object.  This has
18554 resulted in dynamic memory  savings of 3X within the namespace and
18555 2X overall in the ACPI CA subsystem.
18556
18557 Fixed problem where the call to AcpiEvFindPciRootBuses was
18558 inadvertently left  commented out.
18559
18560 Reduced the warning count when generating the source with the GCC
18561 compiler.
18562
18563 Revision numbers added to each module header showing the
18564 SourceSafe version of the file.  Please refer to this version
18565 number when giving us feedback or comments on individual modules.
18566
18567 The main object types within the subsystem have been renamed to
18568 clarify their  purpose:
18569
18570 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18571 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18572 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18573
18574 NOTE: no changes to the initialization sequence are included in
18575 this label.
18576
18577 -------------------------------------------
18578 Summary of changes for this label: 08_23_00
18579
18580 Fixed problem where TerminateControlMethod was being called
18581 multiple times per  method
18582
18583 Fixed debugger problem where single stepping caused a semaphore to
18584 be  oversignalled
18585
18586 Improved performance through additional parse object caching -
18587 added  ACPI_EXTENDED_OP type
18588
18589 -------------------------------------------
18590 Summary of changes for this label: 08_10_00
18591
18592 Parser/Interpreter integration:  Eliminated the creation of
18593 complete parse trees  for ACPI tables and control methods.
18594 Instead, parse subtrees are created and  then deleted as soon as
18595 they are processed (Either entered into the namespace or  executed
18596 by the interpreter).  This reduces the use of dynamic kernel
18597 memory  significantly. (about 10X)
18598
18599 Exception codes broken into classes and renumbered.  Be sure to
18600 recompile all  code that includes acexcep.h.  Hopefully we won't
18601 have to renumber the codes  again now that they are split into
18602 classes (environment, programmer, AML code,  ACPI table, and
18603 internal).
18604
18605 Fixed some additional alignment issues in the Resource Manager
18606 subcomponent
18607
18608 Implemented semaphore tracking in the AcpiExec utility, and fixed
18609 several places  where mutexes/semaphores were being unlocked
18610 without a corresponding lock  operation.  There are no known
18611 semaphore or mutex "leaks" at this time.
18612
18613 Fixed the case where an ASL Return operator is used to return an
18614 unnamed  package.
18615
18616 -------------------------------------------
18617 Summary of changes for this label: 07_28_00
18618
18619 Fixed a problem with the way addresses were calculated in
18620 AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
18621 manifested itself when a Field was  created with WordAccess or
18622 DwordAccess, but the field unit defined within the  Field was less
18623
18624 than a Word or Dword.
18625
18626 Fixed a problem in AmlDumpOperands() module's loop to pull
18627 operands off of the  operand stack to display information. The
18628 problem manifested itself as a TLB  error on 64-bit systems when
18629 accessing an operand stack with two or more  operands.
18630
18631 Fixed a problem with the PCI configuration space handlers where
18632 context was  getting confused between accesses. This required a
18633 change to the generic address  space handler and address space
18634 setup definitions. Handlers now get both a  global handler context
18635 (this is the one passed in by the user when executing
18636 AcpiInstallAddressSpaceHandler() and a specific region context
18637 that is unique to  each region (For example, the _ADR, _SEG and
18638 _BBN values associated with a  specific region). The generic
18639 function definitions have changed to the  following:
18640
18641 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18642 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18643 *HandlerContext, // This used to be void *Context void
18644 *RegionContext); // This is an additional parameter
18645
18646 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18647 RegionHandle, UINT32 Function, void *HandlerContext,  void
18648 **RegionContext); // This used to be **ReturnContext
18649
18650 -------------------------------------------
18651 Summary of changes for this label: 07_21_00
18652
18653 Major file consolidation and rename.  All files within the
18654 interpreter have been  renamed as well as most header files.  This
18655 was done to prevent collisions with  existing files in the host
18656 OSs -- filenames such as "config.h" and "global.h"  seem to be
18657 quite common.  The VC project files have been updated.  All
18658 makefiles  will require modification.
18659
18660 The parser/interpreter integration continues in Phase 5 with the
18661 implementation  of a complete 2-pass parse (the AML is parsed
18662 twice) for each table;  This  avoids the construction of a huge
18663 parse tree and therefore reduces the amount of  dynamic memory
18664 required by the subsystem.  Greater use of the parse object cache
18665 means that performance is unaffected.
18666
18667 Many comments from the two code reviews have been rolled in.
18668
18669 The 64-bit alignment support is complete.
18670
18671 -------------------------------------------
18672 Summary of changes for this label: 06_30_00
18673
18674 With a nod and a tip of the hat to the technology of yesteryear,
18675 we've added  support in the source code for 80 column output
18676 devices.  The code is now mostly  constrained to 80 columns or
18677 less to support environments and editors that 1)  cannot display
18678 or print more than 80 characters on a single line, and 2) cannot
18679 disable line wrapping.
18680
18681 A major restructuring of the namespace data structure has been
18682 completed.  The  result is 1) cleaner and more
18683 understandable/maintainable code, and 2) a  significant reduction
18684 in the dynamic memory requirement for each named ACPI  object
18685 (almost half).
18686
18687 -------------------------------------------
18688 Summary of changes for this label: 06_23_00
18689
18690 Linux support has been added.  In order to obtain approval to get
18691 the ACPI CA  subsystem into the Linux kernel, we've had to make
18692 quite a few changes to the  base subsystem that will affect all
18693 users (all the changes are generic and OS- independent).  The
18694 effects of these global changes have been somewhat far  reaching.
18695 Files have been merged and/or renamed and interfaces have been
18696 renamed.   The major changes are described below.
18697
18698 Osd* interfaces renamed to AcpiOs* to eliminate namespace
18699 pollution/confusion  within our target kernels.  All OSD
18700 interfaces must be modified to match the new  naming convention.
18701
18702 Files merged across the subsystem.  A number of the smaller source
18703 and header  files have been merged to reduce the file count and
18704 increase the density of the  existing files.  There are too many
18705 to list here.  In general, makefiles that  call out individual
18706 files will require rebuilding.
18707
18708 Interpreter files renamed.  All interpreter files now have the
18709 prefix am*  instead of ie* and is*.
18710
18711 Header files renamed:  The acapi.h file is now acpixf.h.  The
18712 acpiosd.h file is  now acpiosxf.h.  We are removing references to
18713 the acronym "API" since it is  somewhat windowsy. The new name is
18714 "external interface" or xface or xf in the  filenames.j
18715
18716
18717 All manifest constants have been forced to upper case (some were
18718 mixed case.)   Also, the string "ACPI_" has been prepended to many
18719 (not all) of the constants,  typedefs, and structs.
18720
18721 The globals "DebugLevel" and "DebugLayer" have been renamed
18722 "AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
18723
18724 All other globals within the subsystem are now prefixed with
18725 "AcpiGbl_" Internal procedures within the subsystem are now
18726 prefixed with "Acpi" (with only  a few exceptions).  The original
18727 two-letter abbreviation for the subcomponent  remains after "Acpi"
18728 - for example, CmCallocate became AcpiCmCallocate.
18729
18730 Added a source code translation/conversion utility.  Used to
18731 generate the Linux  source code, it can be modified to generate
18732 other types of source as well. Can  also be used to cleanup
18733 existing source by removing extraneous spaces and blank  lines.
18734 Found in tools/acpisrc/*
18735
18736 OsdUnMapMemory was renamed to OsdUnmapMemory and then
18737 AcpiOsUnmapMemory.  (UnMap  became Unmap).
18738
18739 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18740 When set to  one, this indicates that the caller wants to use the
18741
18742 semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
18743 both types.  However, implementers of this  call may want to use
18744 different OS primitives depending on the type of semaphore
18745 requested.  For example, some operating systems provide separate
18746
18747 "mutex" and  "semaphore" interfaces - where the mutex interface is
18748 much faster because it  doesn't have all the overhead of a full
18749 semaphore implementation.
18750
18751 Fixed a deadlock problem where a method that accesses the PCI
18752 address space can  block forever if it is the first access to the
18753 space.
18754
18755 -------------------------------------------
18756 Summary of changes for this label: 06_02_00
18757
18758 Support for environments that cannot handle unaligned data
18759 accesses (e.g.  firmware and OS environments devoid of alignment
18760 handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
18761 been added (via configurable macros) in  these three areas: -
18762 Transfer of data from the raw AML byte stream is done via byte
18763 moves instead of    word/dword/qword moves. - External objects are
18764 aligned within the user buffer, including package   elements (sub-
18765 objects). - Conversion of name strings to UINT32 Acpi Names is now
18766 done byte-wise.
18767
18768 The Store operator was modified to mimic Microsoft's
18769 implementation when storing  to a Buffer Field.
18770
18771 Added a check of the BM_STS bit before entering C3.
18772
18773 The methods subdirectory has been obsoleted and removed.  A new
18774 file, cmeval.c  subsumes the functionality.
18775
18776 A 16-bit (DOS) version of AcpiExec has been developed.  The
18777 makefile is under  the acpiexec directory.