usr.sbin/fstyp: Add device name to HAMMER2 label for autofs -media mount
[dragonfly.git] / sys / contrib / dev / acpica / changes.txt
1 ----------------------------------------
2 03 July 2019. Summary of changes for version 20190703:
3
4
5 1) ACPICA kernel-resident subsystem:
6
7 Remove legacy module-level support code. There were still some remnants 
8 of the legacy module-level code executions. Since we no longer support 
9 this option, this is essentially dead code and has been removed from the 
10 ACPICA source.
11
12 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 
13 scope. If these named objects are declared outside the root scope, they 
14 will not be invoked by any host Operating System.
15
16 Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 
17 one) can be enabled in two situations. First, the GPEs with existing _Lxx 
18 and _Exx methods are enabled implicitly by ACPICA during system 
19 initialization.  Second, the GPEs without these methods (like GPEs listed 
20 by _PRW objects for wakeup devices) need to be enabled directly by the 
21 code that is going to use them (e.g. ACPI power management or device 
22 drivers).
23
24 In the former case, if the status of a given GPE is set to start with, 
25 its handler method (either _Lxx or _Exx) needs to be invoked to take care 
26 of the events (possibly) signaled before the GPE was enabled. In the 
27 latter case, however, the first caller of AcpiEnableGpe() for a given GPE 
28 should not be expected to care about any events that might be signaled 
29 through it earlier.  In that case, it is better to clear the status of 
30 the GPE before enabling it, to prevent stale events from triggering 
31 unwanted actions (like spurious system resume, for example).
32
33 For this reason, modify AcpiEvAddGpeReference() to take an additional 
34 boolean argument indicating whether or not the GPE status needs to be 
35 cleared when its reference counter changes from zero to one and make 
36 AcpiEnableGpe() pass TRUE to it through that new argument.
37
38
39 2) iASL Compiler/Disassembler and ACPICA tools:
40
41 The tool generation process has been migrated to MSVC 2017, and all 
42 project files have been upgraded. The new project files appear in the 
43 directory \acpica\generate\msvc2017. This change effectively deprecates 
44 the older project files in \acpica\generate\msvc9.
45
46 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 
47 scope. If these named objects are declared outside the root scope, they 
48 will not be invoked by any host Operating System
49
50 ----------------------------------------
51 09 May 2019. Summary of changes for version 20190509:
52
53
54 1) ACPICA kernel-resident subsystem:
55
56 Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling 
57 them") that causes problems with Thunderbolt controllers to occur if a 
58 dock device is connected at init time (the xhci_hcd and thunderbolt 
59 modules crash which prevents peripherals connected through them from 
60 working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 
61 Dispatch active GPEs at init time") to get undone, so the problem 
62 addressed by commit ecc1165b8b74 appears again as a result of it.
63
64
65 2) iASL Compiler/Disassembler and ACPICA tools:
66
67 Reverted iASL: Additional forward reference detection. This change 
68 reverts forward reference detection for field declarations. The feature 
69 unintentionally emitted AML bytecode with incorrect package lengths for 
70 some ASL code related to Fields and OperationRegions. This malformed AML 
71 can cause systems to crash
72 during boot. The malformed AML bytecode is emitted in iASL version 
73 20190329 and 20190405.
74
75 iASL: improve forward reference detection. This change improves forward 
76 reference detection for named objects inside of scopes. If a parse object 
77 has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 
78 a named object that is declared later in the AML bytecode. This is 
79 allowed if the reference is inside of a method and the declaration is 
80 outside of a method like so:
81
82 DefinitionBlock(...)
83 {
84     Method (TEST)
85     {
86         Return (NUM0)
87     }
88     Name (NUM0,0)
89 }
90
91 However, if the declaration and reference are both in the same method or 
92 outside any methods, this is a forward reference and should be marked as 
93 an error because it would result in runtime errors.
94
95 DefinitionBlock(...)
96 {
97     Name (BUFF, Buffer (NUM0) {}) // Forward reference
98     Name (NUM0, 0x0)
99
100     Method (TEST)
101     {
102         Local0 = NUM1
103         Name (NUM1, 0x1) // Forward reference
104         return (Local0)
105     }
106 }
107
108 iASL: Implemented additional buffer overflow analysis for BufferField 
109 declarations. Check if a buffer index argument to a create buffer field 
110 operation is beyond the end of the target buffer.
111
112 This affects these AML operators:
113  
114    AML_CREATE_FIELD_OP
115    AML_CREATE_BIT_FIELD_OP
116    AML_CREATE_BYTE_FIELD_OP
117    AML_CREATE_WORD_FIELD_OP
118    AML_CREATE_DWORD_FIELD_OP
119    AML_CREATE_QWORD_FIELD_OP
120
121  There are three conditions that must be satisfied in order to allow this 
122 validation at compile time:
123  
124    1) The length of the target buffer must be an integer constant
125    2) The index specified in the create* must be an integer constant
126    3) For CreateField, the bit length argument must be non-zero.
127
128 Example:
129     Name (BUF1, Buffer() {1,2})
130     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
131
132 dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
133 Error    6165 -                           ^ Buffer index beyond end of 
134 target buffer
135
136
137 ----------------------------------------
138 05 April 2019. Summary of changes for version 20190405:
139
140
141 1) ACPICA kernel-resident subsystem:
142
143 Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 
144 unconditionally clearing ACPI IRQs during suspend/resume") was added 
145 earlier to stop clearing of event status bits unconditionally on suspend 
146 and resume paths. Though this change fixed an issue on suspend path, it 
147 introduced regressions on several resume paths. In the case of S0ix, 
148 events are enabled as part of device suspend path. If status bits for the 
149 events are set when they are enabled, it could result in premature wake 
150 from S0ix. If status is cleared for any event that is being enabled so 
151 that any stale events are cleared out. In case of S0ix, events are 
152 enabled as part of device suspend path. If status bits for the events are 
153 set when they are enabled, it could result in premature wake from S0ix.
154
155 This change ensures that status is cleared for any event that is being 
156 enabled so that any stale events are cleared out.
157
158
159 2) iASL Compiler/Disassembler and ACPICA tools:
160
161 iASL: Implemented an enhanced multiple file compilation that combines 
162 named objects from all input files to a single namespace. With this 
163 feature, any unresolved external declarations as well as duplicate named 
164 object declarations can be detected during compilation rather than 
165 generating errors much later at runtime. The following commands are 
166 examples that utilize this feature:
167     iasl dsdt.asl ssdt.asl
168     iasl dsdt.asl ssdt1.asl ssdt2.asl
169     iasl dsdt.asl ssdt*.asl
170
171 ----------------------------------------
172 29 March 2019. Summary of changes for version 20190329:
173
174
175 1) ACPICA kernel-resident subsystem:
176
177 Namespace support: Remove the address nodes from global list after method 
178 termination. The global address list contains pointers to namespace nodes 
179 that represent Operation Regions. This change properly removes Operation 
180 Region namespace nodes that are declared dynamically during method 
181 execution.
182
183 Linux: Use a different debug default than ACPICA. There was a divergence 
184 between Linux and the ACPICA codebases. In order to resolve this 
185 divergence, Linux now declares its own debug default in aclinux.h
186
187 Renamed some internal macros to improve code understanding and 
188 maintenance. The macros below all operate on single 4-character ACPI 
189 NameSegs, not generic strings (old -> new):
190     ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
191     ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
192     ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
193
194 Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 
195 table.
196
197 Test suite: Update makefiles, add PCC operation region support
198
199
200 2) iASL Compiler/Disassembler and Tools:
201
202 iASL: Implemented additional illegal forward reference detection. Now 
203 detect and emit an error upon detection of a forward reference from a 
204 Field to an Operation Region. This will fail at runtime if allowed to 
205 pass the compiler.
206
207 AcpiExec: Add an address list check for dynamic Operation Regions. This 
208 feature performs a sanity test for each node the global address list. 
209 This is done in order to ensure that all dynamic operation regions are 
210 properly removed from the global address list and no dangling pointers 
211 are left behind.
212
213 Disassembler: Improved generation of resource pathnames. This change 
214 improves the code that generates resource descriptor and resource tag 
215 pathnames. The original code used a bunch of str* C library functions 
216 that caused warnings on some compilers.
217
218 iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 
219 function can overwrite buffers if the calling code is not very careful. 
220 In the case of generating a module/table header, use of memmove is a 
221 better implementation.
222
223
224 3) Status of new features that have not been completed at this time:
225
226 iASL: Implementing an enhanced multiple file compilation into a single 
227 namespace feature (Status): This feature will be released soon, and 
228 allows multiple ASL files to be compiled into the same single namespace. 
229 By doing so, any unresolved external declarations as well as duplicate 
230 named object declarations can be detected during compilation (rather than 
231 later during runtime). The following commands are examples that utilize 
232 this feature:
233     iasl dsdt.asl ssdt.asl
234     iasl dsdt.asl ssdt1.asl ssdt2.asl
235     iasl dsdt.asl ssdt*.asl
236
237 ASL tutorial status: Feedback is being gathered internally and the 
238 current plan is to publish this tutorial on the ACPICA website after a 
239 final review by a tech writer.
240
241 ----------------------------------------
242 15 February 2019. Summary of changes for version 20190215:
243
244
245 0) Support for ACPI specification version 6.3:
246
247 Add PCC operation region support for the AML interpreter. This adds PCC 
248 operation region support in the AML interpreter and a default handler for 
249 acpiexec. The change also renames the PCC region address space keyword to 
250 PlatformCommChannel.
251
252 Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 
253 These methods provide OSPM with health information and device boot 
254 status.
255
256 PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 
257 defines if the trigger needs to be invoked by OSPM before or at the end 
258 of kernel crash dump processing/handling operation.
259
260 SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 
261 is used for describing devices such as heterogeneous processors, 
262 accelerators, GPUs, and IO devices with integrated compute or DMA 
263 engines.
264
265 MADT: Add support for statistical profiling in GICC. Statistical 
266 profiling extension (SPE) is an architecture-specific feature for ARM.
267
268 MADT: Add online capable flag. If this bit is set, system hardware 
269 supports enabling this processor during OS runtime.
270
271 New Error Disconnect Recover Notification value. There are a number of 
272 scenarios where system Firmware in collaboration with hardware may 
273 disconnect one or more devices from the rest of the system for purposes 
274 of error containment. Firmware can use this new notification value to 
275 alert OSPM of such a removal.
276
277 PPTT: New additional fields in Processor Structure Flags. These flags 
278 provide more information about processor topology.
279
280 NFIT/Disassembler: Change a field name from "Address Range" to "Region 
281 Type".
282
283 HMAT updates: make several existing fields to be reserved as well as 
284 rename subtable 0 to "memory proximity domain attributes".
285
286 GTDT: Add support for new GTDT Revision 3. This revision adds information 
287 for the EL2 timer.
288
289 iASL: Update the HMAT example template for new fields.
290
291 iASL: Add support for the new revision of the GTDT (Rev 3).
292
293
294 1) ACPICA kernel-resident subsystem:
295
296 AML Parser: fix the main AML parse loop to correctly skip erroneous 
297 extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
298 byte extended opcodes. If an error occurs during an AML table load, the 
299 AML parser will continue loading the table by skipping the offending 
300 opcode. This implements a "load table at any cost" philosophy.
301
302
303 2) iASL Compiler/Disassembler and Tools:
304
305 iASL: Add checks for illegal object references, such as a reference 
306 outside of method to an object within a method. Such an object is only 
307 temporary.
308
309 iASL: Emit error for creation of a zero-length operation region. Such a 
310 region is rather pointless. If encountered, a runtime error is also 
311 implemented in the interpeter.
312
313 Debugger: Fix a possible fault with the "test objects" command.
314
315 iASL: Makefile: support parent directory filenames containing embedded 
316 spaces.
317
318 iASL: Update the TPM2 template to revision 4.
319
320 iASL: Add the ability to report specific warnings or remarks as errors.
321
322 Disassembler: Disassemble OEMx tables as actual AML byte code. 
323 Previously, these tables were treated as "unknown table".
324
325 iASL: Add definition and disassembly for TPM2 revision 3.
326
327 iASL: Add support for TPM2 rev 3 compilation.
328
329
330 ----------------------------------------
331 08 January 2019. Summary of changes for version 20190108:
332
333
334 1) ACPICA kernel-resident subsystem:
335
336 Updated all copyrights to 2019. This affects all source code modules.
337
338
339 2) iASL Compiler/Disassembler and Tools:
340
341 ASL test suite (ASLTS): Updated all copyrights to 2019.
342
343 Tools: Updated all signon copyrights to 2019.
344
345 AcpiExec: Added a new option to dump extra information concerning any 
346 memory leaks detected by the internal object/cache tracking mechanism. -
347 va
348
349 iASL: Updated the table template for the TPM2 table to the newest version 
350 of the table (Revision 4)
351
352
353 ----------------------------------------
354 13 December 2018. Summary of changes for version 20181213:
355
356
357 1) ACPICA Kernel-resident Subsystem:
358
359 Fixed some buffer length issues with the GenericSerialBus, related to two 
360 of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 
361 which are rarely seen in the field. For these, the LEN field of the ASL 
362 buffer is now ignored. Hans de Goede
363
364 Implemented a new object evaluation trace mechanism for control methods 
365 and data objects. This includes nested control methods. It is 
366 particularly useful for examining the ACPI execution during system 
367 initialization since the output is relatively terse. The flag below 
368 enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
369    #define ACPI_LV_EVALUATION          0x00080000
370
371 Examples:
372    Enter evaluation       :  _SB.PCI0._INI (Method)
373    Exit evaluation        :  _SB.PCI0._INI
374    Enter evaluation       :  _OSI (Method)
375    Exit evaluation        :  _OSI
376    Enter evaluation       :  _SB.PCI0.TEST (Method)
377    Nested method call     :     _SB.PCI0.NST1
378    Exit nested method     :     _SB.PCI0.NST1
379    Exit evaluation        :  _SB.PCI0.TEST
380
381 Added two recently-defined _OSI strings. See 
382 https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
383 osi.
384    "Windows 2018"
385    "Windows 2018.2"
386
387 Update for buffer-to-string conversions via the ToHexString ASL operator. 
388 A "0x" is now prepended to each of the hex values in the output string. 
389 This provides compatibility with other ACPI implementations. The ACPI 
390 specification is somewhat vague on this issue.
391    Example output string after conversion: 
392 "0x01,0x02,0x03,0x04,0x05,0x06"
393
394 Return a run-time error for TermArg expressions within individual package 
395 elements. Although this is technically supported by the ASL grammar, 
396 other ACPI implementations do not support this either. Also, this fixes a 
397 fault if this type of construct is ever encountered (it never has been).
398
399
400 2) iASL Compiler/Disassembler and Tools:
401
402 iASL: Implemented a new compile option (-ww) that will promote individual 
403 warnings and remarks to errors. This is intended to enhance the firmware 
404 build process.
405
406 AcpiExec: Implemented a new command-line option (-eo) to support the new 
407 object evaluation trace mechanism described above.
408
409 Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 
410 instead of a "unknown table" message.
411
412 AcpiHelp: Improved support for the "special" predefined names such as 
413 _Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 
414 used for "xx" and "x".
415
416 ----------------------------------------
417 31 October 2018. Summary of changes for version 20181031:
418
419
420 An Operation Region regression was fixed by properly adding address 
421 ranges to a global list during initialization. This allows OS to 
422 accurately check for overlapping regions between native devices (such as 
423 PCI) and Operation regions as well as checking for region conflicts 
424 between two Operation Regions.
425
426 Added support for the 2-byte extended opcodes in the code/feature that 
427 attempts to continue parsing during the table load phase. Skip parsing 
428 Device declarations (and other extended opcodes) when an error occurs 
429 during parsing. Previously, only single-byte opcodes were supported.
430
431 Cleanup: Simplified the module-level code support by eliminating a 
432 useless global variable (AcpiGbl_GroupModuleLeveCode).
433
434
435 2) iASL Compiler/Disassembler and Tools:
436
437 iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 
438 could cause a fault in the preprocessor. This was an inadvertent side-
439 effect from moving more allocations/frees to the local cache/memory 
440 mechanism.
441
442 iASL: Enhanced error detection by validating that all NameSeg elements 
443 within a NamePatch actually exist. The previous behavior was spotty at 
444 best, and such errors could be improperly ignored at compiler time (never 
445 at runtime, however. There are two new error messages, as shown in the 
446 examples below:
447
448 dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
449 Error    6161 -                              ^ One or more objects within 
450 the Pathname do not exist (TTTT.BXXX)
451
452 dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
453 Error    6160 -        One or more prefix Scopes do not exist ^  
454 (BBBB.CBF1)
455
456 iASL: Disassembler/table-compiler: Added support for the static data 
457 table TPM2 revision 3 (an older version of TPM2). The support has been 
458 added for the compiler and the disassembler.
459
460 Fixed compilation of DOS format data table file on Unix/Linux systems. 
461 iASL now properly detects line continuations (\) for DOS format data 
462 table definition language files on when executing on Unix/Linux.
463
464 ----------------------------------------
465 03 October 2018. Summary of changes for version 20181003:
466
467
468 2) iASL Compiler/Disassembler and Tools:
469
470 Fixed a regression introduced in version 20180927 that could cause the 
471 compiler to fault, especially with NamePaths containing one or more 
472 carats (^). Such as: ^^_SB_PCI0
473
474 Added a new remark for the Sleep() operator when the sleep time operand 
475 is larger than one second. This is a very long time for the ASL/BIOS code 
476 and may not be what was intended by the ASL writer.
477
478 ----------------------------------------
479 27 September 2018. Summary of changes for version 20180927:
480
481
482 1) ACPICA kernel-resident subsystem:
483
484 Updated the GPE support to clear the status of all ACPI events when 
485 entering any/all sleep states in order to avoid premature wakeups. In 
486 theory, this may cause some wakeup events to be missed, but the 
487 likelihood of this is small. This change restores the original behavior 
488 of the ACPICA code in order to fix a regression seen from the previous 
489 "Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 
490 This regression could cause some systems to incorrectly wake immediately.
491
492 Updated the execution of the _REG methods during initialization and 
493 namespace loading to bring the behavior into closer conformance to the 
494 ACPI specification and other ACPI implementations:
495
496 From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
497     "Control methods must assume all operation regions are inaccessible 
498 until the _REG(RegionSpace, 1) method is executed"
499
500     "The exceptions to this rule are:
501 1.  OSPM must guarantee that the following operation regions are always 
502 accessible:
503     SystemIO operation regions.
504     SystemMemory operation regions when accessing memory returned by the 
505 System Address Map reporting interfaces."
506
507 Since the state of both the SystemIO and SystemMemory address spaces are 
508 defined by the specification to never change, this ACPICA change ensures 
509 that now _REG is never called on them. This solves some problems seen in 
510 the field and provides compatibility with other ACPI implementations. An 
511 update to the upcoming new version of the ACPI specification will help 
512 clarify this behavior.
513
514 Updated the implementation of support for the Generic Serial Bus. For the 
515 "bidirectional" protocols, the internal implementation now automatically 
516 creates a return data buffer of the maximum size (255). This handles the 
517 worst-case for data that is returned from the serial bus handler, and 
518 fixes some problems seen in the field. This new buffer is directly 
519 returned to the ASL. As such, there is no true "bidirectional" buffer, 
520 which matches the ACPI specification. This is the reason for the "double 
521 store" seen in the example ASL code in the specification, shown below:
522
523 Word Process Call (AttribProcessCall):
524     OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
525     Field(TOP1, BufferAcc, NoLock, Preserve)
526     {
527         FLD1, 8, // Virtual register at command value 1.
528     }
529
530     Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
531                              // as BUFF
532     CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
533
534     Store(0x5416, DATA)               // Save 0x5416 into the data buffer
535     Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call 
536 transaction
537                            // This is the "double store". The write to
538                            // FLD1 returns a new buffer, which is stored
539                            // back into BUFF with the second Store.
540
541
542 2) iASL Compiler/Disassembler and Tools:
543
544 iASL: Implemented detection of extraneous/redundant uses of the Offset() 
545 operator within a Field Unit list. A remark is now issued for these. For 
546 example, the first two of the Offset() operators below are extraneous. 
547 Because both the compiler and the interpreter track the offsets 
548 automatically, these Offsets simply refer to the current offset and are 
549 unnecessary. Note, when optimization is enabled, the iASL compiler will 
550 in fact remove the redundant Offset operators and will not emit any AML 
551 code for them.
552
553     OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
554     Field (OPR1)
555     {
556         Offset (0),     // Never needed
557         FLD1, 32,
558         Offset (4),     // Redundant, offset is already 4 (bytes)
559         FLD2, 8,
560         Offset (64),    // OK use of Offset.
561         FLD3, 16,
562     }
563 dsdt.asl     14:         Offset (0),
564 Remark   2158 -                 ^ Unnecessary/redundant use of Offset 
565 operator
566
567 dsdt.asl     16:         Offset (4),
568 Remark   2158 -                 ^ Unnecessary/redundant use of Offset 
569 operator
570
571 ----------------------------------------
572 10 August 2018. Summary of changes for version 20180810:
573
574
575 1) ACPICA kernel-resident subsystem:
576
577 Initial ACPI table loading: Attempt to continue loading ACPI tables 
578 regardless of malformed AML. Since migrating table initialization to the 
579 new module-level code support, the AML interpreter rejected tables upon 
580 any ACPI error encountered during table load. This is a problem because 
581 non-serious ACPI errors during table load do not necessarily mean that 
582 the entire definition block (DSDT or SSDT) is invalid. This change 
583 improves the table loading by ignoring some types of errors that can be 
584 generated by incorrect AML. This can range from object type errors, scope 
585 errors, and index errors.
586
587 Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 
588 during suspend/resume. The status of ACPI events is no longer cleared 
589 when entering the ACPI S5 system state (power off) which caused some 
590 systems to power up immediately after turning off power in certain 
591 situations. This was a functional regression. It was fixed by clearing 
592 the status of all ACPI events again when entering S5 (for system-wide 
593 suspend or hibernation the clearing of the status of all events is not 
594 desirable, as it might cause the kernel to miss wakeup events sometimes). 
595 Rafael Wysocki.
596
597
598 2) iASL Compiler/Disassembler and Tools:
599
600 AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 
601 elements listed in the initialization file were previously initialized 
602 after the table load and before executing module-level code blocks. 
603 Recent changes in the module-level code support means that the table load 
604 becomes a large control method execution. If fields are used within 
605 module-level code and we are executing with the -fi option, the 
606 initialization values were used to initialize the namespace object(s) 
607 only after the table was finished loading. This change Provides an early 
608 initialization of objects specified in the initialization file so that 
609 field unit values are populated during the table load (not after the 
610 load).
611
612 AcpiExec: Fixed a small memory leak regression that could result in 
613 warnings during exit of the utility. These warnings were similar to 
614 these:
615     0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
616     0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
617
618 ----------------------------------------
619 29 June 2018. Summary of changes for version 20180629:
620
621
622 1) iASL Compiler/Disassembler and Tools:
623
624 iASL: Fixed a regression related to the use of the ASL External 
625 statement. Error checking for the use of the External() statement has 
626 been relaxed. Previously, a restriction on the use of External meant that 
627 the referenced named object was required to be defined in a different 
628 table (an SSDT). Thus it would be an error to declare an object as an 
629 external and then define the same named object in the same table. For 
630 example:
631     DefinitionBlock (...)
632     {
633         External (DEV1)
634         Device (DEV1){...} // This was an error
635     }
636 However, this behavior has caused regressions in some existing ASL code, 
637 because there is code that depends on named objects and externals (with 
638 the same name) being declared in the same table. This change will allow 
639 the ASL code above to compile without errors or warnings.
640
641 iASL: Implemented ASL language extensions for four operators to make some 
642 of their arguments optional instead of required:
643     1) Field (RegionName, AccessType, LockRule, UpdateRule)
644     2) BankField (RegionName, BankName, BankValue,
645                 AccessType, LockRule, UpdateRule)
646     3) IndexField (IndexName, DataName,
647                 AccessType, LockRule, UpdateRule)
648 For the Field operators above, the AccessType, LockRule, and UpdateRule 
649 are now optional arguments. The default values are:
650         AccessType: AnyAcc
651         LockRule:   NoLock
652         UpdateRule: Preserve
653     4) Mutex (MutexName, SyncLevel)
654 For this operator, the SyncLevel argument is now optional. This argument 
655 is rarely used in any meaningful way by ASL code, and thus it makes sense 
656 to make it optional. The default value is:
657         SyncLevel:  0
658
659 iASL: Attempted use of the ASL Unload() operator now results in the 
660 following warning:
661     "Unload is not supported by all operating systems"
662 This is in fact very true, and the Unload operator may be completely 
663 deprecated in the near future.
664
665 AcpiExec: Fixed a regression for the -fi option (Namespace initialization 
666 file. Recent changes in the ACPICA module-level code support altered the 
667 table load/initialization sequence . This means that the table load has 
668 become a large method execution of the table itself. If Operation Region 
669 Fields are used within any module-level code and the -fi option was 
670 specified, the initialization values were populated only after the table 
671 had completely finished loading (and thus the module-level code had 
672 already been executed). This change moves the initialization of objects 
673 listed in the initialization file to before the table is executed as a 
674 method. Field unit values are now initialized before the table execution 
675 is performed.
676
677 ----------------------------------------
678 31 May 2018. Summary of changes for version 20180531:
679
680
681 1) ACPICA kernel-resident Subsystem:
682
683 Implemented additional support to help ensure that a DSDT or SSDT is 
684 fully loaded even if errors are incurred during the load. The majority of 
685 the problems that are seen is the failure of individual AML operators 
686 that occur during execution of any module-level code (MLC) existing in 
687 the table. This support adds a mechanism to abort the current ASL 
688 statement (AML opcode), emit an error message, and to simply move on to 
689 the next opcode -- instead of aborting the entire table load. This is 
690 different than the execution of a control method where the entire method 
691 is aborted upon any error. The goal is to perform a very "best effort" to 
692 load the ACPI tables. The most common MLC errors that have been seen in 
693 the field are direct references to unresolved ASL/AML symbols (referenced 
694 directly without the use of the CondRefOf operator to validate the 
695 symbol). This new ACPICA behavior is now compatible with other ACPI 
696 implementations.
697
698 Interpreter: The Unload AML operator is no longer supported for the 
699 reasons below. An AE_NOT_IMPLEMENTED exception is returned.
700 1) A correct implementation on at least some hosts may not be possible.
701 2) Other ACPI implementations do not correctly/fully support it.
702 3) It requires host device driver support which is not known to exist.
703     (To properly support namespace unload out from underneath.)
704 4) This AML operator has never been seen in the field.
705
706 Parser: Added a debug option to dump AML parse sub-trees as they are 
707 being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 
708 ACPI_DB_PARSE_TREES.
709
710 Debugger: Reduced the verbosity for errors incurred during table load and 
711 module-level code execution.
712
713 Completed an investigation into adding a namespace node "owner list" 
714 instead of the current "owner ID" associated with namespace nodes. This 
715 list would link together all nodes that are owned by an individual 
716 control method. The purpose would be to enhance control method execution 
717 by speeding up cleanup during method exit (all namespace nodes created by 
718 a method are deleted upon method termination.) Currently, the entire 
719 namespace must be searched for matching owner IDs if (and only if) the 
720 method creates named objects outside of the local scope. However, by far 
721 the most common case is that methods create objects locally, not outside 
722 the method scope. There is already an ACPICA optimization in place that 
723 only searches the entire namespace in the rare case of a method creating 
724 objects elsewhere in the namespace. Therefore, it is felt that the 
725 overhead of adding an additional pointer to each namespace node to 
726 implement the owner list makes this feature unnecessary.
727
728
729 2) iASL Compiler/Disassembler and Tools:
730
731 iASL, Disassembler, and Template generator: Implemented support for 
732 Revision D of the IORT table. Adds a new subtable that is used to specify 
733 SMMUv3 PMCGs. rmurphy-arm.
734
735 Disassembler: Restored correct table header validation for the "special" 
736 ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 
737 table header and must be special-cased. This was a regression that has 
738 been present for apparently a long time.
739
740 AcpiExec: Reduced verbosity of the local exception handler implemented 
741 within acpiexec. This handler is invoked by ACPICA upon any exceptions 
742 generated during control method execution. A new option was added: -vh 
743 restores the original verbosity level if desired.
744
745 AcpiExec: Changed the default base from decimal to hex for the -x option 
746 (set debug level). This simplifies the use of this option and matches the 
747 behavior of the corresponding iASL -x option.
748
749 AcpiExec: Restored a force-exit on multiple control-c (sigint) 
750 interrupts. This allows program termination even if other issues cause 
751 the control-c to fail.
752
753 ASL test suite (ASLTS): Added tests for the recently implemented package 
754 element resolution mechanism that allows forward references to named 
755 objects from individual package elements (this mechanism provides 
756 compatibility with other ACPI implementations.)
757
758
759 ----------------------------------------
760 8 May 2018. Summary of changes for version 20180508:
761
762
763 1) ACPICA kernel-resident subsystem:
764
765 Completed the new (recently deployed) package resolution mechanism for 
766 the Load and LoadTable ASL/AML operators. This fixes a regression that 
767 was introduced in version 20180209 that could result in an 
768 AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 
769 (SSDT) that contains package objects.
770
771
772 2) iASL Compiler/Disassembler and Tools:
773
774 AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 
775 1 MB. This change allows for table offsets within the acpidump file to be 
776 up to 8 characters. These changes are backwards compatible with existing 
777 acpidump files.
778
779
780 ----------------------------------------
781 27 April 2018. Summary of changes for version 20180427: 
782
783
784 1) ACPICA kernel-resident subsystem:
785
786 Debugger: Added support for Package objects in the "Test Objects" 
787 command. This command walks the entire namespace and evaluates all named 
788 data objects (Integers, Strings, Buffers, and now Packages).
789
790 Improved error messages for the namespace root node. Originally, the root 
791 was referred to by the confusing string "\___". This has been replaced by 
792 "Namespace Root" for clarification.
793
794 Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 
795 Ian King <colin.king@canonical.com>.
796
797
798 2) iASL Compiler/Disassembler and Tools: 
799
800 iASL: Implemented support to detect and flag illegal forward references. 
801 For compatibility with other ACPI implementations, these references are 
802 now illegal at the root level of the DSDT or SSDTs. Forward references 
803 have always been illegal within control methods. This change should not 
804 affect existing ASL/AML code because of the fact that these references 
805 have always been illegal in the other ACPI implementation.
806
807 iASL: Added error messages for the case where a table OEM ID and OEM 
808 TABLE ID strings are longer than the ACPI-defined length. Previously, 
809 these strings were simply silently truncated.
810
811 iASL: Enhanced the -tc option (which creates an AML hex file in C, 
812 suitable for import into a firmware project):
813   1) Create a unique name for the table, to simplify use of multiple 
814 SSDTs.
815   2) Add a protection #ifdef in the file, similar to a .h header file.
816 With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 
817 evan.lloyd@arm.com
818
819 AcpiExec: Added a new option, -df, to disable the local fault handler. 
820 This is useful during debugging, where it may be desired to drop into a 
821 debugger on a fault.
822
823 ----------------------------------------
824 13 March 2018. Summary of changes for version 20180313:
825
826
827 1) ACPICA kernel-resident subsystem:
828
829 Implemented various improvements to the GPE support:
830
831 1) Dispatch all active GPEs at initialization time so that no GPEs are 
832 lost.
833 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 
834 before devices are enumerated.
835 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 
836 IRQs are not lost.
837 4) Add parallel GPE handling to eliminate the possibility of dispatching 
838 the same GPE twice.
839 5) Dispatch any pending GPEs after enabling for the first time.
840
841 AcpiGetObjectInfo - removed support for the _STA method. This was causing 
842 problems on some platforms.
843
844 Added a new _OSI string, "Windows 2017.2".
845
846 Cleaned up and simplified the module-level code support. These changes 
847 are in preparation for the eventual removal of the legacy MLC support 
848 (deferred execution), replaced by the new MLC architecture which executes 
849 the MLC as a table is loaded (DSDT/SSDTs).
850
851 Changed a compile-time option to a runtime option. Changes the option to 
852 ignore ACPI table load-time package resolution errors into a runtime 
853 option. Used only for platforms that generate many AE_NOT_FOUND errors 
854 during boot. AcpiGbl_IgnorePackageResolutionErrors.
855
856 Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 
857 ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 
858 compilation errors from unused variables (seen with some compilers).
859
860
861 2) iASL Compiler/Disassembler and Tools:
862
863 ASLTS: parallelized execution in order to achieve an (approximately) 2X 
864 performance increase.
865
866 ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 
867 error reporting.
868
869 ----------------------------------------
870 09 February 2018. Summary of changes for version 20180209:
871
872
873 1) ACPICA kernel-resident subsystem:
874
875 Completed the final integration of the recent changes to Package Object 
876 handling and the module-level AML code support. This allows forward 
877 references from individual package elements when the package object is 
878 declared from within module-level code blocks. Provides compatibility 
879 with other ACPI implementations.
880
881 The new architecture for the AML module-level code has been completed and 
882 is now the default for the ACPICA code. This new architecture executes 
883 the module-level code in-line as the ACPI table is loaded/parsed instead 
884 of the previous architecture which deferred this code until after the 
885 table was fully loaded. This solves some ASL code ordering issues and 
886 provides compatibility with other ACPI implementations. At this time, 
887 there is an option to fallback to the earlier architecture, but this 
888 support is deprecated and is planned to be completely removed later this 
889 year.
890
891 Added a compile-time option to ignore AE_NOT_FOUND exceptions during 
892 resolution of named reference elements within Package objects. Although 
893 this is potentially a serious problem, it can generate a lot of 
894 noise/errors on platforms whose firmware carries around a bunch of unused 
895 Package objects. To disable these errors, define 
896 ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 
897 errors are always reported for ACPICA applications such as AcpiExec.
898
899 Fixed a regression related to the explicit type-conversion AML operators 
900 (ToXXXX). The regression was introduced early in 2017 but was not seen 
901 until recently because these operators are not fully supported by other 
902 ACPI implementations and are thus rarely used by firmware developers. The 
903 operators are defined by the ACPI specification to not implement the 
904 "implicit result object conversion". The regression incorrectly 
905 introduced this object conversion for the following explicit conversion 
906 operators:
907     ToInteger
908     ToString
909     ToBuffer
910     ToDecimalString
911     ToHexString
912     ToBCD
913     FromBCD
914
915
916 2) iASL Compiler/Disassembler and Tools:
917
918 iASL: Fixed a problem with the compiler constant folding feature as 
919 related to the ToXXXX explicit conversion operators. These operators do 
920 not support the "implicit result object conversion" by definition. Thus, 
921 ASL expressions that use these operators cannot be folded to a simple 
922 Store operator because Store implements the implicit conversion. This 
923 change uses the CopyObject operator for the ToXXXX operator folding 
924 instead. CopyObject is defined to not implement implicit result 
925 conversions and is thus appropriate for folding the ToXXXX operators.
926
927 iASL: Changed the severity of an error condition to a simple warning for 
928 the case where a symbol is declared both locally and as an external 
929 symbol. This accommodates existing ASL code.
930
931 AcpiExec: The -ep option to enable the new architecture for module-level 
932 code has been removed. It is replaced by the -dp option which instead has 
933 the opposite effect: it disables the new architecture (the default) and 
934 enables the legacy architecture. When the legacy code is removed in the 
935 future, the -dp option will be removed also.
936
937 ----------------------------------------
938 05 January 2018. Summary of changes for version 20180105:
939
940
941 1) ACPICA kernel-resident subsystem:
942
943 Updated all copyrights to 2018. This affects all source code modules.
944
945 Fixed a possible build error caused by an unresolved reference to the 
946 AcpiUtSafeStrncpy function.
947
948 Removed NULL pointer arithmetic in the various pointer manipulation 
949 macros. All "(void *) NULL" constructs are converted to "(void *) 0". 
950 This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
951
952 Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 
953 Mittal.
954
955
956 2) iASL Compiler/Disassembler and Tools:
957
958 ASLTS: Updated all copyrights to 2018.
959
960 Tools: Updated all signon copyrights to 2018.
961
962 AcpiXtract: Fixed a regression related to ACPI table signatures where the 
963 signature was truncated to 3 characters (instead of 4).
964
965 AcpiExec: Restore the original terminal mode after the use of the -v and 
966 -vd options.
967
968 ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
969
970 ----------------------------------------
971 14 December 2017. Summary of changes for version 20171214:
972
973
974 1) ACPICA kernel-resident subsystem:
975
976 Fixed a regression in the external (public) AcpiEvaluateObjectTyped 
977 interface where the optional "pathname" argument had inadvertently become 
978 a required argument returning an error if omitted (NULL pointer 
979 argument).
980
981 Fixed two possible memory leaks related to the recently developed "late 
982 resolution" of reference objects within ASL Package Object definitions.
983
984 Added two recently defined _OSI strings: "Windows 2016" and "Windows 
985 2017". Mario Limonciello.
986
987 Implemented and deployed a safer version of the C library function 
988 strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the 
989 creation of unterminated strings as a possible result of a standard 
990 strncpy.
991
992 Cleaned up and restructured the global variable file (acglobal.h). There 
993 are many changes, but no functional changes.
994
995
996 2) iASL Compiler/Disassembler and Tools:
997
998 iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 
999 optional OemData field at the end of the table was incorrectly required 
1000 for proper compilation. It is now correctly an optional field.
1001
1002 ASLTS: The entire suite was converted from standard ASL to the ASL+ 
1003 language, using the ASL-to-ASL+ converter which is integrated into the 
1004 iASL compiler. A binary compare of all output files has verified the 
1005 correctness of the conversion.
1006
1007 iASL: Fixed the source code build for platforms where "char" is unsigned. 
1008 This affected the iASL lexer only. Jung-uk Kim.
1009
1010 ----------------------------------------
1011 10 November 2017. Summary of changes for version 20171110:
1012
1013
1014 1) ACPICA kernel-resident subsystem:
1015
1016 This release implements full support for ACPI 6.2A:
1017     NFIT - Added a new subtable, "Platform Capabilities Structure"
1018 No other changes to ACPICA were required, since ACPI 6.2A is primarily an 
1019 errata release of the specification.
1020
1021 Other ACPI table changes:
1022     IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1023     PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 
1024 Linton
1025
1026 Utilities: Modified the string/integer conversion functions to use 
1027 internal 64-bit divide support instead of a native divide. On 32-bit 
1028 platforms, a 64-bit divide typically requires a library function which 
1029 may not be present in the build (kernel or otherwise).
1030
1031 Implemented a targeted error message for timeouts returned from the 
1032 Embedded Controller device driver. This is seen frequently enough to 
1033 special-case an AE_TIME returned from an EC operation region access:
1034     "Timeout from EC hardware or EC device driver"
1035
1036 Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 
1037 runtime error messages have the identical prefix.
1038
1039
1040 2) iASL Compiler/Disassembler and Tools:
1041
1042 AcpiXtract: Fixed a problem with table header detection within the 
1043 acpidump file. Processing a table could be ended early if a 0x40 (@) 
1044 appears in the original binary table, resulting in the @ symbol appearing 
1045 in the decoded ASCII field at the end of the acpidump text line. The 
1046 symbol caused acpixtract to incorrectly think it had reached the end of 
1047 the current table and the beginning of a new table.
1048
1049 AcpiXtract: Added an option (-f) to ignore some errors during table 
1050 extraction. This initial implementation ignores non-ASCII and non-
1051 printable characters found in the acpidump text file.
1052
1053 TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 
1054 for ASLTS. This feature is used to track memory allocations from 
1055 different memory caches within the ACPICA code. At the end of an ASLTS 
1056 run, these memory statistics are recorded and stored in a log file.
1057
1058 Debugger (user-space version): Implemented a simple "Background" command. 
1059 Creates a new thread to execute a control method in the background, while 
1060 control returns to the debugger prompt to allow additional commands.
1061     Syntax: Background <Namepath> [Arguments]
1062
1063 ----------------------------------------
1064 29 September 2017. Summary of changes for version 20170929:
1065
1066
1067 1) ACPICA kernel-resident subsystem:
1068
1069 Redesigned and implemented an improved ASL While() loop timeout 
1070 mechanism. This mechanism is used to prevent infinite loops in the kernel 
1071 AML interpreter caused by either non-responsive hardware or incorrect AML 
1072 code. The new implementation uses AcpiOsGetTimer instead of a simple 
1073 maximum loop count, and is thus more accurate and constant across 
1074 different machines. The default timeout is currently 30 seconds, but this 
1075 may be adjusted later.
1076
1077 Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 
1078 better reflect the new implementation of the loop timeout mechanism.
1079
1080 Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 
1081 and to fix an off-by-one error. Jung-uk Kim.
1082
1083 Fixed an EFI build problem by updating the makefiles to for a new file 
1084 that was added, utstrsuppt.c
1085
1086
1087 2) iASL Compiler/Disassembler and Tools:
1088
1089 Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 
1090 includes support in the table disassembler, compiler, and template 
1091 generator.
1092
1093 iASL: Added an exception for an illegal type of recursive method 
1094 invocation. If a method creates named objects, the first recursive call 
1095 will fail at runtime. This change adds an error detection at compile time 
1096 to catch the problem up front. Note: Marking such a method as 
1097 "serialized" will not help with this problem, because the same thread can 
1098 acquire the method mutex more than once. Example compiler and runtime 
1099 output:
1100
1101     Method (MTH1)
1102     {
1103         Name (INT1, 1)
1104         MTH1 ()
1105     }
1106
1107     dsdt.asl     22: MTH1 ()
1108     Error    6152 -  ^ Illegal recursive call to method
1109                        that creates named objects (MTH1)
1110
1111 Previous runtime exception:
1112     ACPI Error: [INT1] Namespace lookup failure,
1113     AE_ALREADY_EXISTS (20170831/dswload2-465)
1114
1115 iASL: Updated support for External() opcodes to improve namespace 
1116 management and error detection. These changes are related to issues seen 
1117 with multiple-segment namespace pathnames within External declarations, 
1118 such as below:
1119
1120     External(\_SB.PCI0.GFX0, DeviceObj)
1121     External(\_SB.PCI0.GFX0.ALSI)
1122
1123 iASL: Implemented support for multi-line error/warning messages. This 
1124 enables more detailed and helpful error messages as below, from the 
1125 initial deployment for the duplicate names error:
1126
1127     DSDT.iiii   1692:       Device(PEG2) {
1128     Error    6074 -                  ^ Name already exists in scope 
1129 (PEG2)
1130
1131         Original name creation/declaration below:
1132         DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1133
1134 AcpiXtract: Added additional flexibility to support differing input hex 
1135 dump formats. Specifically, hex dumps that contain partial disassembly 
1136 and/or comments within the ACPI table data definition. There exist some 
1137 dump utilities seen in the field that create this type of hex dump (such 
1138 as Simics). For example:
1139
1140     DSDT @ 0xdfffd0c0 (10999 bytes)
1141         Signature DSDT
1142         Length 10999
1143         Revision 1
1144         Checksum 0xf3 (Ok)
1145         OEM_ID BXPC
1146         OEM_table_id BXDSDT
1147         OEM_revision 1
1148         Creator_id 1280593481
1149         Creator_revision 537399345
1150       0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1151       ...
1152       2af0: 5f 4c 30 46 00 a4 01
1153
1154 Test suite: Miscellaneous changes/fixes:
1155     More cleanup and simplification of makefiles
1156     Continue compilation of test cases after a compile failure
1157     Do not perform binary compare unless both files actually exist
1158
1159 iASL: Performed some code/module restructuring. Moved all memory 
1160 allocation functions to new modules. Two new files, aslallocate.c and 
1161 aslcache.c
1162
1163 ----------------------------------------
1164 31 August 2017. Summary of changes for version 20170831:
1165
1166
1167 1) ACPICA kernel-resident subsystem:
1168
1169 Implemented internal support for full 64-bit addresses that appear in all 
1170 Generic Address Structure (GAS) structures. Previously, only the lower 32 
1171 bits were used. Affects the use of GAS structures in the FADT and other 
1172 tables, as well as the GAS structures passed to the AcpiRead and 
1173 AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1174
1175 Added header support for the PDTT ACPI table (Processor Debug Trigger 
1176 Table). Full support in the iASL Data Table Compiler and disassembler is 
1177 forthcoming.
1178
1179
1180 2) iASL Compiler/Disassembler and Tools:
1181
1182 iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 
1183 Properties Topology Table) where a flag bit was specified in the wrong 
1184 bit position ("Line Size Valid", bit 6).
1185
1186 iASL: Implemented support for Octal integer constants as defined by the 
1187 ASL language grammar, per the ACPI specification. Any integer constant 
1188 that starts with a zero is an octal constant. For example,
1189     Store (037777, Local0) /* Octal constant */
1190     Store (0x3FFF, Local0) /* Hex equivalent */
1191     Store (16383,  Local0) /* Decimal equivalent */
1192
1193 iASL: Improved overflow detection for 64-bit string conversions during 
1194 compilation of integer constants. "Overflow" in this case means a string 
1195 that represents an integer that is too large to fit into a 64-bit value. 
1196 Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 
1197 the low-order 32 bits with a warning, as previously implemented. Several 
1198 new exceptions are defined that indicate a 64-bit overflow, as well as 
1199 the base (radix) that was used during the attempted conversion. Examples:
1200     Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1201     Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1202     Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1203
1204 iASL: Added a warning for the case where a ResourceTemplate is declared 
1205 with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 
1206 this case, the resulting template is created with a single END_TAG 
1207 descriptor, which is essentially useless.
1208
1209 iASL: Expanded the -vw option (ignore specific warnings/remarks) to 
1210 include compilation error codes as well.
1211
1212 ----------------------------------------
1213 28 July 2017. Summary of changes for version 20170728:
1214
1215
1216 1) ACPICA kernel-resident subsystem:
1217
1218 Fixed a regression seen with small resource descriptors that could cause 
1219 an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1220
1221 AML interpreter: Implemented a new feature that allows forward references 
1222 from individual named references within package objects that are 
1223 contained within blocks of "module-level code". This provides 
1224 compatibility with other ACPI implementations and supports existing 
1225 firmware that depends on this feature. Example:
1226
1227     Name (ABCD, 1)
1228     If (ABCD)                       /* An If() at module-level */
1229     {
1230         Name (PKG1, Package()
1231         {
1232             INT1                    /* Forward reference to object INT1 
1233 */
1234         })
1235         Name (INT1, 0x1234)
1236     }
1237
1238 AML Interpreter: Fixed a problem with the Alias() operator where aliases 
1239 to some ASL objects were not handled properly. Objects affected are: 
1240 Mutex, Event, and OperationRegion.
1241
1242 AML Debugger: Enhanced to properly handle AML Alias objects. These 
1243 objects have one level of indirection which was not fully supported by 
1244 the debugger.
1245
1246 Table Manager: Added support to detect and ignore duplicate SSDTs within 
1247 the XSDT/RSDT. This error in the XSDT has been seen in the field.
1248
1249 EFI and EDK2 support:
1250     Enabled /WX flag for MSVC builds
1251     Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1252     Added local support for 64-bit multiply and shift operations
1253     Added support to compile acpidump.efi on Windows
1254     Added OSL function stubs for interfaces not used under EFI
1255
1256 Added additional support for the _DMA predefined name. _DMA returns a 
1257 buffer containing a resource template. This change add support within the 
1258 resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 
1259 resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1260
1261
1262 2) iASL Compiler/Disassembler and Tools:
1263
1264 iASL: Fixed a problem where the internal input line buffer(s) could 
1265 overflow if there are very long lines in the input ASL source code file. 
1266 Implemented buffer management that automatically increases the size of 
1267 the buffers as necessary.
1268
1269 iASL: Added an option (-vx) to "expect" particular remarks, warnings and 
1270 errors. If the specified exception is not raised during compilation, the 
1271 compiler emits an error. This is intended to support the ASL test suite, 
1272 but may be useful in other contexts.
1273
1274 iASL: Implemented a new predefined macro, __METHOD__, which returns a 
1275 string containing the name of the current control method that is being 
1276 compiled.
1277
1278 iASL: Implemented debugger and table compiler support for the SDEI ACPI 
1279 table (Software Delegated Exception Interface). James Morse 
1280 <james.morse@arm.com>
1281
1282 Unix/Linux makefiles: Added an option to disable compile optimizations. 
1283 The disable occurs when the NOOPT flag is set to TRUE. 
1284 theracermaster@gmail.com
1285
1286 Acpidump: Added support for multiple DSDT and FACS tables. This can occur 
1287 when there are different tables for 32-bit versus 64-bit.
1288
1289 Enhanced error reporting for the ASL test suite (ASLTS) by removing 
1290 unnecessary/verbose text, and emit the actual line number where an error 
1291 has occurred. These changes are intended to improve the usefulness of the 
1292 test suite.
1293
1294 ----------------------------------------
1295 29 June 2017. Summary of changes for version 20170629:
1296
1297
1298 1) ACPICA kernel-resident subsystem:
1299
1300 Tables: Implemented a deferred ACPI table verification. This is useful 
1301 for operating systems where the tables cannot be verified in the early 
1302 initialization stage due to early memory mapping limitations on some 
1303 architectures. Lv Zheng.
1304
1305 Tables: Removed the signature validation for dynamically loaded tables. 
1306 Provides compatibility with other ACPI implementations. Previously, only 
1307 SSDT tables were allowed, as per the ACPI specification. Now, any table 
1308 signature can be used via the Load() operator. Lv Zheng.
1309
1310 Tables: Fixed several mutex issues that could cause errors during table 
1311 acquisition. Lv Zheng.
1312
1313 Tables: Fixed a problem where an ACPI warning could be generated if a 
1314 null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1315
1316 Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 
1317 AcpiPutTable interfaces. This applies to the "late stage" table loading 
1318 when the use of AcpiPutTable is no longer required (since the system 
1319 memory manager is fully running and available). Lv Zheng.
1320
1321 Fixed/Reverted a regression during processing of resource descriptors 
1322 that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 
1323 exception in this case.
1324
1325 Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 
1326 I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1327
1328 Interpreter: Fixed a possible fault if an Alias operator with an invalid 
1329 or duplicate target is encountered during Alias creation in 
1330 AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1331
1332 Added an option to use designated initializers for function pointers. 
1333 Kees Cook <keescook@google.com>
1334
1335
1336 2) iASL Compiler/Disassembler and Tools:
1337
1338 iASL: Allow compilation of External declarations with target pathnames 
1339 that refer to existing named objects within the table. Erik Schmauss.
1340
1341 iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 
1342 FieldUnit name also is declared via External in the same table. Erik 
1343 Schmauss.
1344
1345 iASL: Allow existing scope names within pathnames used in External 
1346 statements. For example:
1347     External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1348     Device (ABCD)
1349
1350 iASL: IORT ACPI table: Implemented changes required to decode the new 
1351 Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 
1352 compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1353
1354 Disassembler: Don't abort disassembly on errors from External() 
1355 statements. Erik Schmauss.
1356
1357 Disassembler: fixed a possible fault when one of the Create*Field 
1358 operators references a Resource Template. ACPICA Bugzilla 1396.
1359
1360 iASL: In the source code, resolved some naming inconsistences across the 
1361 parsing support. Fixes confusion between "Parse Op" and "Parse Node". 
1362 Adds a new file, aslparseop.c
1363
1364 ----------------------------------------
1365 31 May 2017. Summary of changes for version 20170531:
1366
1367
1368 0) ACPI 6.2 support:
1369
1370 The ACPI specification version 6.2 has been released and is available at
1371 http://uefi.org/specifications
1372
1373 This version of ACPICA fully supports the ACPI 6.2 specification. Changes 
1374 are summarized below.
1375
1376 New ACPI tables (Table Compiler/Disassembler/Templates):
1377     HMAT (Heterogeneous Memory Attributes Table)
1378     WSMT (Windows SMM Security Mitigation Table)
1379     PPTT (Processor Properties Topology Table)
1380
1381 New subtables for existing ACPI tables:
1382     HEST (New subtable, Arch-deferred machine check)
1383     SRAT (New subtable, Arch-specific affinity structure)
1384     PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1385
1386 Simple updates for existing ACPI tables:
1387     BGRT (two new flag bits)
1388     HEST (New bit defined for several subtables, GHES_ASSIST)
1389
1390 New Resource Descriptors and Resource macros (Compiler/Disassembler):
1391     PinConfig()
1392     PinFunction()
1393     PinGroup()
1394     PinGroupConfig()
1395     PinGroupFunction()
1396     New type for hardware error notification (section 18.3.2.9)
1397
1398 New predefined names/methods (Compiler/Interpreter):
1399     _HMA (Heterogeneous Memory Attributes)
1400     _LSI (Label Storage Information)
1401     _LSR (Label Storage Read)
1402     _LSW (Label Storage Write)
1403
1404 ASL grammar/macro changes (Compiler):
1405     For() ASL macro, implemented with the AML while operator
1406     Extensions to Concatenate operator
1407     Support for multiple definition blocks in same ASL file
1408     Clarification for Buffer operator
1409     Allow executable AML code underneath all scopes (Devices, etc.)
1410     Clarification/change for the _OSI return value
1411     ASL grammar update for reference operators
1412     Allow a zero-length string for AML filename in DefinitionBlock
1413
1414 Miscellaneous:
1415     New device object notification value
1416     Remove a notify value (0x0C) for graceful shutdown
1417     New UUIDs for processor/cache properties and
1418         physical package property
1419     New _HID, ACPI0014 (Wireless Power Calibration Device)
1420
1421
1422 1) ACPICA kernel-resident subsystem:
1423
1424 Added support to disable ACPI events on hardware-reduced platforms. 
1425 Eliminates error messages of the form "Could not enable fixed event". Lv 
1426 Zheng
1427
1428 Fixed a problem using Device/Thermal objects with the ObjectType and 
1429 DerefOf ASL operators. This support had not been fully/properly 
1430 implemented.
1431
1432 Fixed a problem where if a Buffer object containing a resource template 
1433 was longer than the actual resource template, an error was generated -- 
1434 even though the AML is legal. This case has been seen in the field.
1435
1436 Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 
1437 The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1438
1439 Added header file changes for the TPM2 ACPI table. Update to new version 
1440 of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1441
1442 Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 
1443 These interfaces are intended to be used only in conjunction with the 
1444 predefined _DLM method (Device Lock Method). "This object appears in a 
1445 device scope when AML access to the device must be synchronized with the 
1446 OS environment".
1447
1448 Example Code and Data Size: These are the sizes for the OS-independent 
1449 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1450 debug version of the code includes the debug output trace mechanism and 
1451 has a much larger code and data size.
1452
1453   Current Release:
1454     Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1455     Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
1456   Previous Release:
1457     Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1458     Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1459
1460
1461 2) iASL Compiler/Disassembler and Tools:
1462
1463 iASL: Fixed a problem where an External() declaration could not refer to 
1464 a Field Unit. Erik Schmauss.
1465
1466 Disassembler: Improved support for the Switch/Case operators. This 
1467 feature will disassemble AML code back to the original Switch operators 
1468 when possible, instead of an If..Else sequence. David Box
1469
1470 iASL and disassembler: Improved the handling of multiple extraneous 
1471 parentheses for both ASL input and disassembled ASL output.
1472
1473 Improved the behavior of the iASL compiler and disassembler to detect 
1474 improper use of external declarations
1475
1476 Disassembler: Now aborts immediately upon detection of an unknown AML 
1477 opcode. The AML parser has no real way to recover from this, and can 
1478 result in the creation of an ill-formed parse tree that causes errors 
1479 later during the disassembly.
1480
1481 All tools: Fixed a problem where the Unix application OSL did not handle 
1482 control-c correctly. For example, a control-c could incorrectly wake the 
1483 debugger.
1484
1485 AcpiExec: Improved the Control-C handling and added a handler for 
1486 segmentation faults (SIGSEGV). Supports both Windows and Unix-like 
1487 environments.
1488
1489 Reduced the verbosity of the generic unix makefiles. Previously, each 
1490 compilation displayed the full set of compiler options. This has been 
1491 eliminated as the options are easily inspected within the makefiles. Each 
1492 compilation now results in a single line of output.
1493
1494 ----------------------------------------
1495 03 March 2017. Summary of changes for version 20170303:
1496
1497
1498 0) ACPICA licensing:
1499
1500 The licensing information at the start of each source code module has 
1501 been updated. In addition to the Intel license, the dual GPLv2/BSD 
1502 license has been added for completeness. Now, a single version of the 
1503 source code should be suitable for all ACPICA customers. This is the 
1504 major change for this release since it affects all source code modules.
1505
1506
1507 1) ACPICA kernel-resident subsystem: 
1508
1509 Fixed two issues with the common asltypes.h header that could cause 
1510 problems in some environments: (Kim Jung-uk)
1511     Removed typedef for YY_BUFFER_STATE ?
1512        Fixes an error with earlier versions of Flex.
1513     Removed use of FILE typedef (which is only defined in stdio.h)
1514
1515
1516 2) iASL Compiler/Disassembler and Tools: 
1517
1518 Disassembler: fixed a regression introduced in 20170224. A fix for a 
1519 memory leak related to resource descriptor tags (names) could fault when 
1520 the disassembler was generated with 64-bit compilers.
1521
1522 The ASLTS test suite has been updated to implement a new testing 
1523 architecture. During generation of the suite from ASL source, both the 
1524 ASL and ASL+ compilers are now validated, as well as the disassembler 
1525 itself (Erik Schmauss). The architecture executes as follows:
1526
1527     For every ASL source module:
1528         Compile (legacy ASL compilation)
1529         Disassemble the resulting AML to ASL+ source code
1530         Compile the new ASL+ module
1531         Perform a binary compare on the legacy AML and the new ASL+ AML
1532     The ASLTS suite then executes normally using the AML binaries.
1533
1534 ----------------------------------------
1535 24 February 2017. Summary of changes for version 20170224:
1536
1537
1538 1) ACPICA kernel-resident subsystem:
1539
1540 Interpreter: Fixed two issues with the control method return value auto-
1541 repair feature, where an attempt to double-delete an internal object 
1542 could result in an ACPICA warning (for _CID repair and others). No fault 
1543 occurs, however, because the attempted deletion (actually a release to an 
1544 internal cache) is detected and ignored via object poisoning.
1545
1546 Debugger: Fixed an AML interpreter mutex issue during the single stepping 
1547 of control methods. If certain debugger commands are executed during 
1548 stepping, a mutex acquire/release error could occur. Lv Zheng.
1549
1550 Fixed some issues generating ACPICA with the Intel C compiler by 
1551 restoring the original behavior and compiler-specific include file in 
1552 acenv.h. Lv Zheng.
1553
1554 Example Code and Data Size: These are the sizes for the OS-independent 
1555 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1556 debug version of the code includes the debug output trace mechanism and 
1557 has a much larger code and data size.
1558
1559   Current Release:
1560     Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1561     Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1562   Previous Release:
1563     Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1564     Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1565
1566
1567 2) iASL Compiler/Disassembler and Tools:
1568
1569 iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 
1570 tool has been designed, implemented, and included in this release. The 
1571 key feature of this utility is that the original comments within the 
1572 input ASL file are preserved during the conversion process, and included 
1573 within the converted ASL+ file -- thus creating a transparent conversion 
1574 of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1575
1576     Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with 
1577 converted code
1578
1579 iASL/Disassembler: Improved the detection and correct disassembly of 
1580 Switch/Case operators. This feature detects sequences of if/elseif/else 
1581 operators that originated from ASL Switch/Case/Default operators and 
1582 emits the original operators. David Box.
1583
1584 iASL: Improved the IORT ACPI table support in the following areas. Lv 
1585 Zheng:
1586     Clear MappingOffset if the MappingCount is zero.
1587     Fix the disassembly of the SMMU GSU interrupt offset.
1588     Update the template file for the IORT table.
1589
1590 Disassembler: Enhanced the detection and disassembly of resource 
1591 template/descriptor within a Buffer object. An EndTag descriptor is now 
1592 required to have a zero second byte, since all known ASL compilers emit 
1593 this. This helps eliminate incorrect decisions when a buffer is 
1594 disassembled (false positives on resource templates).
1595
1596 ----------------------------------------
1597 19 January 2017. Summary of changes for version 20170119:
1598
1599
1600 1) General ACPICA software:
1601
1602 Entire source code base: Added the 2017 copyright to all source code 
1603 legal/licensing module headers and utility/tool signons. This includes 
1604 the standard Linux dual-license header. This affects virtually every file 
1605 in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 
1606 the ACPICA test suite.
1607
1608
1609 2) iASL Compiler/Disassembler and Tools:
1610
1611 iASL: Removed/fixed an inadvertent remark when a method argument 
1612 containing a reference is used as a target operand within the method (and 
1613 never used as a simple argument), as in the example below. Jeffrey Hugo.
1614
1615     dsdt.asl   1507:    Store(0x1, Arg0)
1616     Remark   2146 -                ^ Method Argument is never used (Arg0)
1617
1618 All tools: Removed the bit width of the compiler that generated the tool 
1619 from the common signon for all user space tools. This proved to be 
1620 confusing and unnecessary. This includes similar removal of HARDWARE_NAME 
1621 from the generic makefiles (Thomas Petazzoni). Example below.
1622
1623     Old:
1624     ASL+ Optimizing Compiler version 20170119-32
1625     ASL+ Optimizing Compiler version 20170119-64
1626
1627     New:
1628     ASL+ Optimizing Compiler version 20170119
1629
1630 ----------------------------------------
1631 22 December 2016. Summary of changes for version 20161222:
1632
1633
1634 1) ACPICA kernel-resident subsystem:
1635
1636 AML Debugger: Implemented a new mechanism to simplify and enhance 
1637 debugger integration into all environments, including kernel debuggers 
1638 and user-space utilities, as well as remote debug services. This 
1639 mechanism essentially consists of new OSL interfaces to support debugger 
1640 initialization/termination, as well as wait/notify interfaces to perform 
1641 the debugger handshake with the host. Lv Zheng.
1642
1643     New OSL interfaces:
1644         AcpiOsInitializeDebugger (void)
1645         AcpiOsTerminateDebugger (void)
1646         AcpiOsWaitCommandReady (void)
1647         AcpiOsNotifyCommandComplete (void)
1648
1649     New OS services layer:
1650         osgendbg.c -- Example implementation, and used for AcpiExec
1651
1652 Update for Generic Address Space (GAS) support: Although the AccessWidth 
1653 and/or BitOffset fields of the GAS are not often used, this change now 
1654 fully supports these fields. This affects the internal support for FADT 
1655 registers, registers in other ACPI data tables, and the AcpiRead and 
1656 AcpiWrite public interfaces. Lv Zheng.
1657
1658 Sleep support: In order to simplify integration of ACPI sleep for the 
1659 various host operating systems, a new OSL interface has been introduced. 
1660 AcpiOsEnterSleep allows the host to perform any required operations 
1661 before the final write to the sleep control register(s) is performed by 
1662 ACPICA. Lv Zheng.
1663
1664     New OSL interface:
1665         AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1666
1667     Called from these internal interfaces:
1668         AcpiHwLegacySleep
1669         AcpiHwExtendedSleep
1670
1671 EFI support: Added a very small EFI/ACPICA example application. Provides 
1672 a simple demo for EFI integration, as well as assisting with resolution 
1673 of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1674
1675     source/tools/efihello/efihello.c
1676
1677 Local C library: Implemented several new functions to enhance ACPICA 
1678 portability, for environments where these clib functions are not 
1679 available (such as EFI). Lv Zheng:
1680     putchar
1681     getchar
1682     strpbrk
1683     strtok
1684     memmove
1685
1686 Fixed a regression where occasionally a valid resource descriptor was 
1687 incorrectly detected as invalid at runtime, and a 
1688 AE_AML_NO_RESOURCE_END_TAG was returned.
1689
1690 Fixed a problem with the recently implemented support that enables 
1691 control method invocations as Target operands to many ASL operators. 
1692 Warnings of this form: "Needed type [Reference], found [Processor]" were 
1693 seen at runtime for some method invocations.
1694
1695 Example Code and Data Size: These are the sizes for the OS-independent 
1696 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1697 debug version of the code includes the debug output trace mechanism and 
1698 has a much larger code and data size.
1699
1700   Current Release:
1701     Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1702     Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
1703   Previous Release:
1704     Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1705     Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1706
1707
1708 2) iASL Compiler/Disassembler and Tools:
1709
1710 Disassembler: Enhanced output by adding the capability to detect and 
1711 disassemble ASL Switch/Case statements back to the original ASL source 
1712 code instead of if/else blocks. David Box.
1713
1714 AcpiHelp: Split a large file into separate files based upon 
1715 functionality/purpose. New files are:
1716     ahaml.c
1717     ahasl.c
1718
1719 ----------------------------------------
1720 17 November 2016. Summary of changes for version 20161117:
1721
1722
1723 1) ACPICA kernel-resident subsystem:
1724
1725 Table Manager: Fixed a regression introduced in 20160729, "FADT support 
1726 cleanup". This was an attempt to remove all references in the source to 
1727 the FADT version 2, which never was a legal version number. It was 
1728 skipped because it was an early version of 64-bit support that was 
1729 eventually abandoned for the current 64-bit support.
1730
1731 Interpreter: Fixed a problem where runtime implicit conversion was 
1732 incorrectly disabled for the ASL operators below. This brings the 
1733 behavior into compliance with the ACPI specification:
1734     FromBCD
1735     ToBCD
1736     ToDecimalString
1737     ToHexString
1738     ToInteger
1739     ToBuffer
1740
1741 Table Manager: Added a new public interface, AcpiPutTable, used to 
1742 release and free an ACPI table returned by AcpiGetTable and related 
1743 interfaces. Lv Zheng.
1744
1745 Example Code and Data Size: These are the sizes for the OS-independent 
1746 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1747 debug version of the code includes the debug output trace mechanism and 
1748 has a much larger code and data size.
1749
1750   Current Release:
1751     Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1752     Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1753   Previous Release:
1754     Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1755     Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1756
1757
1758 2) iASL Compiler/Disassembler and Tools:
1759
1760 Disassembler: Fixed a regression for disassembly of Resource Template. 
1761 Detection of templates in the AML stream missed some types of templates.
1762
1763 iASL: Fixed a problem where an Access Size error was returned for the PCC 
1764 address space when the AccessSize of the GAS register is greater than a 
1765 DWORD. Hoan Tran.
1766
1767 iASL: Implemented several grammar changes for the operators below. These 
1768 changes are slated for the next version of the ACPI specification:
1769     RefOf        - Disallow method invocation as an operand
1770     CondRefOf    - Disallow method invocation as an operand
1771     DerefOf      - Disallow operands that use the result from operators 
1772 that
1773                    do not return a reference (Changed TermArg to 
1774 SuperName).
1775
1776 iASL: Control method invocations are now allowed for Target operands, as 
1777 per the ACPI specification. Removed error for using a control method 
1778 invocation as a Target operand.
1779
1780 Disassembler: Improved detection of Resource Templates, Unicode, and 
1781 Strings within Buffer objects. These subtypes do not contain a specific 
1782 opcode to indicate the originating ASL code, and they must be detected by 
1783 other means within the disassembler. 
1784
1785 iASL: Implemented an optimization improvement for 32-bit ACPI tables 
1786 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 
1787 only after 64-bit to 32-bit truncation. A truncation warning message is 
1788 still emitted, however.
1789
1790 AcpiXtract: Implemented handling for both types of line terminators (LF 
1791 or CR/LF) so that it can accept AcpiDump output files from any system. 
1792 Peter Wu.
1793
1794 AcpiBin: Added two new options for comparing AML files:
1795     -a: compare and display ALL mismatches
1796     -o: start compare at this offset into the second file
1797
1798 ----------------------------------------
1799 30 September 2016. Summary of changes for version 20160930:
1800
1801
1802 1) ACPICA kernel-resident subsystem:
1803
1804 Fixed a regression in the internal AcpiTbFindTable function where a non 
1805 AE_OK exception could inadvertently be returned even if the function did 
1806 not fail. This problem affects the following operators:
1807     DataTableRegion
1808     LoadTable
1809
1810 Fixed a regression in the LoadTable operator where a load to any 
1811 namespace location other than the root no longer worked properly.
1812
1813 Increased the maximum loop count value that will result in the 
1814 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 
1815 prevent infinite loops within the AML interpreter and thus the host OS 
1816 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 
1817 1,048,575).
1818
1819 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 
1820 acpixf.h file. This allows hosts to easily configure the maximum loop 
1821 count at runtime.
1822
1823 Removed an illegal character in the strtoul64.c file. This character 
1824 caused errors with some C compilers.
1825
1826 Example Code and Data Size: These are the sizes for the OS-independent 
1827 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1828 debug version of the code includes the debug output trace mechanism and 
1829 has a much larger code and data size.
1830
1831   Current Release:
1832     Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1833     Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1834   Previous Release:
1835     Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
1836     Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1837
1838
1839 2) iASL Compiler/Disassembler and Tools:
1840
1841 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 
1842 the simpler ASL ElseIf keyword. During the conversion, a trailing If 
1843 block could be lost and missing from the disassembled output.
1844
1845 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 
1846 the missing rule caused a parse error when using the Index operator as an 
1847 operand to ObjectType. This construct now compiles properly. Example:
1848     ObjectType(PKG1[4]).
1849
1850 iASL: Correctly handle unresolved symbols in the hardware map file (-lm 
1851 option). Previously, unresolved symbols could cause a protection fault. 
1852 Such symbols are now marked as unresolved in the map file.
1853
1854 iASL: Implemented support to allow control method invocations as an 
1855 operand to the ASL DeRefOf operator. Example:
1856     DeRefOf(MTH1(Local0))
1857
1858 Disassembler: Improved support for the ToPLD ASL macro. Detection of a 
1859 possible _PLD buffer now includes examination of both the normal buffer 
1860 length (16 or 20) as well as the surrounding AML package length.
1861
1862 Disassembler: Fixed a problem with the decoding of complex expressions 
1863 within the Divide operator for ASL+. For the case where both the quotient 
1864 and remainder targets are specified, the entire statement cannot be 
1865 disassembled. Previously, the output incorrectly contained a mix of ASL- 
1866 and ASL+ operators. This mixed statement causes a syntax error when 
1867 compiled. Example:
1868     Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly 
1869 disassembled to:
1870     Divide (INT1 + 6, 128, RSLT, QUOT)
1871
1872 iASL/Tools: Added support to process AML and non-AML ACPI tables 
1873 consistently. For the disassembler and AcpiExec, allow all types of ACPI 
1874 tables (AML and data tables). For the iASL -e option, allow only AML 
1875 tables (DSDT/SSDT).
1876
1877 ----------------------------------------
1878 31 August 2016. Summary of changes for version 20160831:
1879
1880
1881 1) ACPICA kernel-resident subsystem:
1882
1883 Improve support for the so-called "module-level code", which is defined 
1884 to be math, logical and control AML opcodes that appear outside of any 
1885 control method. This change improves the support by adding more opcodes 
1886 that can be executed in the manner. Some other issues have been solved, 
1887 and the ASL grammar changes to support such code under all scope 
1888 operators (Device, etc.) are complete. Lv Zheng.
1889
1890 UEFI support: these OSL functions have been implemented. This is an 
1891 additional step toward supporting the AcpiExec utility natively (with 
1892 full hardware access) under UEFI. Marcelo Ferreira.
1893     AcpiOsReadPciConfiguration
1894     AcpiOsWritePciConfiguration
1895
1896 Fixed a possible mutex error during control method auto-serialization. Lv 
1897 Zheng. 
1898
1899 Updated support for the Generic Address Structure by fully implementing 
1900 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 
1901 Zheng.
1902
1903 Updated the return value for the internal _OSI method. Instead of 
1904 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 
1905 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 
1906 implementations, and will be reflected and clarified in the next version 
1907 of the ACPI specification.
1908
1909 Implemented two new table events that can be passed to an ACPICA table 
1910 handler. These events are used to indicate a table installation or 
1911 uninstallation. These events are used in addition to existed table load 
1912 and unload events. Lv Zheng.
1913
1914 Implemented a cleanup for all internal string-to-integer conversions. 
1915 Consolidate multiple versions of this functionality and limit possible 
1916 bases to either 10 or 16 to simplify the code. Adds a new file, 
1917 utstrtoul64.
1918
1919 Cleanup the inclusion order of the various compiler-specific headers. 
1920 This simplifies build configuration management. The compiler-specific 
1921 headers are now split out from the host-specific headers. Lv Zheng.
1922
1923 Example Code and Data Size: These are the sizes for the OS-independent 
1924 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1925 debug version of the code includes the debug output trace mechanism and 
1926 has a much larger code and data size.
1927
1928   Current Release:
1929     Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
1930     Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1931
1932
1933 2) iASL Compiler/Disassembler and Tools:
1934
1935 iASL/AcpiExec: Added a command line option to display the build date/time 
1936 of the tool (-vd). This can be useful to verify that the correct version 
1937 of the tools are being used.
1938
1939 AML Debugger: Implemented a new subcommand ("execute predef") to execute 
1940 all predefined control methods and names within the current namespace. 
1941 This can be useful for debugging problems with ACPI tables and the ACPI 
1942 namespace.
1943
1944 ----------------------------------------
1945 29 July 2016. Summary of changes for version 20160729:
1946
1947
1948 1) ACPICA kernel-resident subsystem:
1949
1950 Implemented basic UEFI support for the various ACPICA tools. This 
1951 includes:
1952 1) An OSL to implement the various AcpiOs* interfaces on UEFI.
1953 2) Support to obtain the ACPI tables on UEFI.
1954 3) Local implementation of required C library functions not available on 
1955 UEFI.
1956 4) A front-end (main) function for the tools for UEFI-related 
1957 initialization.
1958
1959 The initial deployment of this support is the AcpiDump utility executing 
1960 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 
1961 Current environments supported are Linux/Unix. MSVC generation is not 
1962 supported at this time. See the generate/efi/README file for build 
1963 instructions. Lv Zheng.
1964
1965 Future plans include porting the AcpiExec utility to execute natively on 
1966 the platform with I/O and memory access. This will allow viewing/dump of 
1967 the platform namespace and native execution of ACPI control methods that 
1968 access the actual hardware. To fully implement this support, the OSL 
1969 functions below must be implemented with UEFI interfaces. Any community 
1970 help in the implementation of these functions would be appreciated:
1971     AcpiOsReadPort
1972     AcpiOsWritePort
1973     AcpiOsReadMemory
1974     AcpiOsWriteMemory
1975     AcpiOsReadPciConfiguration
1976     AcpiOsWritePciConfiguration
1977
1978 Restructured and standardized the C library configuration for ACPICA, 
1979 resulting in the various configuration options below. This includes a 
1980 global restructuring of the compiler-dependent and platform-dependent 
1981 include files. These changes may affect the existing platform-dependent 
1982 configuration files on some hosts. Lv Zheng. 
1983
1984 The current C library configuration options appear below. For any issues, 
1985 it may be helpful to examine the existing compiler-dependent and 
1986 platform-dependent files as examples. Lv Zheng. 
1987
1988 1) Linux kernel:
1989     ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 
1990 library.
1991     ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
1992 2) Unix/Windows/BSD applications:
1993     ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 
1994 library.
1995     ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
1996 3) UEFI applications:
1997     ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 
1998 library.
1999     ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
2000 4) UEFI applications (EDK2/StdLib):
2001     ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2002     ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2003
2004
2005 AML interpreter: "module-level code" support. Allows for execution of so-
2006 called "executable" AML code (math/logical operations, etc.) outside of 
2007 control methods not just at the module level (top level) but also within 
2008 any scope declared outside of a control method - Scope{}, Device{}, 
2009 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 
2010
2011 Simplified the configuration of the "maximum AML loops" global option by 
2012 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 
2013 modified at runtime.
2014
2015
2016 Example Code and Data Size: These are the sizes for the OS-independent 
2017 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2018 debug version of the code includes the debug output trace mechanism and 
2019 has a much larger code and data size.
2020
2021   Current Release:
2022     Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2023     Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2024
2025
2026 2) iASL Compiler/Disassembler and Tools:
2027
2028 iASL: Add full support for the RASF ACPI table (RAS Features Table). 
2029 Includes disassembler, data table compiler, and header support.
2030
2031 iASL Expand "module-level code" support. Allows for 
2032 compilation/disassembly of so-called "executable" AML code (math/logical 
2033 operations, etc.) outside of control methods not just at the module level 
2034 (top level) but also within any scope declared outside of a control 
2035 method - Scope{}, Device{}, Processor{}, PowerResource{}, and 
2036 ThermalZone{}.
2037
2038 AcpiDump: Added support for dumping all SSDTs on newer versions of 
2039 Windows. These tables are now easily available -- SSDTs are not available 
2040 through the registry on older versions.
2041
2042 ----------------------------------------
2043 27 May 2016. Summary of changes for version 20160527:
2044
2045
2046 1) ACPICA kernel-resident subsystem:
2047
2048 Temporarily reverted the new arbitrary bit length/alignment support in 
2049 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 
2050 a number of regressions with the new code that need to be fully resolved 
2051 and tested before this support can be finally integrated into ACPICA. 
2052 Apologies for any inconveniences these issues may have caused.
2053
2054 The ACPI message macros are not configurable (ACPI_MSG_ERROR, 
2055 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 
2056 and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2057
2058 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 
2059 option. Adds a new return macro, return_STR. Junk-uk Kim.
2060
2061 Example Code and Data Size: These are the sizes for the OS-independent 
2062 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2063 debug version of the code includes the debug output trace mechanism and 
2064 has a much larger code and data size.
2065
2066   Current Release:
2067     Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2068     Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2069   Previous Release:
2070     Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2071     Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2072
2073 ----------------------------------------
2074 22 April 2016. Summary of changes for version 20160422:
2075
2076 1) ACPICA kernel-resident subsystem:
2077
2078 Fixed a regression in the GAS (generic address structure) arbitrary bit 
2079 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 
2080 and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2081
2082 ACPI 6.0: Added support for new/renamed resource macros. One new argument 
2083 was added to each of these macros, and the original name has been 
2084 deprecated. The AML disassembler will always disassemble to the new 
2085 names. Support for the new macros was added to iASL, disassembler, 
2086 resource manager, and the acpihelp utility. ACPICA BZ 1274.
2087
2088     I2cSerialBus  -> I2cSerialBusV2
2089     SpiSerialBus  -> SpiSerialBusV2
2090     UartSerialBus -> UartSerialBusV2
2091
2092 ACPI 6.0: Added support for a new integer field that was appended to the 
2093 package object returned by the _BIX method. This adds iASL compile-time 
2094 and AML runtime error checking. ACPICA BZ 1273.
2095
2096 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 
2097 Subspace Type2" (Headers, Disassembler, and data table compiler).
2098
2099 Example Code and Data Size: These are the sizes for the OS-independent 
2100 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2101 debug version of the code includes the debug output trace mechanism and 
2102 has a much larger code and data size.
2103
2104   Current Release:
2105     Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2106     Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2107   Previous Release:
2108     Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2109     Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2110
2111
2112 2) iASL Compiler/Disassembler and Tools:
2113
2114 iASL: Implemented an ASL grammar extension to allow/enable executable 
2115 "module-level code" to be created and executed under the various 
2116 operators that create new scopes. This type of AML code is already 
2117 supported in all known AML interpreters, and the grammar change will 
2118 appear in the next version of the ACPI specification. Simplifies the 
2119 conditional runtime creation of named objects under these object types: 
2120
2121     Device
2122     PowerResource
2123     Processor
2124     Scope
2125     ThermalZone
2126
2127 iASL: Implemented a new ASL extension, a "For" loop macro to add greater 
2128 ease-of-use to the ASL language. The syntax is similar to the 
2129 corresponding C operator, and is implemented with the existing AML While 
2130 opcode -- thus requiring no changes to existing AML interpreters.
2131
2132     For (Initialize, Predicate, Update) {TermList}
2133
2134 Grammar:
2135     ForTerm :=
2136         For (
2137             Initializer    // Nothing | TermArg => ComputationalData
2138             Predicate      // Nothing | TermArg => ComputationalData
2139             Update         // Nothing | TermArg => ComputationalData
2140         ) {TermList}
2141
2142
2143 iASL: The _HID/_ADR detection and validation has been enhanced to search 
2144 under conditionals in order to allow these objects to be conditionally 
2145 created at runtime.
2146
2147 iASL: Fixed several issues with the constant folding feature. The 
2148 improvement allows better detection and resolution of statements that can 
2149 be folded at compile time. ACPICA BZ 1266. 
2150
2151 iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 
2152 conversion to the ASL ElseIf operator where incorrect ASL code could be 
2153 generated.
2154
2155 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 
2156 sometimes an extra (and extraneous) set of parentheses were emitted for 
2157 some combinations of operators. Although this did not cause any problems 
2158 with recompilation of the disassembled code, it made the code more 
2159 difficult to read. David Box. ACPICA BZ 1231.
2160
2161 iASL: Changed to ignore the unreferenced detection for predefined names 
2162 of resource descriptor elements, when the resource descriptor is 
2163 created/defined within a control method.
2164
2165 iASL: Disassembler: Fix a possible fault with externally declared Buffer 
2166 objects.
2167
2168 ----------------------------------------
2169 18 March 2016. Summary of changes for version 20160318:
2170
2171 1) ACPICA kernel-resident subsystem:
2172
2173 Added support for arbitrary bit lengths and bit offsets for registers 
2174 defined by the Generic Address Structure. Previously, only aligned bit 
2175 lengths of 8/16/32/64 were supported. This was sufficient for many years, 
2176 but recently some machines have been seen that require arbitrary bit-
2177 level support. ACPICA BZ 1240. Lv Zheng.
2178
2179 Fixed an issue where the \_SB._INI method sometimes must be evaluated 
2180 before any _REG methods are evaluated. Lv Zheng.
2181
2182 Implemented several changes related to ACPI table support 
2183 (Headers/Disassembler/TableCompiler):
2184 NFIT: For ACPI 6.1, updated to add some additional new fields and 
2185 constants.
2186 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 
2187 6).
2188 DMAR: Added new constants per the 10/2014 DMAR spec.
2189 IORT: Added new subtable per the 10/2015 IORT spec.
2190 HEST: For ACPI 6.1, added new constants and new subtable.
2191 DBG2: Added new constants per the 12/2015 DBG2 spec.
2192 FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 
2193 ACPICA BZ 1249.
2194 ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2195
2196 Updated header support for the DMAR table to match the current version of 
2197 the related spec.
2198
2199 Added extensions to the ASL Concatenate operator to allow any ACPI object 
2200 to be passed as an operand. Any object other than Integer/String/Buffer 
2201 simply returns a string containing the object type. This extends the 
2202 usefulness of the Printf macros. Previously, Concatenate would abort the 
2203 control method if a non-data object was encountered.
2204
2205 ACPICA source code: Deployed the C "const" keyword across the source code 
2206 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2207
2208 Example Code and Data Size: These are the sizes for the OS-independent 
2209 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2210 debug version of the code includes the debug output trace mechanism and 
2211 has a much larger code and data size.
2212
2213   Current Release:
2214     Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2215     Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2216   Previous Release:
2217     Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2218     Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2219
2220
2221 2) iASL Compiler/Disassembler and Tools:
2222
2223 iASL/Disassembler: Improved the heuristic used to determine the number of 
2224 arguments for an externally defined control method (a method in another 
2225 table). Although this is an improvement, there is no deterministic way to 
2226 "guess" the number of method arguments. Only the ACPI 6.0 External opcode 
2227 will completely solve this problem as it is deployed (automatically) in 
2228 newer BIOS code.
2229
2230 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 
2231 statements that could cause errors when the disassembled file is 
2232 compiled. ACPICA BZ 1243. David Box.
2233
2234 iASL: Fixed a regression caused by the merger of the two versions of the 
2235 local strtoul64. Because of a dependency on a global variable, strtoul64 
2236 could return an error for integers greater than a 32-bit value. ACPICA BZ 
2237 1260.
2238
2239 iASL: Fixed a regression where a fault could occur for an ASL Return 
2240 statement if it invokes a control method that is not resolved. ACPICA BZ 
2241 1264.
2242
2243 AcpiXtract: Improved input file validation: detection of binary files and 
2244 non-acpidump text files.
2245
2246 ----------------------------------------
2247 12 February 2016. Summary of changes for version 20160212:
2248
2249 1) ACPICA kernel-resident subsystem:
2250
2251 Implemented full support for the ACPI 6.1 specification (released in 
2252 January). This version of the specification is available at:  
2253 http://www.uefi.org/specifications
2254
2255 Only a relatively small number of changes were required in ACPICA to 
2256 support ACPI 6.1, in these areas:
2257 - New predefined names
2258 - New _HID values
2259 - A new subtable for HEST
2260 - A few other header changes for new values
2261
2262 Ensure \_SB_._INI is executed before any _REG methods are executed. There 
2263 appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2264
2265 Reverted a change made in version 20151218 which enabled method 
2266 invocations to be targets of various ASL operators (SuperName and Target 
2267 grammar elements). While the new behavior is supported by the ACPI 
2268 specification, other AML interpreters do not support this behavior and 
2269 never will. The ACPI specification will be updated for ACPI 6.2 to remove 
2270 this support. Therefore, the change was reverted to the original ACPICA 
2271 behavior.
2272
2273 ACPICA now supports the GCC 6 compiler.
2274
2275 Current Release: (Note: build changes increased sizes)
2276     Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2277     Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2278 Previous Release:
2279     Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2280     Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2281
2282
2283 2) iASL Compiler/Disassembler and Tools:
2284
2285 Completed full support for the ACPI 6.0 External() AML opcode. The 
2286 compiler emits an external AML opcode for each ASL External statement. 
2287 This opcode is used by the disassembler to assist with the disassembly of 
2288 external control methods by specifying the required number of arguments 
2289 for the method. AML interpreters do not use this opcode. To ensure that 
2290 interpreters do not even see the opcode, a block of one or more external 
2291 opcodes is surrounded by an "If(0)" construct. As this feature becomes 
2292 commonly deployed in BIOS code, the ability of disassemblers to correctly 
2293 disassemble AML code will be greatly improved. David Box.
2294
2295 iASL: Implemented support for an optional cross-reference output file. 
2296 The -lx option will create a the cross-reference file with the suffix 
2297 "xrf". Three different types of cross-reference are created in this file:
2298 - List of object references made from within each control method
2299 - Invocation (caller) list for each user-defined control method
2300 - List of references to each non-method object in the namespace
2301
2302 iASL: Method invocations as ASL Target operands are now disallowed and 
2303 flagged as errors in preparation for ACPI 6.2 (see the description of the 
2304 problem above).
2305
2306 ----------------------------------------
2307 8 January 2016. Summary of changes for version 20160108:
2308
2309 1) ACPICA kernel-resident subsystem:
2310
2311 Updated all ACPICA copyrights and signons to 2016: Added the 2016 
2312 copyright to all source code module headers and utility/tool signons. 
2313 This includes the standard Linux dual-license header. This affects 
2314 virtually every file in the ACPICA core subsystem, iASL compiler, all 
2315 ACPICA utilities, and the ACPICA test suite.
2316
2317 Fixed a regression introduced in version 20151218 concerning the 
2318 execution of so-called module-level ASL/AML code. Namespace objects 
2319 created under a module-level If() construct were not properly/fully 
2320 entered into the namespace and could cause an interpreter fault when 
2321 accessed.
2322
2323 Example Code and Data Size: These are the sizes for the OS-independent 
2324 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2325 debug version of the code includes the debug output trace mechanism and 
2326 has a much larger code and data size.
2327
2328 Current Release:
2329     Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2330     Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2331   Previous Release:
2332     Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2333     Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2334
2335
2336 2) iASL Compiler/Disassembler and Tools:
2337
2338 Fixed a problem with the compilation of the GpioIo and GpioInt resource 
2339 descriptors. The _PIN field name was incorrectly defined to be an array 
2340 of 32-bit values, but the _PIN values are in fact 16 bits each. This 
2341 would cause incorrect bit width warnings when using Word (16-bit) fields 
2342 to access the descriptors.
2343
2344
2345 ----------------------------------------
2346 18 December 2015. Summary of changes for version 20151218:
2347
2348 1) ACPICA kernel-resident subsystem:
2349
2350 Implemented per-AML-table execution of "module-level code" as individual 
2351 ACPI tables are loaded into the namespace during ACPICA initialization. 
2352 In other words, any module-level code within an AML table is executed 
2353 immediately after the table is loaded, instead of batched and executed 
2354 after all of the tables have been loaded. This provides compatibility 
2355 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 
2356 David Box.
2357
2358 To fully support the feature above, the default operation region handlers 
2359 for the SystemMemory, SystemIO, and PCI_Config address spaces are now 
2360 installed before any ACPI tables are loaded. This enables module-level 
2361 code to access these address spaces during the table load and module-
2362 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 
2363 Box.
2364
2365 Implemented several changes to the internal _REG support in conjunction 
2366 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 
2367 utilities for the changes above. Although these tools were changed, host 
2368 operating systems that simply use the default handlers for SystemMemory, 
2369 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2370
2371 For example, in the code below, DEV1 is conditionally added to the 
2372 namespace by the DSDT via module-level code that accesses an operation 
2373 region. The SSDT references DEV1 via the Scope operator. DEV1 must be 
2374 created immediately after the DSDT is loaded in order for the SSDT to 
2375 successfully reference DEV1. Previously, this code would cause an 
2376 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 
2377 fully supported by ACPICA.
2378
2379     DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2380     {
2381         OperationRegion (OPR1, SystemMemory, 0x400, 32)
2382         Field (OPR1, AnyAcc, NoLock, Preserve)
2383         {
2384             FLD1, 1
2385         }
2386         If (FLD1)
2387         {
2388             Device (\DEV1)
2389             {
2390             }
2391         }
2392     }
2393     DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2394     {
2395         External (\DEV1, DeviceObj)
2396         Scope (\DEV1)
2397         {
2398         }
2399     }
2400
2401 Fixed an AML interpreter problem where control method invocations were 
2402 not handled correctly when the invocation was itself a SuperName argument 
2403 to another ASL operator. In these cases, the method was not invoked. 
2404 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 
2405 argument:
2406     Store
2407     Acquire, Wait
2408     CondRefOf, RefOf
2409     Decrement, Increment
2410     Load, Unload
2411     Notify
2412     Signal, Release, Reset
2413     SizeOf
2414
2415 Implemented automatic String-to-ObjectReference conversion support for 
2416 packages returned by predefined names (such as _DEP). A common BIOS error 
2417 is to add double quotes around an ObjectReference namepath, which turns 
2418 the reference into an unexpected string object. This support detects the 
2419 problem and corrects it before the package is returned to the caller that 
2420 invoked the method. Lv Zheng.
2421
2422 Implemented extensions to the Concatenate operator. Concatenate now 
2423 accepts any type of object, it is not restricted to simply 
2424 Integer/String/Buffer. For objects other than these 3 basic data types, 
2425 the argument is treated as a string containing the name of the object 
2426 type. This expands the utility of Concatenate and the Printf/Fprintf 
2427 macros. ACPICA BZ 1222.
2428
2429 Cleaned up the output of the ASL Debug object. The timer() value is now 
2430 optional and no longer emitted by default. Also, the basic data types of 
2431 Integer/String/Buffer are simply emitted as their values, without a data 
2432 type string -- since the data type is obvious from the output. ACPICA BZ 
2433 1221.
2434
2435 Example Code and Data Size: These are the sizes for the OS-independent 
2436 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2437 debug version of the code includes the debug output trace mechanism and 
2438 has a much larger code and data size.
2439
2440   Current Release:
2441     Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2442     Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2443   Previous Release:
2444     Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2445     Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2446
2447
2448 2) iASL Compiler/Disassembler and Tools:
2449
2450 iASL: Fixed some issues with the ASL Include() operator. This operator 
2451 was incorrectly defined in the iASL parser rules, causing a new scope to 
2452 be opened for the code within the include file. This could lead to 
2453 several issues, including allowing ASL code that is technically illegal 
2454 and not supported by AML interpreters. Note, this does not affect the 
2455 related #include preprocessor operator. ACPICA BZ 1212.
2456
2457 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 
2458 operator is essentially an ASL macro since there is no AML opcode 
2459 associated with it. The code emitted by the iASL compiler for ElseIf is 
2460 an Else opcode followed immediately by an If opcode. The disassembler 
2461 will now emit an ElseIf if it finds an Else immediately followed by an 
2462 If. This simplifies the decoded ASL, especially for deeply nested 
2463 If..Else and large Switch constructs. Thus, the disassembled code more 
2464 closely follows the original source ASL. ACPICA BZ 1211. Example:
2465
2466     Old disassembly:
2467         Else
2468         {
2469             If (Arg0 == 0x02)
2470             {
2471                 Local0 = 0x05
2472             }
2473         }
2474
2475     New disassembly:
2476         ElseIf (Arg0 == 0x02)
2477         {
2478             Local0 = 0x05
2479         }
2480
2481 AcpiExec: Added support for the new module level code behavior and the 
2482 early region installation. This required a small change to the 
2483 initialization, since AcpiExec must install its own operation region 
2484 handlers.
2485
2486 AcpiExec: Added support to make the debug object timer optional. Default 
2487 is timer disabled. This cleans up the debug object output -- the timer 
2488 data is rarely used.
2489
2490 AcpiExec: Multiple ACPI tables are now loaded in the order that they 
2491 appear on the command line. This can be important when there are 
2492 interdependencies/references between the tables.
2493
2494 iASL/Templates. Add support to generate template files with multiple 
2495 SSDTs within a single output file. Also added ommand line support to 
2496 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 
2497 1223, 1225.
2498
2499
2500 ----------------------------------------
2501 24 November 2015. Summary of changes for version 20151124:
2502
2503 1) ACPICA kernel-resident subsystem:
2504
2505 Fixed a possible regression for a previous update to FADT handling. The 
2506 FADT no longer has a fixed table ID, causing some issues with code that 
2507 was hardwired to a specific ID. Lv Zheng.
2508
2509 Fixed a problem where the method auto-serialization could interfere with 
2510 the current SyncLevel. This change makes the auto-serialization support 
2511 transparent to the SyncLevel support and management.
2512
2513 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 
2514 interface is intended for early access to the namespace during the 
2515 initial namespace device discovery walk. The _SUB method has been seen to 
2516 access operation regions in some cases, causing errors because the 
2517 operation regions are not fully initialized.
2518
2519 AML Debugger: Fixed some issues with the terminate/quit/exit commands 
2520 that can cause faults. Lv Zheng.
2521
2522 AML Debugger: Add thread ID support so that single-step mode only applies 
2523 to the AML Debugger thread. This prevents runtime errors within some 
2524 kernels. Lv Zheng. 
2525
2526 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 
2527 methods that are invoked by this interface are optional, removed warnings 
2528 emitted for the case where one or more of these methods do not exist. 
2529 ACPICA BZ 1208, original change by Prarit Bhargava.
2530
2531 Made a major pass through the entire ACPICA source code base to 
2532 standardize formatting that has diverged a bit over time. There are no 
2533 functional changes, but this will of course cause quite a few code 
2534 differences from the previous ACPICA release.
2535
2536 Example Code and Data Size: These are the sizes for the OS-independent 
2537 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2538 debug version of the code includes the debug output trace mechanism and 
2539 has a much larger code and data size.
2540
2541   Current Release:
2542     Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2543     Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2544   Previous Release:
2545     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2546     Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2547
2548
2549 2) iASL Compiler/Disassembler and Tools:
2550
2551 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 
2552 definition blocks within a single ASL file and the resulting AML file. 
2553 Support for this type of file was also added to the various tools that 
2554 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 
2555 example code below shows two definition blocks within the same file:
2556
2557     DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 
2558 0x12345678)
2559     {
2560     }
2561     DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2562     {
2563     }
2564
2565 iASL: Enhanced typechecking for the Name() operator. All expressions for 
2566 the value of the named object must be reduced/folded to a single constant 
2567 at compile time, as per the ACPI specification (the AML definition of 
2568 Name()).
2569
2570 iASL: Fixed some code indentation issues for the -ic and -ia options (C 
2571 and assembly headers). Now all emitted code correctly begins in column 1.
2572
2573 iASL: Added an error message for an attempt to open a Scope() on an 
2574 object defined in an SSDT. The DSDT is always loaded into the namespace 
2575 first, so any attempt to open a Scope on an SSDT object will fail at 
2576 runtime.
2577
2578
2579 ----------------------------------------
2580 30 September 2015. Summary of changes for version 20150930:
2581
2582 1) ACPICA kernel-resident subsystem:
2583
2584 Debugger: Implemented several changes and bug fixes to assist support for 
2585 the in-kernel version of the AML debugger. Lv Zheng.
2586 - Fix the "predefined" command for in-kernel debugger.
2587 - Do not enter debug command loop for the help and version commands.
2588 - Disallow "execute" command during execution/single-step of a method.
2589
2590 Interpreter: Updated runtime typechecking for all operators that have 
2591 target operands. The operand is resolved and validated that it is legal. 
2592 For example, the target cannot be a non-data object such as a Device, 
2593 Mutex, ThermalZone, etc., as per the ACPI specification.
2594
2595 Debugger: Fixed the double-mutex user I/O handshake to work when local 
2596 deadlock detection is enabled.
2597
2598 Debugger: limited display of method locals and arguments (LocalX and 
2599 ArgX) to only those that have actually been initialized. This prevents 
2600 lines of extraneous output.
2601
2602 Updated the definition of the NFIT table to correct the bit polarity of 
2603 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2604
2605 Example Code and Data Size: These are the sizes for the OS-independent 
2606 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2607 debug version of the code includes the debug output trace mechanism and 
2608 has a much larger code and data size.
2609
2610   Current Release:
2611     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2612     Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2613   Previous Release:
2614     Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2615     Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2616
2617
2618 2) iASL Compiler/Disassembler and Tools:
2619
2620 iASL: Improved the compile-time typechecking for operands of many of the 
2621 ASL operators:
2622
2623 -- Added an option to disable compiler operand/operator typechecking (-
2624 ot).
2625
2626 -- For the following operators, the TermArg operands are now validated 
2627 when possible to be Integer data objects: BankField, OperationRegion, 
2628 DataTableRegion, Buffer, and Package.
2629
2630 -- Store (Source, Target): Both the source and target operands are 
2631 resolved and checked that the operands are both legal. For example, 
2632 neither operand can be a non-data object such as a Device, Mutex, 
2633 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 
2634 operator can be used to store an object to any type of target object.
2635
2636 -- Store (Source, Target): If the source is a Package object, the target 
2637 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 
2638 is a Package, the source must also be a Package.
2639
2640 -- Store (Source, Target): A warning is issued if the source and target 
2641 resolve to the identical named object.
2642
2643 -- Store (Source, <method invocation>): An error is generated for the 
2644 target method invocation, as this construct is not supported by the AML 
2645 interpreter.
2646
2647 -- For all ASL math and logic operators, the target operand must be a 
2648 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 
2649 includes the function return value also.
2650
2651 -- External declarations are also included in the typechecking where 
2652 possible. External objects defined using the UnknownObj keyword cannot be 
2653 typechecked, however.
2654
2655 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 
2656 operator:
2657 - Legacy code: Index(PKG1, 3)
2658 - New ASL+ code: PKG1[3]
2659 This completes the ACPI 6.0 ASL+ support as it was the only operator not 
2660 supported.
2661
2662 iASL: Fixed the file suffix for the preprocessor output file (.i). Two 
2663 spaces were inadvertently appended to the filename, causing file access 
2664 and deletion problems on some systems.
2665
2666 ASL Test Suite (ASLTS): Updated the master makefile to generate all 
2667 possible compiler output files when building the test suite -- thus 
2668 exercising these features of the compiler. These files are automatically 
2669 deleted when the test suite exits.
2670
2671
2672 ----------------------------------------
2673 18 August 2015. Summary of changes for version 20150818:
2674
2675 1) ACPICA kernel-resident subsystem:
2676
2677 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 
2678 Zheng. ACPICA BZ 1186.
2679
2680 Completed development to ensure that the ACPICA Disassembler and Debugger 
2681 are fully standalone components of ACPICA. Removed cross-component 
2682 dependences. Lv Zheng.
2683
2684 The max-number-of-AML-loops is now runtime configurable (previously was 
2685 compile-time only). This is essentially a loop timeout to force-abort 
2686 infinite AML loops. ACPCIA BZ 1192.
2687
2688 Debugger: Cleanup output to dump ACPI names and namepaths without any 
2689 trailing underscores. Lv Zheng. ACPICA BZ 1135.
2690
2691 Removed unnecessary conditional compilations across the Debugger and 
2692 Disassembler components where entire modules could be left uncompiled.
2693
2694 The aapits test is deprecated and has been removed from the ACPICA git 
2695 tree. The test has never been completed and has not been maintained, thus 
2696 becoming rather useless. ACPICA BZ 1015, 794.
2697
2698 A batch of small changes to close bugzilla and other reports:
2699 - Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2700 - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2701 - iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2702 - ACPI table support: general cleanup and simplification. Lv Zheng, Bob 
2703 Moore.
2704 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 
2705 ACPICA BZ 1184.
2706 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 
2707 operators.
2708 - Debugger: Split debugger initialization/termination interfaces. Lv 
2709 Zheng.
2710 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table 
2711 identification.
2712 - AcpiExec: Add debug message during _REG method phase during table 
2713 load/init.
2714 - AcpiNames: Fix a regression where some output was missing and no longer 
2715 emitted.
2716 - Debugger: General cleanup and simplification. Lv Zheng.
2717 - Disassembler: Cleanup use of several global option variables. Lv Zheng.
2718
2719 Example Code and Data Size: These are the sizes for the OS-independent 
2720 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2721 debug version of the code includes the debug output trace mechanism and 
2722 has a much larger code and data size.
2723
2724   Current Release:
2725     Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2726     Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2727   Previous Release:
2728     Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2729     Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2730
2731
2732 2) iASL Compiler/Disassembler and Tools:
2733
2734 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 
2735 were not handled properly and caused load errors. Now, properly invoke 
2736 and use the ACPICA auto-reallocate mechanism for ACPI table data 
2737 structures. ACPICA BZ 1188
2738
2739 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 
2740 BZ 1190.
2741
2742 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 
2743 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 
2744 executed during initialization. ACPICA BZ 1187, 1189.
2745
2746 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 
2747 that corresponds to each disassembled ASL statement, to simplify 
2748 debugging. ACPICA BZ 1191.
2749
2750 Debugger: Add option to the "objects" command to display a summary of the 
2751 current namespace objects (Object type and count). This is displayed if 
2752 the command is entered with no arguments.
2753
2754 AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2755
2756
2757 ----------------------------------------
2758 17 July 2015. Summary of changes for version 20150717:
2759
2760 1) ACPICA kernel-resident subsystem:
2761
2762 Improved the partitioning between the Debugger and Disassembler 
2763 components. This allows the Debugger to be used standalone within kernel 
2764 code without the Disassembler (which is used for single stepping also). 
2765 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2766
2767 Debugger: Implemented a new command to trace the execution of control 
2768 methods (Trace). This is especially useful for the in-kernel version of 
2769 the debugger when file I/O may not be available for method trace output. 
2770 See the ACPICA reference for more information. Lv Zheng.
2771
2772 Moved all C library prototypes (used for the local versions of these 
2773 functions when requested) to a new header, acclib.h
2774 Cleaned up the use of non-ANSI C library functions. These functions are 
2775 implemented locally in ACPICA. Moved all such functions to a common 
2776 source file, utnonansi.c
2777
2778 Debugger: Fixed a problem with the "!!" command (get last command 
2779 executed) where the debugger could enter an infinite loop and eventually 
2780 crash.
2781
2782 Removed the use of local macros that were used for some of the standard C 
2783 library functions to automatically cast input parameters. This mostly 
2784 affected the is* functions where the input parameter is defined to be an 
2785 int. This required a few modifications to the main ACPICA source code to 
2786 provide casting for these functions and eliminate possible compiler 
2787 warnings for these parameters.
2788
2789 Across the source code, added additional status/error checking to resolve 
2790 issues discovered by static source code analysis tools such as Coverity.
2791
2792 Example Code and Data Size: These are the sizes for the OS-independent 
2793 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2794 debug version of the code includes the debug output trace mechanism and 
2795 has a much larger code and data size.
2796
2797   Current Release:
2798     Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2799     Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2800   Previous Release:
2801     Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2802     Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2803
2804
2805 2) iASL Compiler/Disassembler and Tools:
2806
2807 iASL: Fixed a regression where the device map file feature no longer 
2808 worked properly when used in conjunction with the disassembler. It only 
2809 worked properly with the compiler itself.
2810
2811 iASL: Implemented a new warning for method LocalX variables that are set 
2812 but never used (similar to a C compiler such as gcc). This also applies 
2813 to ArgX variables that are not defined by the parent method, and are 
2814 instead (legally) used as local variables.
2815
2816 iASL/Preprocessor: Finished the pass-through of line numbers from the 
2817 preprocessor to the compiler. This ensures that compiler errors/warnings 
2818 have the correct original line numbers and filenames, regardless of any 
2819 #include files.
2820
2821 iASL/Preprocessor: Fixed a couple of issues with comment handling and the 
2822 pass-through of comments to the preprocessor output file (which becomes 
2823 the compiler input file). Also fixed a problem with // comments that 
2824 appear after a math expression.
2825
2826 iASL: Added support for the TCPA server table to the table compiler and 
2827 template generator. (The client table was already previously supported)
2828
2829 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 
2830 identify the iASL compiler.
2831
2832 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 
2833 multiple times. The new names are ACPI_SIGN_NEGATIVE and 
2834 ACPI_SIGN_POSITIVE.
2835
2836 AcpiHelp: Update to expand help messages for the iASL preprocessor 
2837 directives.
2838
2839
2840 ----------------------------------------
2841 19 June 2015. Summary of changes for version 20150619:
2842
2843 Two regressions in version 20150616 have been addressed:
2844
2845 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 
2846 etc.) This update changes ACPICA to only use the standard headers for 
2847 functions, or the prototypes for the local versions of the C library 
2848 functions. Across the source code, this required some additional casts 
2849 for some Clib invocations for portability. Moved all local prototypes to 
2850 a new file, acclib.h
2851
2852 Fixes several problems with recent changes to the handling of the FACS 
2853 table that could cause some systems not to boot.
2854
2855
2856 ----------------------------------------
2857 16 June 2015. Summary of changes for version 20150616:
2858
2859
2860 1) ACPICA kernel-resident subsystem:
2861
2862 Across the entire ACPICA source code base, the various macros for the C 
2863 library functions (such as ACPI_STRLEN, etc.) have been removed and 
2864 replaced by the standard C library names (strlen, etc.) The original 
2865 purpose for these macros is no longer applicable. This simplification 
2866 reduces the number of macros used in the ACPICA source code 
2867 significantly, improving readability and maintainability.
2868
2869 Implemented support for a new ACPI table, the OSDT. This table, the 
2870 "override" SDT, can be loaded directly by the host OS at boot time. It 
2871 enables the replacement of existing namespace objects that were installed 
2872 via the DSDT and/or SSDTs. The primary purpose for this is to replace 
2873 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 
2874 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 
2875 Moore.
2876
2877 Added support for systems with (improperly) two FACS tables -- a "32-bit" 
2878 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 
2879 X field). This change will support both automatically. There continues to 
2880 be systems found with this issue. This support requires a change to the 
2881 AcpiSetFirmwareWakingVector interface. Also, a public global variable has 
2882 been added to allow the host to select which FACS is desired 
2883 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 
2884 details Lv Zheng.
2885
2886 Added a new feature to allow for systems that do not contain an FACS. 
2887 Although this is already supported on hardware-reduced platforms, the 
2888 feature has been extended for all platforms. The reasoning is that we do 
2889 not want to abort the entire ACPICA initialization just because the 
2890 system is seriously buggy and has no FACS.
2891
2892 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 
2893 not correctly transcribed from the ACPI specification in ACPICA version 
2894 20150515.
2895
2896 Implemented support for the _CLS object in the AcpiGetObjectInfo external 
2897 interface.
2898
2899 Updated the definitions of the TCPA and TPM2 ACPI tables to the more 
2900 recent TCG ACPI Specification, December 14, 2014. Table disassembler and 
2901 compiler also updated. Note: The TCPA "server" table is not supported by 
2902 the disassembler/table-compiler at this time.
2903
2904 ACPI 6.0: Added definitions for the new GIC version field in the MADT.
2905
2906 Example Code and Data Size: These are the sizes for the OS-independent 
2907 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2908 debug version of the code includes the debug output trace mechanism and 
2909 has a much larger code and data size.
2910
2911   Current Release:
2912     Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2913     Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2914   Previous Release:
2915     Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2916     Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2917
2918
2919 2) iASL Compiler/Disassembler and Tools:
2920
2921 Disassembler: Fixed a problem with the new symbolic operator disassembler 
2922 where incorrect ASL code could be emitted in some cases for the "non-
2923 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 
2924 ShiftRight. The actual problem cases seem to be rather unusual in common 
2925 ASL code, however. David Box.
2926
2927 Modified the linux version of acpidump to obtain ACPI tables from not 
2928 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 
2929 Zheng.
2930
2931 iASL: Fixed a problem where the user preprocessor output file (.i) 
2932 contained extra data that was not expected. The compiler was using this 
2933 file as a temporary file and passed through #line directives in order to 
2934 keep compiler error messages in sync with the input file and line number 
2935 across multiple include files. The (.i) is no longer a temporary file as 
2936 the compiler uses a new, different file for the original purpose.
2937
2938 iASL: Fixed a problem where comments within the original ASL source code 
2939 file were not passed through to the preprocessor output file, nor any 
2940 listing files.
2941
2942 iASL: Fixed some issues for the handling of the "#include" preprocessor 
2943 directive and the similar (but not the same) "Include" ASL operator.
2944
2945 iASL: Add support for the new OSDT in both the disassembler and compiler.
2946
2947 iASL: Fixed a problem with the constant folding support where a Buffer 
2948 object could be incorrectly generated (incorrectly formed) during a 
2949 conversion to a Store() operator.
2950
2951 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 
2952 description text for the _REV predefined name. _REV now permanently 
2953 returns 2, as per the ACPI 6.0 specification.
2954
2955 Debugger: Enhanced the output of the Debug ASL object for references 
2956 produced by the Index operator. For Buffers and strings, only output the 
2957 actual byte pointed to by the index. For packages, only print the single 
2958 package element decoded by the index. Previously, the entire 
2959 buffer/string/package was emitted.
2960
2961 iASL/Table-compiler: Fixed a regression where the "generic" data types 
2962 were no longer recognized, causing errors.
2963
2964
2965 ----------------------------------------
2966 15 May 2015. Summary of changes for version 20150515:
2967
2968 This release implements most of ACPI 6.0 as described below.
2969
2970 1) ACPICA kernel-resident subsystem:
2971
2972 Implemented runtime argument checking and return value checking for all 
2973 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 
2974 _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
2975
2976 Example Code and Data Size: These are the sizes for the OS-independent 
2977 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2978 debug version of the code includes the debug output trace mechanism and 
2979 has a much larger code and data size.
2980
2981   Current Release:
2982     Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2983     Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2984   Previous Release:
2985     Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
2986     Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
2987
2988
2989 2) iASL Compiler/Disassembler and Tools:
2990
2991 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 
2992 names (argument count validation and return value typechecking.)
2993
2994 iASL disassembler and table compiler: implemented support for all new 
2995 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 
2996
2997 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 
2998 tables: FADT, MADT.
2999
3000 iASL preprocessor: Added a new directive to enable inclusion of binary 
3001 blobs into ASL code. The new directive is #includebuffer. It takes a 
3002 binary file as input and emits a named ascii buffer object into the ASL 
3003 code.
3004
3005 AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3006
3007 AcpiHelp: Added a new option, -d, to display all iASL preprocessor 
3008 directives.
3009
3010 AcpiHelp: Added a new option, -t, to display all known/supported ACPI 
3011 tables.
3012
3013
3014 ----------------------------------------
3015 10 April 2015. Summary of changes for version 20150410:
3016
3017 Reverted a change introduced in version 20150408 that caused
3018 a regression in the disassembler where incorrect operator
3019 symbols could be emitted.
3020
3021
3022 ----------------------------------------
3023 08 April 2015. Summary of changes for version 20150408:
3024
3025
3026 1) ACPICA kernel-resident subsystem:
3027
3028 Permanently set the return value for the _REV predefined name. It now 
3029 returns 2 (was 5). This matches other ACPI implementations. _REV will be 
3030 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 
3031 for ACPI 2.0 and later. It should never be used to differentiate or 
3032 identify operating systems.
3033
3034 Added the "Windows 2015" string to the _OSI support. ACPICA will now 
3035 return TRUE to a query with this string.
3036
3037 Fixed several issues with the local version of the printf function.
3038
3039 Added the C99 compiler option (-std=c99) to the Unix makefiles.
3040
3041   Current Release:
3042     Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3043     Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3044   Previous Release:
3045     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3046     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3047
3048
3049 2) iASL Compiler/Disassembler and Tools:
3050
3051 iASL: Implemented an enhancement to the constant folding feature to 
3052 transform the parse tree to a simple Store operation whenever possible:
3053     Add (2, 3, X) ==> is converted to: Store (5, X)
3054     X = 2 + 3     ==> is converted to: Store (5, X)
3055
3056 Updated support for the SLIC table (Software Licensing Description Table) 
3057 in both the Data Table compiler and the disassembler. The SLIC table 
3058 support now conforms to "Microsoft Software Licensing Tables (SLIC and 
3059 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 
3060 following the ACPI header is now defined to be "Proprietary Data", and as 
3061 such, can only be entered or displayed as a hex data block.
3062
3063 Implemented full support for the MSDM table as described in the document 
3064 above. Note: The format of MSDM is similar to SLIC. Any MSDM data 
3065 following the ACPI header is defined to be "Proprietary Data", and can 
3066 only be entered or displayed as a hex data block.
3067
3068 Implemented the -Pn option for the iASL Table Compiler (was only 
3069 implemented for the ASL compiler). This option disables the iASL 
3070 preprocessor.
3071
3072 Disassembler: For disassembly of Data Tables, added a comment field 
3073 around the Ascii equivalent data that is emitted as part of the "Raw 
3074 Table Data" block. This prevents the iASL Preprocessor from possible 
3075 confusion if/when the table is compiled.
3076
3077 Disassembler: Added an option (-df) to force the disassembler to assume 
3078 that the table being disassembled contains valid AML. This feature is 
3079 useful for disassembling AML files that contain ACPI signatures other 
3080 than DSDT or SSDT (such as OEMx or other signatures).
3081
3082 Changes for the EFI version of the tools:
3083 1) Fixed a build error/issue
3084 2) Fixed a cast warning
3085
3086 iASL: Fixed a path issue with the __FILE__ operator by making the 
3087 directory prefix optional within the internal SplitInputFilename 
3088 function.
3089
3090 Debugger: Removed some unused global variables.
3091
3092 Tests: Updated the makefile for proper generation of the AAPITS suite.
3093
3094
3095 ----------------------------------------
3096 04 February 2015. Summary of changes for version 20150204:
3097
3098 ACPICA kernel-resident subsystem:
3099
3100 Updated all ACPICA copyrights and signons to 2014. Added the 2014 
3101 copyright to all module headers and signons, including the standard Linux 
3102 header. This affects virtually every file in the ACPICA core subsystem, 
3103 iASL compiler, all ACPICA utilities, and the test suites.
3104
3105 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3106 A raw gpe handling mechanism was created to allow better handling of GPE
3107 storms that aren't easily managed by the normal handler. The raw handler
3108 allows disabling/renabling of the the GPE so that interrupt storms can be
3109 avoided in cases where events cannot be timely serviced. In this 
3110 scenario, handlers should use the AcpiSetGpe() API to disable/enable the 
3111 GPE. This API will leave the reference counts undisturbed, thereby 
3112 preventing unintentional clearing of the GPE when the intent in only to 
3113 temporarily disable it. Raw handlers allow enabling and disabling of a 
3114 GPE by removing GPE register locking. As such, raw handlers much provide 
3115 their own locks while using GPE API's to protect access to GPE data 
3116 structures.
3117 Lv Zheng
3118
3119 Events: Always modify GPE registers under the GPE lock.
3120 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3121 values. Reported as bug by joe.liu@apple.com.
3122
3123 Unix makefiles: Separate option to disable optimizations and 
3124 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 
3125 NOOPT disable option and creates a separate flag (NOFORTIFY) for this 
3126 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 
3127 errors when building ACPICA. This allows disabling the option without 
3128 also having to disable optimazations.
3129 David Box
3130
3131   Current Release:
3132     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3133     Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3134
3135 --
3136 --------------------------------------
3137 07 November 2014. Summary of changes for version 20141107:
3138
3139 This release is available at https://acpica.org/downloads
3140
3141 This release introduces and implements language extensions to ASL that 
3142 provide support for symbolic ("C-style") operators and expressions. These 
3143 language extensions are known collectively as ASL+.
3144
3145
3146 1) iASL Compiler/Disassembler and Tools:
3147
3148 Disassembler: Fixed a problem with disassembly of the UartSerialBus 
3149 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 
3150 Box.
3151
3152 Disassembler: Fixed the Unicode macro support to add escape sequences. 
3153 All non-printable ASCII values are emitted as escape sequences, as well 
3154 as the standard escapes for quote and backslash. Ensures that the 
3155 disassembled macro can be correctly recompiled.
3156
3157 iASL: Added Printf/Fprintf macros for formatted output. These macros are 
3158 translated to existing AML Concatenate and Store operations. Printf 
3159 writes to the ASL Debug object. Fprintf allows the specification of an 
3160 ASL name as the target. Only a single format specifier is required, %o, 
3161 since the AML interpreter dynamically converts objects to the required 
3162 type. David E. Box.
3163
3164     (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3165                  (Concatenate (Concatenate (Concatenate ("", Arg0),
3166                  ": Unexpected value for "), Arg1), ", "), Arg2),
3167                  " at line "), Arg3), Debug)
3168
3169     (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3170                  Arg0, Arg1, Arg2, Arg3)
3171
3172     (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3173                  ("", Arg1), ": "), Arg0), " Successful"), STR1)
3174
3175     (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3176
3177 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 
3178 ASL parse tree before the AML code is generated. This allows blocks of 
3179 ASL code to be removed in order to help locate and identify problem 
3180 devices and/or code. David E. Box.
3181
3182 AcpiExec: Added support (-fi) for an optional namespace object 
3183 initialization file. This file specifies initial values for namespace 
3184 objects as necessary for debugging and testing different ASL code paths 
3185 that may be taken as a result of BIOS options.
3186
3187
3188 2) Overview of symbolic operator support for ASL (ASL+)
3189 -------------------------------------------------------
3190
3191 As an extension to the ASL language, iASL implements support for symbolic 
3192 (C-style) operators for math and logical expressions. This can greatly 
3193 simplify ASL code as well as improve both readability and 
3194 maintainability. These language extensions can exist concurrently with 
3195 all legacy ASL code and expressions.
3196
3197 The symbolic extensions are 100% compatible with existing AML 
3198 interpreters, since no new AML opcodes are created. To implement the 
3199 extensions, the iASL compiler transforms the symbolic expressions into 
3200 the legacy ASL/AML equivalents at compile time.
3201
3202 Full symbolic expressions are supported, along with the standard C 
3203 precedence and associativity rules.
3204
3205 Full disassembler support for the symbolic expressions is provided, and 
3206 creates an automatic migration path for existing ASL code to ASL+ code 
3207 via the disassembly process. By default, the disassembler now emits ASL+ 
3208 code with symbolic expressions. An option (-dl) is provided to force the 
3209 disassembler to emit legacy ASL code if desired.
3210
3211 Below is the complete list of the currently supported symbolic operators 
3212 with examples. See the iASL User Guide for additional information.
3213
3214
3215 ASL+ Syntax      Legacy ASL Equivalent
3216 -----------      ---------------------
3217
3218     // Math operators
3219
3220 Z = X + Y        Add (X, Y, Z)
3221 Z = X - Y        Subtract (X, Y, Z)
3222 Z = X * Y        Multiply (X, Y, Z)
3223 Z = X / Y        Divide (X, Y, , Z)
3224 Z = X % Y        Mod (X, Y, Z)
3225 Z = X << Y       ShiftLeft (X, Y, Z)
3226 Z = X >> Y       ShiftRight (X, Y, Z)
3227 Z = X & Y        And (X, Y, Z)
3228 Z = X | Y        Or (X, Y, Z)
3229 Z = X ^ Y        Xor (X, Y, Z)
3230 Z = ~X           Not (X, Z)
3231 X++              Increment (X)
3232 X--              Decrement (X)
3233
3234     // Logical operators
3235
3236 (X == Y)         LEqual (X, Y)
3237 (X != Y)         LNotEqual (X, Y)
3238 (X < Y)          LLess (X, Y)
3239 (X > Y)          LGreater (X, Y)
3240 (X <= Y)         LLessEqual (X, Y)
3241 (X >= Y)         LGreaterEqual (X, Y)
3242 (X && Y)         LAnd (X, Y)
3243 (X || Y)         LOr (X, Y)
3244 (!X)             LNot (X)
3245
3246     // Assignment and compound assignment operations
3247
3248 X = Y           Store (Y, X)
3249 X += Y          Add (X, Y, X)
3250 X -= Y          Subtract (X, Y, X)
3251 X *= Y          Multiply (X, Y, X)
3252 X /= Y          Divide (X, Y, , X)
3253 X %= Y          Mod (X, Y, X)
3254 X <<= Y         ShiftLeft (X, Y, X)
3255 X >>= Y         ShiftRight (X, Y, X)
3256 X &= Y          And (X, Y, X)
3257 X |= Y          Or (X, Y, X)
3258 X ^= Y          Xor (X, Y, X)
3259
3260
3261 3) ASL+ Examples:
3262 -----------------
3263
3264 Legacy ASL:
3265         If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3266             And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 
3267 0x03FB), 
3268             0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3269         {
3270             And (MEMB, 0xFFFFFFF0, SRMB)
3271             Store (MEMB, Local2)
3272             Store (PDBM, Local1)
3273             And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3274             Store (SRMB, MEMB)
3275             Or (PDBM, 0x02, PDBM)
3276         }
3277
3278 ASL+ version:
3279         If (((R510 & 0x03FB) == 0x02E0) ||
3280             ((R520 & 0x03FB) == 0x02E0) ||
3281             ((R530 & 0x03FB) == 0x02E0) || 
3282             ((R540 & 0x03FB) == 0x02E0))
3283         {
3284             SRMB = (MEMB & 0xFFFFFFF0)
3285             Local2 = MEMB
3286             Local1 = PDBM
3287             PDBM &= 0xFFFFFFFFFFFFFFF9
3288             MEMB = SRMB
3289             PDBM |= 0x02
3290         }
3291
3292 Legacy ASL:
3293         Store (0x1234, Local1)
3294         Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3295         Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3296         Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3297         Store (Index (PKG1, 0x03), Local6)
3298         Store (Add (Local3, Local2), Debug)
3299         Add (Local1, 0x0F, Local2)
3300         Add (Local1, Multiply (Local2, Local3), Local2)
3301         Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3302
3303 ASL+ version:
3304         Local1 = 0x1234
3305         Local3 = (((Local1 + TEST) + 0x20) * Local2)
3306         Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3307         Local3 = (Local1 + (TEST + (0x20 * Local2)))
3308         Local6 = Index (PKG1, 0x03)
3309         Debug = (Local3 + Local2)
3310         Local2 = (Local1 + 0x0F)
3311         Local2 = (Local1 + (Local2 * Local3))
3312         Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3313
3314
3315 ----------------------------------------
3316 26 September 2014. Summary of changes for version 20140926:
3317
3318 1) ACPICA kernel-resident subsystem:
3319
3320 Updated the GPIO operation region handler interface (GeneralPurposeIo). 
3321 In order to support GPIO Connection objects with multiple pins, along 
3322 with the related Field objects, the following changes to the interface 
3323 have been made: The Address is now defined to be the offset in bits of 
3324 the field unit from the previous invocation of a Connection. It can be 
3325 viewed as a "Pin Number Index" into the connection resource descriptor. 
3326 The BitWidth is the exact bit width of the field. It is usually one bit, 
3327 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 
3328 additional information and examples.
3329
3330 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 
3331 corresponding _Lxx/_Exx methods are disabled (they may have been enabled 
3332 by the firmware), so that they cannot fire until they are enabled via 
3333 AcpiUpdateAllGpes. Rafael J. Wysocki.
3334
3335 Added a new return flag for the Event/GPE status interfaces -- 
3336 AcpiGetEventStatus and AcpiGetGpeStatus. The new 
3337 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 
3338 GPE currently has a handler associated with it, and can thus actually 
3339 affect the system. Lv Zheng.
3340
3341 Example Code and Data Size: These are the sizes for the OS-independent 
3342 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3343 debug version of the code includes the debug output trace mechanism and 
3344 has a much larger code and data size.
3345
3346   Current Release:
3347     Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3348     Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3349   Previous Release:
3350     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3351     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3352
3353 2) iASL Compiler/Disassembler and Tools:
3354
3355 iASL: Fixed a memory allocation/free regression introduced in 20140828 
3356 that could cause the compiler to crash. This was introduced inadvertently 
3357 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 
3358 1113.
3359
3360 iASL: Removed two error messages that have been found to create false 
3361 positives, until they can be fixed and fully validated (ACPICA BZ 1112):
3362 1) Illegal forward reference within a method
3363 2) Illegal reference across two methods
3364
3365 iASL: Implemented a new option (-lm) to create a hardware mapping file 
3366 that summarizes all GPIO, I2C, SPI, and UART connections. This option 
3367 works for both the compiler and disassembler. See the iASL compiler user 
3368 guide for additional information and examples (section 6.4.6).
3369
3370 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 
3371 version 2. This corrects the AE_BAD_HEADER exception seen on systems with 
3372 a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3373
3374 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 
3375 unless STDIN is actually a terminal. Assists with batch-mode processing. 
3376 ACPICA BZ 1114.
3377
3378 Disassembler/AcpiHelp: Added another large group of recognized _HID 
3379 values.
3380
3381
3382 ----------------------------------------
3383 28 August 2014. Summary of changes for version 20140828:
3384
3385 1) ACPICA kernel-resident subsystem:
3386
3387 Fixed a problem related to the internal use of the Timer() operator where 
3388 a 64-bit divide could cause an attempted link to a double-precision math 
3389 library. This divide is not actually necessary, so the code was 
3390 restructured to eliminate it. Lv Zheng.
3391
3392 ACPI 5.1: Added support for the runtime validation of the _DSD package 
3393 (similar to the iASL support).
3394
3395 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 
3396 SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3397
3398 Example Code and Data Size: These are the sizes for the OS-independent 
3399 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3400 debug version of the code includes the debug output trace mechanism and 
3401 has a much larger code and data size.
3402
3403   Current Release:
3404     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3405     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3406   Previous Release:
3407     Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
3408     Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3409
3410 2) iASL Compiler/Disassembler and Tools:
3411
3412 AcpiExec: Fixed a problem on unix systems where the original terminal 
3413 state was not always properly restored upon exit. Seen when using the -v 
3414 option. ACPICA BZ 1104.
3415
3416 iASL: Fixed a problem with the validation of the ranges/length within the 
3417 Memory24 resource descriptor. There was a boundary condition when the 
3418 range was equal to the (length -1) caused by the fact that these values 
3419 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3420
3421 Disassembler: Fixed a problem with the GpioInt descriptor interrupt 
3422 polarity 
3423 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 
3424 is 
3425 now supported properly.
3426
3427 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 
3428 in the disassembler, data table compiler, and table template generator.
3429
3430 iASL: Added a requirement for Device() objects that one of either a _HID 
3431 or _ADR must exist within the scope of a Device, as per the ACPI 
3432 specification. Remove a similar requirement that was incorrectly in place 
3433 for the _DSD object.
3434
3435 iASL: Added error detection for illegal named references within control 
3436 methods that would cause runtime failures. Now trapped as errors are: 1) 
3437 References to objects within a non-parent control method. 2) Forward 
3438 references (within a method) -- for control methods, AML interpreters use 
3439 a one-pass parse of control methods. ACPICA BZ 1008.
3440
3441 iASL: Added error checking for dependencies related to the _PSx power 
3442 methods. ACPICA BZ 1029.
3443 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 
3444 _PS3.
3445 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 
3446 scope.
3447
3448 iASL and table compiler: Cleanup miscellaneous memory leaks by fully 
3449 deploying the existing object and string caches and adding new caches for 
3450 the table compiler.
3451
3452 iASL: Split the huge parser source file into multiple subfiles to improve 
3453 manageability. Generation now requires the M4 macro preprocessor, which 
3454 is part of the Bison distribution on both unix and windows platforms.
3455
3456 AcpiSrc: Fixed and removed all extraneous warnings generated during 
3457 entire ACPICA source code scan and/or conversion.
3458
3459
3460 ----------------------------------------
3461
3462 24 July 2014. Summary of changes for version 20140724: 
3463
3464 The ACPI 5.1 specification has been released and is available at: 
3465 http://uefi.org/specs/access
3466
3467
3468 0) ACPI 5.1 support in ACPICA:
3469
3470 ACPI 5.1 is fully supported in ACPICA as of this release.
3471
3472 New predefined names. Support includes iASL and runtime ACPICA 
3473 validation.
3474     _CCA (Cache Coherency Attribute).
3475     _DSD (Device-Specific Data). David Box.
3476
3477 Modifications to existing ACPI tables. Support includes headers, iASL 
3478 Data Table compiler, disassembler, and the template generator.
3479     FADT - New fields and flags. Graeme Gregory.
3480     GTDT - One new subtable and new fields. Tomasz Nowicki.
3481     MADT - Two new subtables. Tomasz Nowicki.
3482     PCCT - One new subtable.
3483
3484 Miscellaneous.
3485     New notification type for System Resource Affinity change events.
3486
3487
3488 1) ACPICA kernel-resident subsystem:
3489
3490 Fixed a regression introduced in 20140627 where a fault can happen during 
3491 the deletion of Alias AML namespace objects. The problem affected both 
3492 the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3493
3494 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 
3495 simple mechanism to enable wake GPEs that have no associated handler or 
3496 control method. Rafael Wysocki.
3497
3498 Updated the AcpiEnableGpe interface to disallow the enable if there is no 
3499 handler or control method associated with the particular GPE. This will 
3500 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3501
3502 Updated GPE handling and dispatch by disabling the GPE before clearing 
3503 the status bit for edge-triggered GPEs. Lv Zheng.
3504
3505 Added Timer() support to the AML Debug object. The current timer value is 
3506 now displayed with each invocation of (Store to) the debug object to 
3507 enable simple generation of execution times for AML code (method 
3508 execution for example.) ACPICA BZ 1093.
3509
3510 Example Code and Data Size: These are the sizes for the OS-independent 
3511 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3512 debug version of the code includes the debug output trace mechanism and 
3513 has a much larger code and data size.
3514
3515   Current Release:
3516     Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
3517     Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3518   Previous Release:
3519     Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3520     Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3521
3522
3523 2) iASL Compiler/Disassembler and Tools:
3524
3525 Fixed an issue with the recently added local printf implementation, 
3526 concerning width/precision specifiers that could cause incorrect output. 
3527 Lv Zheng. ACPICA BZ 1094.
3528
3529 Disassembler: Added support to detect buffers that contain UUIDs and 
3530 disassemble them to an invocation of the ToUUID operator. Also emit 
3531 commented descriptions of known ACPI-related UUIDs.
3532
3533 AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 
3534 -u. Adds three new files. 
3535
3536 iASL: Update table compiler and disassembler for DMAR table changes that 
3537 were introduced in September 2013. With assistance by David Woodhouse.
3538
3539 ----------------------------------------
3540 27 June 2014. Summary of changes for version 20140627:
3541
3542 1) ACPICA kernel-resident subsystem:
3543
3544 Formatted Output: Implemented local versions of standard formatted output 
3545 utilities such as printf, etc. Over time, it has been discovered that 
3546 there are in fact many portability issues with printf, and the addition 
3547 of this feature will fix/prevent these issues once and for all. Some 
3548 known issues are summarized below:
3549
3550 1) Output of 64-bit values is not portable. For example, UINT64 is %ull 
3551 for the Linux kernel and is %uI64 for some MSVC versions.
3552 2) Invoking printf consistently in a manner that is portable across both 
3553 32-bit and 64-bit platforms is difficult at best in many situations.
3554 3) The output format for pointers varies from system to system (leading 
3555 zeros especially), and leads to inconsistent output from ACPICA across 
3556 platforms.
3557 4) Certain platform-specific printf formats may conflict with ACPICA use.
3558 5) If there is no local C library available, ACPICA now has local support 
3559 for printf.
3560
3561 -- To address these printf issues in a complete manner, ACPICA now 
3562 directly implements a small subset of printf format specifiers, only 
3563 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3564
3565 Implemented support for ACPICA generation within the EFI environment. 
3566 Initially, the AcpiDump utility is supported in the UEFI shell 
3567 environment. Lv Zheng.
3568
3569 Added a new external interface, AcpiLogError, to improve ACPICA 
3570 portability. This allows the host to redirect error messages from the 
3571 ACPICA utilities. Lv Zheng.
3572
3573 Added and deployed new OSL file I/O interfaces to improve ACPICA 
3574 portability:
3575   AcpiOsOpenFile
3576   AcpiOsCloseFile
3577   AcpiOsReadFile
3578   AcpiOsWriteFile
3579   AcpiOsGetFileOffset
3580   AcpiOsSetFileOffset
3581 There are C library implementations of these functions in the new file 
3582 service_layers/oslibcfs.c -- however, the functions can be implemented by 
3583 the local host in any way necessary. Lv Zheng.
3584
3585 Implemented a mechanism to disable/enable ACPI table checksum validation 
3586 at runtime. This can be useful when loading tables very early during OS 
3587 initialization when it may not be possible to map the entire table in 
3588 order to compute the checksum. Lv Zheng.
3589
3590 Fixed a buffer allocation issue for the Generic Serial Bus support. 
3591 Originally, a fixed buffer length was used. This change allows for 
3592 variable-length buffers based upon the protocol indicated by the field 
3593 access attributes. Reported by Lan Tianyu. Lv Zheng.
3594
3595 Fixed a problem where an object detached from a namespace node was not 
3596 properly terminated/cleared and could cause a circular list problem if 
3597 reattached. ACPICA BZ 1063. David Box.
3598
3599 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3600
3601 Fixed a possible memory leak in an error return path within the function 
3602 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3603
3604 Example Code and Data Size: These are the sizes for the OS-independent 
3605 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3606 debug version of the code includes the debug output trace mechanism and 
3607 has a much larger code and data size.
3608
3609   Current Release:
3610     Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3611     Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3612   Previous Release:
3613     Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3614     Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3615
3616
3617 2) iASL Compiler/Disassembler and Tools:
3618
3619 Disassembler: Add dump of ASCII equivalent text within a comment at the 
3620 end of each line of the output for the Buffer() ASL operator.
3621
3622 AcpiDump: Miscellaneous changes:
3623   Fixed repetitive table dump in -n mode.
3624   For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 
3625 the ACPI 2.0 GUID fails.
3626
3627 iASL: Fixed a problem where the compiler could fault if incorrectly given 
3628 an acpidump output file as input. ACPICA BZ 1088. David Box.
3629
3630 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 
3631 they are invoked without any arguments.
3632
3633 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 
3634 1086. Colin Ian King.
3635
3636 Disassembler: Cleaned up a block of code that extracts a parent Op 
3637 object. Added a comment that explains that the parent is guaranteed to be 
3638 valid in this case. ACPICA BZ 1069.
3639
3640
3641 ----------------------------------------
3642 24 April 2014. Summary of changes for version 20140424:
3643
3644 1) ACPICA kernel-resident subsystem:
3645
3646 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 
3647 Some of these tables are known to contain a trailing NULL entry. Lv 
3648 Zheng.
3649
3650 Removed an extraneous error message for the case where there are a large 
3651 number of system GPEs (> 124). This was the "32-bit FADT register is too 
3652 long to convert to GAS struct" message, which is irrelevant for GPEs 
3653 since the GPEx_BLK_LEN fields of the FADT are always used instead of the 
3654 (limited capacity) GAS bit length. Also, several changes to ensure proper 
3655 support for GPE numbers > 255, where some "GPE number" fields were 8-bits 
3656 internally.
3657
3658 Implemented and deployed additional configuration support for the public 
3659 ACPICA external interfaces. Entire classes of interfaces can now be 
3660 easily modified or configured out, replaced by stubbed inline functions 
3661 by default. Lv Zheng.
3662
3663 Moved all public ACPICA runtime configuration globals to the public 
3664 ACPICA external interface file for convenience. Also, removed some 
3665 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3666
3667 Documentation: Added a new section to the ACPICA reference describing the 
3668 maximum number of GPEs that can be supported by the FADT-defined GPEs in 
3669 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 
3670 reference.
3671
3672 Example Code and Data Size: These are the sizes for the OS-independent 
3673 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3674 debug version of the code includes the debug output trace mechanism and 
3675 has a much larger code and data size.
3676
3677   Current Release:
3678     Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3679     Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3680   Previous Release:
3681     Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3682     Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3683
3684
3685 2) iASL Compiler/Disassembler and Tools:
3686
3687 iASL and disassembler: Add full support for the LPIT table (Low Power 
3688 Idle Table). Includes support in the disassembler, data table compiler, 
3689 and template generator.
3690
3691 AcpiDump utility:
3692 1) Add option to force the use of the RSDT (over the XSDT).
3693 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
3694
3695 iASL: Add check for predefined packages that are too large.  For 
3696 predefined names that contain subpackages, check if each subpackage is 
3697 too large. (Check for too small already exists.)
3698
3699 Debugger: Updated the GPE command (which simulates a GPE by executing the 
3700 GPE code paths in ACPICA). The GPE device is now optional, and defaults 
3701 to the GPE 0/1 FADT-defined blocks.
3702
3703 Unix application OSL: Update line-editing support. Add additional error 
3704 checking and take care not to reset terminal attributes on exit if they 
3705 were never set. This should help guarantee that the terminal is always 
3706 left in the previous state on program exit.
3707
3708
3709 ----------------------------------------
3710 25 March 2014. Summary of changes for version 20140325:
3711
3712 1) ACPICA kernel-resident subsystem:
3713
3714 Updated the auto-serialize feature for control methods. This feature 
3715 automatically serializes all methods that create named objects in order 
3716 to prevent runtime errors. The update adds support to ignore the 
3717 currently executing AML SyncLevel when invoking such a method, in order 
3718 to prevent disruption of any existing SyncLevel priorities that may exist 
3719 in the AML code. Although the use of SyncLevels is relatively rare, this 
3720 change fixes a regression where an AE_AML_MUTEX_ORDER exception can 
3721 appear on some machines starting with the 20140214 release.
3722
3723 Added a new external interface to allow the host to install ACPI tables 
3724 very early, before the namespace is even created. AcpiInstallTable gives 
3725 the host additional flexibility for ACPI table management. Tables can be 
3726 installed directly by the host as if they had originally appeared in the 
3727 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 
3728 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along 
3729 with additional internal restructuring and cleanup. See the ACPICA 
3730 Reference for interface details. Lv Zheng.
3731
3732 Added validation of the checksum for all incoming dynamically loaded 
3733 tables (via external interfaces or via AML Load/LoadTable operators). Lv 
3734 Zheng.
3735
3736 Updated the use of the AcpiOsWaitEventsComplete interface during Notify 
3737 and GPE handler removal. Restructured calls to eliminate possible race 
3738 conditions. Lv Zheng.
3739
3740 Added a warning for the use/execution of the ASL/AML Unload (table) 
3741 operator. This will help detect and identify machines that use this 
3742 operator if and when it is ever used. This operator has never been seen 
3743 in the field and the usage model and possible side-effects of the drastic 
3744 runtime action of a full table removal are unknown.
3745
3746 Reverted the use of #pragma push/pop which was introduced in the 20140214 
3747 release. It appears that push and pop are not implemented by enough 
3748 compilers to make the use of this feature feasible for ACPICA at this 
3749 time. However, these operators may be deployed in a future ACPICA 
3750 release.
3751
3752 Added the missing EXPORT_SYMBOL macros for the install and remove SCI 
3753 handler interfaces.
3754
3755 Source code generation:
3756 1) Disabled the use of the "strchr" macro for the gcc-specific 
3757 generation. For some versions of gcc, this macro can periodically expose 
3758 a compiler bug which in turn causes compile-time error(s).
3759 2) Added support for PPC64 compilation. Colin Ian King.
3760
3761 Example Code and Data Size: These are the sizes for the OS-independent 
3762 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3763 debug version of the code includes the debug output trace mechanism and 
3764 has a much larger code and data size.
3765
3766   Current Release:
3767     Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3768     Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3769   Previous Release:
3770     Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3771     Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3772
3773
3774 2) iASL Compiler/Disassembler and Tools:
3775
3776 Disassembler: Added several new features to improve the readability of 
3777 the resulting ASL code. Extra information is emitted within comment 
3778 fields in the ASL code:
3779 1) Known _HID/_CID values are decoded to descriptive text.
3780 2) Standard values for the Notify() operator are decoded to descriptive 
3781 text.
3782 3) Target operands are expanded to full pathnames (in a comment) when 
3783 possible.
3784
3785 Disassembler: Miscellaneous updates for extern() handling:
3786 1) Abort compiler if file specified by -fe option does not exist.
3787 2) Silence unnecessary warnings about argument count mismatches.
3788 3) Update warning messages concerning unresolved method externals.
3789 4) Emit "UnknownObj" keyword for externals whose type cannot be 
3790 determined.
3791
3792 AcpiHelp utility:
3793 1) Added the -a option to display both the ASL syntax and the AML 
3794 encoding for an input ASL operator. This effectively displays all known 
3795 information about an ASL operator with one AcpiHelp invocation.
3796 2) Added substring match support (similar to a wildcard) for the -i 
3797 (_HID/PNP IDs) option.
3798
3799 iASL/Disassembler: Since this tool does not yet support execution on big-
3800 endian machines, added detection of endianness and an error message if 
3801 execution is attempted on big-endian. Support for big-endian within iASL 
3802 is a feature that is on the ACPICA to-be-done list.
3803
3804 AcpiBin utility:
3805 1) Remove option to extract binary files from an acpidump; this function 
3806 is made obsolete by the AcpiXtract utility.
3807 2) General cleanup of open files and allocated buffers.
3808
3809
3810 ----------------------------------------
3811 14 February 2014. Summary of changes for version 20140214:
3812
3813 1) ACPICA kernel-resident subsystem:
3814
3815 Implemented a new mechanism to proactively prevent problems with ill-
3816 behaved reentrant control methods that create named ACPI objects. This 
3817 behavior is illegal as per the ACPI specification, but is nonetheless 
3818 frequently seen in the field. Previously, this could lead to an 
3819 AE_ALREADY_EXISTS exception if the method was actually entered by more 
3820 than one thread. This new mechanism detects such methods at table load 
3821 time and marks them "serialized" to prevent reentrancy. A new global 
3822 option, AcpiGbl_AutoSerializeMethods, has been added to disable this 
3823 feature if desired. This mechanism and global option obsoletes and 
3824 supersedes the previous AcpiGbl_SerializeAllMethods option.
3825
3826 Added the "Windows 2013" string to the _OSI support. ACPICA will now 
3827 respond TRUE to _OSI queries with this string. It is the stated policy of 
3828 ACPICA to add new strings to the _OSI support as soon as possible after 
3829 they are defined. See the full ACPICA _OSI policy which has been added to 
3830 the utilities/utosi.c file.
3831
3832 Hardened/updated the _PRT return value auto-repair code:
3833 1) Do not abort the repair on a single subpackage failure, continue to 
3834 check all subpackages.
3835 2) Add check for the minimum subpackage length (4).
3836 3) Properly handle extraneous NULL package elements.
3837
3838 Added support to avoid the possibility of infinite loops when traversing 
3839 object linked lists. Never allow an infinite loop, even in the face of 
3840 corrupted object lists.
3841
3842 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 
3843 pack(pop) directives to ensure that the ACPICA headers are independent of 
3844 compiler settings or other host headers.
3845
3846 Example Code and Data Size: These are the sizes for the OS-independent 
3847 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3848 debug version of the code includes the debug output trace mechanism and 
3849 has a much larger code and data size.
3850
3851   Current Release:
3852     Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3853     Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3854   Previous Release:
3855     Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3856     Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3857
3858
3859 2) iASL Compiler/Disassembler and Tools:
3860
3861 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 
3862 first reserved field was incorrectly forced to have a value of zero. This 
3863 change correctly forces the field to have a value of one. ACPICA BZ 1081.
3864
3865 Debugger: Added missing support for the "Extra" and "Data" subobjects 
3866 when displaying object data.
3867
3868 Debugger: Added support to display entire object linked lists when 
3869 displaying object data.
3870
3871 iASL: Removed the obsolete -g option to obtain ACPI tables from the 
3872 Windows registry. This feature has been superseded by the acpidump 
3873 utility. 
3874
3875
3876 ----------------------------------------
3877 14 January 2014. Summary of changes for version 20140114:
3878
3879 1) ACPICA kernel-resident subsystem:
3880
3881 Updated all ACPICA copyrights and signons to 2014. Added the 2014 
3882 copyright to all module headers and signons, including the standard Linux 
3883 header. This affects virtually every file in the ACPICA core subsystem, 
3884 iASL compiler, all ACPICA utilities, and the test suites.
3885
3886 Improved parameter validation for AcpiInstallGpeBlock. Added the 
3887 following checks:
3888 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
3889 2) There is not already a GPE block attached to the device.
3890 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 
3891 device.
3892
3893 Correctly support "references" in the ACPI_OBJECT. This change fixes the 
3894 support to allow references (namespace nodes) to be passed as arguments 
3895 to control methods via the evaluate object interface. This is probably 
3896 most useful for testing purposes, however.
3897
3898 Improved support for 32/64 bit physical addresses in printf()-like 
3899 output. This change improves the support for physical addresses in printf 
3900 debug statements and other output on both 32-bit and 64-bit hosts. It 
3901 consistently outputs the appropriate number of bytes for each host. The 
3902 %p specifier is unsatisfactory since it does not emit uniform output on 
3903 all hosts/clib implementations (on some, leading zeros are not supported, 
3904 leading to difficult-to-read output).
3905
3906 Example Code and Data Size: These are the sizes for the OS-independent 
3907 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3908 debug version of the code includes the debug output trace mechanism and 
3909 has a much larger code and data size.
3910
3911   Current Release:
3912     Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3913     Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3914   Previous Release:
3915     Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
3916     Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
3917
3918
3919 2) iASL Compiler/Disassembler and Tools:
3920
3921 iASL: Fix a possible fault when using the Connection() operator. Fixes a 
3922 problem if the parent Field definition for the Connection operator refers 
3923 to an operation region that does not exist. ACPICA BZ 1064.
3924
3925 AcpiExec: Load of local test tables is now optional. The utility has the 
3926 capability to load some various tables to test features of ACPICA. 
3927 However, there are enough of them that the output of the utility became 
3928 confusing. With this change, only the required local tables are displayed 
3929 (RSDP, XSDT, etc.) along with the actual tables loaded via the command 
3930 line specification. This makes the default output simler and easier to 
3931 understand. The -el command line option restores the original behavior 
3932 for testing purposes.
3933
3934 AcpiExec: Added support for overlapping operation regions. This change 
3935 expands the simulation of operation regions by supporting regions that 
3936 overlap within the given address space. Supports SystemMemory and 
3937 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
3938
3939 AcpiExec: Added region handler support for PCI_Config and EC spaces. This 
3940 allows AcpiExec to simulate these address spaces, similar to the current 
3941 support for SystemMemory and SystemIO.
3942
3943 Debugger: Added new command to read/write/compare all namespace objects. 
3944 The command "test objects" will exercise the entire namespace by writing 
3945 new values to each data object, and ensuring that the write was 
3946 successful. The original value is then restored and verified.
3947
3948 Debugger: Added the "test predefined" command. This change makes this 
3949 test public and puts it under the new "test" command. The test executes 
3950 each and every predefined name within the current namespace.
3951
3952
3953 ----------------------------------------
3954 18 December 2013. Summary of changes for version 20131218:
3955
3956 Global note: The ACPI 5.0A specification was released this month. There 
3957 are no changes needed for ACPICA since this release of ACPI is an 
3958 errata/clarification release. The specification is available at 
3959 acpi.info. 
3960
3961
3962 1) ACPICA kernel-resident subsystem:
3963
3964 Added validation of the XSDT root table if it is present. Some older 
3965 platforms contain an XSDT that is ill-formed or otherwise invalid (such 
3966 as containing some or all entries that are NULL pointers). This change 
3967 adds a new function to validate the XSDT before actually using it. If the 
3968 XSDT is found to be invalid, ACPICA will now automatically fall back to 
3969 using the RSDT instead. Original implementation by Zhao Yakui. Ported to 
3970 ACPICA and enhanced by Lv Zheng and Bob Moore.
3971
3972 Added a runtime option to ignore the XSDT and force the use of the RSDT. 
3973 This change adds a runtime option that will force ACPICA to use the RSDT 
3974 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 
3975 requires that an XSDT be used instead of the RSDT, the XSDT has been 
3976 found to be corrupt or ill-formed on some machines. Lv Zheng.
3977
3978 Added a runtime option to favor 32-bit FADT register addresses over the 
3979 64-bit addresses. This change adds an option to favor 32-bit FADT 
3980 addresses when there is a conflict between the 32-bit and 64-bit versions 
3981 of the same register. The default behavior is to use the 64-bit version 
3982 in accordance with the ACPI specification. This can now be overridden via 
3983 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
3984
3985 During the change above, the internal "Convert FADT" and "Verify FADT" 
3986 functions have been merged to simplify the code, making it easier to 
3987 understand and maintain. ACPICA BZ 933.
3988
3989 Improve exception reporting and handling for GPE block installation. 
3990 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 
3991 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
3992
3993 Added helper macros to extract bus/segment numbers from the HEST table. 
3994 This change adds two macros to extract the encoded bus and segment 
3995 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 
3996 Betty Dall <betty.dall@hp.com>
3997
3998 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 
3999 by ACPICA. It is not a public macro, so it should have no effect on 
4000 existing OSV code. Lv Zheng.
4001
4002 Example Code and Data Size: These are the sizes for the OS-independent 
4003 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4004 debug version of the code includes the debug output trace mechanism and 
4005 has a much larger code and data size.
4006
4007   Current Release:
4008     Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4009     Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4010   Previous Release:
4011     Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4012     Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4013
4014
4015 2) iASL Compiler/Disassembler and Tools:
4016
4017 Disassembler: Improved pathname support for emitted External() 
4018 statements. This change adds full pathname support for external names 
4019 that have been resolved internally by the inclusion of additional ACPI 
4020 tables (via the iASL -e option). Without this change, the disassembler 
4021 can emit multiple externals for the same object, or it become confused 
4022 when the Scope() operator is used on an external object. Overall, greatly 
4023 improves the ability to actually recompile the emitted ASL code when 
4024 objects a referenced across multiple ACPI tables. Reported by Michael 
4025 Tsirkin (mst@redhat.com).
4026
4027 Tests/ASLTS: Updated functional control suite to execute with no errors. 
4028 David Box. Fixed several errors related to the testing of the interpreter 
4029 slack mode. Lv Zheng.
4030
4031 iASL: Added support to detect names that are declared within a control 
4032 method, but are unused (these are temporary names that are only valid 
4033 during the time the method is executing). A remark is issued for these 
4034 cases. ACPICA BZ 1022.
4035
4036 iASL: Added full support for the DBG2 table. Adds full disassembler, 
4037 table compiler, and template generator support for the DBG2 table (Debug 
4038 Port 2 table).
4039
4040 iASL: Added full support for the PCCT table, update the table definition. 
4041 Updates the PCCT table definition in the actbl3.h header and adds table 
4042 compiler and template generator support.
4043
4044 iASL: Added an option to emit only error messages (no warnings/remarks). 
4045 The -ve option will enable only error messages, warnings and remarks are 
4046 suppressed. This can simplify debugging when only the errors are 
4047 important, such as when an ACPI table is disassembled and there are many 
4048 warnings and remarks -- but only the actual errors are of real interest.
4049
4050 Example ACPICA code (source/tools/examples): Updated the example code so 
4051 that it builds to an actual working program, not just example code. Added 
4052 ACPI tables and execution of an example control method in the DSDT. Added 
4053 makefile support for Unix generation.
4054
4055
4056 ----------------------------------------
4057 15 November 2013. Summary of changes for version 20131115:
4058
4059 This release is available at https://acpica.org/downloads
4060
4061
4062 1) ACPICA kernel-resident subsystem:
4063
4064 Resource Manager: Fixed loop termination for the "get AML length" 
4065 function. The loop previously had an error termination on a NULL resource 
4066 pointer, which can never happen since the loop simply increments a valid 
4067 resource pointer. This fix changes the loop to terminate with an error on 
4068 an invalid end-of-buffer condition. The problem can be seen as an 
4069 infinite loop by callers to AcpiSetCurrentResources with an invalid or 
4070 corrupted resource descriptor, or a resource descriptor that is missing 
4071 an END_TAG descriptor. Reported by Dan Carpenter 
4072 <dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4073
4074 Table unload and ACPICA termination: Delete all attached data objects 
4075 during namespace node deletion. This fix updates namespace node deletion 
4076 to delete the entire list of attached objects (attached via 
4077 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 
4078 1024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4079
4080 ACPICA termination: Added support to delete all objects attached to the 
4081 root namespace node. This fix deletes any and all objects that have been 
4082 attached to the root node via AcpiAttachData. Previously, none of these 
4083 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4084
4085 Debug output: Do not emit the function nesting level for the in-kernel 
4086 build. The nesting level is really only useful during a single-thread 
4087 execution. Therefore, only enable this output for the AcpiExec utility. 
4088 Also, only emit the thread ID when executing under AcpiExec (Context 
4089 switches are still always detected and a message is emitted). ACPICA BZ 
4090 972.
4091
4092 Example Code and Data Size: These are the sizes for the OS-independent 
4093 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4094 debug version of the code includes the debug output trace mechanism and 
4095 has a much larger code and data size.
4096
4097   Current Release:
4098     Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4099     Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4100   Previous Release:
4101     Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4102     Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4103
4104
4105 2) iASL Compiler/Disassembler and Tools:
4106
4107 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 
4108 correct portable POSIX header for terminal control functions.
4109
4110 Disassembler: Fixed control method invocation issues related to the use 
4111 of the CondRefOf() operator. The problem is seen in the disassembly where 
4112 control method invocations may not be disassembled properly if the 
4113 control method name has been used previously as an argument to CondRefOf. 
4114 The solution is to not attempt to emit an external declaration for the 
4115 CondRefOf target (it is not necessary in the first place). This prevents 
4116 disassembler object type confusion. ACPICA BZ 988.
4117
4118 Unix Makefiles: Added an option to disable compiler optimizations and the 
4119 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 
4120 with optimizations (reportedly, gcc 4.4 for example). This change adds a 
4121 command line option for make (NOOPT) that disables all compiler 
4122 optimizations and the _FORTIFY_SOURCE compiler flag. The default 
4123 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 
4124 1034. Lv Zheng, Bob Moore.
4125
4126 Tests/ASLTS: Added options to specify individual test cases and modes. 
4127 This allows testers running aslts.sh to optionally specify individual 
4128 test modes and test cases. Also added an option to disable the forced 
4129 generation of the ACPICA tools from source if desired. Lv Zheng.
4130
4131 ----------------------------------------
4132 27 September 2013. Summary of changes for version 20130927:
4133
4134 This release is available at https://acpica.org/downloads
4135
4136
4137 1) ACPICA kernel-resident subsystem:
4138
4139 Fixed a problem with store operations to reference objects. This change 
4140 fixes a problem where a Store operation to an ArgX object that contained 
4141
4142 reference to a field object did not complete the automatic dereference 
4143 and 
4144 then write to the actual field object. Instead, the object type of the 
4145 field object was inadvertently changed to match the type of the source 
4146 operand. The new behavior will actually write to the field object (buffer 
4147 field or field unit), thus matching the correct ACPI-defined behavior.
4148
4149 Implemented support to allow the host to redefine individual OSL 
4150 prototypes. This change enables the host to redefine OSL prototypes found 
4151 in the acpiosxf.h file. This allows the host to implement OSL interfaces 
4152 with a macro or inlined function. Further, it allows the host to add any 
4153 additional required modifiers such as __iomem, __init, __exit, etc., as 
4154 necessary on a per-interface basis. Enables maximum flexibility for the 
4155 OSL interfaces. Lv Zheng.
4156
4157 Hardcoded the access width for the FADT-defined reset register. The ACPI 
4158 specification requires the reset register width to be 8 bits. ACPICA now 
4159 hardcodes the width to 8 and ignores the FADT width value. This provides 
4160 compatibility with other ACPI implementations that have allowed BIOS code 
4161 with bad register width values to go unnoticed. Matthew Garett, Bob 
4162 Moore, 
4163 Lv Zheng.
4164
4165 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 
4166 used 
4167 in the OSL header (acpiosxf). The change modifies the position of this 
4168 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 
4169 build issues if the OSL defines the implementation of the interface to be 
4170 an inline stub function. Lv Zheng.
4171
4172 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 
4173 initialization interfaces. This change adds a new macro for the main init 
4174 and terminate external interfaces in order to support hosts that require 
4175 additional or different processing for these functions. Changed from 
4176 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 
4177 Zheng, Bob Moore.
4178
4179 Cleaned up the memory allocation macros for configurability. In the 
4180 common 
4181 case, the ACPI_ALLOCATE and related macros now resolve directly to their 
4182 respective AcpiOs* OSL interfaces. Two options:
4183 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 
4184 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
4185 2) For AcpiExec (and for debugging), the macros can optionally be 
4186 resolved 
4187 to the local ACPICA interfaces that track each allocation (local tracking 
4188 is used to immediately detect memory leaks).
4189 Lv Zheng.
4190
4191 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 
4192 to predefine this macro to either TRUE or FALSE during the system build.
4193
4194 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4195
4196 Example Code and Data Size: These are the sizes for the OS-independent 
4197 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4198 debug version of the code includes the debug output trace mechanism and 
4199 has a much larger code and data size.
4200
4201   Current Release:
4202     Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4203     Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4204   Previous Release:
4205     Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4206     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4207
4208
4209 2) iASL Compiler/Disassembler and Tools:
4210
4211 iASL: Implemented wildcard support for the -e option. This simplifies use 
4212 when there are many SSDTs that must be included to resolve external 
4213 method 
4214 declarations. ACPICA BZ 1041. Example:
4215     iasl -e ssdt*.dat -d dsdt.dat
4216
4217 AcpiExec: Add history/line-editing for Unix/Linux systems. This change 
4218 adds a portable module that implements full history and limited line 
4219 editing for Unix and Linux systems. It does not use readline() due to 
4220 portability issues. Instead it uses the POSIX termio interface to put the 
4221 terminal in raw input mode so that the various special keys can be 
4222 trapped 
4223 (such as up/down-arrow for history support and left/right-arrow for line 
4224 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4225
4226 AcpiXtract: Add support to handle (ignore) "empty" lines containing only 
4227 one or more spaces. This provides compatible with early or different 
4228 versions of the AcpiDump utility. ACPICA BZ 1044.
4229
4230 AcpiDump: Do not ignore tables that contain only an ACPI table header. 
4231 Apparently, some BIOSs create SSDTs that contain an ACPI table header but 
4232 no other data. This change adds support to dump these tables. Any tables 
4233 shorter than the length of an ACPI table header remain in error (an error 
4234 message is emitted). Reported by Yi Li.
4235
4236 Debugger: Echo actual command along with the "unknown command" message.
4237
4238 ----------------------------------------
4239 23 August 2013. Summary of changes for version 20130823:
4240
4241 1) ACPICA kernel-resident subsystem:
4242
4243 Implemented support for host-installed System Control Interrupt (SCI) 
4244 handlers. Certain ACPI functionality requires the host to handle raw 
4245 SCIs. For example, the "SCI Doorbell" that is defined for memory power 
4246 state support requires the host device driver to handle SCIs to examine 
4247 if the doorbell has been activated. Multiple SCI handlers can be 
4248 installed to allow for future expansion. New external interfaces are 
4249 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 
4250 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4251
4252 Operation region support: Never locally free the handler "context" 
4253 pointer. This change removes some dangerous code that attempts to free 
4254 the handler context pointer in some (rare) circumstances. The owner of 
4255 the handler owns this pointer and the ACPICA code should never touch it. 
4256 Although not seen to be an issue in any kernel, it did show up as a 
4257 problem (fault) under AcpiExec. Also, set the internal storage field for 
4258 the context pointer to zero when the region is deactivated, simply for 
4259 sanity. David Box. ACPICA BZ 1039.
4260
4261 AcpiRead: On error, do not modify the return value target location. If an 
4262 error happens in the middle of a split 32/32 64-bit I/O operation, do not 
4263 modify the target of the return value pointer. Makes the code consistent 
4264 with the rest of ACPICA. Bjorn Helgaas.
4265
4266 Example Code and Data Size: These are the sizes for the OS-independent 
4267 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4268 debug version of the code includes the debug output trace mechanism and 
4269 has a much larger code and data size.
4270
4271   Current Release:
4272     Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4273     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4274   Previous Release:
4275     Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4276     Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4277
4278
4279 2) iASL Compiler/Disassembler and Tools:
4280
4281 AcpiDump: Implemented several new features and fixed some problems:
4282 1) Added support to dump the RSDP, RSDT, and XSDT tables.
4283 2) Added support for multiple table instances (SSDT, UEFI).
4284 3) Added option to dump "customized" (overridden) tables (-c).
4285 4) Fixed a problem where some table filenames were improperly 
4286 constructed.
4287 5) Improved some error messages, removed some unnecessary messages.
4288
4289 iASL: Implemented additional support for disassembly of ACPI tables that 
4290 contain invocations of external control methods. The -fe<file> option 
4291 allows the import of a file that specifies the external methods along 
4292 with the required number of arguments for each -- allowing for the 
4293 correct disassembly of the table. This is a workaround for a limitation 
4294 of AML code where the disassembler often cannot determine the number of 
4295 arguments required for an external control method and generates incorrect 
4296 ASL code. See the iASL reference for details. ACPICA BZ 1030.
4297
4298 Debugger: Implemented a new command (paths) that displays the full 
4299 pathnames (namepaths) and object types of all objects in the namespace. 
4300 This is an alternative to the namespace command.
4301
4302 Debugger: Implemented a new command (sci) that invokes the SCI dispatch 
4303 mechanism and any installed handlers.
4304
4305 iASL: Fixed a possible segfault for "too many parent prefixes" condition. 
4306 This can occur if there are too many parent prefixes in a namepath (for 
4307 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4308
4309 Application OSLs: Set the return value for the PCI read functions. These 
4310 functions simply return AE_OK, but should set the return value to zero 
4311 also. This change implements this. ACPICA BZ 1038.
4312
4313 Debugger: Prevent possible command line buffer overflow. Increase the 
4314 size of a couple of the debugger line buffers, and ensure that overflow 
4315 cannot happen. ACPICA BZ 1037.
4316
4317 iASL: Changed to abort immediately on serious errors during the parsing 
4318 phase. Due to the nature of ASL, there is no point in attempting to 
4319 compile these types of errors, and they typically end up causing a 
4320 cascade of hundreds of errors which obscure the original problem.
4321
4322 ----------------------------------------
4323 25 July 2013. Summary of changes for version 20130725:
4324
4325 1) ACPICA kernel-resident subsystem:
4326
4327 Fixed a problem with the DerefOf operator where references to FieldUnits 
4328 and BufferFields incorrectly returned the parent object, not the actual 
4329 value of the object. After this change, a dereference of a FieldUnit 
4330 reference results in a read operation on the field to get the value, and 
4331 likewise, the appropriate BufferField value is extracted from the target 
4332 buffer.
4333
4334 Fixed a problem where the _WAK method could cause a fault under these 
4335 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 
4336 method returned no value. The problem is rarely seen because most kernels 
4337 run ACPICA in slack mode.
4338
4339 For the DerefOf operator, a fatal error now results if an attempt is made 
4340 to dereference a reference (created by the Index operator) to a NULL 
4341 package element. Provides compatibility with other ACPI implementations, 
4342 and this behavior will be added to a future version of the ACPI 
4343 specification.
4344
4345 The ACPI Power Management Timer (defined in the FADT) is now optional. 
4346 This provides compatibility with other ACPI implementations and will 
4347 appear in the next version of the ACPI specification. If there is no PM 
4348 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 
4349 zero in the FADT indicates no PM timer.
4350
4351 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 
4352 allows the host to globally enable/disable all vendor strings, all 
4353 feature strings, or both. Intended to be primarily used for debugging 
4354 purposes only. Lv Zheng.
4355
4356 Expose the collected _OSI data to the host via a global variable. This 
4357 data tracks the highest level vendor ID that has been invoked by the BIOS 
4358 so that the host (and potentially ACPICA itself) can change behaviors 
4359 based upon the age of the BIOS.
4360
4361 Example Code and Data Size: These are the sizes for the OS-independent 
4362 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4363 debug version of the code includes the debug output trace mechanism and 
4364 has a much larger code and data size.
4365
4366   Current Release:
4367     Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4368     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4369   Previous Release:
4370     Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4371     Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4372
4373
4374 2) iASL Compiler/Disassembler and Tools:
4375
4376 iASL: Created the following enhancements for the -so option (create 
4377 offset table):
4378 1)Add offsets for the last nameseg in each namepath for every supported 
4379 object type
4380 2)Add support for Processor, Device, Thermal Zone, and Scope objects
4381 3)Add the actual AML opcode for the parent object of every supported 
4382 object type
4383 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4384
4385 Disassembler: Emit all unresolved external symbols in a single block. 
4386 These are external references to control methods that could not be 
4387 resolved, and thus, the disassembler had to make a guess at the number of 
4388 arguments to parse.
4389
4390 iASL: The argument to the -T option (create table template) is now 
4391 optional. If not specified, the default table is a DSDT, typically the 
4392 most common case.
4393
4394 ----------------------------------------
4395 26 June 2013. Summary of changes for version 20130626:
4396
4397 1) ACPICA kernel-resident subsystem:
4398
4399 Fixed an issue with runtime repair of the _CST object. Null or invalid 
4400 elements were not always removed properly. Lv Zheng. 
4401
4402 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 
4403 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 
4404 the maximum number of GPEs is 1016. Use of multiple GPE block devices 
4405 makes the system-wide number of GPEs essentially unlimited.
4406
4407 Example Code and Data Size: These are the sizes for the OS-independent 
4408 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4409 debug version of the code includes the debug output trace mechanism and 
4410 has a much larger code and data size.
4411
4412   Current Release:
4413     Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4414     Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4415   Previous Release:
4416     Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4417     Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4418
4419
4420 2) iASL Compiler/Disassembler and Tools:
4421
4422 Portable AcpiDump: Implemented full support for the Linux and FreeBSD 
4423 hosts. Now supports Linux, FreeBSD, and Windows.
4424
4425 Disassembler: Added some missing types for the HEST and EINJ tables: "Set 
4426 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4427
4428 iASL/Preprocessor: Implemented full support for nested 
4429 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4430
4431 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 
4432 max. The original purpose of this constraint was to limit the amount of 
4433 debug output. However, the string function in question (UtPrintString) is 
4434 now used for the disassembler also, where 256 bytes is insufficient. 
4435 Reported by RehabMan@GitHub.
4436
4437 iASL/DataTables: Fixed some problems and issues with compilation of DMAR 
4438 tables. ACPICA BZ 999. Lv Zheng.
4439
4440 iASL: Fixed a couple of error exit issues that could result in a "Could 
4441 not delete <file>" message during ASL compilation.
4442
4443 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 
4444 the actual signatures for these tables are "FACP" and "APIC", 
4445 respectively.
4446
4447 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 
4448 tables are allowed to have multiple instances.
4449
4450 ----------------------------------------
4451 17 May 2013. Summary of changes for version 20130517:
4452
4453 1) ACPICA kernel-resident subsystem:
4454
4455 Fixed a regression introduced in version 20130328 for _INI methods. This 
4456 change fixes a problem introduced in 20130328 where _INI methods are no 
4457 longer executed properly because of a memory block that was not 
4458 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 
4459 <tomasz.nowicki@linaro.org>.
4460
4461 Fixed a possible problem with the new extended sleep registers in the 
4462 ACPI 
4463 5.0 FADT. Do not use these registers (even if populated) unless the HW-
4464 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 
4465 1020. Lv Zheng.
4466
4467 Implemented return value repair code for _CST predefined objects: Sort 
4468 the 
4469 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4470
4471 Implemented a debug-only option to disable loading of SSDTs from the 
4472 RSDT/XSDT during ACPICA initialization. This can be useful for debugging 
4473 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 
4474 acglobal.h - ACPICA BZ 1005. Lv Zheng.
4475
4476 Fixed some issues in the ACPICA initialization and termination code: 
4477 Tomasz Nowicki <tomasz.nowicki@linaro.org>
4478 1) Clear events initialized flag upon event component termination. ACPICA 
4479 BZ 1013.
4480 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 
4481 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
4482 4) Clear debug buffer global on termination to prevent possible multiple 
4483 delete. ACPICA BZ 1010.
4484
4485 Standardized all switch() blocks across the entire source base. After 
4486 many 
4487 years, different formatting for switch() had crept in. This change makes 
4488 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4489
4490 Split some files to enhance ACPICA modularity and configurability:
4491 1) Split buffer dump routines into utilities/utbuffer.c
4492 2) Split internal error message routines into utilities/uterror.c
4493 3) Split table print utilities into tables/tbprint.c
4494 4) Split iASL command-line option processing into asloptions.c
4495
4496 Makefile enhancements:
4497 1) Support for all new files above.
4498 2) Abort make on errors from any subcomponent. Chao Guan.
4499 3) Add build support for Apple Mac OS X. Liang Qi.
4500
4501 Example Code and Data Size: These are the sizes for the OS-independent 
4502 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4503 debug version of the code includes the debug output trace mechanism and 
4504 has a much larger code and data size.
4505
4506   Current Release:
4507     Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4508     Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4509   Previous Release:
4510     Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4511     Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4512
4513
4514 2) iASL Compiler/Disassembler and Tools:
4515
4516 New utility: Implemented an easily portable version of the acpidump 
4517 utility to extract ACPI tables from the system (or a file) in an ASCII 
4518 hex 
4519 dump format. The top-level code implements the various command line 
4520 options, file I/O, and table dump routines. To port to a new host, only 
4521 three functions need to be implemented to get tables -- since this 
4522 functionality is OS-dependent. See the tools/acpidump/apmain.c module and 
4523 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
4524 1) The Windows version obtains the ACPI tables from the Registry.
4525 2) The Linux version is under development.
4526 3) Other hosts - If an OS-dependent module is submitted, it will be 
4527 distributed with ACPICA.
4528
4529 iASL: Fixed a regression for -D preprocessor option (define symbol). A 
4530 restructuring/change to the initialization sequence caused this option to 
4531 no longer work properly.
4532
4533 iASL: Implemented a mechanism to disable specific warnings and remarks. 
4534 Adds a new command line option, "-vw <messageid> as well as "#pragma 
4535 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4536
4537 iASL: Fix for too-strict package object validation. The package object 
4538 validation for return values from the predefined names is a bit too 
4539 strict, it does not allow names references within the package (which will 
4540 be resolved at runtime.) These types of references cannot be validated at 
4541 compile time. This change ignores named references within package objects 
4542 for names that return or define static packages.
4543
4544 Debugger: Fixed the 80-character command line limitation for the History 
4545 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4546
4547 iASL: Added control method and package support for the -so option 
4548 (generates AML offset table for BIOS support.)
4549
4550 iASL: issue a remark if a non-serialized method creates named objects. If 
4551 a thread blocks within the method for any reason, and another thread 
4552 enters the method, the method will fail because an attempt will be made 
4553 to 
4554 create the same (named) object twice. In this case, issue a remark that 
4555 the method should be marked serialized. NOTE: may become a warning later. 
4556 ACPICA BZ 909.
4557
4558 ----------------------------------------
4559 18 April 2013. Summary of changes for version 20130418:
4560
4561 1) ACPICA kernel-resident subsystem:
4562
4563 Fixed a possible buffer overrun during some rare but specific field unit 
4564 read operations. This overrun can only happen if the DSDT version is 1 -- 
4565 meaning that all AML integers are 32 bits -- and the field length is 
4566 between 33 and 55 bits long. During the read, an internal buffer object 
4567 is 
4568 created for the field unit because the field is larger than an integer 
4569 (32 
4570 bits). However, in this case, the buffer will be incorrectly written 
4571 beyond the end because the buffer length is less than the internal 
4572 minimum 
4573 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 
4574 long, but a full 8 bytes will be written.
4575
4576 Updated the Embedded Controller "orphan" _REG method support. This refers 
4577 to _REG methods under the EC device that have no corresponding operation 
4578 region. This is allowed by the ACPI specification. This update removes a 
4579 dependency on the existence an ECDT table. It will execute an orphan _REG 
4580 method as long as the operation region handler for the EC is installed at 
4581 the EC device node and not the namespace root. Rui Zhang (original 
4582 update), Bob Moore (update/integrate).
4583
4584 Implemented run-time argument typechecking for all predefined ACPI names 
4585 (_STA, _BIF, etc.) This change performs object typechecking on all 
4586 incoming arguments for all predefined names executed via 
4587 AcpiEvaluateObject. This ensures that ACPI-related device drivers are 
4588 passing correct object types as well as the correct number of arguments 
4589 (therefore identifying any issues immediately). Also, the ASL/namespace 
4590 definition of the predefined name is checked against the ACPI 
4591 specification for the proper argument count. Adds one new file, 
4592 nsarguments.c
4593
4594 Changed an exception code for the ASL UnLoad() operator. Changed the 
4595 exception code for the case where the input DdbHandle is invalid, from 
4596 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4597
4598 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 
4599 global makefile. The use of this flag causes compiler errors on earlier 
4600 versions of GCC, so it has been removed for compatibility.
4601
4602 Miscellaneous cleanup:
4603 1) Removed some unused/obsolete macros
4604 2) Fixed a possible memory leak in the _OSI support
4605 3) Removed an unused variable in the predefined name support
4606 4) Windows OSL: remove obsolete reference to a memory list field
4607
4608 Example Code and Data Size: These are the sizes for the OS-independent 
4609 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4610 debug version of the code includes the debug output trace mechanism and 
4611 has a much larger code and data size.
4612
4613   Current Release:
4614     Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4615     Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4616   Previous Release:
4617     Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4618     Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4619
4620
4621 2) iASL Compiler/Disassembler and Tools:
4622
4623 AcpiExec: Added installation of a handler for the SystemCMOS address 
4624 space. This prevents control method abort if a method accesses this 
4625 space.
4626
4627 AcpiExec: Added support for multiple EC devices, and now install EC 
4628 operation region handler(s) at the actual EC device instead of the 
4629 namespace root. This reflects the typical behavior of host operating 
4630 systems.
4631
4632 AcpiExec: Updated to ensure that all operation region handlers are 
4633 installed before the _REG methods are executed. This prevents a _REG 
4634 method from aborting if it accesses an address space has no handler. 
4635 AcpiExec installs a handler for every possible address space.
4636
4637 Debugger: Enhanced the "handlers" command to display non-root handlers. 
4638 This change enhances the handlers command to display handlers associated 
4639 with individual devices throughout the namespace, in addition to the 
4640 currently supported display of handlers associated with the root 
4641 namespace 
4642 node.
4643
4644 ASL Test Suite: Several test suite errors have been identified and 
4645 resolved, reducing the total error count during execution. Chao Guan.
4646
4647 ----------------------------------------
4648 28 March 2013. Summary of changes for version 20130328:
4649
4650 1) ACPICA kernel-resident subsystem:
4651
4652 Fixed several possible race conditions with the internal object reference 
4653 counting mechanism. Some of the external ACPICA interfaces update object 
4654 reference counts without holding the interpreter or namespace lock. This 
4655 change adds a spinlock to protect reference count updates on the internal 
4656 ACPICA objects. Reported by and with assistance from Andriy Gapon 
4657 (avg@FreeBSD.org).
4658
4659 FADT support: Removed an extraneous warning for very large GPE register 
4660 sets. This change removes a size mismatch warning if the legacy length 
4661 field for a GPE register set is larger than the 64-bit GAS structure can 
4662 accommodate. GPE register sets can be larger than the 255-bit width 
4663 limitation of the GAS structure. Linn Crosetto (linn@hp.com).
4664
4665 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 
4666 return from this interface. Handles a possible timeout case if 
4667 ACPI_WAIT_FOREVER is modified by the host to be a value less than 
4668 "forever". Jung-uk Kim.
4669
4670 Predefined name support: Add allowed/required argument type information 
4671 to 
4672 the master predefined info table. This change adds the infrastructure to 
4673 enable typechecking on incoming arguments for all predefined 
4674 methods/objects. It does not actually contain the code that will fully 
4675 utilize this information, this is still under development. Also condenses 
4676 some duplicate code for the predefined names into a new module, 
4677 utilities/utpredef.c
4678
4679 Example Code and Data Size: These are the sizes for the OS-independent 
4680 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4681 debug version of the code includes the debug output trace mechanism and 
4682 has a much larger code and data size.
4683
4684   Previous Release:
4685     Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4686     Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4687   Current Release:
4688     Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4689     Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4690
4691
4692 2) iASL Compiler/Disassembler and Tools:
4693
4694 iASL: Implemented a new option to simplify the development of ACPI-
4695 related 
4696 BIOS code. Adds support for a new "offset table" output file. The -so 
4697 option will create a C table containing the AML table offsets of various 
4698 named objects in the namespace so that BIOS code can modify them easily 
4699 at 
4700 boot time. This can simplify BIOS runtime code by eliminating expensive 
4701 searches for "magic values", enhancing boot times and adding greater 
4702 reliability. With assistance from Lee Hamel.
4703
4704 iASL: Allow additional predefined names to return zero-length packages. 
4705 Now, all predefined names that are defined by the ACPI specification to 
4706 return a "variable-length package of packages" are allowed to return a 
4707 zero length top-level package. This allows the BIOS to tell the host that 
4708 the requested feature is not supported, and supports existing BIOS/ASL 
4709 code and practices.
4710
4711 iASL: Changed the "result not used" warning to an error. This is the case 
4712 where an ASL operator is effectively a NOOP because the result of the 
4713 operation is not stored anywhere. For example:
4714     Add (4, Local0)
4715 There is no target (missing 3rd argument), nor is the function return 
4716 value used. This is potentially a very serious problem -- since the code 
4717 was probably intended to do something, but for whatever reason, the value 
4718 was not stored. Therefore, this issue has been upgraded from a warning to 
4719 an error.
4720
4721 AcpiHelp: Added allowable/required argument types to the predefined names 
4722 info display. This feature utilizes the recent update to the predefined 
4723 names table (above).
4724
4725 ----------------------------------------
4726 14 February 2013. Summary of changes for version 20130214:
4727
4728 1) ACPICA Kernel-resident Subsystem:
4729
4730 Fixed a possible regression on some hosts: Reinstated the safe return 
4731 macros (return_ACPI_STATUS, etc.) that ensure that the argument is 
4732 evaluated only once. Although these macros are not needed for the ACPICA 
4733 code itself, they are often used by ACPI-related host device drivers 
4734 where 
4735 the safe feature may be necessary.
4736
4737 Fixed several issues related to the ACPI 5.0 reduced hardware support 
4738 (SOC): Now ensure that if the platform declares itself as hardware-
4739 reduced 
4740 via the FADT, the following functions become NOOPs (and always return 
4741 AE_OK) because ACPI is always enabled by definition on these machines:
4742   AcpiEnable
4743   AcpiDisable
4744   AcpiHwGetMode
4745   AcpiHwSetMode
4746
4747 Dynamic Object Repair: Implemented additional runtime repairs for 
4748 predefined name return values. Both of these repairs can simplify code in 
4749 the related device drivers that invoke these methods:
4750 1) For the _STR and _MLS names, automatically repair/convert an ASCII 
4751 string to a Unicode buffer. 
4752 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 
4753
4754 lone end tag descriptor in the following cases: A Return(0) was executed, 
4755 a null buffer was returned, or no object at all was returned (non-slack 
4756 mode only). Adds a new file, nsconvert.c
4757 ACPICA BZ 998. Bob Moore, Lv Zheng.
4758
4759 Resource Manager: Added additional code to prevent possible infinite 
4760 loops 
4761 while traversing corrupted or ill-formed resource template buffers. Check 
4762 for zero-length resource descriptors in all code that loops through 
4763 resource templates (the length field is used to index through the 
4764 template). This change also hardens the external AcpiWalkResources and 
4765 AcpiWalkResourceBuffer interfaces.
4766
4767 Local Cache Manager: Enhanced the main data structure to eliminate an 
4768 unnecessary mechanism to access the next object in the list. Actually 
4769 provides a small performance enhancement for hosts that use the local 
4770 ACPICA cache manager. Jung-uk Kim.
4771
4772 Example Code and Data Size: These are the sizes for the OS-independent 
4773 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4774 debug version of the code includes the debug output trace mechanism and 
4775 has a much larger code and data size.
4776
4777   Previous Release:
4778     Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4779     Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4780   Current Release:
4781     Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4782     Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4783
4784
4785 2) iASL Compiler/Disassembler and Tools:
4786
4787 iASL/Disassembler: Fixed several issues with the definition of the ACPI 
4788 5.0 RASF table (RAS Feature Table). This change incorporates late changes 
4789 that were made to the ACPI 5.0 specification.
4790
4791 iASL/Disassembler: Added full support for the following new ACPI tables:
4792   1) The MTMR table (MID Timer Table)
4793   2) The VRTC table (Virtual Real Time Clock Table).
4794 Includes header file, disassembler, table compiler, and template support 
4795 for both tables.
4796
4797 iASL: Implemented compile-time validation of package objects returned by 
4798 predefined names. This new feature validates static package objects 
4799 returned by the various predefined names defined to return packages. Both 
4800 object types and package lengths are validated, for both parent packages 
4801 and sub-packages, if any. The code is similar in structure and behavior 
4802 to 
4803 the runtime repair mechanism within the AML interpreter and uses the 
4804 existing predefined name information table. Adds a new file, aslprepkg.c. 
4805 ACPICA BZ 938.
4806
4807 iASL: Implemented auto-detection of binary ACPI tables for disassembly. 
4808 This feature detects a binary file with a valid ACPI table header and 
4809 invokes the disassembler automatically. Eliminates the need to 
4810 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4811
4812 iASL/Disassembler: Added several warnings for the case where there are 
4813 unresolved control methods during the disassembly. This can potentially 
4814 cause errors when the output file is compiled, because the disassembler 
4815 assumes zero method arguments in these cases (it cannot determine the 
4816 actual number of arguments without resolution/definition of the method).
4817
4818 Debugger: Added support to display all resources with a single command. 
4819 Invocation of the resources command with no arguments will now display 
4820 all 
4821 resources within the current namespace.
4822
4823 AcpiHelp: Added descriptive text for each ACPICA exception code displayed 
4824 via the -e option.
4825
4826 ----------------------------------------
4827 17 January 2013. Summary of changes for version 20130117:
4828
4829 1) ACPICA Kernel-resident Subsystem:
4830
4831 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 
4832 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 
4833 objects to return a package containing one integer, most BIOS code 
4834 returns 
4835 two integers and the previous code reflects that. However, we also need 
4836 to 
4837 support BIOS code that actually implements to the ACPI spec, and this 
4838 change reflects this.
4839
4840 Fixed two issues with the ACPI_DEBUG_PRINT macros:
4841 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 
4842 C compilers that require this support.
4843 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 
4844 ACPI_DEBUG is already used by many of the various hosts.
4845
4846 Updated all ACPICA copyrights and signons to 2013. Added the 2013 
4847 copyright to all module headers and signons, including the standard Linux 
4848 header. This affects virtually every file in the ACPICA core subsystem, 
4849 iASL compiler, all ACPICA utilities, and the test suites.
4850
4851 Example Code and Data Size: These are the sizes for the OS-independent 
4852 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4853 debug version of the code includes the debug output trace mechanism and 
4854 has a much larger code and data size.
4855
4856   Previous Release:
4857     Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4858     Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4859   Current Release:
4860     Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4861     Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4862
4863
4864 2) iASL Compiler/Disassembler and Tools:
4865
4866 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 
4867 prevent a possible fault on some hosts. Some C libraries modify the arg 
4868 pointer parameter to vfprintf making it difficult to call it twice in the 
4869 AcpiOsVprintf function. Use a local buffer to workaround this issue. This 
4870 does not affect the Windows OSL since the Win C library does not modify 
4871 the arg pointer. Chao Guan, Bob Moore.
4872
4873 iASL: Fixed a possible infinite loop when the maximum error count is 
4874 reached. If an output file other than the .AML file is specified (such as 
4875 a listing file), and the maximum number of errors is reached, do not 
4876 attempt to flush data to the output file(s) as the compiler is aborting. 
4877 This can cause an infinite loop as the max error count code essentially 
4878 keeps calling itself.
4879
4880 iASL/Disassembler: Added an option (-in) to ignore NOOP 
4881 opcodes/operators. 
4882 Implemented for both the compiler and the disassembler. Often, the NOOP 
4883 opcode is used as padding for packages that are changed dynamically by 
4884 the 
4885 BIOS. When disassembled and recompiled, these NOOPs will cause syntax 
4886 errors. This option causes the disassembler to ignore all NOOP opcodes 
4887 (0xA3), and it also causes the compiler to ignore all ASL source code 
4888 NOOP 
4889 statements as well.
4890
4891 Debugger: Enhanced the Sleep command to execute all sleep states. This 
4892 change allows Sleep to be invoked with no arguments and causes the 
4893 debugger to execute all of the sleep states, 0-5, automatically.
4894
4895 ----------------------------------------
4896 20 December 2012. Summary of changes for version 20121220:
4897
4898 1) ACPICA Kernel-resident Subsystem:
4899
4900 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 
4901 alternate entry point for AcpiWalkResources and improves the usability of 
4902 the resource manager by accepting as input a buffer containing the output 
4903 of either a _CRS, _PRS, or _AEI method. The key functionality is that the 
4904 input buffer is not deleted by this interface so that it can be used by 
4905 the host later. See the ACPICA reference for details.
4906
4907 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 
4908 (DSDT version < 2). The constant will be truncated and this warning 
4909 reflects that behavior.
4910
4911 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 
4912 ExtendedInterrupt, and GpioInt descriptors. This change adds support to 
4913 both get and set the new wake bit in these descriptors, separately from 
4914 the existing share bit. Reported by Aaron Lu.
4915
4916 Interpreter: Fix Store() when an implicit conversion is not possible. For 
4917 example, in the cases such as a store of a string to an existing package 
4918 object, implement the store as a CopyObject(). This is a small departure 
4919 from the ACPI specification which states that the control method should 
4920 be 
4921 aborted in this case. However, the ASLTS suite depends on this behavior.
4922
4923 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 
4924 macros: check if debug output is currently enabled as soon as possible to 
4925 minimize performance impact if debug is in fact not enabled.
4926
4927 Source code restructuring: Cleanup to improve modularity. The following 
4928 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 
4929 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.